Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

A08DPPMAT_UPS2006D00

.pdf
Скачиваний:
61
Добавлен:
19.02.2016
Размер:
761.9 Кб
Скачать

2) Схема нормального алгорифма. Рассмотрим две буквы и , которые не входят в алфавит A. Формулой подстановки назовем выражение

u v

(10.1)

или выражение

 

u v,

(10.2)

где u и v — произвольные слова в алфавите A.

Формула без точки (10.1) называется простой формулой, а формула с точкой (10.2) называется заключительной формулой. В обоих случаях формула имеет левую часть u и правую часть v, которые должны быть словами в алфавите A . Знаки и могут быть любыми буквами вне алфавита A . Мы могли вместо них использовать, например, греческие буквы α и β.

Схема Z нормального алгорифма A — это конечная упорядоченная последовательность формул подстановок

u1

v1

 

u2

v2

(10.3)

 

. . .

 

uk

vk,

 

 

vi могут быть формулы с точкой

где вместо некоторых формул ui

ui vi. Например, схема нормального алгорифма может иметь две формулы подстановки

u1

 

v1

(10.4)

u2

 

v2

 

 

 

 

 

Знаком . обозначаем любую из букв и . Поэтому вместо (10.3)

общий вид схемы можно записать так:

 

 

u1

.

v1

 

u2

.

v2

(10.5)

 

. . .

 

 

uk

.

vk

 

Формулы ui vi и ui vi рассматриваются как следующая инструкция по переработке произвольного слова P в алфавите A . Находим вхождение слова ui в слово P и заменяем его на vi.

91

Работа нормального алгорифма. Пусть на вход нормального алгорифма A со схемой Z поступило слово P . Начинаем процесс, направленный на получение из исходного слова P некоторого слова Q — результата переработки слова P . Совершаем проход по схеме Z, двигаясь сверху вниз, как показывает стрелка:

u1

.

v1

 

u2

.

v2

(10.6)

 

. . .

 

 

uk

.

vk

 

 

 

 

 

Наше намерение — осуществить следующие действия 1)–5).

 

1)Среди левых частей u1, u2, . . . , uk в (10.6) нужно отыскать первое по порядку слово ui, которое входит в слово P .

2)Заменить найденное слово ui в слове P на слово vi, и получить некоторое слово P1. Возможно несколько вхождений ui в слово P . Тогда заменяется на vi первое вхождение ui в слове P .

3)Если при замене применялась заключительная формула ui vi, то переработка слова P завершена и алгоритм останавливается. Полученное слово P1 — результат переработки слова P .

4)Если при замене применялась незаключительная формула ui vi, то слово P1 заново обрабатывается схемой Z и алгоритм продолжает работу.

5)Возможно, что при проходе по схеме Z вообще не обнаружено ни

одного вхождения слов u1, u2, . . . , uk в слово P . Тогда результат переработки — само слово P и алгоритм останавливается.

Рассмотрим естественность данных правил. Допустим, что при проходе по схеме Z среди слов u1, u2, . . . , uk обнаружено несколько вхождений

вслово P . Пусть, например, имеются вхождения u2, u5, u7. Мы выбираем первое вхождение, а именно u2 заменяем в слове P на v2. Такую однозначность, а не произвольный выбор для замены, требует условие детерминированности алгоритма. По этой же причине возникает правило замены

конкретного ( первого ) вхождения ui в слове P на vi.

Пусть при проходе по схеме Z сверху вниз вообще не обнаружено ни

одного вхождения слов u1, u2, . . . , uk в слово P . По правилу 5) результат замены — само слово P . Можно сказать, что, не выполнив ни одного действия, мы получили результат. Сравним с работой некоторого исполнителя, которому предписано: «вы должны все черные парты в аудитории пе-

92

рекрасить в белый цвет». Исполнитель, войдя в аудиторию, не обнаруживает черных парт. Поэтому работа выполнена без какого-либо действия и исходное состояние парт в аудитории — результат работы. Невыполнение предписания означает, что в аудитории осталась неперекрашенная черная парта.

Условие остановки и результат работы. Проанализируем протекание алгоритмического процесса и его результат. Обозначим дополнительно исходное слово P P0. Рассмотрим первый проход по схеме (аналогично для других проходов). Имеем две возможности а) и б).

