Квант

2

Алгоритмы на словах

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

Знаментийный немецкий математик Давид Гильберт в начале века предложил план доказательства непротиворечивости математики при помощи построения исчисления (то есть правило преобразования) слов. В начале тридцатых годов было выясено, что «всю математку» (и даже «всю аррифметику») виснуть в одно исчисление невозможно (это знаменита теорема Гёделя). Хотя надежды Гильберта в полном объеме не оправдались, отдельные разделы математики «форматизованы» таким путем удается, и все современные исследования по основаниям математики начинаются с подобной формализции. Во многих разделах математики (например, в математической лингвистике и общей алгебре) и ее приложения (скажем, языки программирования) слова стали одним из важнейших объектов изучения.

Теория алгоритмов родилась только в тридцатых годах нашего века. С тех пор понятие алгоритма также стало одним из важнейших в математике.

Хотя слово «алгоритм» появляется только в последнем разделе предложаемой статьи, все она посвязывана словам и алгоритмам, работаюшим со словами.

Вводный пример

Фиксируем на плоскости равносторонний треугольник ABC (рис. 1). Обозначим через R поворот плоскости на 120° против часовой стрелки вокруг центра O треугольника (рис. 2); через S обозначим осевую симметрию плоскости с осью OB (рис. 3). Каждый из преобразований R, S отображает треугольник ABC на себя. Поэтому их называют также самосовмещения исходного треугольника. Самосовмещения R и S мы будем называть элементарными.

Рассмотрим всевозможные композиции элементарных самосовмещений («Геометрия 7», п. 77). Каждая такая композиция снова, очень удобна, будет неокоторым самосовмещением.

Подобно обычным операциям сложения и умножения чисел, операция композиции самосовмещений обладает сочетательным, или ассоциативным, свойством: если f, g, h — самосовмещения, то

f∘g)∘h=f∘(g∘h).f \circ g) \circ h = f \circ (g \circ h).

(Это верно не только для самосовмещений треугольника, но и для произвольных отображений любого множества M в себя!) Поэтому в «длин-

Рис. 1.

ных» композициях элементарных самосовмещений скобки можно ставить в любом порядке, а значит, можно их и вообще не ставить. Например,

(R∘S)∘(R∘R)=R∘((S∘R)∘R)=R∘S∘R∘R.(R \circ S) \circ (R \circ R) = R \circ ((S \circ R) \circ R) = R \circ S \circ R \circ R.

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

3

Рис. 2.
воря, переместительный, или коммутативный, свойством. Так, в данном случае R∘S≠S∘RR \circ S \neq S \circ R (ср. рис. 4 и 5).

Напишем наудачу какую-нибудь «длинную» композицию элементарных самосовмещений:
X=S∘S∘R∘S∘R∘S∘R∘S∘R.X = S \circ S \circ R \circ S \circ R \circ S \circ R \circ S \circ R. (1)
Что можно сказать о самосовмещении XX?

Легко доказать, что все существует шесть самосовмещений исходного треугольника: тождественное отображение EE, оставляющее каждую точку плоскости на месте; поворот на 120∘120^\circ против часовой стрелки; поворот на 120∘120^\circ по часовой стрелке; осевые симметрии с осями OA,OB,OCOA, OB, OC. Из рисунков 4 и 5 видно, что осевая симметрия с осью OAOA совпадает с композицией S∘RS \circ R, а осевая симметрия с осью OCOC есть композиция R∘SR \circ S.

Задача. Представьте в виде композиции элементарных самосовмещений поворот на 120∘120^\circ по часовой стрелке.

Рис. 3.
Итак, наша наудачу написанная композиция (1) является одним из шести перечисленных самосовмещений. Каким же именно?

Разумеется, этот вопрос легко решить чисто геометрическим: продолжайте с исходным треугольником по очереди все указаные самосовмещения (не забудьте только, что запись f∘gf \circ g означает: сначала совпадает gg, потом f!f!) и посмотрит на конечное положение треугольника.

