МАШИНА ТЬЮРИНГА

21
МАШИНА ТЬЮРИНГА Поздняков Сергей Николаевич [email protected]

Upload: jerica

Post on 06-Jan-2016

91 views

Category:

Documents


5 download

DESCRIPTION

МАШИНА ТЬЮРИНГА. Поздняков Сергей Николаевич [email protected]. Зачем нам нужно определение алгоритма?. Можно ли написать программу для любой задачи? Например, существует ли программа, которая по тексту другой программы определяет, зациклится она или нет? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: МАШИНА ТЬЮРИНГА

МАШИНА ТЬЮРИНГА

Поздняков Сергей Николаевич

[email protected]

Page 2: МАШИНА ТЬЮРИНГА

Зачем нам нужно определение алгоритма? Можно ли написать программу для

любой задачи? Например, существует ли программа,

которая по тексту другой программы определяет, зациклится она или нет?

Без строгого определения алгоритма ответ на этот вопрос невозможен.

Page 3: МАШИНА ТЬЮРИНГА

Алгоритм – это автомат?

У автомата есть строгое определение: Входные и выходные символы Состояния автомата Начальное состояние Функция перехода между

состояниями Функция выхода

Page 4: МАШИНА ТЬЮРИНГА

Граф автомата

Автомат обычно изображается графом:

0+0 1

0+0 0

0+1 00+1 11+0 0

1+1 1

1+0 1

1+1 0

FS

Это автомат для сложения двоичных чисел произвольной длины

Page 5: МАШИНА ТЬЮРИНГА

Может ли автомат перемножать числа произвольной длины? Пусть такой автомат существует и имеет N состояний Умножим с его помощью число 10N+1+1 на себя: результат будет

10…010…01, где число нулей между соседними единичками равно N

После того, как на выходе появятся первые N+2 цифры (исходное число), следующие N+1 цифр должны появится при пустом входе

Сначала должны появится N нулей, но после этого атомат перейдёт в одно из пройденных состояний и последняя единичка никогда на выходе не появится

00

0

000Sk SnS2S1

Page 6: МАШИНА ТЬЮРИНГА

Добавим к автомату бесконечную ленту Автомат с присоединенной лентой и

есть машина Тьюринга. Вот как изображают результат в

«википедиях» на различных языках.

Page 7: МАШИНА ТЬЮРИНГА

Формальное определение машины Тьюринга Алфавит (входной и выходной языки) Состояния. Начальное и конечное

состояния. Функции перехода, вывода и сдвига

вдоль ленты (R - вправо, L - влево, E - на месте). Их можно описать в форме таблицы, графа, набора «команд»

Page 8: МАШИНА ТЬЮРИНГА

Пример машины Тьюринга Проверка на чётность числа символов (единичек), записанных на

ленте q1 1 –> q2 R * q2 1 –> q1 R * q1 * –> q0 E чётное q2 * –> q0 E нечётное

*** ** 1 1 1 1 1

*/E нечётное*/E чётное

1/R*

1/R*q2

q0

q1

Page 9: МАШИНА ТЬЮРИНГА

Многоленточные и многоголовочные машины Тьюринга Реализовать содержательный алгоритм на машине

Тьюринга очень трудоёмко, поэтому рассматривают более удобные вариации машины Тьюринга, сводящиеся к ней.

Решим задачу проверки делимости натурального числа на меньшее: делимое будет записано на верхней ленте, а делитель – на нижней:

q1(1,1) –> q1(R,R)(1,1)

q1(1,*) –> q2(E,L)(1,*)

q2(1,1) –> q2(E,L)(1,1)

q2(1,*) –> q1(E,R)(1,*)

q1(*,*) –> q0(E,E)(делится,*)

q1(*,1) –> q0(E,E)(не делится,1)

*

1

11 1

1

* ** * *

*

*

** 1 1 1 1 1

Page 10: МАШИНА ТЬЮРИНГА

Зачем придумали машину Тьюринга? Проблема останова Проблема самоприменимости

Предположим, что некто придумал алгоритм, который может определить, зацикливается ли любой представленный ему на анализ алгоритм или нормально заканчивает свою работу.

Теперь, когда у нас есть строгое понятие алгоритма, мы можем переформулировать задачу так: некто придумал машину Тьюринга A, которая, читая команды любой другой машины Тьюринга X, может определить, придёт ли она когда-нибудь в конечное состояние.

