13293-1 (Формализация понятия алгоритма)

2016-07-31СтудИзба

Описание файла

Документ из архива "Формализация понятия алгоритма", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "13293-1"

Текст из документа "13293-1"

Формализация понятия алгоритма

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

Один из возможных путей формализации состоит в том, чтобы подобрать понятия, уже известные в математике, и для которых уже разработан формализм. Одним из таких понятий-претендентов является функция. Действительно, на первый взгляд между функцией и алгоритмом есть много общего. У функции есть область определения, у алгоритма есть область применимости; у функции есть область допустимых значений, у алгоритма есть определенное множество результатов.

Рассмотрим взаимосвязь между функцией и алгоритмом. Сразу отметим, что основные свойства этой взаимосвязи мы будем здесь приводить без доказательства. Тому есть как минимум две причины. Первая - у читателя не предполагается знания необходимого математического аппарата; вторая - это увело бы нас в сторону от основной цели - формализации понятия алгоритма.

Определение 2.1. Говорят, что алгоритм А вычисляет функцию f(x), если:

Существует взаимно однозначное соответствие между областью определения f(х) и областью применимости А;

Для любого х из области определения f верно: f(x)= А((x))

В этом случае функция f(x) называется вычислимой функцией.

Определение 2.2. Говорят, что Алгоритм А разрешает множество М относительно множества Х, где МХ, если:

Для любого х из множества М верно, что А(х) = “истина”;

Для любого у из Х, но у не принадлежит М, А(у) =“ложь”.

В этом случае говорят, что множество М разрешимое.

Примеры разрешающих алгоритмов - признаки делимости на 2, на 3, на 5. Эти алгоритмы разрешают множество натуральных чисел, кратных 2 (соответственно 3 либо 5), относительно всего множества натуральных чисел.

Определение 2.3. Говорят, что алгоритм А перечисляет множество В если область применимости А есть множество натуральных чисел N, а совокупность результатов есть множество В.

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

Изучение свойств вычислимой функции, а стало быть и алгоритма, показало, что:

Область применимости любого алгоритма - перечислимое множество; Следствие: алгоритмы не могут работать на множестве вещественных чисел.

Функция f(x) вычислима тогда и только тогда, когда перечислим ее график, т.е. множество {(x, f(x))} перечислимо.

Множество MX разрешимо относительно множества X, когда M и X\M перечислимы.

Отсюда видно, что понятие алгоритма не сводимо к понятию функции. Множество функций мощнее множества алгоритмов.

Самое важное различие между этими понятиями для нас состоит в том, что алгоритм определяет некоторый процесс, который мы называем вычислительным. Понятие функции не предполагает и не определяет никакого процесса. Функция представляется в виде “черного ящика”, на вход которого подали аргументы и на выходе получили результат. Как этот результат был получен - умалчивается. Понятие алгоритма наоборот прежде всего сфокусировано на процессе вычисления результата. Алгоритм определяет именно то, как по аргументам вычислить результат. Итак, понятие функции, как оно есть в математике, нам не подходит, нужно строить формализацию, специально для алгоритма.

Всякое уточнение понятия алгоритма характеризуется следующими семью параметрами:

Совокупность возможных исходных данных (алфавит исходных данных).

Совокупность возможных результатов (алфавит результатов)

Совокупность возможных промежуточных результатов (алфавит промежуточных результатов).

Множество действий.

Правило начала.

Правило окончания.

Правило определения расположения результата.

Здесь в качестве примеров уточнения понятия алгоритма мы рассмотрим Машину Тьюринга и Нормальные алгоритмы Маркова.

Машина Тьюринга.

Машиной Тьюринга называется формализм, предложенный для понятия алгоритма, английским математиком Аланом Тьюрингом. В 30-х годах нашего столетия Тьюринг занимался исследованием свойств вычислимых функций и объектом его внимания был вычислительный процесс.

В качестве исполнителя алгоритмов им был предложен автомат, состоящий из:

бесконечной ленты, разбитой на ячейки;

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

В каждой ячейке ленты может быть записан только один из определенного множества символов, называемого алфавитом. За одно срабатывание каретка способна выполнить следующие действия:

считать символ из ячейки, над которой она находится;

записать символ в ячейку, над которой она находится;

переместиться либо влево, либо вправо на следующую ячейку, либо остаться на месте.

изменять свое внутреннее состояние.

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

В терминах, упомянутых выше семи параметров машину Тьюринга можно определить следующим образом.

Совокупность возможных исходных данных - алфавит D;

Совокупность возможных результатов - алфавит D;

Совокупность возможных промежуточных результатов - алфавит D;

Множество действий:

множество правил вида apbqw, где a,b D; p,q Q; w {Л, П, Н}.

D - алфавит символов, которые могут появляться на ленте;

Q - множество символов, обозначающих состояния каретки.