Для наших целей существено, что этот же вопрос можно решить при помощи некоторого алгебраического вычисления.

Легко проверить, что
{S∘R=R∘R∘S,R∘R∘R=E,S∘S=E.\begin{cases} S \circ R = R \circ R \circ S, \\ R \circ R \circ R = E, \\ S \circ S = E. \end{cases}

Кроме того, в любой композиции самосовмещений тождественное отображение EE можно опускать.

Поскольку нам предстоит сравнить до линная выкладка, да-

Рис. 4.
Рис. 5.

4

вайте со знаком композиции ∘\circ обходиться как с точкой при умножении: не будем этот знак писать. Равенства (1), (2) примут тогда вид

X=SSRSRSSR,X = SSRSRSSR,

{SR=RRS,RRR=E,SS=E.\begin{cases} SR = RRS, \\ RRR = E, \\ SS = E. \end{cases}

Композицию XX можно преобразовать так:

X=SSRSRSSR=X = SSRSRSSR =

=(SS)R(SR)(SR)(SS)R== (SS)R(SR)(SR)(SS)R =

=ER(RRS)(RRS)ER== ER(RRS)(RRS)ER =

=R(RRS)(RRS)R== R(RRS)(RRS)R =

=(RRR)(SR)R(SR)== (RRR)(SR)R(SR) =

=E(RRS)R(RRS)== E(RRS)R(RRS) =

=(RRS)R(RRS)=RRS(RRR)S== (RRS)R(RRS) = RRS(RRR)S =

=RRSES=RRSS=RR(SS)== RRSES = RRSS = RR(SS) =

=RRE=RR.= RRE = RR.

Ассоциативные исчисления

В только что проведенной выкладке мы фактически имели дело со словами (см. первый абзац статы).

В предыдущем разделе буквы RR и SS имели смысл: они обозначали в поле не конкретные объекты — неоторные самосовмещения. Сейчас мы заимемся изучением абстрактных х букв и слов — букв и построенных из них слов, которые ничего не обозначают. (Впрочем, ниже мы еще вернемся к примеру из предыдущего раздела.)

Исходный набор букв, из которого строятся слова, называется алфавитом. Число букв в слове называют его длиной.

Пусть наш исходный алфавит состоит всего из двух букв: {a,b}\{a, b\}. Тогда существует 4 слова длины 2: aa,ab,ba,bbaa, ab, ba, bb; 8 слов длины 3 и т. д. Разрешается говорить и об «однобуквенных» словах, словах длины 1; их всего два: aa и bb. Удобно считать, что существует также слова, не содержащие букв — пустое слово. Пусть слова — это аналог пустого множества. Его обозначают греческий буквой Λ\Lambda. Длиной его, конечно, считают число 0.

Наши «правила игры» будут иметь такой вид:

α↔β,\alpha \leftrightarrow \beta,

(5)

Рис. 6.

Рис. 7.

где α\alpha и β\beta — некоторые слова. Правило (5) означает, что в любом слове можно вместе α\alpha подставить слово β\beta и вместе β\beta — слово α\alpha. Правила вида (5) называются подстановками.

Рассмотрим для примера подстановку:

abab↔bb.abab \leftrightarrow bb.

(6)

В слова γ=abababbabb\gamma = abababbabb слова abababab входит в трех местах (рис. 6) или, как говорят в математике, имеет три входнения. Слово bbbb имеет в слова γ\gamma два входнения (рис. 6). Оdnкратны м применением подстановки (6) из слова γ\gamma можно получить 5 слов (рис. 7). К слову abaababaab подстановка (6) неприменима: в него не входят ни левая, ни правая часть этой подстановки.

Когда мы вычисляем (10+2)×(8−3)):(15−3)=(12⋅5):12=60:12=5(10+2) \times (8-3)) : (15-3) = (12\cdot 5):12 = 60:12 = 5, мы, по существу, применяем подстановки (10+2)↔12,(8−3)↔5,(12⋅5)↔60(10+2) \leftrightarrow 12, (8-3) \leftrightarrow 5, (12\cdot 5) \leftrightarrow 60 и т. п.

