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

книги из ГПНТБ / Кушнер, Б. А. Лекции по конструктивному математическому анализу

.pdf
Скачиваний:
19
Добавлен:
22.10.2023
Размер:
14.87 Mб
Скачать

52 АЛГОРИФМЫ И ПЕРЕЧИСЛИМЫЕ МНОЖЕСТВА [ГЛ. 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)

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