- •1.1. Вычислимые функции, разрешимые и перечислимые множества.
- •1.2. Основные свойства разрешимых и перечислимых множеств (с доказательством).
- •1.3. Теоремы, связывающие понятия вычислимость, разрешимость и перечислимость.
- •Разрешимые множества.
- •Перечислимые множества.
- •1.4. Теорему Поста и теорему о графике вычислимой функции (с доказательством).
- •1.5. Интуитивное понятие алгоритма, исполнитель алгоритма. Основные свойства алгоритма.
- •Свойства алгоритмов:
- •Машина Тьюринга как алгоритмическая модель. Модель Тьюринга (Тьюринга-Поста).
- •Та.2.Алгоритмически неразрешимые проблемы.
- •2.3. Нумерация, натуральная нумерация, однозначная нумерация.
- •2.4. Девятая проблему Гильберта о диофантовых уравнениях.
- •Та.3.Основные меры сложности вычисления
- •3.1.Временная и емкостная сложность.
- •3.2. Нижние и верхние оценки временной сложности.
- •3.3. Эффективность вычислений
- •3.4. Классы сложности (p, exp, np, npc).
Перечислимые множества.
Т2: Множество перечислимо оно является областью определения вычислимой функции.
Д-во:Пусть множество Р перечислимо, тогда по определению существует алгоритм А, который выводит все элементы этого множества и никакие другие. Пусть некий алгоритм С подаёт на входе n и запускает по шагам алгоритм А. как только n печатается алгоритмом А, С печатает, н-р, 0, иначе С ничего не выводит. Тогда этот алгоритм вычисляет функцию f(n)=0, при nP, а множество Р есть область определения этой функции.
Пусть дана некоторая вычислимая функция f, а А – алгоритм её вычисляющий. Р – область определения данной функции. Рассмотрим алгоритм С, который перебирает все натуральные числа и для каждого запускает алгоритм А, если печатается значение f(n), то С печатает само n. Т.о. алгоритм С перечисляет область определения Р вычислимой функции f.
Т3: Множество перечислимо оно является областью значений вычислимой функции.
Т4: Множество Х перечислимо его «полухарактеристическая» функция, определённая на элементах Х и не определённая вне Х, вычислима.
Полухарактеристической может быть, н-р, функция, равная 0 на элементах Х и неопределённая вне Х.
Т5: Множество натуральных чисел перечислимо, если оно либо пусто, либо есть множество значений всюду определённой вычислимой функции (другими словами, его элементы можно расположить в вычислимую последовательность).
1.4. Теорему Поста и теорему о графике вычислимой функции (с доказательством).
Теорема Поста: Всякое разрешимое множество N0 – перечислимо. Если множества Х и (его дополнение до множества N0) перечислимы, то Х разрешимо.
Д-во: Пусть множество Х разрешимо, след-но, по определению существует алгоритм А, вычисляющий функцию f(n)=1, если nX и f(n)=0, если nX. Рассмотрим алгоритм С, который проверяет принадлежность чисел 1, 2,… с помощью алгоритма А и печатает те из них, которые принадлежат Х. Ясно, что алгоритм С перечисляет множество Х.
Если алгоритм С будет печатать те элементы, которые не принадлежат Х, то он будет перечислять дополнение множества Х до множества всех натуральных чисел.
Пусть множества Х и перечисляются алгоритмами А и В соответственно. Для выяснения принадлежности заданного числа n к Х составим алгоритм С, который параллельно выполняет по шагам А и В (сначала 1 элемент выводится алгоритмом А, затем элемент выводится алгоритмом В и т.д.). С останавливается как только один из алгоритмов А и В напечатает n (рано или поздно ровно один из них это сделает). Если n напечатано ал-горитмом А, то С печатает 1, иначе – 0. Т.о. С определяет принадлежит ли n множеству Х.
Теорема Поста гласит, что разрешимые множества – это перечислимые множества с перечислимыми дополнениями. Но перечислимые множества не обязаны быть разрешимыми.
Т6: Функция f с натуральными аргументами и значениями вычислима тогда и только тогда, когда её график F={(x,y) | f(x) определено и f(x)=y} является перечислимым множеством пар натуральных чисел.
Д-во: Пусть f вычислима. Тогда существует алгоритм А, перечисляющий её область определения, т.е., печатающий все x, на которых f определена, и алгоритм В, вычисляющий f(x). Рассмотрим алгоритм С, который выполняет по шагам алгоритм А и после печати очередного значения x выполняет алгоритм В, вычисляя f(x) и печатая результат. Получим алгоритм, перечисляющий множество F.
Если имеется алгоритм А, перечисляющий F, то функция f вычисляется таким алгоритмом В: имея на входе n, запускаем А и ждём появления в F пары, первый элемент которой равен n; как только такая пара появилась, печатаем её второй элемент и заканчиваем работу.