Л, П, Н - символы, обозначающие передвижение каретки налево, направо или наместе соответственно.

Смысл правила apbqw состоит в следующем. Если каретка находится над ячейкой, в которой записан символ а, и каретка находится в состоянии p, то каретка должна:

записать в эту ячейку символ b (символ а при этом стирается),

из состояния p перейти в состояние q,

переместиться на следующую ячейку влево если w=Л, - вправо если w=П или остаться на месте если w=Н.

Правило начала: каретка всегда размещается над последним, считая слева направо, символом слова на ленте и находится в специальном начальном состоянии qo;

Правило окончания: есть специальное состояние, мы его будем обозначать символом ! из алфавита Q. Как только каретка переходит в состояние ! , она останавливается.

Например, если правило имеет вид apb!w , то после его выполнения вычисление считается законченным.

Правило расположения результата: справа от каретки до первого символа пустоты.

Дело в том, что пустота - это тоже символ, который мы будем обозначать символом .

Пример 1. Построить Машину Тьюринга, вычисляющую функцию

U(n)=n+1 , где n {0,1,2,3,4,5,6,7.8.9}.

Машина Тьюринга с алфавитом D={0,1,2,3,4,5,6,7.8.9} и Q={qo, qs, !},

где qo - начальное состояние, а ! - конечное.

Нижеприведенная последовательность команд, реализует требуемую функцию.

№ команды

a

b

1

0qo1qsH

0qs0qsЛ

2

1qo2qsH

1qs1qsЛ

3

2qo3qsH

2qs2qsЛ

4

3qo4qsH

3qs3qsЛ

5

4qo5qsH

4qs4qsЛ

6

5qo6qsH

5qs5qsЛ

7

6qo7qsH

6qs6qsЛ

8

7qo8qsH

7qs7qsЛ

9

8qo9qsH

8qs8qsЛ

10

9qo0qoЛ

9qs9qsЛ

11

qo1!Л

qs !H

Рис.1.

Рассмотрим таблицу на рисунке 1. Часть а) реализует увеличение цифры в текущей клетке на 1. Команда 9qo0qoЛ учитывает возникновение единицы переноса в старший разряд. Обратите внимание, что состояние qo сохраняется. Именно в этом состоянии мы увеличиваем цифру, в очередной клетке на единицу. Команда 11 в столбце а) - qo1!Л учитывает тот случай, когда в результате переноса разрядность числа возрастает на единицу. Последовательность команд в столбце b) обеспечивает соблюдение правила расположения результата. А именно, надо позаботиться, чтобы после увеличения числа на единицу, вся запись числа на ленте оказалась справа от каретки, согласно правилу размещения результата.

Нетрудно заметить, что пара: символ на ленте под кареткой и текущее состояние каретки однозначно определяет ту команду, которую надо применять. Действительно, среди записанных команд нет двух с одинаковыми левыми частями. Именно благодаря этому свойству Машина Тьюинга обеспечивает свойство детерминированности алгоритма. Таким образом, каретка всякий раз однозначно определяет ту команду, которую надо выполнить. Заметим, что проверку последовательности команд Машины Тьюринга на детерминированность осуществить очень просто. Достаточно сравнить левые части всех команд и убедиться, что они все разные.

Теперь, когда мы немного освоились с работой Машины Тьюринга и ее устройством, сделаем одно замечание по поводу записи последовательности команд, которую мы будем называть программой Машины Тьюринга. Один способ записи показан на рисунке 1. Другой способ основан на том, что пара - (текущий символ, текущее состояние каретки) однозначно определяет правую часть любой команды.

Действительно, возьмем таблицу размером p(m-1), где p=|D| - число символов алфавита, m=|Q| - число состояний каретки. В размерности указано (m-1) потому, что состояние ! не может встретиться в левых частях команд. Столбцы этой таблицы поименуем символами из D, а строки - символами из Q. Тогда в соответствующих полях таблицы надо будет записать лишь тройку из правых частей команд.

На рис. 2 показана табличная запись программы с рисунка 1.

0

1

2

3

4

5

6

7

8

9

qo

1qSЛ

2qSЛ

3qSЛ

4qSЛ

5qSЛ

6qSЛ

7qSЛ

8qSЛ

9qSЛ

0qoЛ

1!Л

qs

0qsЛ

1qsЛ

2qsЛ

3qsЛ

4qsЛ

5qsЛ

6qsЛ

7qsЛ

8qsЛ

9qsЛ

Рис.2.

Рассмотрим в качестве примера работу только что построенной Машины Тьюринга U1 для случая n=231. Первой выполненной командой будет команда 1a): 1qo2qsH; после этой последуют команды 4b): 3qs3qsЛ и 2b): 2qs2qsЛ и наконец, 11b): qs!H. Таким образом, сложность этого вычислительного процесса будет равна 4.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее