13293-1 (Формализация понятия алгоритма), страница 2
Описание файла
Документ из архива "Формализация понятия алгоритма", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "13293-1"
Текст 2 страницы из документа "13293-1"
В общем случае сложность этого алгоритма будет равна k+1, где k - число десятичных цифр в записи числа. Докажем это утверждение. Для k=1 истинность этого утверждения очевидна. Пусть это утверждение верно для k=l. Докажем, что оно сохранит истинность и для k=l+1. Появление очередной цифры в старшем разряде числа потребует от нас вместо исполнения команды qs !H или команды qo1!Л либо увеличить эту цифру на 1, т.е. выполнить одну из команд в столбце а), либо “перескочить” через эту цифру, выполнив одну из команд группы b), после чего остановиться, выполнив команду 11 b). Таким образом, после обработки k цифр наша Машина Тьюринга выполнит k команд, обработка последней цифры потребует 2-х команд. Тем самым, общее количество выполненных команд будет равно l+2=(l+1)+1, что и требовалось доказать.
Обратите внимание, что вместе с оценкой сложности мы фактически доказали свойство конечности нашего алгоритма, т.е., что он обязательно остановится.
Пример 2. Построить Машину Тьюринга, вычисляющую
U((n)1)=(n-1)1 ,
где n>0 и (n)1 означает запись числа n в унарной форме, т.е. в виде . Другими словами, эта Машина Тьюринга с алфавитом D={ , | }должна стирать одну палочку в записи числа. На рисунке 3 показана программа для этой машины.
| | ||
qo | qsЛ | |qoЛ |
qs | |qsЛ | !H |
Рис.3
Обратите внимание, что если по ошибке в вход этой машине будет подано “пустое” слово, то она “зациклится”, т.е. будет бесконечно долго писать | . Действительно, единственно некоректной конфигурацией в начале работы будет сочетание qo. По условию n>0. Поэтому в этом “неправильном” случае машина будет зацикливаться. Нетрудно подсчитать, что сложность этого алгоритма равна n+1.
Пример 3. Построить Машину Тьюринга
U((n)1)=(n)10 ,
где n>0 и (n)10 - запись числа n в десятичной системе. Другими словами эта Машина Тьюринга приводит запись числа n из унарной формы в десятичную. Работу этой машины организуем следующим образом.
Изначально на ленте находится слово из одних | символов и каретка находится над крайне правым | символом. Сотрем один символ |, а перед словом из символов | поставим цифру 1. Затем опять сотрем крайне правый символ | , а затем увеличим цифровую запись слева от слова из | на 1 и т.д. Обратим внимание, что стирать палочки мы умеем, это делает Машина U2((n)1)=(n-1)1 и увеличивать десятичную запись числа на 1 тоже умеем, это делает машина U1((n)10)=(n+1)10. Программа для этой машины показана на рисунке 4.
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |||
Нач. состояние Сти раем палочку (крайнеправый сим вол |) | qo | qerH | qeH | 1qerH | 2qerH | 3qerH | 4qerH | 5qerH | 6qerH | 7qerH | 8qerH | 9qerH | 0qerH |
ql | 1qrП | |qlЛ | 1qerH | 2qerH | 3qerH | 4qerH | 5qerH | 6qerH | 7qerH | 8qerH | 9qerH | 0qerH | |
Про дви-жение вправо до пер вой | , либо если нет | , то пе реход в q2l | qr | q2lЛ | |q2rH | 1qrП | 2qrП | 3qrП | 4qrП | 5qrП | 6qrП | 7qrП | 8qrП | 9qrП | 0qrП |
Движе-ние влево до на чала слова из цифр и стоп | q2l | !H | |qerH | 1q2lЛ | 2q2lЛ | 3q2lЛ | 4q2lЛ | 5q2lЛ | 6q2lЛ | 7q2lЛ | 8q2lЛ | 9q2lЛ | 0q2lЛ |
Движение вправо на | до пер вой пусто-ты | q2r | q3lЛ | |q2rП | 1qerH | 2qerH | 3qerH | 4qerH | 5qerH | 6qerH | 7qerH | 8qerH | 9qerH | 0qerH |
Сти раем палочку. Дви жемся до пер вой циф ры и увели чива ем ее на единицу | q3l | qerH | qdЛ | 1qerH | 2qerH | 3qerH | 4qerH | 5qerH | 6qerH | 7qerH | 8qrH | 9q3lЛ | 0q2lЛ |
qd | 1qrH | |qdЛ | 2qrH | 3qrH | 4qrH | 5qrH | 6qrH | 7qrH | 8qrH | 9qrH | 0qrЛ | 1qrЛ |
Рис.4. Машина Тьюринга для U((n)1)=(n)10
Оценим сложность этого алгоритма. В начале работы каретка пройдет (n-1) символ при движении влево и (n-1) символ при движении обратно, т.е. 2(n-1). На втором проходе - 2(n-2) и т.д. Отсюда число пройденных палочек, а следовательно и выполненных команд будет равно n(n-1). Машина n раз выполнит команду, увеличения текущей цифры на 1. Количество просмотров цифр будет равно ([log10n]+1)([log10n]).Таким образом, получаем
n(n-1)+n+[log10n] ([log10n]+1) n2+[log10n(log10n+1)]
Пример 4. Построить машину Тьюринга, для сравнения двух чисел a и b, заданных в унарной форме.
если
Пусть на ленте числа a и b заданы в унарной форме. Каретка располагается над лентой так, как показано на рисунке 5,
Рис.5.
т.е. над крайне правым символом | числа a . Cравнивать числа a и b будем, стирая попарно одну палочку в записи a и одну палочку в записи b. Если останутся палочки только в записи a, то значит a>b, если только в записи b, то a1.
| | x | 1 | 0 | ||
qo | qerH | xqrH | xqerH | ||
qr | qCHLЛ | xqlH | xqrП | ||
ql | qCHRП | xqrH | xqlЛ | ||
qCHL | qa=bП | |qa>bH | xqCHLЛ | ||
qCHR | q’a=bЛ | |qaH | xqCHRП | ||
qa=b | 1!H | |qerH | qa=bП | ||
q’a=b | 1!H | |qerH | q’a=bЛ | ||
qa>b | q’a>bЛ | |qa>bП | xqa>bП | ||
q’a>b | 1!H | |qa>bЛ | q’a>bЛ | ||
qa | qerH | |qaЛ | 0q’aЛ | ||
q’a | q’aП | |qerH | xq’aЛ | 1qerH | 0!H |
Рис.6.
Теперь уместно спросить, в чем же принципиальные отличия записи алгоритмов, в форме Машины Тьюринга от того, которое мы использовали в лекции 1?
Прежде всего в представленных данных. В алгоритме Евклида нахождения НОД мы говорили, что а и b представляют числа.
Что такое число? Какова форма его записи?
От ответов на эти вопросы будут зависеть правила действий над ними для вычисления разности, сравнения чисел и т.д. Поэтому сказать, что а и b - это числа не достаточно. Необходимы соответствующие уточнения, договоренности между исполнителями.
У Машины Тьюринга данные - это слова в некотором алфавите. Слово в алфавите - это конечная последовательность символов из определенного множества, называемого алфавит.
Второе принципиальное отличие - действия. При интуитивном рассмотрении понятия алгоритма мы использовали действия: положи, умножь, сложи, сравни и т. д., смысл которых мы считаем по умолчанию общеизвестным. Хотя, если предположить, что речь идет о числах в логарифмической системе счисления (см. Каут. “Искусство программирования”), то вряд ли можно считать, что смысл операции умножения является общеизвестным. В то же время, сравнить два символа: совпадают они или нет может каждый человек и заменить один символ на другой тоже.
Поэтому, запись алгоритма в терминах Машины Тьюринга более строгая, в том смысле, что она не имеет двусмысленностей, понимается однозначно. Отсюда и рассуждения о ее свойствах более четкие и строгие, чем в интуитивном смысле.
Однако, возникает другой вопрос. А любую вычислимую функцию можно описать в виде Машины Тьюринга? Ответ на этот вопрос Тьюринг сформулировал в виде тезиса, названного его именем.
Тезис Тьюринга: Для любой интуитивно вычислимой функции существует МТ, ее вычисляющая.
Это тезис, а не теорема. Его нельзя доказать, так как в нем используется понятие интуитивно вычислимой функции, смысл которого определен интуитивно, т.е. не строго.
Выводы :
А реализуют лишь подмножество (класс вычислимых функций) функции, рассматриваемых в курсе математического анализа;
Алгоритмизация решения задачи состоит в разбиении задачи на подзадачи, подзадач на подподзадачи и т.д., до тех пор, пока решение очередной подзадачи мы не сведем к действиям надлежащего исполнителя;
МТ можно строить из ранее построенных МТ.
Вопросы:
Квадратный корень из x - вычислимая функция?
Что такое вычислимая функция?
Как отличить вычислимую функцию от не вычислимой?
Множество вещественных чисел перечислимо?
Что такое перечислимое множество?
Мн-во четных целых чисел разрешимо относительно мн-ва целых чисел?
Сформулируйте условие разрешимости мн-ва В относительно мн-ва М.
Перечислить параметры для уточнения поняти А.
Как в МТ задаются исходные данные?
Как в МТ задаются возможные результаты?
Как в МТ задаются промежуточные результаты?
Как в МТ задается правило начала работы А?
Как в МТ задается правило окончания работы?
Как в МТ извлекается результат?
Можно ли МТ строить из других МТ?
Как можно объединять несколько МТ в одну МТ?
Список литературы
Для подготовки данной работы были использованы материалы с сайта http://www.ergeal.ru/