Подстановка вида

α↔Λ\alpha \leftrightarrow \Lambda

(7)

означает, во-первых, что в любом слове вместе α\alpha можно «подставить пустое слово», т. е. попросту выбросить входящие слова α\alpha. Если, например, подстановку

bb↔Λbb \leftrightarrow \Lambda

(8)

применить таким образом ко второму в слову γ\gamma, получится слова abababbabaabababbaba. Подстановка вида (7)означает, во-вторых, что в любом слове между любыми двумя буквами можно «вставить» слова α\alpha: естественно считать, что пустое слово входит между любыми буквами. Кроме того, применяем подстановку (7)«справа налево», можно,

5

конечно, «приписать» слова α\alpha как впереди, так и позади любого слова. Таким применением подстановки (8) можно из того же слова γ\gamma получить 6 слов (почему?).

Чтобы задать «игру», надо фиксировать некоторые конечный набор подстановок. Такой набор (вместе с алфавитом) в математической логике называется ассоциативным исчислением.

Два слова называются смejнными в данном ассоциативном исчислении, если одно из них можно получить из другого однократным применением какой-нибудь из подстановок этого исчисления. Два слова, δ\delta и η\eta, называются эквивалентными в данном исчислении, если их можно «соединить» цепочкой смejнных слов, т. е. если существует такие слова μ1\mu_1, μ2\mu_2, …, μn\mu_n, что в цепочке δ\delta, μ1\mu_1, μ2\mu_2 …, μn\mu_n, η\eta каждое слово можно своими соседями. Эквивалентность слов δ\delta, η\eta мы будем обозначать так: δ∼η\delta \sim \eta.

Разумеется, смejные слова эквивалентны.

Пример 1

Рассмотрим в алфавите {a,b}\{a, b\} ассоциативное исчисление с подстановками

