Автор: Пользователь скрыл имя, 13 Февраля 2012 в 15:10, курсовая работа
Данная курсовая работа состоит из двух частей. Первая содержит описание машины Тьюринга и ее свойств, описание сложностей алгоритмов и проблем. Вторая часть состоит из решения задачи: нахождения произведения двух чисел.
ВВЕДЕНИЕ
I ГЛАВА: ОПИСАНИЕ ………………………….....………………………2
1. ОПИСАНИЕ МАШИНЫ ТЬЮРИНГ…………………………………………………3
1.1 СВОЙСТВА МАШИНЫ ТЬЮРИНГА КАК АЛГОРИТМА……..…..…..……………..5
2. СЛОЖНОСТЬ АЛГОРИТМОВ …………………………………………………7
2.1 СЛОЖНОСТЬ ПРОБЛЕМ………………………………………..………………..9
3. МАШИНА ТЬЮРИНГА И АЛГОРИТМИЧЕСКИ НЕРАЗРЕШИМЫЕ ПРОБЛЕМЫ..........12
II Глава :Решение задачи…………………..…………………..……..………....19
ЗАКЛЮЧЕНИЕ …………………………..………………………………21
СПИСОК ЛИТЕРАТУРЫ …………………………………………………….23
Введение
I
Глава: Описание ………………………….....………………
1. Описание машины Тьюринг…………………………………………………3
1.1 Свойства машины Тьюринга как алгоритма……..…..…..……………..5
2. Сложность алгоритмов …………………………………………………7
2.1
Сложность проблем………………………………………..………………
3. Машина Тьюринга и алгоритмически неразрешимые проблемы..........12
II Глава :Решение
задачи…………………..…………………..……..……
Заключение …………………………..…………………
Список
литературы …………………………………………………
Машина
Тьюринга - это очень простое
Устройство машины Тьюринга чрезвычайно просто, однако на ней можно выполнить практически любую программу. Для выполнения всех этих действий предусмотрена специальная таблица правил, в которой прописано, что нужно делать при различных комбинациях текущих состояний и символов, прочитанных с ленты.
В 1947 г. Алан Тьюринг расширил определение, описав "универсальную машину Тьюринга". Позже для решения определенных классов задач была введена ее разновидность, которая позволяла выполнять не одну задачу, а несколько.
Данная
курсовая работа состоит из двух частей.
Первая содержит описание машины Тьюринга
и ее свойств, описание сложностей
алгоритмов и проблем. Вторая часть
состоит из решения задачи: нахождения
произведения двух чисел.
Глава
1.
Описание машины
Тьюринга
Алан Тьюринг (Turing) в 1936 году опубликовал в трудах Лондонского математического общества статью "О вычислимых числах в приложении к проблеме разрешения", которая наравне с работами Поста и Черча лежит в основе современной теории алгоритмов.
Предыстория создания этой работы связана с формулировкой Давидом Гильбертом на Международном математическом конгрессе в Париже в 1900 году неразрешенных математических проблем. Одной из них была задача доказательства непротиворечивости системы аксиом обычной арифметики, которую Гильберт в дальнейшем уточнил как "проблему разрешимости" - нахождение общего метода, для определения выполнимости данного высказывания на языке формальной логики.
Статья Тьюринга как раз и давала ответ на эту проблему - вторая проблема Гильберта оказалась неразрешимой. Но значение статьи Тьюринга выходило далеко за рамки той задачи, по поводу которой она была написана.
Приведем характеристику этой работы, принадлежащую Джону Хопкрофту: "Работая над проблемой Гильберта, Тьюрингу пришлось дать четкое определение самого понятия метода. Отталкиваясь от интуитивного представления о методе как о некоем алгоритме, т.е. процедуре, которая может быть выполнена механически, без творческого вмешательства, он показал, как эту идею можно воплотить в виде подробной модели вычислительного процесса. Полученная модель вычислений, в которой каждый алгоритм разбивался на последовательность простых, элементарных шагов, и была логической конструкцией, названной впоследствии машиной Тьюринга".
Машина Тьюринга является расширением модели конечного автомата, расширением, включающим потенциально бесконечную память с возможностью перехода (движения) от обозреваемой в данный момент ячейки к ее левому или правому соседу.
Формально машина Тьюринга может быть описана следующим образом. Пусть заданы:
конечное множество состояний – Q, в которых может находиться машина Тьюринга;
конечное множество символов ленты – Г;
функция
δ (функция переходов или
один символ из Г-->е (пустой);
подмножество Σ є Г - -> определяется как подмножество входных символов ленты, причем е є (Г - Σ);
одно из состояний – q0 є Q является начальным состоянием машины.
Решаемая проблема задается путем записи конечного количества символов из множества Σ є Г – Si є Σ на ленту:
eS1S2S3S4... ... ... Sne
после
чего машина переводится в начальное
состояние и головка
Остановка машины происходит в том случае, если для пары (qi,Si) функция перехода не определена.
Алан
Тьюринг высказал предположение, что
любой алгоритм в интуитивном
смысле этого слова может быть
представлен эквивалентной
1.1
Свойства машины
Тьюринга как алгоритма
На примере машины Тьюринга хорошо прослеживаются свойства алгоритмов. Попросите учащихся показать, что машина Тьюринга обладает всеми свойствами алгоритма.
Дискретность. Машина Тьюринга может перейти к (к + 1) - му шагу только после выполнения каждого шага, т.к именно каждый шаг определяет, каким будет (к + 1) - й шаг.
Понятность. На каждом шаге в ячейку пишется символ из алфавита, автомат делает одно движение (Л, П, Н), и машина Тьюринга переходит в одно из описанных состояний.
Детерминированность. В каждой клетке таблицы машины Тьюринга записан лишь один вариант действия. На каждом шаге результат определен однозначно, следовательно, последовательность шагов решения задачи определена однозначно, т.е. если машине Тьюринга на вход подают одно и то же входное слово, то выходное слово каждый раз будет одним и тем же.
Результативность. Содержательно результаты каждого шага и всей последовательности шагов определены однозначно, следовательно, правильно написанная машина Тьюринга за конечное число шагов перейдет в состояние q0, т.е. за конечное число шагов будет получен ответ на вопрос задачи.
Массовость. Каждая машина Тьюринга определена над всеми допустимыми словами из алфавита, в этом и состоит свойство массовости. Каждая машина Тьюринга предназначена для решения одного класса задач, т.е. для каждой задачи пишется своя (новая) машина Тьюринга.
2. Сложность
алгоритмов
Сложность алгоритма определяется вычислительными мощностями, необходимыми для его выполнения. Вычислительная сложность алгоритма часто измеряется двумя параметрами: Т (временная сложность) и S (пространственная сложность, или требования к памяти). И Т, и S обычно представляются в виде функций от n, где n - это размер входных данных. (Существую и другие способы измерения сложности: количество случайных бит, ширина канала связи, объем данных и т.п.)
Обычно вычислительная сложность алгоритма выражается с помощью нотации "О большого", т. е описывается порядком величины вычислительной сложности. Это просто член разложения функции сложности, быстрее всего растущий с ростом n, все члены низшего порядка игнорируются. Например, если временная сложность данного алгоритма равна 4n2+7n+12, то вычислительная сложность порядка n2, записываемая как О(n2).
Временная сложность измеренная таким образом не зависит от реализации. Не нужно знать ни точное время выполнения различных инструкций, ни число битов, используемых для представления различных переменных, ни даже скорость процессора. Один компьютер может быть на 50 процентов быстрее другого, а у третьего шина данных может быть в два раза шире, но сложность алгоритма, оцененная по прядку величины, не изменится. Это не жульничество, при работе с алгоритмами настолько сложными, как описанные в этой книге, всем прочим можно пренебречь (с точностью до постоянного множителя) в сравнении со сложностью по порядку величины.
Эта нотация позволяет увидеть, как объем входных данных влияет на требования к времени и объему памяти. Например, если Т= О(n), то удвоение входных данных удвоит и время выполнения алгоритма. Если Т=О(2n), то добавление одного бита к входным данным удвоит время выполнения алгоритма.
Обычно алгоритмы классифицируются в соответствии с их временной или пространственной сложностью. Алгоритм называют постоянным, если его сложность не зависит от n: 0(1). Алгоритм является линейным, если его временная сложность О(n). Алгоритмы могут быть квадратичными, кубическими и т.д. Все эти алгоритмы - полиномиальны, их сложность - О(m), где m - константа. Алгоритмы с полиномиальной временной сложностью называются алгоритмами с полиномиальным временем
Алгоритмы,
сложность которых равна О(tf(
В
идеале, криптограф хотел бы утверждать,
что алгоритм, лучший для взлома
спроектированного алгоритма
С ростом n временная сложность алгоритмов может стать настолько огромной, что это повлияет на практическую реализуемость алгоритма.
При
условии, что единицей времени для
нашего компьютера является микросекунда,
компьютер может выполнить
Взглянем
на проблему вскрытия алгоритма шифрования
грубой силой. Временная сложность
такого вскрытия пропорциональна количеству
возможных ключей, которое экспоненциально
зависит от длины ключа. Если n - длина
ключа, то сложность вскрытия грубой силой
равна 0(2n). Сложность вскрытия грубой силой
при 56-битовом ключе составляет 256, а при
112-битовом ключе - 2112. В первом случае вскрытие
возможно, а во втором - нет.