книги из ГПНТБ / Кушнер, Б. А. Лекции по конструктивному математическому анализу
.pdf52 АЛГОРИФМЫ И ПЕРЕЧИСЛИМЫЕ МНОЖЕСТВА [ГЛ. I
В качестве другого примера рассмотрим вхождения пу стого слова в слово «ба». Таких вхождений имеется три: ааба, бааа и бааа. Вообще, число вхождений пустого слова в слово длины п равно п -f- 1.
Вхождение (3) слова Р в слово Q будем называть первым вхождением Р в Q, если длина левого крыла любого вхождения Р в Q не меньше длины Ri. Напри мер, вхождение (4) является первым вхождением слова
«ба» |
в слово |
«баобаб». |
|
|
|
|
|
|
||
Пусть |
R\aPaR2 |
— вхождение |
и |
S — слово. |
Слово |
|||||
R1SR2 будем называть результатом подстановки |
слова S |
|||||||||
вместо вхождения R\aPccR2. Например, |
слово |
«баркас» |
||||||||
есть результат |
подстановки |
слова |
«бар» вместо |
вхож |
||||||
дения |
«акаракас» |
(которое |
является |
первым |
вхожде |
|||||
нием |
слова |
«кар» |
в слово «каркас»), |
а |
слово |
«переход» |
||||
есть результат подстановки слова «пере» |
вместо |
первого |
||||||||
вхождения пустого слова в слово |
«ход». |
|
|
|
||||||
3. |
В основе |
определения |
нормального |
алгорифма |
ле |
жит та идея, что любой алгорифмический процесс над словами может быть сведен к выполнению локальных преобразований слов, т. е. к замене вхождений одних слов в другие некоторыми третьими словами. При этом в описании алгорифма должен быть указан список раз решенных преобразований такого типа, т. е. должно быть указано, какие слова и на какие можно заменять. Кроме того, поскольку одни слова могут входить в другие не сколькими различными способами, нужно уточнить, вме сто каких именно вхождений следует выполнять подста новки из упомянутого только что списка. Наконец, для однозначной определенности процесса применения алго рифма надлежит как-то фиксировать очередность, в ко торой выполняются разрешенные подстановки. Опреде ление нормального алгорифма, к которому мы перехо дим, предлагает некоторый естественный вариант такого рода уточнений.
Условимся, что буквы «—*•» и «•» не принадлежат |
рас |
|||||
сматриваемым алфавитам. Пусть Р и |
Q — слова |
в |
не |
|||
котором алфавите А. Слова P-+Q |
и P-*--Q |
|
мы |
|||
называем |
соответственно |
простой |
и |
заключительной |
||
формулой |
подстановки в |
алфавите |
А |
(при этом Р |
и |
Q |
называются левой и правой частью соответствующей формулы подстановки). Нормальный алгорифм в алфа-
|
НОРМАЛЬНЫЕ АЛГОРИФМЫ |
53 |
вите А |
задается посредством (упорядоченного) |
списка |
формул |
подстановок (как простых, так и заключитель |
ных) в этом алфавите. В качестве исходных данных до
пускаются произвольные слова в алфавите |
А. |
Работа |
|||||||
нормального |
алгорифма 91 над произвольным |
словом |
Р |
||||||
(в |
алфавите |
А) |
описывается |
следующим |
образом. |
|
|||
|
1) Если ни одна из левых частей формул |
подстано |
|||||||
вок |
не входит в Р, то процесс применения 21 к Р |
закан |
|||||||
чивается |
и |
его |
результатом |
считается |
само |
слово |
Р. |
||
В этом |
случае |
говорят, что слово Р не поддается алго |
|||||||
рифму 31. |
|
|
|
|
|
|
|
||
|
2) Если хотя бы одна из левых частей формул под |
||||||||
становок входит в Р, то отыскиваем самую первую |
(в по |
||||||||
рядке следования в списке) |
из таких формул |
и |
выпол |
няем подстановку правой части этой формулы вместо первого вхождения ее левой части в Р. Если использо ванная формула была заключительной, то процесс при менения 91 заканчивается и получившееся слово счи тается его результатом. В случае простой формулы под становки с получившимся словом поступаем так же, как и с Р (ср. рис. 2).
|
|
|
|
Выход |
|
|
3 |
|
j |
|
з |
Вход |
Щ |
|
р2 — щ |
|
Выход |
|
i |
/ |
Pn—BQn |
||
|
г |
2 |
2 |
||
|
|
|
Рис. 2. Блок-схема нормального алгорифма.
На рис. 2 б означает либо «•» (заключительная фор мула подстановки), либо пустое слово (простая формула подстановки). Блок
Р
Вход
54 |
|
АЛГОРИФМЫ |
И |
ППРЕЧИСЛПМЫЕ |
МНОЖЕСТВА |
|
[ГЛ. 1 |
||||||
работает |
следующим |
образом: если |
Pt не |
входит |
в по |
||||||||
ступившее на |
вход |
слово |
Р, |
то Р |
передается в |
(i + |
1)-й |
||||||
блок |
(или |
на |
выход |
алгорифма, если i = «); если Pt |
вхо |
||||||||
дит в Р, то выполняется подстановка Q,- вместо первого |
|||||||||||||
вхождения Я,- в |
Я |
и получившееся слово передается на |
|||||||||||
выход 2 в случае простой формулы |
подстановки |
( 6 = г Л ) |
|||||||||||
и на |
выход |
3 |
в |
случае |
заключительной |
формулы |
|||||||
( б = |
•)• |
|
|
|
|
|
|
|
|
|
|
|
|
Таким |
образом, |
для |
полного |
задания |
нормального |
алгорифма необходимо указать алфавит, в котором дей ствует этот алгорифм, и выписать список формул под становок в этом алфавите. В дальнейшем (следуя М а р
к о в у [2]) мы будем |
при задании нормальных алгориф |
мов выписывать формулы подстановок друг под другом |
|
(порядок следования |
формул, учитываемый в разделе 2) |
определения нормального алгорифма, — сверху вниз), объединяя их слева фигурной скобкой (см. п. 4). Полу чаемые таким образом фигуры называются схемами нормальных алгорифмов.
Согласно приведенному нами определению примене
ние нормального алгорифма |
к данному слову состоит |
в процессе последовательного |
преобразования исходного |
слова путем выполнения соответствующих операций под становок вместо первых вхождений. В случае обрыва этого процесса мы получаем некоторое слово, которое считаем результатом работы данного нормального алго рифма; если же процесс преобразования исходного слова не заканчивается, то нормальный алгорифм неприменим к этому слову. Ясно, что возможны два типа обрыва
процесса |
применения |
нормального алгорифма: |
||
1) на некотором этапе получилось слово, не поддаю |
||||
щееся |
данному алгорифму |
(естественный обрыв); |
||
2) |
на |
некотором |
этапе |
применена заключительная |
формула подстановки (заключительный обрыв). |
||||
Легко, |
однако, видеть, |
что можно ограничиться нор |
мальными алгорифмами, у которых процесс применения заканчивается лишь заключительным обрывом. В самом деле, если мы присоединим к схеме нормального алго рифма 51 снизу формулу «—>•» (с пустой левой и правой частью), то, с одной стороны, получившемуся алгорифму будут поддаваться все слова, а с другой стороны, он бу дет вполне эквивалентен 91 относительно их общего ал-
НОРМАЛЬНЫЕ АЛГОРИФМЫ |
55 |
фавита. Указанный только что алгорифм мы называем замыканием 21 и обозначаем посредством % ' * ) .
4. Прежде чем привести примеры нормальных алго
рифмов, условимся о |
некоторых |
обозначениях. |
Пусть |
|||
21 — нормальный алгорифм, |
Р — слово в его |
алфавите |
||||
и Р поддается |
21, т. е. в схеме |
21 есть формулы |
подстано |
|||
вок с левыми |
частями, |
входящими |
в Р. Тогда |
процесс |
применения 21 к Р начнется с использования одной из этих формул (именно, самой верхней), в результате чего получится некоторое слово Q. Если использованная фор мула подстановки была простой, то мы говорим, что 21 просто переводит Р в Q за один шаг, и пишем 21: Р (— Q. В случае заключительной формулы подстановки мы го ворим, что 21 заключительно переводит Р в Q за один шаг, и пишем 21: Р (— • Q.
Вместо |
записи |
21: |
Р0 г- Ри 21: Р, h Р 2 , . . . . Я: Л , - , I - Рп |
мы будем использовать более короткие записи:
21: Р0 |
\-Р{ |
\-Р2 Н |
. . . Р„_, h Л, |
|
или |
|
|
21: Р 0 |
Р„, |
или даже |
|
|
||
|
|
|
|
|
Аналогично вместо |
записи |
|
||
21: Р 0 Н Р „ |
|
21: Р, Ь - Р 2 |
21: Р„_, | - - Р „ |
|
будут применяться |
записи |
|
||
21: |
Р 0 |
г - Р , г- . . . |
/>„_, Г--Р», |
|
21: |
Ро\=^п'Рп> |
|
||
2t: |
P o N - ^ - |
|
Во всех приводимых ниже примерах мы считаем фи ксированным некоторый алфавит А = {aia2 . . . a„}. Упо минания об этом алфавите часто опускаются.
*) В качестве полезного упражнения предлагаем читателю до казать, что рассмотрение лишь алгорифмов с естественным обры вом сужает класс нормальных алгорифмов.
56 |
АЛГОРИФМЫ И ПЕРЕЧИСЛИМЫЕ МНОЖЕСТВА |
[ГЛ. 1 |
1) Тождественный алгорифм. Пусть нормальный ал горифм 3li в алфавите А задается схемой
{-*•
Ясно, что для любого слова Р (в алфавите А) 5R,: PhP.
Таким образом, 1 применим к любому слову и всегда
%(Р)^Р-
2)Пустой алгорифм. Определим нормальный алго рифм 312 в алфавите А схемой
|
|
|
{-> |
|
Очевидно, |
неприменим |
ни к какому слову, |
поскольку |
|
при любых Р и п > |
О |
|
|
|
|
|
%• |
Р\=пР- |
|
3) Аннулирующий |
алгорифм. Рассмотрим |
нормаль |
||
ный алгорифм 5Яз в алфавите А со схемой |
|
'а,->
а2 -»-
|
а„->- |
|
|
|
Пусть Р =?= £i . . . £ь — произвольное |
непустое |
слово |
||
в алфавите А. Поскольку см |
а„ — вое буквы |
алфа |
||
вита |
А, то найдется наименьшее i такое, что а,- |
входит |
||
в Р. |
Пусть / — наименьшее натуральное |
число такое, что |
||
а* = |
Z,j. Тогда, очевидно, на |
первом шаге 5R3 «выбрасы |
вает» £j из Р, т. е.
%: Р Ь £ , . . .
После k таких 'Шагов мы получаем пустое слово, т. е.
%• РЫЛ-
Кроме того, пустое слово не поддается ЭДз. Таким обра зом, SR3 перерабатывает любое слово в пустое слово.
При рассмотрении схемы 913 бросается в глаза одно родная группа формул, связанных с перечислением всех
букв алфавита. Ясно также, |
что изменение |
порядка, |
в котором перечисляются эти |
формулы, никак |
не отра- |
НОРМАЛЬНЫЕ АЛГОРИФМЫ |
57 |
зилось бы на результатах работы интересующего нас алгорифма. Сказанное оправдывает применение в по добных ситуациях сокращенных записей типа
Здесь первая строка означает группу формул, полу чаемую при «пробегании» переменной т| всего алфавита А, причем порядок, в котором выписываются эти фор мулы, в данной записи не указывается. Таким образом, схема нормального алгорифма может быть восстановле на по сокращенной записи лишь с точностью до порядка расположения некоторых формул. Поэтому сокращенные записи применяются только в тех ситуациях (как, на пример, в случае аннулирующего алгорифма), где такая неоднозначность не существенна.
4) Алгорифм, применимый лишь к пустому слову.
Рассмотрим нормальный алгорифм в алфавите А, оп ределяемый схемой (в сокращенной записи)
{Г|->Г| |
( t ) G 4 |
Ясно, что для любого |
непустого слова Р и любого |
п > О |
|
%: |
РЫР. |
ипоэтому 914 неприменим к Р.
Сдругой стороны, пустое слово не поддается SR4 и, следовательно,
|
9?4 ( Л ) =т= Л . |
|
|
|
5) |
Алгорифм, применимый |
лишь к |
непустым |
словам. |
Пусть |
Sis — нормальный алгорифм |
в алфавите |
А со |
|
схемой |
|
|
|
|
|
Г ] - > п |
(г\е=А) |
|
|
Для любого непустого слова Р, очевидно,
%: Р Ь- • Р
58 |
АЛГОРИФМЫ И ПЕРЕЧИСЛИМЫЕ МНОЖЕСТВА |
[ГЛ. ] |
и потому Шв(Р). Ясно также, что при любом п
ЛК Л
ипоэтому SR5 неприменим к пустому слову.
6) Отсекающие алгорифмы. Пусть а — некоторая буква, не принадлежащая алфавиту А. Как уже отмеча лось, пары слов в алфавите А можно задавать посред ством слов вида
PaQ,
где Р, Q е А. В связи с этим иногда оказываются нуж ными алгорифмы, выделяющие при таком задании пар первую и вторую компоненты. Эту задачу решают нор
мальные |
алгорифмы ЭТб, 3ll |
в алфавите А |
[) [а], зада |
|||||
ваемые |
схемами |
|
|
|
|
|
|
|
|
|
| |
ал - * а |
(т] <= А) |
|
|
|
|
|
|
1 |
а - > • |
|
|
|
|
|
|
|
J т)а - > а |
(г) е Л) |
|
|
|
|
|
|
|
1 |
а - * |
|
|
|
|
|
Действительно, |
|
|
|
|
|
|
||
|
|
91в: P a Q H - Я а Ь - Р , |
|
|
|
|
||
|
|
We: PaQh=aQ Н • Q. |
|
|
|
|
||
Следовательно, |
|
|
|
|
|
|
||
|
|
|
$(/>aQ) = P, |
|
|
|
|
|
|
|
|
«Rl (PaQ)==Q. |
|
|
|
|
|
Отметим, |
что |
поскольку слова в A U {а}, в |
которые |
не |
||||
входит а, не поддаются алгорифмам |
9й, |
то |
Ш1, |
3ll |
||||
применимы и к таким словам. Таким образом, |
SKg, 5^6 |
|||||||
применимы к любым словам |
в алфавите A U {а}. |
|
||||||
7) Алгорифм левого присоединения |
слова. |
Пусть Р — |
||||||
произвольное |
слово в алфавите А. Рассмотрим нормаль |
|||||||
ный алгорифм |
9^7 в |
Л со схемой |
|
|
|
|
|
НОРМАЛЬНЫЕ |
АЛГОРИФМЫ |
|
59 |
Ясно, что для любого Q |
|
|
|
|
|
^ ( Q ) = |
PQ. |
|
|
Алгорифм 5Ri |
(примера 1) |
можно рассматривать как |
||
алгорифм левого |
присоединения пустого |
слова. |
|
|
8) Алгорифм |
правого присоединения |
слова. |
Построе |
|
ние этого алгорифма несколько сложнее. Пусть |
а — не |
которая буква, отличная от всех букв алфавита А. Рас
смотрим |
нормальный алгорифм |
в |
алфавите A U {а} |
|||||
со схемой |
|
|
|
|
|
|
||
(5) |
|
|
аг)->т]а |
( ц е ^ ) |
|
|
||
(6) |
|
|
а - * |
Р |
|
|
|
|
(7) |
|
|
—> а |
|
|
|
|
|
Пусть |
Q — произвольное слово в |
алфавите |
А. Сна |
|||||
чала |
к Q слева приписывается |
а (формула (7)): |
||||||
|
|
|
<: |
Q Н aQ. |
|
|
|
|
Затем |
а |
«бежит» |
вправо |
по |
слову |
Q |
(группа |
формул |
(5)), |
т. е. |
|
|
|
|
|
|
|
|
|
|
«Па: aQHQa, |
|
|
|
||
и, наконец, а заменяется на Р (формула |
(6)): |
|
||||||
Таким |
образом, |
Я?: |
QahQP. |
|
|
|
||
Ki(Q) = |
QP, |
|
|
|
||||
|
|
|
|
|
|
|||
т. е. Зев присоединяет к любому слову |
справа |
слово Р. |
||||||
9) |
Обращающий |
алгорифм. |
Пусть |
|
|
|||
(8) |
|
|
Р =?= Y1Y2 |
• • • Y* |
|
|
|
— произвольное (непустое) слово в алфавите А. Обра щением Р назовем слово Q, записанное теми же бук вами, но в обратном порядке, т. е.
Q=r= YftYft-i . . . Yi-
Обращением пустого слова будем считать пустое слово. Обозначим через a, р две различные буквы, не входящие в алфавит Л, и рассмотрим нормальный
60 АЛГОРИФМЫ И ПЕРЕЧИСЛИМЫЕ МНОЖЕСТВА [ГЛ. 1
алгорифм *R9 в |
алфавите |
A U {ар} |
со следующей схе |
мой * ) : |
|
|
|
(9) |
act - > р |
|
|
(10) |
р а - * р |
|
|
(П) |
Р£-£Р |
(£б=Л) |
|
(12) |
|
|
|
(13) |
al^vfit, |
(£, t i e |
Л) |
( И ) |
—>• а |
|
|
и покажем, что Sftg перерабатывает любое слово в алфа вите А в его обращение.
Для пустого слова имеем (сначала применяется два раза формула (14), затем формулы (9) и (12))
% : Л Н о Ь а а 1-р Н - Л . |
|
|
Аналогично, для однобуквенного слова |
Р = F yi |
|
%• Yi Н «Yi Ь a «Yi |
Ь PYi Н Y I P Н • Yi- |
|
Пусть теперь Р — слово |
вида (8) с k |
2. Так же, |
как и раньше, поскольку а |
и р не входят |
в Р, сначала |
применяется формула (14):
%: Р Ь- аР.
Далее, очевидно, применяются формулы группы (13), (формулы (10) — (12) не могут применяться из-за отсут ствия буквы р в слове аР, а формула (9) из-за того, что в аР не входит aa) и а «проносит» первую букву слова Р в конец:
%: аР t= Y2Y3 • • • Y*oYi«
Затем снова применяется формула (14):
%: у2у3 • • • YftOYi Н ay2 Y3 • • • Y A O Y I
и а «проносит» в конец букву у2:
CIY2Y3 . . • Yft«Yi И Ys • • • YfeOY2aYi-
*) Здесь используется несколько более сложная, чем раньше, сокращенная запись. Именно, a£r] -*• г|а£ означает группу формул, получаемую всевозможными подстановками вместо £ и Т] любых букв алфавита Л,
НОРМАЛЬНЫЕ АЛГОРИФМЫ |
61 |
После ряда таких циклов получаем наконец обраще ние Р, «разбавленное» буквами а:
%'• ^Иау&ауй-! . . . <XYI.
Обозначим YftaY><-i • • • a Y i через Р а . Очевидно,
|
|
%: аРа |
\- ааРа |
I - рР а . |
Затем |
р «бежит» |
вправо, уничтожая а (группа формул |
||
(11) и |
формула |
(Ю)): |
|
|
|
P^aH= YfeYfe-i |
. . . YiP |
Ь-YftYft-i • •• Yi- |
Следовательно, 9сэ переработал Р в его обращение, что и требовалось.
В качестве упражнения предлагаем читателю по строить удваивающий нормальный алгорифм, т. е. такой нормальный алгорифм 91, что при любом Р
% (Р) — pp.
Приведем в заключение два примера, связанных с на туральными числами, — именно, нормальные алгорифмы, складывающие и умножающие натуральные числа. Под натуральными числами мы подразумеваем слова в ал фавите {0|} вида 0, 0|, 01 | . . . Пары натуральных чисел задаются как слова вида *)
(15) |
|
|
т, |
п |
|
|
где тип |
— натуральные |
числа. |
|
|
||
10) |
Алгорифм |
сложения |
натуральных |
чисел. |
По |
строение этого алгорифма совершенно очевидно: доста точно выбросить из слова (15) букву «,» и букву «0», которой начинается т. Схема соответствующего нор мального алгорифма SRio (в алфавите {0|}) имеет одну формулу
{,
11) Алгорифм умножения натуральных чисел. Рас смотрим нормальный алгорифм Sftn в алфавите {0|, ah)
*) Обращаем внимание читателя на то, что следует различать употребление запятой как пунктуационного знака русского языка и как буквы используемых нами алфавитов.