{ba↔aab,aaa↔Λ,bb↔Λ.\begin{cases} ba \leftrightarrow aab, \\ aaa \leftrightarrow \Lambda, \\ bb \leftrightarrow \Lambda. \end{cases}

Какие слова в этом исчислении эквивалентны?

Например, aababbaaaba∼aaababbaaaba \sim a, поскольку в цепочке aababbaaabaaababbaaaba, aabaaaaabaaabaaaaaba, aabaabaaabaaba, aaaaabaaaaaaba, ababa,aaabba,bba,aababa, aaabba, bba, a каждое слово смejнено со своим соседями.

А нельзя ли указыть способ, как для любых двух слов в нашем алфавите узнавать, эквивалентны они или нет?

Сравнение равенств (4) с подстановками (9) подсказывает такой способ. Расмотрим равносторонний треугольник ABCABC и его самосовмещения R,SR, S (с. 2).

Для любого слова α\alpha обозначим через TαT_\alpha композицию элементов самосовмещений RR и SS, получающегося в результате замены в слова α\alpha буквы aa на RR и буквы bb — на SS. Например, Tba=SRT_{ba} = SR, Tabaa=RSRT_{abaa} = RSR.

Поскольку в композиции самосовмещений тоже действенное отображение EE можно не писать, положим по определению TΛ=ET_\Lambda = E.

Каждая композиция элементов самосовмещений может, очевидно, быть записана в виде TαT_\alpha, где α\alpha — некоторое слово.

Таким образом, мы получили неокторое соответствие между множеством всех слов в алфавите {a,b}\{a, b\} и множеством самосовмещений. Это соответствие не является обратным: различным словам может соответствовать одно и то же самосовмещение. Например, Tba=SR=RRS=TaabT_{ba} = SR = RRS = T_{aab} (ср. рисунки 5 и 8).

Способ, который мы хотим предложить для установления эквивалентности произвольных слов, основывается на трех «критах»:

(A) Левой и правой части каждой из подстановок исчисления соответствует мою же самосовмещение:

{Tba=Taab,Taaa=TΛ,Tbb=TΛ.\begin{cases} T_{ba} = T_{aab}, \\ T_{aaa} = T_\Lambda, \\ T_{bb} = T_\Lambda. \end{cases}

Рис. 8.

6

(B) Любое слово эквивалентно в нашей исчислении одному из цесми слов: Λ, а, b, аа, ab, ааб.
(B) Любым двум из слов Λ, а, b, аа, ab, ааб соответствует разные самосовмещения.
Прежде всего установим верность утверждений (A) — (B).
Утверждение (A) вытекает из равенств (4). Утверждение (B) проверяется геометрическим: подейстуем на исходный треугольник самосовмещениями TΛ,Ta,Tb,Taa,Tab,TaabT_\Lambda, T_a, T_b, T_{aa}, T_{ab}, T_{aab} и увидим, что получаются разные результаты (см. рисунки 1—3, 9, 4 и 8).
(B) доказывает последнее. Пусть α\alpha — произвольное слово. Применив к нему нужное число раз первую из подстановок (9), мы «перегоним» все aa в начало. Таким образом, слово α\alpha эквивалентно слову вида
β=aa…abb…b⏟k\beta = \underbrace{aa \dots abb \dots b}_{k}
(k⩾0,l⩾0)(k \geqslant 0, l \geqslant 0). Если ll четно, то, применив к β\beta нужное число раз третью из подстановок (9), мы можем «учичтожить» в β\beta все bb. В этом случае β\beta, а значит, и α\alpha, эквивалентно слову вида
γ′=aa…a⏟k\gamma' = \underbrace{aa \dots a}_{k}
В зависимости от остатка деления числа kk на 3 (он равяется 0, 1 или 2)

слово γ′\gamma' при помощи второй из подстановок (9) преобразуется в одно из слов Λ,a,aa\Lambda, a, aa. Если же ll нечетно, то β\beta и α\alpha эквивалентны слову вида
γ′′=aa…ab⏟k.\gamma'' = \underbrace{aa \dots ab}_{k}.
В зависимости от того же остатка слова γ′′\gamma'' переводится в одно из слов b,ab,aabb, ab, aab.
Из (A), очевидно, следует, что смежным словам соответствует одно и то же самосовмещение. Значит, это верно и для эквивалентных слов:
α∼β⇒Tα=Tβ.\alpha \sim \beta \Rightarrow T_\alpha = T_\beta. (10)
Из (B), (B) и (10) мы получим обратное утверждение:
Tα=Tβ⇒α∼β.T_\alpha = T_\beta \Rightarrow \alpha \sim \beta. (11)
Пусть Tα=TβT_\alpha = T_\beta. В силу (B) каждое из слов α,β\alpha, \beta эквивалентно одному из слов Λ,a,b,aa,ab,aab\Lambda, a, b, aa, ab, aab. Положим α∼α′,β∼β′\alpha \sim \alpha', \beta \sim \beta', где α′,β′∈{Λ,a,b,aa,ab,aab}\alpha', \beta' \in \{\Lambda, a, b, aa, ab, aab\}. Из (10) Tα′=TαT_\alpha' = T_\alpha и Tβ′=TβT_\beta' = T_\beta. Учитывая Tα=TβT_\alpha = T_\beta, получаем Tα′=Tβ′T_\alpha' = T_\beta'. Тогда из (B) α′=β′\alpha' = \beta'. Следовательно, α∼β\alpha \sim \beta.
Из (10) и (11) вытекает
α∼β⇔Tα=Tβ.\alpha \sim \beta \Leftrightarrow T_\alpha = T_\beta. (12)
Просмотрите еще раз доказательство утверждения (12) и вы убедитесь, что это доказательство опирается только на (A) — (B). После того, как (A) — (B) установлены, дальнейшее обращение к подстановкам исчисления не нужно.

7

Теперь, после установки (12), мы можем наконец предложить обещанный способ: путь надо испать на эквивалентность слова α\alpha и β\beta; подействуйте на треугольник ABCABC самосовмещениями TαT_{\alpha} и TβT_{\beta}; если получите одинаковый результат, то Tα=TβT_{\alpha} = T_{\beta} и, значит, в силу (12) α\alpha и β\beta эквивалентны; в противном случае, опять в силу (12) они не эквивалентны.

Пример 2

Рассмотрим теперь в том же алфавите {a,b}\{a, b\} ассоциативное ичисление с подстановками:

{ab↔ba,aa↔Λ,bb↔Λ.\begin{cases} ab \leftrightarrow ba, \\ aa \leftrightarrow \Lambda, \\ bb \leftrightarrow \Lambda. \end{cases}

Для этого исчисления легко указывать два способа расозвания эквивалентности.

Первый способ

Данный способ аналогичен способу из примера 1. Фиксируем на плоскости какой-нибудь прямогольник ABCDABCD (рис. 10). Обозначим через S1S_1 осевую симметрию плоскости с осью OMOM, проходящей через центр симметрини прямогольника OO параллельно стороне ABAB (рис. 11); через S2S_2 обозначим осевую симметрию с осью ONON (рис. 12). Обе эти симметрия являются самосовмещениями исходного прямогольника. Самосовмещения S1S_1 и S2S_2 мы будем называть элементарными.

Как и в примере 1, рассмотрим всевозможные композиции элементарных самосовмещений.

На этот раз самосовмещение TαT_{\alpha} мы будем получить из слова α\alpha заменой буквы aa на S1S_1, буквы bb — на S2S_2.

Опять выполняются три «кита»:

(A) Левой и правой части каждой из подстановок ичисления соответствует применению (13) подстановки (13), найдите этаонные слова, эквивалентные словам α\alpha и β\beta (как это делается, рассказано при доказательстве (B) из примера 1); если α\alpha и β\beta окажутся эквивалентными одному и тому же этаонному слову, то α∼β\alpha \sim \beta; в противном случае α\alpha и β\beta не эквивалентны.

На языке статьи А. Толыго «Инварианты» («Квант», 1976, № 12) второй способ может быть изложен так: для любого слова

{Tab=Tba,Taa=TΛ,Tbb=TΛ.\begin{cases} T_{ab} = T_{ba}, \\ T_{aa} = T_{\Lambda}, \\ T_{bb} = T_{\Lambda}. \end{cases}

(B) Любое слово эквивалентно в нашем исчислении одному из четырех слов: Λ\Lambda, aa, bb, abab.

(B) Любим двум из слов Λ\Lambda, aa, bb, abab соответствует соответствующим разные самосовмещения.

Из (A) — (B), как и выше, выводится

α∼β  ⟺  Tα=Tβ.\alpha \sim \beta \iff T_{\alpha} = T_{\beta}.

Значит, эквивалентность произвольных слов α\alpha, β\beta устанавливается, как в примере 1: подействуйте на прямогольник ABCDABCD преобразованиями TαT_{\alpha} и TβT_{\beta}; если получим одинаковый результат, то α∼β\alpha \sim \beta; иначе α\alpha и β\beta не эквивалентны.

Второй способ

Присмотревшись к подстановкам (13), можно подметить, что они сохраняют одному из эмалонных слов Λ\Lambda, aa, bb, abab.

Поскольку у любых двух этаонных слов либо четности числа буква aa, либо четности числа буква bb различны (см. рис. 13), эмалонные слова попарно не эквивалентны.

Следовательно, эквивалентность произвольных слов α\alpha, β\beta расположется просто: применения подстановки (13), найдите этаонные слова, эквивалентные словам α\alpha и β\beta (как это делается, рассказано при доказательстве (B) из примера 1); если α\alpha и β\beta окажутся эквивалентными одному и тому же этаонному слову, то α∼β\alpha \sim \beta; в противном случае α\alpha и β\beta не эквивалентны.

На языке статьи А. Толыго «Инварианты» («Квант», 1976, № 12) второй способ может быть изложен так: для любого слова

8

α положим

f1(α)={0,есличислобуквaвсловаαчетно,1впротивномслучае;f_1(\alpha) = \begin{cases} 0, если число букв a в слова α четно, 1 в противном случае; \end{cases}

f2(α)={0,есличислобуквbвсловаαчетно,1впротивномслучае.f_2(\alpha) = \begin{cases} 0, если число букв b в слова α четно, 1 в противном случае. \end{cases}

Функции f1,f2f_1, f_2 образуют полную систему инвариантов. Поэтому эквивалентность произвольных слов α, β распознается так: посчитайте значения функций f1f_1 и f2f_2 на α и β; если равенства

{f1(α)=f1(β),f2(α)=f2(β)\begin{cases} f_1(\alpha) = f_1(\beta), f_2(\alpha) = f_2(\beta) \end{cases}

будут выполнены, α~β; в противном случае α и β не эквивалентны.

Попробуйте решить задачу из примера 1 вторым способом, т. е. при помощи инвариантов. Это намного труднее, чем в примере 2.

Алгоритм существует не всегда

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

В 1946 и 1947 годах советский математик Андрей Андреевич Марков и американский математик Эмиль Пост независимо построили ассоциативные ичисления, для которых также способа не существует.

До сих пор в нашей стране мы избегали слова «алгоритм». В математике алгоритм называют точное представление для решения неокоторого класса задач. Эту фразу ни в коем случае нельзя рассматривать как определенное понятие алгоритма — ведь слова «точное представление» не являются каким-то математическим термином, не имеют однозначного смысла.

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

Для того чтобы доказать, что алгоритма не существует, уже недостаточно распливчатого понятия, надо это понятие уточнить. Такое уточнение и было проделано в середине тридцатьх годов нашего века *).

Лишь после этого уточнения стало в принципие возможного доказывать несуществование алгоритма. Первое доказательство такого рода дал американский логик Алонзо Черч.

Исчисления, построенные А. А. Марковым и Э. Постом, были весом громоздки: они содержали сотни подстановок. Математики стали искать более простые примеры ассоциативных ичислений с неразрешимой проблемой эквивалентности. В этом направленииrekord поставил Григорий Самуилович Цейтин: он построил такое ичисление всего с 7 подстановками **).

Цейтин доказал, что для ичисления в алфавите {a, b, c, d, e} с подстановками

{ac↔ca,ad↔da,bc↔cb,bd↔db,eca↔ae,edb↔be,abac↔abace\begin{cases} ac \leftrightarrow ca, ad \leftrightarrow da, bc \leftrightarrow cb, bd \leftrightarrow db, eca \leftrightarrow ae, edb \leftrightarrow be, abac \leftrightarrow abace \end{cases}

alгоритма распознавания эквивалентности слов не существует.

Интересно, что ичисления с разрешимой и ичислением с неразрешимой проблемой эквивалентности «лежат рядом». В брошюре Б. А. Трахтенброта «Алгоритмы и машинное решение задач» (Москва, Физматгиз, 1960) и ичисление Цейтина было приведено *)

*) Об этом можно прочесть в §§ 7, 13 брошюры Б. А. Трахтенброта «Алгоритмы и вычислительные автоматы» (Москва, «Советское радио», 1974) и на с. 9—13 книги «Машины Тыbiorинга и рекурсивные функции» (Москва, «Мир», 1972).

**) Егоrekord воспользовали перекрыл Юрий Владимирович Матиясевич, построивший такое ичисление с трея подстановками. К сожалению, они слишком длины, чтобы их здесь привести.