Тогда на основе этой машины Тьюринга мы сконструируем новую машину B, которая будет зацикливаться, при анализе машиной A останавливающейся машины X и останавливаться при анализе машиной A зацикливающейся машины X.

Теперь машину B мы представим на анализ машине A. Каков будет ответ? Если X будет проанализирована как останавливающаяся, это будет означать, что B зацикливается, но X=B!!!

Page 11: МАШИНА ТЬЮРИНГА

Что должны знать все программисты?

Из изложенного следует, что у теории алгоритмов есть границы. Не для каждой задачи можно построить решающий её алгоритм. Это должен знать каждый программист, который не хочет потратить свою жизнь на создание «вечного двигателя».

Чем ещё полезна машина Тьюринга? На формализации идеи алгоритма построена теория

сложности алгоритмов. Оказывается, что есть такие алгоритмы, которые работают так долго, что практически применять их невозможно.

Для того, чтобы разделить «хорошие» алгоритмы от «плохих», рассмотрим понятие НЕДЕТЕРМИНИРОВАННОЙ машины Тьюринга.

Page 12: МАШИНА ТЬЮРИНГА

Недетерминированная машина Тьюринга Как построить машину Тьюринга для определения

простоты числа на ленте? Можно воспользоваться предыдущей машиной

Тьюринга для определения делимости Тогда для заданного числа N (N единичек на ленте)

можно создать N-2 машины Тьюринга, на которых будет записано от 2 до N-1 единиц и запустить их всех сразу, если все машины дадут отрицательный результат, то число N-простое

Такая конструкция называется недетерминированной машиной Тьюринга

Понятно, что появление такого определения связано с решением задач «подбором» или более точно «перебором» всех вариантов

Page 13: МАШИНА ТЬЮРИНГА

Как определяется сложность алгоритмов? Предположим, что на ленте записано N символов и посчитаем,

сколько шагов T сделает машина Тьюринга прежде, чем остановится.

Зависимость T(N) и можно рассматривать как меру сложности алгоритма

Для первого алгоритма (определение чётности числа) машина Тьюринга сделает N шагов, для второго (деление числа M на N) MN шагов

Но во втором случае мы рассматривали многоленточную машину Тьюринга. Если заменить её машиной с одной лентой, то шагов будет существенно больше. Может ли тогда трудоемкость иметь порядок T2, T3 или больше?

Может, но это всегда будет степенная функция! Поэтому все такие алгоритмы объединяют в один класс сложности P –алгоритмы ПОЛИНОМИАЛЬНОЙ сложности

Page 14: МАШИНА ТЬЮРИНГА

Проблема на миллион долларов В алгоритме для проверки простоты числа сразу

работают N полиномиальных алгоритмов, класс сложности таких задач называют классом алгоритмов НЕДЕТЕРМИНИРОВАННОЙ ПОЛИНОМИАЛЬНОЙ сложности

До сих пор неизвестно, можно ли их свести к обычным «непереборным» алгоритмам. Эта задача называется задачей P≠NP и входит в число задач, поставленных для решения в XXI веке.

Например, существует «задача коммивояжера», состоящая в том, что надо найти кратчаший маршрут между городами, соединенными транспортной сетью. Проверить, что предложенный маршрут меньше какого либо заданного числа просто, но найти маршрут, длина которого меньше заданного числа, трудно. Это и демонстрирует суть проблемы P≠NP.

Page 15: МАШИНА ТЬЮРИНГА

Задача о занятом бобре

Page 16: МАШИНА ТЬЮРИНГА

Неоптимальное решение

Page 17: МАШИНА ТЬЮРИНГА

Для тех, кто хочет попробовать себя в исследовании алгоритмов

Сайт конкурса: www.kio.spb.ru/kio

Page 18: МАШИНА ТЬЮРИНГА

Тьюрмиты и Тримувьи – плоские и пространственные машины Тьюринга

Page 19: МАШИНА ТЬЮРИНГА

Галерея изображений, построенных трехмерной машиной Тьюринга

Page 20: МАШИНА ТЬЮРИНГА

Журнал «Компьютерные инструменты в школе»

Электронное приложение «Журнал в журнале»

Page 21: МАШИНА ТЬЮРИНГА

Все, желающие найти статьи про машину Тьюринга, занятых бобров, тьюрмитов, тримувьев и прочее, могут получить БЕСПЛАТНЫЙ доступ к архивам журнала

Для этого надо зарегистрироваться на сайте журнала и отправить электронное письмо с просьбой открыть архивы Позднякову С.Н[email protected]

Сайт журнала: www.kio.spb.ru/journal