а) Нет ни одного вхождения u1, . . . , uk в слово P

P0. Алгорифм оста-

навливается (1 случай остановки). P0 — результат переработки.

б) Существуют вхождения u1, . . . , uk в слово P

P0. Выполнена за-

мена ui на vi, и получено слово P1. Если при замене применялась заключительная формула, то переработка слова P завершена. Алгорифм останавливается (2 случай остановки). P1 — результат переработки.

Если при замене применялась незаключительная формула, то полученное слово P1 заново обрабатывается схемой. При втором проходе по схеме из P1 получаем слово P2, а затем возможно P3 и т.д.

В результате получаем ровно один из двух случаев I или II.

I. Процесс переработки слов обрывается и получено слово Q A P , т.е. получен результат применения нормального алгорифма A к слову P .

II. Процесс переработки слов бесконечен. Тогда нет результата

QA P и алгорифм A неприменим к слову P .

Очевидно, что описанный выше нормальный алгорифм A удовлетворяет всем требованиям, предъявляемым к понятию алгоритма, и является точным математическим понятием.

Примеры нормальных алгорифмов. Вначале приведем примеры нормальных алгорифмов для работы с натуральными числами.

Алгорифм сложения натуральных чисел. Построим нормальный алгорифм, вычисляющий сумму двух натуральных чисел x и y. Для этого рассмотрим алфавит из трех символов A 0, , . Число n N изображаем словом

0 . . .

n

валфавите A . В этом слове n палочек, перед которыми стоит символ 0.

93

Искомый нормальный алгорифм A имеет схему из одной заключительной формулы подстановки u1 v1, где u1 0 — слово из двух букв, а v1 Λ — пустое слово. Тем самым схема алгорифма имеет вид

0

Если нужно вычислить сумму x y, то подаем на вход алгорифма A ее изображение, т.е. слово

P0 . . . 0 . . .

x y

Алгоритм A удалит из P подслово 0 и в один шаг переработает входное слово P в выходное слово Q. При этом

Q0 . . . . . .

x y

Итак, на выходе имеем слово Q, изображающее число x y, что и нужно. Алгоритм умножения чисел гораздо сложнее и рассматривается в за-

дачах 8–10.

Вычисление остатка при делении на 4. Построим нормальный алгорифм, который находит остаток от деления натурального числа x на 4. Для этого рассмотрим алфавит из двух символов A 0, .

Искомый нормальный алгорифм имеет схему из одной формулы (простой формулы подстановки, правая часть которой — пустое слово). Пусть на вход алгорифма подается слово

P 0 . . . . . .

q r

Оно изображает натуральное число x 4q r, где r 0, 1, 2, 3 — остаток от деления числа x на 4. После q проходов по схеме в слове P сотрется 4q палочек и останется r палочек. При q 1 проходе замены нет, алгорифм останавливается. Результат переработки Q равен

0 . . .

r

и изображает остаток r.

94

В последующих четырех примерах происходит переработка слов в произвольном алфавите A a1, . . . , ak .

Тождественный алгорифм. Рассмотрим алгорифм A, который задается схемой

a1

a1

 

a2

a2

(10.7)

 

. . .

 

ak

ak

 

 

 

 

Пусть P — произвольное слово в алфавите A . Алгорифм совершит один

проход по схеме, переработает P в P и остановится. Поэтому A P

P .

Аннулирующий алгорифм. Полагаем теперь, что нормальный алгорифм A задается схемой

 

a1

 

 

 

a2

 

(10.8)

 

 

. . .

 

 

ak

 

 

Пусть P

 

 

 

ai1 . . . aim — слово на входе. Вначале алгорифм совершит m

проходов по схеме, каждый раз стирая в слове по одной букве с наименьшим индексом. При m 1 проходе на входе пустое слово. Алгорифм останавливается. Получаем результат A P Λ.

Алгорифм, применимый лишь к пустому слову. Пусть нормальный

алгорифм задается схемой

 

 

a1

a1

 

a2

a2

(10.9)

 

. . .

 

ak

ak

 

 

 

 

Данный алгорифм применим лишь к пустому слову.

 

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

