
- •Теория алгоритмов
- •Содержание
- •Приложение…………………………………..……………………………..…107 Предисловие
- •§1. Понятие алгоритма. Примеры. Способы задания. Общие свойства. Необходимость математического уточнения понятия алгоритма
- •1.1.Понятие алгоритма
- •Примеры нечисловых алгоритмов
- •1.2. Общие свойства алгоритмов
- •1.3. Способы задания алгоритмов
- •Графическое представление алгоритмов
- •1.4. Необходимость уточнения понятия «алгоритм»
- •Образец решения задачи.
- •Контрольная работа №1
- •§2 Нормальный алгоритм Маркова
- •2.1.Понятие ассоциативного исчисления
- •Нетрудно понять, что
- •2.2. Нормальные алгоритмы Маркова
- •2.3. Вычисление арифметических функций с помощью нормальных алгоритмов
- •Образец решения задачи.
- •Контрольная работа №2
- •13. Задайте нормальный алгоритм Маркова для вычисления функции
- •§3. Машины Тьюринга
- •3.1. Описание машины Тьюринга
- •3.2. Вычисление числовых функций на машинах Тьюринга
- •3.3. Композиция машин Тьюринга
- •Вопросы для самоконтроля.
- •§4. Сведение любого алгоритма к вычислению числовой функции. Геделевская нумерация объектов
- •4.1. Перевод из одного алфавита в другой (кодирование)
- •Отделяя разные буквы пустым сигналом (т. Е. Пустым промежутком), получаем возможность перевода слов с русского алфавита на язык радиосигналов.
- •Возможны и переводы слов вначале на язык цифр, а далее - цифры на язык радиосигналов.
- •4.2. Нумерация пар и n-ок натуральных чисел
- •4.3. Сведение любого алгоритма к числовой функции. Метод Гёделя
- •Вопросы для самоконтроля
- •§5. Примитивно рекурсивные функции
- •Вопросы для самоконтроля
- •§6. Универсальная функция для . Существование вычислимых, но не примитивно рекурсивных функций
- •Вопросы для самоконтроля
- •§7. Частично рекурсивные функции. Тезис Чёрча
- •Вопросы для самоконтроля
- •Образцы решения задач.
- •Контрольная работа №3
- •§8 Рекурсивные и рекурсивно перечислимые множества
- •8.1. Рекурсивные множества
- •8.2. Рекурсивно перечислимые множества
- •§9. Примеры неразрешимых и нерешенных проблем
- •9.1. Неразрешимые проблемы
- •9.2. Нерешенные проблемы
- •Литература.
- •Приложение Формирование понятия «обратная функция» у студентов
- •Литература
Примеры нечисловых алгоритмов
Пример 7. Греческая мифология повествует о том, как легендарный Тезей отважился проникнуть в подземный лабиринт с тем, чтобы отыскать и убить чудовищного Минотавра и благополучно выбрался из лабиринта, пользуясь клубком ниток, врученным ему Ариадной. Каким же методом пользовался Тезей, продвигаясь по запутанным коридорам подземелья, что не заблудился?
Представим себе, что имеется конечное число площадок лабиринта A,B,C,D,…,Q, соединенных между собой коридорами. Каждый коридор соединяет две смежные площадки. От некоторых площадок исходит только один коридор (тупиковые площадки). Например, схематически лабиринт можно представить в следующем виде:
Площадка X достижима с площадки Y, если существует путь, ведущий от Y к X через промежуточные коридоры и площадки: Y,X1,X2,…,Xn,X, где Y и X1,X1 и X2,…,Xn и X смежные площадки.
Так, в нашей схеме площадка G достижима с площадки A, а площадка M – недостижима.
Тезею следует разыскать Минотавра, если площадка, на которой находится Минотавр, достижима с той площадки, где стоит Ариадна с концом клубка в руке. Уничтожив Минотавра, Тезею следует возвратиться по кратчайшему пути. Если же Минотавр недостижим, то Тезею следует, обследовав все достижимые площадки, вернуться к Ариадне.
Укажем один приемлемый алгоритм. Будем считать, что кроме клубка ниток Тезей запасся куском мела для пометки обследованных площадок и коридоров.
В процессе поиска Тезею могут встретиться коридоры:
а) ни разу не пройденные (свободные),
б) пройденные один раз (с протянутой по ним нитью),
в) пройденные дважды – туда и обратно (помеченные с двух концов крестиками).
В случае а) Тезею следует идти вперед, разматывая за собой клубок. Если с данной площадки исходит несколько свободных коридоров, то он должен выбрать ближайший справа от себя коридор. Например, попав первый раз с площадки C на площадку E, он должен идти по коридору ED.
Если же окажется, что на данной площадке все коридоры меченые (т.е. либо отмечены крестиком, либо протянута нить), то в этом случае Тезею следует двигаться в обратном направлении по тому же коридору, по которому он только что пришел. При этом ему следует наматывать клубок и коридор помечать крестиком. Так, например, попав на площадку B со стороны D он не найдет свободного коридора и вынужден будет идти по BD, DE и наматывать клубок. Коридоры BD и DE с обоих концов будут помечены крестиком.
Выбор хода на площадке зависит от следующих признаков:
Минотавр. Следует убить его и по коридорам, по которым протянута нить, вернуться к Ариадне.
Свободный ход. Имеется, по крайней мере, один свободный коридор.
Петля. От данной площадки расходятся, по крайней мере, два коридора, через которые протянута нить.
Отсутствие всех трех предыдущих признаков – тупиковая площадка.
Ариадна. Поиск прекращается.
Итак, процесс поиска Минотавра определяется следующей таблицей.
-
№ п/п
Признак
Ход
1
Минотавр
Остановка, далее обратный ход
2
Свободный коридор
Разматывание нити
3
Петля
Наматывание нити
4
Тупик
Наматывание нити
5
Ариадна
Прекращение поиска
Через конечное число ходов Тезей обязательно придет к Ариадне, т.к. лабиринт конечный. При этом если с площадки, где осталась Ариадна, достижима площадка с Минотавром, то Тезей обязательно разыщет его, если же площадка с Минотавром недостижима, то убедится в этом.
Пример 8. Вспомним алгебраический способ определения тождественной истинности формул алгебры высказываний: пользуясь основными тождествами булевой алгебры, данную формулу алгебры высказываний приводим к конъюнктивной нормальной форме. Далее смотрим: все ли элементарные дизъюнкции содержат некоторое элементарное высказывание А одновременно с его отрицанием А, и делаем соответствующий вывод.
Пример 9. На плацу выстроены в каре 100 солдат в форме 1010 без учета их роста. Требуется отобрать среди них самого высокого солдата.
Решение.
Выбираем самого рослого в каждом ряду.
Выбираем самого рослого среди 10 отобранных солдат.
Алгоритм для реализации в обоих этапах: В каждом ряду i=1,2,…,9.
Начиная от j=1 до 9, сравни по росту стоящих рядом двух солдат xj и xj+1, переходи к указанию 2).
Если xj выше чем xj+1 , то пусть они меняются местами, переходи к указанию 1).
Солдат, стоящий крайним справа в ряду j самый рослый
Выполни указания 1) и 2) для солдат, стоящих справа в каждом ряду.
С
олдат, стоящий в дальнем правом углу будет самым рослым.
Пример 10. Рабочее поле в виде квадрата разбито на n2 квадратиков, причем соседние квадратики соединены проходами (см. рис 1.). В нижнем левом углу имеется единственный вход (выход) в поле.
Робот должен обследовать все клетки поля, начиная с входа, ни разу не побывав дважды в одном квадратике (не считая входного квадратика) и выйти из поля.
Команды для робота:
Приведем решение для случая, когда n – четное число. Каждой клетке зададим номер xi,j, где i – порядковый номер по горизонтали, а j – порядковый номер по вертикали. Входная клетка будет иметь номер x1,1.
Вход в клетку х11.
Вперед на 1 шаг.
Вперед на (n-2) шага.
Поворот на 900 вправо.
Вперед на 1 шаг.
Поворот на 900 вправо.
Вперед на (n-2) шага.
Поворот на 900 влево.
Вперед на 1 шаг. Если это возможно, то перейти к указанию 12.
Поворот на 900 влево.
Переход к указанию 3.
Поворот на 900 вправо.
Вперед на 1 шаг.
Поворот на 900 вправо.
Вперед на (n-1) шаг.
Поворот на 900 влево.
Вперед на 1 шаг.
Конец.
В случае, когда n – нечетное число, по-видимому, задача неразрешима.
Алгоритмы в примерах 7,8,9 и 10 являются примерами логических алгоритмов. Примерами нечисловых математических алгоритмов можно назвать способы решения задач на построение с помощью циркуля и линейки (такие задачи приведены в конце §1).