- •1.Исторический обзор теории алгоритмов.
- •2.Определение машины Тьюринга
- •3.Тезис Черча-Тьюринга.
- •5.Нумерация машин Тьюринга.
- •6.Пример невычислимой функции, построенной по методу диагонализации Кантора.
- •7.Распознающие машины Тьюринга и языки. Проблема распознавания языков.
- •8.Неразрешимость проблемы самоприменимости.
- •9.Неразрешимость проблемы остановки.
- •10.Другие примеры неразрешимых алгоритмически задач.
- •11.Методы задания машин Тьюринга
- •12.Граф-схемы и их связь диаграммой состояний автоматов.
- •13.Рекурсивные функции и их построение из простейших.
- •14.Операторы подстановки, рекурсии и минимизации. Частично рекурсивные функции.
- •15.Тезис Черча.
- •16.Рекурсивно перечислимые множества. Связь между рекурсивной перечислимостью и рекурсивностью.
- •17.Сложность.Подходы к определению сложности алгоритмов.
- •18.Алгоритмическая, информационная и инфологическая сложность.
- •19.Понятие вычислительной сложности. Примеры ее определения.
- •20.Детерминированная и недетерминированная машина Тьюринга.
- •21.Класс p и np.
- •22.Классы co-np, pspace, npspace.
- •23.Задача выполнимость и теорема с.Кука о полноте задачи выполнимость.
- •24.Другие np-полные задачи. Примеры сводимости в классе np.
- •25.Метод резолюций Робинсона для задачи выполнимость.
- •26.Метод отсечения литер для задачи выполнимость.
- •27.Метод групповых резолюций для задачи выполнимость.
- •28.Гипотеза p≠np и ее обоснование.
- •29.Дерево решений. Эвристическая оценочная функция.
- •30.Распознавание регулярных языков
16.Рекурсивно перечислимые множества. Связь между рекурсивной перечислимостью и рекурсивностью.
Множество – это некоторая совокупность элементов. Если множество содержит конечное число элементов, то оно называется конечным. Конечные множества можно задавать непосредственным перечислением содержащихся в них элементов. Бесконечные множества задают, как правило, указанием свойства, которым обладают его элементы. Свойства задают с помощью формул.
Формула, с помощью которого определяется множество, называется характеристической формулой этого множества. Например, множество положительных четных чисел можно задать таким образом
М1={ x | x = 2*N}
Множество составных целых положительных чисел можно задать так
М2 = { x | n≠1m≠1 (x=m*n)}
Здесь символ означает “существует” и называется квантором существования. Наряду с квантором существования, имеется еще квантор всеобщности - . С помощью квантора всеобщности можно записать характеристическую формулу множества всех простых чисел М3:
М3 = { x | n≠1 m≠1 (x ≠m*n)}
Определим множество
Mco={ x | x M}.
Множество Mco называется дополнением множества М.
Определение. Множество называется рекурсивным, если его характеристическая функция общерекурсивна.
Особенностью рекурсивного множества является то, что для любого х можно с помощью алгоритма вычисления характеристической функции данного множества проверить, принадлежит ли ему х или нет. Поскольку существуют не рекурсивные множества, постольку не для всякого множества можно построить алгоритм для выяснения принадлежности к нему произвольного элемента. Любопытными примерами нерекурсивных множеств являются следующие.
Определение. Множество A называется рекурсивно перечислимым, если его характеристическая функция f(x) частично рекурсивна, причем
Мы помним, что частичная рекурсивность характеристической функции означает, что значение этой функции для некоторых элементов не известно (машина Тьюринга зацикливается на подобных входах). Однако в случае рекурсивной перечислимости, машина зацикливается тогда и только тогда, когда она пытается распознать элемент не из своего множества.
!!! 1.Доказать, что если множество A и его дополнение Aco рекурсивно перечислимы, то A – рекурсивное множество; 2. Пусть А и В рекурсивно перечислимы. Доказать, что таковым будет и множество A B, A B, A \ B.
17.Сложность.Подходы к определению сложности алгоритмов.
Аппарат машин Тьюринга позволяет изучить сложностные свойства алгоритмов. В информатике имеется несколько различных подходов к определению понятия сложности алгоритма. Например, понимают под сложностью число проверяемых логических условий. Каждое логическое условие определяет две различные ветки (пути) развития вычислительного процесса. Пусть число всех различных путей в программе есть N. Пусть pi - вероятность прохождения программы по i-му пути.
Тогда мерой информационной сложности алгоритма (программы) считают энтропию Э, вычисляемую по формуле:
Информационная сложность характеризует возможность п о н я т ь работу алгоритма. Чем больше величина энтропии, тем больше усилий требуется, чтобы разобраться в логике программы. Однако для практики большее значение имеет не информационная, а алгоритмическая или вычислительная сложность алгоритма. Понятие алгоритмической сложности введено советским математиком А.Н.Колмогоровым. Под алгоритмической сложностью он понимал минимально необходимый размер программы для данного алгоритма. Колмогоров полагал, что чем меньше размер записи программы, тем меньше ее сложность. На этом пути ему и его коллегам удалось получить ряд ценных результатов. Вместе с тем оказывается, что даже небольшие по длине записи программы могут требовать огромного времени счета на ЭВМ и это время катастрофически растет с ростом размера входных данных.
Таким образом, выявляется необходимость ввести иную концепцию сложности – вычислительную сложность задачи и связать вычислительную сложность задачи с числом тактов, затрачиваемых машиной Тьюринга, реализующей алгоритм решения этой задачи за кратчайшее возможное число ходов.