Например, мы можем рассмотреть вербальный алгорифм в алфавите A a1, . . . , an , где n 1, с единственным правилом: любое слово P ai1 . . . aim в алфавите A перерабатывается в перевернутое слово

Qaim . . . ai1 (обращающий алгорифм). Можно доказать [17, с.170], что

95

не существует нормального алгорифма в алфавите A с данным действием.

Поэтому определение алгоритма по Маркову не будет утверждать о совпадении класса нормальных алгорифмов и класса вербальных алгорифмов, а будет иметь другую формулировку. Рассмотрим эту формулировку.

Пусть задан алфавит A . Добавим к алфавиту A новые буквы. Получим алфавит A1 с условием A A1.

ОПРЕДЕЛЕНИЕ 10.1 . Пусть заданы алфавиты A и A1. Если A A1, то алфавит A1 называется расширением алфавита A .

ОПРЕДЕЛЕНИЕ 10.2 . Нормальный алгорифм в каком-либо расширении A1 алфавита A называется нормальным алгорифмом над алфавитом A .

Покажем, что нормальный алгорифм в каком-либо расширении A1 при действии на словах алфавита A реализует более богатый набор преобразований слов по сравнению с нормальным алгорифмом в алфавите A .

Рассмотрим алгорифм A левого присоединения слова v. В нем для любого входного слова u выходным словом должно быть слово vu, которое получено приписыванием к слову u слева слова v. Искомый нормальный алгорифм A имеет простейший вид. Его схема состоит из одной формулы подстановки

v

Действительно, пусть имеется входное слово u. Оно имеет вид u Λu. Пустое слово Λ заменяется на v. Получается слово vu, что и нужно.

Аналогично можно рассмотреть алгорифм A правого присоединения слова v. В нем для любого входного слова u выходным словом должно быть слово uv. Однако здесь нас ждет неожиданное осложнение, и простейшего алгорифма, который мы имели в случае левого присоединения, нет. Для реализации правого присоединения мы расширим алфавит A a1, . . . , an . Пусть α — некоторая буква, отличная от всех букв алфавита A . Добавив букву α, получим новый алфавит A1 A α — расширение алфавита A .

Рассмотрим нормальный алгорифм A1 в новом алфавите A1. Тем самым алгорифм A1 — это алгорифм над старым алфавитом A .

96

Его схема имеет следующий вид.

αa1

 

a1α

 

 

 

. . .

 

 

 

 

 

(10.10)

 

αan

 

anα

α

 

v

 

 

 

 

α

 

 

 

 

на словах старого алфавита A .

Рассмотрим действие алгорифма A1

Пусть на вход A1 поступило слово u в алфавите A . Оно не содержит буквы α. Поэтому при первом проходе по схеме сработает последняя формула подстановки α. Пустое слово в начале u заменится на α. В результате к слову u слева добавится буква α. При следующих проходах по схеме буква α перемещается несколько раз вправо, пока не станет в конце слова. При следующем проходе буква α заменится на v и алгорифм остановится. Слово u переработалось в слово uv.

Таким же образом, добавляя буквы к алфавиту A , мы можем получить схему для операции перевертывания слов в алфавите A — операции, которую нельзя реализовать схемой в алфавите A . Поэтому в данном случае добавление буквы к алфавиту A и рассмотрение расширенного алфавита A1 позволили схемой в A1 реализовать те действия над словами в исходном алфавите A , которые нельзя было реализовать схемой в A . И в других случаях, добавляя новые буквы к алфавиту A , мы получаем нормальный алгорифм A1 в расширенном алфавите A1, который при ограничении на словах из алфавита A имеет наперед заданное действие.

А.А.Марков [17] предложил следующий тезис.

Принцип нормализации. Пусть задан произвольный вербальный алгорифм A в алфавите A . Тогда существует расширение A1 алфавита A и нормальный алгорифм A1 в алфавите A1 с условием: произвольное слово P в алфавите A перерабатывается нормальным алгорифмом A1 в тот же самый результат, в который слово P перерабатывается исходным вербальным алгорифмом A.

Если мы не используем принцип нормализации, то всякий раз, имея произвольный вербальный алгорифм, мы не в состоянии обозреть все возможные действия A, B, . . . , которые производятся над перерабатываемыми объектами. Однако доказательство несуществования алгоритма A проводится примерно так. Предположим противное, пусть вербальный алгорифм A с заданной переработкой слова P в слово Q существует.

97

Мы знаем (обозреваем) все возможные действия A, B, . . . , которые производятся над P для получения Q. Проверим, что применения A, B, . . . не могут дать Q. Поэтому алгорифма A не существует.

Если мы не в состоянии обозреть все возможные действия A, B, . . . , то не сможем подобным образом доказать несуществование алгорифма A. Если мы используем принцип нормализации, то действия в произвольном вербальном алгорифме A обозримы и четко перечислены. Действительно, у нас есть нормальный алгорифм A1 в алфавите A1 и его действия на словах из A1 жестко заданы и обозримы схемой алгорифма A1 . Тем более обозримы ограничения этих действий на словах алфавита A , а это и есть действия вербального алгорифма A.

Поэтому принцип нормализации можно рассматривать как способ обозрения всевозможных действий в вербальных алгоритмах. Поскольку эти действия строго заданы, то мы имеем третий вариант определения алгоритма. В результате принятия принципа нормализации мы получили инструмент для доказательства неосуществимости задачи нахождения определенного алгоритма. Поэтому мы можем предсказывать неосуществимость определенных задач. Аналогичный тезис в физике — закон сохранения энергии (сохранение общего количества энергии в замкнутой физической системе). Он предсказывает неосуществимость задачи создания perpetuum mobile (вечного двигателя).

Доказано, что данная формулировка понятия алгоритма (принцип нормализации) эквивалентна другим формулировкам понятия алгоритма: тезису Черча, использующему частично рекурсивные функции, и тезису Тьюринга, использующему понятие вычислительной машины. Поэтому еще раз подкрепляется уверенность в том, что мы нашли и выразили в трех формах фундаментальное понятие математики, логики и информатики — понятие алгоритма. При этом частичная рекурсивность, машина Тьюринга, МНР и нормальный алгорифм — лишь различные формы выражения этого самостоятельного понятия.

98

Упражнения к лекции 10

ЗАДАЧА 1. Нормальный алгорифм A в алфавите из букв кириллицы имеет схему следующего вида:

рез сл

 

у е

х ж

 

жа зон

 

м р

л лл

Описать работу алгорифма A со словом муха .

« »

ЗАДАЧА 2. В схеме предыдущей задачи заменим в первой формуле букву для обозначения заключительной формулы подстановки на букву для обозначения простой формулы подстановки. Описать работу полученного алгорифма A со словом «муха». Существует ли слово на выходе алгорифма?

В следующих трех задачах рассматривается алфавит из двух символов A , α . Число n N изображается словом . . . из n палочек. Пара

n

чисел m, n изображается в виде слова . . . α . . . с использованием

разделителя α.

m n

 

ЗАДАЧА 3. Пусть нормальный алгорифм A в алфавите A , α имеет схему:

α αα

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

ЗАДАЧА 4. Пусть нормальный алгорифм A в алфавите A , α имеет схему:

α α

α α

α

99

α αα

Показать, что если на входе алгорифма A , α имеется изображение числа n, то на выходе алгорифма получается частное при делении числа n на 4.

ЗАДАЧА 5. Заменим схему из предыдущей задачи на следующую:

α α

Показать, что если на входе алгорифма A имеется изображение числа n, то на выходе алгорифма получается пара — частное и остаток при делении числа n на 4.

В задачах 6,7 нужно рассмотреть работу нормального алгорифма с заданной схемой и описать все случаи переработки произвольного входного слова P .

ЗАДАЧА 6. Нормальный алгорифм A имеет схему, состоящую из одной заключительной формулы, т.е. схему

Описать работу алгорифма A с данной схемой. Описать работу алгорифма со схемой, состоящей из незаключительной формулы

ЗАДАЧА 7.

Пусть нормальный

алгорифм

A в алфавите

A a1, a2, . . . , an имеет схему одного из трех видов:

a1

a1

a1

a2

a2

a2

1 . . .

2 . . .

3 . . .

an

an

an

 

 

 

 

 

 

 

 

Описать работу алгорифма A в каждом из трех случаев.

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

100