
- •Понятие алгоритма и свойства алгоритмов.
- •Формализация понятия алгоритма: машина Тьюринга. Представление машин Тьюринга с помощью диаграмм. Табличное представление программ машины Тьюринга. Композиция машин Тьюринга. Примеры.
- •Двумерная таблица
- •С помощью диаграммы
- •Формализация понятия алгоритма: нормальные алгорифмы Маркова, определение и выполнение. Примеры.
- •Вычислимые функции. Базовый набор функций и операции над функциями: суперпозиция, примитивная рекурсия, минимизация. Классы вычислимых функций. Примеры.
- •Проблема алгоритмической разрешимости. Примеры неразрешимых алгоритмических проблем.
- •Методы разработки алгоритмов. Суперпозиция, итерация, рекурсия и др.
- •Технология разработки программ. Технология и методы тестирования программ.
- •Составление алгоритма.
- •Создание документации, помощи.
- •Рекурсивные алгоритмы: определение и виды рекурсии. Реализация рекурсии и использование стека. Рекурсия и итерация. Примеры, сравнение.
- •Задача анализа сложности алгоритмов. Временная и емкостная сложности. Оценки сложности. Использование управляющего графа для оценки сложности линейных и ветвящихся алгоритмов.
- •Оценка сложности циклических алгоритмов. Примеры.
- •Количество повторений вложенного цикла не зависит от параметра внешнего цикла
- •Количество повторений вложенного цикла зависит от параметра внешнего цикла
- •Оценка сложности рекурсивных алгоритмов: рекурсия с одним и многими рекурсивными вызовами, случай косвенной рекурсии.
- •If … then процедура_1
- •Оптимизация алгоритмов. Примеры.
- •Понятие сложности задачи и классы сложности задач. Понятие сводимости, полиномиальная сводимость.
- •Методы сортировок: сортировка массивов простыми включениями, сортировка массивов простым выбором, сортировка обменами. Анализ сложности алгоритмов сортировки.
- •Сортировка методом простого выбора
- •Сортировка методом простых вставок (метод прямого (простого) включения)
- •2 Пересылки записей
- •1 Пересылка записи
- •Методы сортировок: алгоритм быстрой сортировки. Анализ сложности алгоритма быстрой сортировки.
- •Обзор методов сортировок: сортировка Шелла, пирамидальная сортировка, сортировка слияниями, Шейкер-сортировка, сортировка подсчетом, цифровая сортировка и др.
- •Методы поиска: линейный поиск, метод бинарного поиска, поиск с помощью бинарного дерева, метод случайного поиска и др.
- •Алгоритмы внешней сортировки: метод естественного слияния, метод сбалансированного слияния. Двухпутевая и многопутевая реализации. Фибоначчиева сортировка.
- •Метод квадратичного рехеширования.
- •Рекурсивные типы данных: определение, примеры.
- •Id:integer; {номер вершины}
- •Операции над линейными списками: создание списков, включение элементов в списки (рассмотреть различные способы). Виды связных списков.
- •Операции над линейными списками: удаление элементов списков. Поиск элементов списков, сравнение списков.
- •Операции над бинарными деревьями: включение вершины в дерево. Обход деревьев, подсчет числа вершин в дереве. Подсчет числа вершин, удовлетворяющих заданному условию.
- •Операции над бинарными деревьями: удаление вершины дерева.
- •Понятие сбалансированности бинарного дерева. Приведение дерева к авл-сбалансированному виду: виды и формулы поворотов.
- •Анализ сложности алгоритмов работы с бинарными деревьями.
- •Деревья со многими потомками. Специальные виды деревьев: деревья формул, б-деревья, 2-3 деревья, красно-черные деревья.
- •Понятие графа. Способы представления графов. Операции над графами: добавление вершины, добавление дуги, создание графа.
- •Операции над графами: поиск вершины, удаление вершины, удаление дуги, текстовый вывод графа.
- •Алгоритмы поиска на графах: поиск в глубину и в ширину.
- •Примеры алгоритмов на графах (поиск кратчайшего пути, поиск циклов, алгоритм построения остовного дерева, выделения связных компонентов…).
- •Формальные языки и грамматики. Определение языка, описание языка. Понятие грамматики.
- •Классификация формальных языков. Понятие вывода.
- •Описание синтаксиса языка с помощью синтаксических диаграмм и бнф. Примеры.
- •Основы теории информации. Понятие энтропии. Измерение информации: вероятностный и алфавитный подходы.
- •Основы теории кодирования информации. Метод Шеннона-Фано. Код Хаффмана.
- •1. Принцип программного управления.
- •2. Принцип однородности памяти.
- •3. Принцип адресности.
- •Конвейеризация вычислений.
- •Иерархия запоминающих устройств эвм
- •Устройство процессора. Понятие архитектуры cisc, risc, vliw.
- •Работа процессора
- •Cisc-процессоры
- •Risc-процессоры
- •Misc-процессоры
- •Vliw-процессоры
- •Типы данных, поддерживаемые процессорами Intel, форматы данных.
- •Система команд Intel, классификация команд, форматы команд.
- •Объектно-ориентированное программирование (ооп): основные понятия.
Вычислимые функции. Базовый набор функций и операции над функциями: суперпозиция, примитивная рекурсия, минимизация. Классы вычислимых функций. Примеры.
Вычислимая функция – функция, для которой можно построить некоторый алгоритм.
1. Определим базовый набор функций, для которых уже построена машина Тьюринга.
Предположим, что все функции преобразуют целые числа в целые числа.
- функция обнуления
- функция суммы
- функция выбора. Выбирает из набора
аргументов аргумент с номером
Обозначим этот базовый набор за
2. В базовом наборе функций определим основные операции. Операции получают функции (а не значения функций) в качестве операндов и дают в результате новые функции. Эти операции также должны быть очевидны с математической точки зрения – не должно возникать сомнения в том, что из вычислимых функций с помощью операций получаются вновь вычислимые функции. Последовательно применяя операции к множеству функций из мы будем получать новые функции, которые будут расширять набор . Следовательно, мы сможем построить бесконечный набор функций.
Обозначим набор этих операций
.
в систему операций
входят три операции: суперпозиция
,
примитивная рекурсия
и минимизация
.
Суперпозиция
Будем предполагать, что все функции, к которым применяется операция суперпозиции, определены на одном и том же наборе входных данных. Обозначим функции, к которым применяется операция суперпозиции:
Если какой-то элемент из набора
не используется для вычисления какой-то
из функций, то для этой функции мы
объявляем этот элемент не значащим.
Входными данными для
будут результаты вычисления
для набора
,
где
- количество переменных в объединенном
наборе переменных функций с индексами
от 1 до
.
Все рассматриваемые функции являются частными, т.е не всюду определенными; могут существовать такие комбинации аргументов, для которых значение функции не существует.
Функция
не будет определена в двух случаях:
1. Значение
не определено
2.
,
но при этом
не определено
Примитивная рекурсия
Операция примитивной рекурсии имеет два операнда
Первый операнд, функция
,
зависит от
аргументов,
,
а второй операнд, функция h, в общем
случае имеет два дополнительных
аргумента. Функция – результат f
определяется следующими уравнениями
примитивной рекурсии:
Операция минимизации
Операция минимизации μ
имеет один операнд, f=μ(g).
Значения функции f
на заданном наборе аргументов x1…xn
получаются следующим образом. Сначала
с помощью функции g
формируется уравнение
,
а затем отыскивается его решение y.
Если таких решений несколько, то берется
минимальное из них; оно и считается
значением функции f
на данном наборе аргументов. Может
случится, что уравнение не имеет ни
одного решения. В этом случае считается,
что функция f не
определена на заданном наборе аргументов.
Примеры определения функций при помощи этих трех операций:
1)
2)
3)
Классы вычислимых функций
Множество всех функций которые можно
получить из базового набора
с помощью операций суперпозиции и
примитивной рекурсии, называется
примитивно рекурсивными функциями
.
Все примитивно рекурсивные функции
всюду вычислимы. Для того чтобы расширить
набор следовало бы, кроме примитивной
рекурсии ввести еще и кратную рекурсию,
определить косвенную рекурсию.
Pр – класс общерекурсивных функций. Образует множество всюду определенных вычислимых функций.
Оператор минимизации может превратить всюду определенную функцию в частичную.
Множество функций, получаемых применением
к базовому набору
конечного числа операций типа суперпозиции,
примитивной рекурсии и минимизации
называется множеством частично-рекурсивных
функций и обозначается
.
Рвыч – множество всех вычислимых функций. Замкнуто относительно операций суперпозиции, примитивной рекурсии и минимизации.
Тезис Чёрча: числовая функция тогда и только тогда алгоритмически выполнима, когда она частично рекурсивна