/
Author: Мощенский А.В. Мощенский В.А.
Tags: математическая кибернетика математика теория алгоритмов информатика алгоритмы прикладная математика
ISBN: 978-985-485-916-3
Year: 2008
Text
0. В. Мошенсксш
В. 0. Мошенсксш
МАТЕМАТИЧЕСКИЕ
основы
ИНФОРМАТИКИ
2-е издание, переработанное
и дополненное
Пособие для студентов специальности
1-31 03 04 «Информатика»
МИНСК
БГУ
2008
УДК 519.7(075.8)
ББК 22.18я73
М74
Рекомендовано Ученым советом
факультета прикладной математики и информатики
31 января 2008 г., протокол № 4
Рецензенты:
кандидат физико-математических наук,
профессор А И. Павловский;
кандидат физико-математических наук, доцент Ю. Г. Таразевич
Мощенский, А. В.
Μ 74 Математические основы информатики : пособие для
студентов спец. 1-31 03 04 «Информатика» / А. В. Мощенский,
В. А. Мощенский. — 2-е изд., перераб. и доп. — Минск : БГУ,
2008. — 155 с. :ил.
ISBN 978-985-485-916-3.
В пособии рассматриваются математические основы информатики:
логико-математический язык, элементы теории множеств и
комбинаторики, теории формальных грамматик. Математические основы
алгоритмов даны с учетом современного состояния проблемы.
Во втором издании были исправлены допущенные неточности и
переработаны некоторые разделы.
Предназначено для студентов факультета прикладной математики и
информатики БГУ.
УДК 519.7(075.8)
ББК 22.18я73
ISBN 978-985-485-916-3
) Мощенский А. В.,
Мощенский В. Α., 2002
) Мощенский А. В.,
Мощенский В. Α., 2008,
с изменениями
) БГУ, 2008
ОТ АВТОРОВ
В настоящее время издано много книг по информатике,
рассчитанных на школьников и студентов. Основное внимание в
них уделяется анализу некоторых алгоритмов и структурам
данных. В предлагаемом пособии преимущественно
рассматривается математическая сторона проблемы алгоритмизации.
Пособие состоит из четырех разделов.
Первый раздел представляет собой введение в
математическую запись выражений с обсуждением проблемы
логического следствия.
Второй раздел посвящен изложению основных понятий
теории множеств и комбинаторики. Все вводимые здесь
понятия иллюстрируются примерами.
В третьем разделе обсуждаются формальные грамматики
Хомского, а также важный пример синтеза языка
программирования при помощи КС-грамматик.
Последний раздел посвящен алгоритмам. В нем
излагаются все алгоритмические проблемы, встречающиеся в учебной
литературе.
Первое издание пособия вышло в 2002 г. Во втором
издании исправлены допущенные неточности и сделаны
следующие изменения и дополнения.
• В разделе 2 параграф, посвященный графам,
переизложен с добавлением новых утверждений (например, формулы
Эйлера и др.), а также имеются добавления в параграфе о
методах решений рекуррентных соотношений.
• В разделе 3 добавлено представление выводимых слов в
КС-грамматиках с помощью деревьев с обсуждением понятия
неоднозначности грамматик.
1. ЯЗЫК ТЕОРИЙ ПЕРВОГО ПОРЯДКА
В современных информационных системах (например,
экспертных и др.) требуется составить алгоритмы получения
следствий из фактов (или аксиом) предметной области по разрешенным
схемам заключений (правилам вывода). Для этого требуется
анализировать тексты, выделяя простые высказывания (суждения) и
строя сложные высказывания, являющиеся значениями
соответствующих формул. Такие тексты в простейшем случае относятся к
логике высказываний, а в более сложных — к логике предикатов
первого и более высоких порядков.
1.1. ЯЗЫК ЛОГИКИ ВЫСКАЗЫВАНИЙ
Исходными объектами в логике высказываний являются
высказывания. Высказывание — это первичное понятие, и оно
описывается следующим образом. Под высказыванием понимается
повествовательное предложение, о котором можно сказать одно из
двух: оно истинно или ложно.
Например, предложения «Заяцкосой», «РеспубликаБеларусь —
европейская страна», «Луна — искусственный спутник Земли»
являются высказываниями, первые два из которых истинные, а третье —
ложное.
Индивидуальные высказывания условимся обозначать
буквами v, w, viy wj (i, j >1). Если некоторое высказывание υ истинно, то
будем говорить, что υ имеет истинностное значение «истина» и
писать (ν) = 1. Если же высказывание w ложно, то будем говорить, что
w имеет истинностное значение «ложь» и писать (w) = 0.
Например: (Заяц косой) = 1, (Луна — искусственный спутник
Земли) = 0.
В дальнейшем высказывания будем отождествлять с их
истинностными значениями. Из высказываний строятся составные
высказывания с помощью логических союзов.
4
Например, «если 2 ^2, то 1> 2», «не верно, что 2 ^2», «2 = 2 и
3>3» и др. Используемые здесь логические союзы суть «если ...,
то», «не верно, что», «и».
Первая задача логики высказываний — это нахождение
значений составных высказываний. Поскольку мы отождествляем
высказывания с их истинностными значениями, то при
образовании сложных высказываний нас не интересует проблема,
являются ли связанными по смыслу простые высказывания, из
которых образуется сложное высказывание. Например: составное
высказывание «Если 2^2, то существуют ведьмы» у нас будет
правомерным.
Ясно, что истинностные значения составных высказываний
зависят от истинностных значений высказываний, из которых они
образованы (называемых простыми), и смысла используемых
логических союзов. Смысл логических союзов зависит от того, какие
логические операции они передают.
1.1.1. Логические операции
В логике высказываний используется пять логических
операций: —ι — отрицание, л — конъюнкция, ν — дизъюнкция, => —
импликация, <=> — эквиваленция. Первая из этих операций
одноместная, а остальные — двухместные; их определения приведены в
табл. 1.1.
Таблица 1.1
υ
0
0
1
1
IV
0
1
0
1
-ιϋ
1
1
0
0
υ ν ιυ
0
1
1
1
υ α ιυ
0
0
0
1
υ => w
1
1
0
1
υ <=> w
1
0
0
1
Выражение —ι υ читается «леи», υ aw— «vnw»,vvw— «иилии;»,
υ =>w — «и влечет w*9v t=>w — *υ эквивалентно w».
Еще высказывание —ιι; обозначают через υ, a. υ aw — через vw
или vw. В высказывании υ =>w высказывание υ называется
посылкой, slw — заключением.
5
Перечислим основные логические союзы, используемые в
математике для передачи этих операций. Логические союзы для:
l)-nL>: «ней», «не верно, что и», «и ложно»;
2)v aw: «υ и w»y «и vy и w»y «одновременно оба высказывания υ
и w истинны »;
3)vvw: «1>илиг#», «или vy или w»y «по крайней мере одно из
высказываний ν или w истинно»;
4) ν =>w: «если vy то w»y «υ влечет w», «из ι; вытекает w», «из ι;
следует ιυ», «ν только тогда, когда w», «ι; только в том случае, если
ιυ», « ν есть достаточное условие для w», «u; при условии, что и», «w,
еслии», «ц; есть необходимое условие для и», «для того, чтобы υ,
необходимо, чтобы w», «для того, чтобы w, достаточно, чтобы и», «w
тогда, когда ν», «когда и, тогда w»;
5) l> <=> иг. «ν тогда и только тогда, когда w», «для того, чтобы υ,
необходимо и достаточно, чтобы w».
Используя перечисленные логические союзы для указанных
логических операций, многие сложные высказывания можно
записать символически, употребляя буквы для обозначения простых
высказываний. (Высказывание называется простым, если оно не
является составным (в логике высказываний).)
Пример 1.1. Запишем символически следующее
высказывание: «Студент не может работать в читальном зале, если он устал
или голоден». Пусть υ обозначает высказывание: «студент может
работать в читальном зале», wx — высказывание: «студент устал»,
w2 — высказывание: «студент голоден». Тогда это сложное
высказывание запишется следующим образом: (w1 vw2)=$—*v. Но эта же
символическая запись будет передавать и такое сложное
высказывание: «Если за окном идет дождь или снег, то Петр не хочет идти
на прогулку» (при соответствующем обозначении имеющихся в
нем простых высказываний). Тем самым эти конкретные сложные
высказывания (w1 vw2) =$—*v можно считать значением формулы
логики высказываний (р vq) => —ι г.
Поэтому естественно определить формулы логики
высказываний (ФЛВ) в общем случае. Определение ФЛВ индуктивное и
читается следующим образом.
1. Каждая константа 0 и 1 и каждая высказывательная
переменная ру qy r, s, pi9 qj ,rkysm (i, ;, k, m >1)есть ФЛВ.
2. Если А и Б являются формулами логики высказываний, то
(-А), (Αν Б), (А л Б), (А => В)у (А <=> Б) также ФЛВ.
6
Определение закончено, т. е. других правил построения
ФЛВ нет.
Примерами ФЛВ являются р, q10, r5, (-i^), ((-is5)v0), (pvq),
((pvq) => -ipлд)), ((-,/?) t=>(q v(px л(-,г)))).
Чтобы не писать так много скобок (которые раскрывают
строение формул), согласимся на следующее старшинство операций:
l.-i. 2. л. 3. v. 4. =>. 5.».
Теперь условимся опускать внешние скобки, а также и другие,
при условии, что их восстановление может быть произведено
согласно принятому старшинству операций.
Например, приведенные выше ФЛВ со скобками сейчас можно
записать так: —.^, -is5 vO, pvq, pvq =>-i(p Aq), ~P<=$qvpl л-нГ.
Каждую формулу, встречающуюся в построении данной
формулы, назовем ее подформулой.
1.1.2. Основные равносильности. Тавтологии
Здесь мы введем понятие равносильности формул, которое
позволит строить нормальные формы для рассматриваемых ФЛВ.
Через А(хх, х2, ..., хп) будем обозначать произвольную ФЛВ, в
построении которой не используются переменные, отличные от
хг, х2, ..., хп.
Пример 1.2.
A (A <Z> r) = ((-ip<=»g)=>rvg)Al,
A2(q, г, s, s19 r1) = (qvr=*SAS1),
Ai(p. q) = (p=>(q=>p))-
Если в ФЛВА(х19 х2,..., хп) всем переменным хи х2,..., хп
придать соответственно некоторые значения vx, υ2, ..., ι>η, то получим
значение А(и 1? и2, ..., ип) этой формулы на наборе (vl9 ν2, ...,υΛ)
значений ее переменных хх, х2, ..., #п.
Пример 1.3. Для формул из примера 1.2 имеем
А^О, 1, 1) = ((^0<=»1)=>1v1)a1 = (1=>1)a1 = 1a1 = 1,
А2(1, 1, 0, 1) = (1ν1=>θΛΪ)=(1=>0) = 0.
Таким же образом можно найти значения ФЛВ А(х19 х2,..., хп)
на всех2п различных наборах значений ее переменных. Это удобно
записывать в виде табл. 1.2.
7
Таблица 1.2
Таблица 1.3
хх х2 ...
0 0..
0 0..
11..
11..
В табл. 1.3
Хп-1
0
0
1
1
перечне
хп
0
1
0
1
глет
А(х1У
А(0,
А(0, ..
А(0, ..
А(0, ..
>ι все з
..,*»>
..,0)
.,0,1)
.,1,0)
.,1,1)
начени
Ρ Я
0 0
0 1
1 0
1 1
ρ =>(ςτ=>ρ)
1 1
1 0
1 1
1 1
►(в=>с),
(4°α) AvBaC = (Av£)a(AvC), (4°б) Лл
где также указаны значения ее подформулыq :=>р.
Таблицы 1.2, 1.3 и им подобные называются истинностными.
Две формулы А(х19 ..., хп)кВ(х19 ..., хп) называются
равносильными, если их значения совпадают на любом наборе значений
переменных χί9 χ2, ..., хп\ в этом случае будем писать А(хи ..., хп) =
= В(хи ...,*„).
Какие бы ни были ФЛВ А, Б и С, имеют место следующие
равносильности:
(1°) 1 = А, (10°) АлВ=*С = А
(2°α) Ανβ^βνΑ, (2°б) АлВ = БлА,
(3°а) Av(BvC) = (AvB)vC, (3°б) АлГБлС) = (АлБ)лС,
^(BvC) = AaBvAaC,
(5° б) -.(ΑΛ^^-πΑν-,β,
(б°б) АлА = А,
(7°б) Aa(Av5) = A,
(8°б) АлА=0,
(9°б) Ал1 = А.
Для доказательства каждой из этих равносильностей
достаточно построить значения формул их левой и правой частей
равенства на всех наборах значений их переменных, т. е. применить
метод истинностных таблиц. Заметим, что каждая пара формул,
имеющая номера (п°а) и (п°б)(2 <п<9) получается друг из друга
заменой л на ν, ν на л, 0 на 1 и 1 на 0. Это явление называется
принципом двойственности.
ФЛВ называется тавтологией, если на любом наборе значений
переменных ее значение равно 1; в случае, когда ФЛВ А есть
тавтология, будем писать N А (читается «тавтология А»). Примеры
тавтологий приведены в работе [21].
(5° а)
(6°а)
(7° а)
(8° а)
(9иа)
-,(АуВ) = -Лл-,Б,
ΑνΑ = Α,
AvAaB = A,
AvA = l,
Αν0 = Α,
8
Понятия «равносильные формулы» и «тавтология» связаны
следующим образом.
Теорема 1.1 (о связи между N и =). А = В тогда и только
тогда, когда N А <=> В.
Теперь опишем алгоритм построения специальных формул для
ФЛВ. Если χ — переменная пае {0, 1}, то через ха обозначим ФЛВ
χανχ а, т. е. ха = χανχα. Очевидна следующая лемма.
Лемма (о формуле ха). Формула логики высказываний ха
имеет значение 1 тогда и только тогда, когда χ = а.
Следствие 1. Формула х"1 · х221 ·.. .·χ"η , где χ. ^ χ при i ^ у и
каждое ос^ е{0, 1}(1<ί<η), называемая элементарной
конъюнкцией , имеет значение 1 тогда и только тогда, когда для каждого
i{l<i<n)xi =ап т. е. только на одном наборе (ах, а 2,..., ал)
значений переменных л:х, x2, ..., хп.
Следствие 2. Формула χ"1 νх%21 ν...νχ*η , где xt и αζ —
такие же, как и в следствии 1, называемая элементарной
дизъюнкцией, имеет значение 0 тогда и только тогда, когда для всех
i (l <i <τι) xt = α., т. е. только на одном наборе (ах, а2, ...,ал)
значений переменных хх, х2,..., хп.
Через ν я"1 я"21···*"" обозначим дизъюнкцию эле-
(«1. «2· ···· «» )
А(аг, а2 , .., а„ )=1
ментарных конъюнкций, в каждой из которых показатели
степеней образуют набор, на котором ФЛВ А(х19 х2, ..., хп) равна 1, и
дизъюнкция берется по всем таким наборам. Тогда согласно
следствию 1 выполнена равносильность
А(х1гх2,...,хп)= (αιαν ^ χ?χϊ»...χ:·,
A(alf α2, . ., α„ )=1
правая часть которой называется совершенной дизъюнктивной
нормальной формой (кратко СДНФ) формулы А(х1У х2, ..., хп).
Пример 1.4. Пусть (0, 0, 1), (1, 0, 0), (1, 0, 1) есть все наборы,
на которых А(р, д, г) равна 1. Тогда ее С ДНФ есть ρ °q°r1 vp1q°r° v
vp1q°r1 = pqrvpqrvpqr.
Через a (χ*1 ν xa0n v...vxa*) обозначим конъюнкцию
(alt a2, .... an) L Δ
A(ax, a2, .., o„ )=0
элементарных дизъюнкций, в каждой из которых показатели
степеней такие, что на их отрицаниях ФЛВ А(х1У х2, ..., ;сл)равна0,и
9
конъюнкция берется по всем таким наборам. Тогда согласно
следствию 2 имеет место равносильность
A(xlf х2,...,хп)= л (χ?1 vxa2*v...vxann),
(а1, а2, .... ап )
М*\> я2 ап )=0
правая часть которой называется совершенной конъюнктивной
нормальной формой (кратко СКНФ) формулы А(хг, х2, ..., хп).
Пример 1.5. Пусть (0, 0, 1), (0, 1, 1), (1, 0, 0), (1, 1, 1) суть все
наборы, на которых формула В(р, q, r) равна 0. Тогда ее СКНФ
есть
(р~° vq~° vr')ip~° vq* vrT)-(/ vq~° vr°)-(/ vg1 vr1) =
= (pvqvr)(pvqvr)(pvqvr)'(pvqvr).
Иногда вводятся формулы, которые являются дизъюнкцией
(соответственно конъюнкцией) нескольких элементарных
конъюнкций (соответственно дизъюнкций), в которых в разных
членах встречаются разные переменные, а не одни и те же, как в
СДНФ и в СКНФ. Эти формулы называются дизъюнктивными
(соответственно конъюнктивными) нормальными формами
(соответственно кратко ДНФ и КНФ). Примерами ДНФ
являются хгхгУ х2х3 vx1x2, х2хгх4 νχ2χ4χ5 νχ1χ4χ5, а следующие
формулы хх νχ3 νχ4,(χ2 νχ3)-(χλ νχ2)9(χ2 νχ3)·(*ι νχ2), (χ2 νχ3 νχ4)·
{χ2νχ4 νχ5)·('χ\ νχ4νχ5) сутьКНФ.
ДНФ, которая задает ФЛВ, неравносильную 0, можно
преобразовать в СДНФ путем ввода недостающих переменных в
элементарных конъюнкциях. Например, если в элементарной конъюнкции
К нет переменной х> то ее «ввод» такой: Κ = Κ1 = ΚχνΚχ.
КНФ, которая задает ФЛВ, неравносильную 1, можно
преобразовать в СКНФ путем ввода недостающих переменных в
элементарных дизъюнкциях. Например, если элементарная дизъюнкция D
не содержит переменной х, то ее «ввод» следующий:
D=DvO=Dvx x=(Dvx)(Dvx).
1.1.3. Логическое следствие
В повседневной жизни, как и в экспертных системах или
других информационных системах, часто требуется решить, будет ли
одно предложение являться следствием других.
10
Задача 1.1. На предприятии есть три отдела А, Б и С,
договорившиеся о следующем утверждении проектов: а) если отдел А не
участвует в утверждении проекта, то в этом утверждении не участвует
и отдел В; б) если отдел А участвует в утверждении проекта, то в его
утверждении участвуют отделы Б и С. Выяснить, обязан ли при
этих условиях отдел С участвовать в утверждении проекта, когда в
нем участвует отдел Б?
Решение. По условию задачи требуется выяснить, будет ли ответ
на поставленный вопрос утвердительным, если истинны условия а)
и б). Выясним это, используя знания о логических операциях.
Обозначим простые высказывания, встречающиеся в
условиях а) и б), буквами. Пусть υ есть «отдел А участвует в утверждении
проекта», ы^ есть «отдел Б участвует в утверждении проекта» vlw2
есть «отдел С участвует в утверждении проекта». Тогда условия а)
и б) и заключение представятся соответственно такими
высказываниями: ν =>wlfv =$w1-w2,w1 =$w2.
По условию задачи требуется выяснить, будет ли (w1 =$ w2) = 1,
если (ν => Шг) = 1 и (v =» w1 · w2) = 1. Если υ = 1, то из условия б)
следует, что wx ιν2 =1, значит,^ -w2 = ln(w1 =$w2) = l. Если же υ = 0, то
ϋ = 1 и из условия а) следует, что Ш1 = 1, значит, w1 = 0. Тогда
импликация w1 => w2 истинна, каково бы ни было значение w2. Итак,
ответ на вопрос утвердительный.
Как мы ниже увидим, решение задачи 1.1 можно свести к
проверке того, является ли соответствующая формула тавтологией.
Но для этого нам понадобятся одно определение и одна теорема.
Определение. ФЛВ Б называется логическим следствием
ФЛВ А19 А2, ..., Ат , если для любого набора значений переменных
хг, х2У ..., хп, входящих в Ах, А2, ..., Ат и Б, значение ФЛВ Б есть 1
всякий раз, когда значение каждой ФЛВ А. (l <i </η) на этом наборе
есть 1. В этом случае будем писать Ах, А2, ..., Ат И Б (читается «из
Ах, А2, ..., Ат логически следует Б»).
Если воспользоваться истинностными таблицами, то факт
А1, А2, ..., Ат И В означает, что совокупность тех наборов, на
которых истинна каждая ФЛВ Ах, А2,..., Ат , содержится в
совокупности тех наборов, на которых истинна ФЛВ Б.
Теорема 1.2 (о логическом следствии). а) А N Б тогда и
только тогда, когда 1= А =» Б; б) Ах, А2, ..., Ат 1= В тогда и только тогда,
когда И А, =>(А2 =>(...(Ат =>В)...))(т >2).
11
Доказательство утверждения а).
Необходимость. Пусть А N Б и пусть хх , х2 , ..., хп — все
различные переменные, встречающиеся в ФЛВ А и Б. Образуем ФЛВ
А => Б. На данном наборе (υ19 υ2, ..., υη) значений этих переменных
она имеет значение 0 тогда и только тогда, когда Α{υλ, ν2, ..., νη) =
= 1 и Β(υ19 υ29 ..., υη) = 0. Но этот случай противоречит тому, что
А\= В. Следовательно, имеем И А => В.
Достаточность. Пусть И А =$ В. Тогда не существует набора
(vl9 υ29 ..., υη) значений переменных х19 х29 ..., хп9 чтоA(vl9 v2, ...,
υη) = 1 и Β(υι, υ29 ..., υη) = 0, т. е. для любого набора (υ19 υ2, ..., νη)
значений переменных χ19 χ2, ..., χη, встречающихся в ФЛВ А и Б
всякий раз β(υ1, υ2, ..., υη) = 19 когда Α(υ19 υ29 ..., υη) = 1.
Следовательно, Α\= В. Утверждение а) доказано.
Доказательство утверждения б). По определению
конъюнкции, каждая из ФЛВ Α. (1<ί <т) для любого набора (νΐ9 υ29 ..., υη)
значений переменных х19 х29 ..., хп имеет значение 1 тогда и
только тогда, когда ФЛВ Ах · А2 ·... · Ат на этом наборе имеет
значение 1. Следовательно, Ах, А2, ..., Ат И В тогда и только тогда,
когда Ах · А2 ·...-Ат \= Б, и по утверждению а) тогда и только тогда,
когда NAj-Ag·...·Am =» Б. Применяя к последней ФЛВ т-1 раз
равносильность(10с), получаем (Ах ·Α2 -...-Ащ =>В)=(А1 =>(А2 =»
=>(...(Ада =>В)...))).
Утверждение б) доказано. Теорема полностью доказана.
Сформулированное определение достаточно точно передает то
интуитивное понятие логического следствия, которое
используется при дедуктивных заключениях. Действительно,
утверждение w обычно считается логическим следствием высказываний
wl9 w29 ..., wm9 если знание об истинности каждого wi (l<i<m)
дает истинность w без дополнительной информации. Если же одно
из wl9 w29 ..., wm ложно, то без дополнительной информации
нельзя утверждать истинность w. Но это мы и получаем по
приведенному определению, ибо высказывания^, ιυ29 ..., wm и w можно
считать значениями ФЛВ А.(хг, х29 ..., хп) (l<i <m) и ФЛВ
В(х19 х29 ..., хп) соответственно для некоторого набора (υ19 υ29 ...,
υη) значений переменных χλ, χ29 ..., χη.
Вариант решения задачи 1.1. Высказывания ϋ => w\, ν => wx · w2
vlwx =>w2 можно считать значениями (простейших) формул ρ =>q19
p=>qlq2 идх =$q2 на наборе (ν, wl9 w2) значений переменных р9
12
q q2. Следовательно, для решения задачи 1.1 требуется
выяснить, будет ли
или по теореме о логическом следствии, будет ли
MP=>5i)=>((P=»0r 02)=>fei =>02))·
Но в том, что эта ФЛВ есть тавтология, легко убедиться
методом от противного.
Задача 1.2. Выяснить, является ли следующее рассуждение
логически правильным, т. е. будет ли заключение логическим
следствием посылок.
Если Петр не встречал Ивана, то либо Иван не был на лекциях,
либо Петр лжет. Если Иван был на лекциях, то Петр встречал
Ивана, и Сергей был в читальном зале после лекций. Если Сергей был в
читальном зале после лекций, то либо Иван не был на лекциях,
либо Петр лжет. Следовательно, Иван не был на лекциях.
Обозначим имеющиеся в этом рассуждении простые
высказывания следующим образом: υλ — «Петр встречал Ивана», ν2 —
«Иван был на лекциях», ιυλ — «Петр лжет», w2 — «Сергей был в
читальном зале после лекций». Тогда это рассуждение запишется
следующим образом:
νλ =>v2 vw19 (v2 =>v1)aw2, w2 =>U2 vw19 U2.
Следовательно, требуется выяснить, будет ли при(их = plyv2 =
= р2, wx = q, w2 = г) выполняться
-ίΡι ^Р2 v Ъ (Р2 =>А)лг, г =>р2 ν дИ р2.
НоФЛВО^ =>р2 ν q)A(p2 => рг)лгл (г :=>p2vq)=$p2 не
является тавтологией, так как при ρλ = р2 = q = г = 1 ее значение равно 0.
Следовательно, данное рассуждение не является логически
правильным. Проблемы логического следствия также
рассматриваются в работе [28].
Задача 1.3 (о трех божествах). Давным-давно на Востоке жил
знаменитый оракул. В отличие от остальных прорицателей, его
устами вещало не одно божество, а целых три — Бог Правды, Бог
Лжи и Бог Дипломатии. Божества изображались совершенно
одинаковыми фигурами, расположенными в ряд за алтарем, перед
которым люди, пришедшие к оракулу за советом, преклоняли колени.
13
Боги всегда охотно овечали на вопросы. Но так как они были
одинаковыми, никто не мог определить, отвечает ли это Бог
Правды, которому надо верить, или Бог Лжи, который всегда говорит
неправду, или Бог Дипломатии, который может либо солгать, либо
сказать правду. Такое положение было на руку жрецам, ибо любой
ответ оракула можно было толковать как угодно.
Но однажды нашелся смельчак, который решил опознать
каждого из богов. Он вошел в храм и спросил фигуру божества,
стоящего слева:
— Кто стоит рядом с тобой?
— Бог Правды, — был ответ.
Тогда смельчак спросил фигуру в центре:
— Кто ты?
— Бог Дипломатии, — был ответ.
Последний вопрос был задан божеству, стоящему справа:
— Кто стоит рядом с тобой?
— Бог Лжи, — был ответ.
После этих ответов смельчак определил, где кто стоит. Как он
это сделал? (Указание: определить, где стоит Бог Правды.)
1.1.4. Некоторые способы доказательств
Рассмотрим метод математической индукции и опишем
некоторые случаи применения тавтологий в математических
доказательствах.
Пусть Р(п) — некоторое свойство натуральных чисел п.
Допустим, что
1) 0 (или а, где а >0) обладает свойством Р, т. е. верно Р(0) (или
Р(а));
2) если какое-нибудь натуральное число п(п >а)обладает
свойством Ρ (т. е. верно Р(п)), то и следующее за ним натуральное
число η +1 также обладает свойством Ρ (т. е. верно Р(/Н-1)). Тогда
заключают, что каждое натуральное число η (или п>а) обладает
свойством Р.
Такой способ доказательства называют доказательством
методом математической индукции (по ή). Доказательство истинности
Р(0) (или Р(а)) называют базисом индукции; допущение Р(п) —
индуктивным предположением у а часть доказательства, состоящую в
установлении 2), — индукционным переходом или индукционным
14
шагом. Иногда для проведения индукционного шага необходимо
допустить в качестве индуктивного предположения не просто Р(п)
верно, а то, что Р(т) верно для всех /п, где т<п; эту форму
называют индукцией пробега.
Пример 1.6. Докажем методом математической индукции по
п, что
Ρ(η)=(13+23+... + η3 = (τι(η + 1)/2)2).
Базис индукции верен: Щ) = (13 = 1 = (1(1 + 1)/2)2 = I2) = 1.
Индуктивное предположение: пусть формула для Р(п) уже доказана.
Индукционный переход. Найдем Р(п + 1). Имеем Р(п + 1) = (13 +
+ 23 +... + п3 + (п +1)3) = (используя индуктивное предположение) =
= (п(п + 1)/2)2 + (п + I)3 = (п + 1)2(п2/4 + η + 1) = ((η + 1)(η + 2)/2)2.
Итак, требуемая формула доказана.
Подчеркнем, что в таких доказательствах важным является
базис индукции, ибо иногда требуется доказывать Р(а) именно при
а > 1 (когда Р(т) ложно при т <а или Р(1) верно, но по смыслу
задачи Р(2) уже ложно). Например, если доказывать методом
математической индукции (по числу кошек), что все кошки одного цвета,
то Р(1) верно, но не верно, что любые две кошки одного цвета, т. е.
Р(2) ложно. (Если Р(2) не проверять, то разбиение множества из
η +1 кошки дважды на η-множество и 1-множество завершает
«доказательство».) Теперь перейдем к применению тавтологий.
Рассмотрим некоторые случаи применения тавтологий в
математических доказательствах.
1. Способ косвенного доказательства. Пусть требуется
доказать, что некоторое высказывание υ истинно. Допустим, что —ιΐ>
истинно. После этого убедимся, что существует такое
высказывание w, которое одновременно истинно и ложно, т. е.
высказывания —iV => w и —ιϋ =$ —iw являются истинными. Отсюда следует, что
высказывание υ истинно. Рассуждение основывается на
тавтологии (р => q) · (ρ => q) => р. Этим способом мы докажем теорему о
проблеме самоприменимости.
2. Способ доказательства разбором случаев. Пусть требуется
доказать, что некоторое высказывание υ истинно. Определим
высказывания νλ и υ 2 такие, что (υχ ν υ2) = 1. После этого доказываем,
что каждое из высказываний v1=$vnv2=$v истинно. В результате
заключаем, что высказывание υ истинно. Рассуждение основыва-
15
ется на тавтологии (pvq) ((p =$r)(q => г)) => г. Этот способ
доказательства часто используется.
3. Способ доказательства от противного. Пусть требуется
доказать, что высказывание υ => w истинно. Допускают, что υ = 1.
Согласно определению импликации, следует убедиться, что w = 1.
Допускают, что -^w = 1, т. е. w = 0. После этого доказывают, что
-iv = 1, получая противоречие (одновременно υ и —\V истинны).
Значит, (v => w) = 1. Рассуждение основывается на тавтологии ρ =>
rr> q <=> q => p. Этим способом мы доказали необходимость
утверждения а) теоремы 1.2.
4. Способ доказательства цепочкой импликаций. Требуется
убедиться, что (v => w) = 1. Определяют k (k > 1) новых
высказываний viy v2, ..., vk. Затем строят высказывания υ =$ν1 · νλ =>
=>ν2 ... vk =>w и доказывают, что каждое из них истинно. После
этого заключают, что (υ=>ιυ) = 1. Рассуждение основывается на
тавтологии (ρ => q) · (g => г) => (ρ => г).
5. Способ доказательства цепочкой эквиваленции. Полный
аналог рассуждения из предыдущего пункта с заменой
высказывания υ =>whslv <=>wvl использованием тавтологии (/?<=> q) · (q <=> г) =>
=ϊ (ρ <=> г). Этим способом мы доказали утверждение б) теоремы 1.2.
6. Рассмотрим еще один способ доказательства того, что (υ <=> w) =
= 1. Он состоит из двух частей:
1) доказательство того, что (v => w) = 1 (эта часть называется
необходимостью);
2) доказательство того, что (w => υ) = 1 (эта часть называется
достаточностью). Рассуждение основывается на тавтологии (р <=> q) <=>
<=> (ρ =*> q) ■ (q rz» p). Этим способом мы доказали утверждение а)
теоремы 1.2.
На этом наш перечень способов доказательств теорем
заканчивается, но, конечно, существуют и другие способы.
1.2. ЯЗЫК ЛОГИКИ ПРЕДИКАТОВ ПЕРВОГО ПОРЯДКА
Язык логики высказываний является самым простым языком.
Поэтому не все виды рассуждений могут быть обоснованы в рамках
этого языка. Рассмотрим примеры таких рассуждений.
1) Каждый заяц косой. Беляк — заяц. Следовательно, Беляк —
косой.
16
2) Каждое натуральное число χ является корнем некоторого
квадратного уравнения, другим корнем которого есть χ + 1. Число 5 —
натуральное. Следовательно, числа 5 и 6 являются корнями
соответствующего квадратного уравнения.
Оставаясь в рамках логики высказываний, мы не сможем
судить о логической правильности этих рассуждений. Интуитивно
корректность этих рассуждений базируется на том, что мы простые
высказывания расчленяем на объекты и свойства.
В самом деле, пусть УхВ(х) обозначает «для каждого χ
выполнено свойствоЩх)», ЗхВ(х) — «существует х, обладающее
свойством В(х)»> Ζ(χ) — «объект χ есть заяц», К(х) — «объект χ косой»,
Ν(χ) — «объект χ есть натуральное число (по-другому, Ν(χ) =
-(хе i\T))»,Q(;c, у)— « объекты χ и у являются корнями некоторого
квадратного уравнения», f(x) = х+1, Ъ обозначает «Беляк». Тогда
рассуждения 1) и 2) можно записать соответственно следующим
образом:
\/x(Z(x) =*K(x)) \/x(N(x)=>Q(x, f(x)))
K(b)' Q(5, 6)'
Заметим, что справедливость этих заключений не зависит от
того, какой конкретный смысл имеют Z, К, Ny Q, b(uo сути,
рассуждения 1) и 2) имеют одну и ту же схему). Поэтому естественно
определить новые формулы, которые обобщали бы ФЛВ и позволили
приведенные записи рассматривать как их частный случай.
1.2.1. Формулы логики предикатов первого порядка.
Интерпретации
Формулы логики предикатов (ФЛП) будут строиться из
следующих списков символов:
1)—ι, л, ν, =», <=>, V, Ξ—символы логических операций;
2)х19 х2, ..., хп>... —предметные* переменные;
3)ах, а2, ..., апУ ... —предметные константы;
* Термин «предметные» означает, что вместо этих переменных
подставляются отдельные предметы, а не множества предметов или множества множеств
предметов и т. д. (получая формулы логики предикатов второго, третьего и т. д.
порядков).
17
4)Ρ/, Ρχ2, Ρ22, ··, Ρ",>· —предикатные буквы (символы);
5)f?> Аг> f£> ···> fjn> ··· ~~ Функциональные буквы
и также будут использоваться круглые скобки и запятые.
Верхний индекс предикатной и функциональной букв
указывает на число их аргументов, а нижний индекс используется в
обычном смысле.
Прежде чем перейти к определению ФЛП, следует ввести
вспомогательное понятие — понятие терма.
Индуктивное определение терма.
1. Каждая предметная переменная и каждая константа
являются термом.
2. Если f.n — функциональная буква и ^, t2, ..., tn — не
обязательно различные термы, то f.n (tx, 12, ..., tn) также есть терм.
Определение закончено, т.е. других правил построения термов нет.
Например, термами являютсях19 хъ, х30, аи а10, а101, f*(aiy хг),
f?(xi)>f?(a4> *i, f?(ai> *1»идр.
Теперь все готово, чтобы определить ФЛП.
Индуктивное определение ФЛП (с одновременным
определением их свободных и связанных переменных).
ЬЕслиР/1 есть предикатная буква и tx, t2, ..., tn необязательно
различные термы, то Ptn(t19 t2, ..., tn) есть ФЛП. Эта формула
называется простой или атомарной; все ее переменные являются
свободными, связанных переменных в атомарных формулах нет.
2. Пусть А и β — ФЛП, которые не содержат переменных
свободных в одной формуле и связанных в другой. Тогда выражения
(-Λ), (ΑλΒ), (ΑνΒ), (А=>Б), (А «Б)
также есть ФЛП, в которых свободные переменные формул А и В
остаются свободными, а связанные переменные формул А и В
остаются связанными.
3. Пусть А — ФЛП, которая содержит свободную переменную и.
Тогда выражения
(VmA), (ЗиЛ) (1.1)
также являются ФЛП. Переменная и в них — связанная
переменная. Остальные переменные, которые в формуле А свободны,
остаются свободными и в формулах из (1.1). Переменные, которые
связаны в формуле А, остаются связанными и в формулах из (1.1).
18
Определение закончено, т. е. других правил построения Φ Л11
нет. Подчеркнем, что согласно этому определению ни одна
переменная в каждой предикатной формуле не может быть
одновременно свободной и связанной.
В формулах из (1.1) формулу А будем называть областью
действия кванторов.
Сохраним те же соглашения об опускании скобок (см. подразд.
1.1.1), добавив еще одно: кванторы связывают сильнее, чем
остальные логические операции. Например, вместо ((УхР^(х))) =>
=> Ρχ (уу ζ) будем писать VxP/ (χ) => Ρ* (у, ζ\ а вместо Зу((VxP? (yyx))v
v(3xP22(x, уЖ-ЗуфхР^у, x)v3xP22(x, у)).
Еще согласимся вместо(Q1u1(Q2u2(...(QnunА)...))), гдеQt g{V, 3}
(l<i<n), писать Q1u1Q2u2...QnunА. Например, вместо (Vx(3y(\/z
Ρ? (*, У, ζ)))) пишем V x3y\/zP? (x, y, z).
Формула, которая не содержит свободных переменных,
называется замкнутой. Например, замкнутой является следующая
Vx(P}(x) => ЗуР?{х, г/)), но не Vx(P22(x, yx) => ЗуР?(х, у)).
В логике высказываний значения формул (или интерпретация)
получались просто: переменным приписывали истинностные
значения. В логике предикатов интерпретации формул логики
предикатов получаются сложнее, ибо нужно выбрать множество предметов
и значения констант, функциональных и предикатных символов.
Под интерпретацией понимается пара J = (Μ, φ), где Μ —
непустое множество (оно называется областью интерпретации), а φ
есть отображение. Это отображение φ каждому предикатному
символу Р" сопоставляет некоторое отображение St:Mn —»{0,1}
(т. е. φ(Ρίη) - Si и St называется предикатом), каждому
функциональному символу f.n — некоторую функцию F} :Мп —>М (т. е.
ф(//л) =-F.) и каждой предметной константе at — некоторый
элемент φ(αί), принадлежащий М.
Когда мы будем определять истинностное значение формулы в
интерпретации с областью М, то операция Ух (называемая
квантором общности по х) будет интерпретироваться как «для всех
элементов χ из Μ», а операция Зх (называемая квантором
существования по х) — как «существует элемент χ из М».
Для каждой интерпретации с областью Μ любая замкнутая
формула получает истинностное значение 0 или 1 согласно
следующим правилам.
19
1. Если заданы значения формул G и Н, то истинностные
значения формул (-Ή), (G л Н), (G ν Я), (G=$H), {G <=> Η)
получаются по определениям операций -ι, λ, ν, =>, » в логике
высказываний.
2. Формула Vxi/ получает значение 1, если Η получает
значение 1 для каждого χ из М; в противном случае она получает
значение 0.
3. Формула ЗхН получает значение 1, если Η получает
значение 1 хотя бы для одного χ из М; в противном случае она получает
значение 0.
Если же формула Η является незамкнутой, то ее значением в
любой интерпретации J = (Μ, φ) назовем тот предикат S, в
который она превратится при замене каждой входящей в нее
предикатной буквы Р" на φίΡ/1), каждой функциональной буквы на (р(/;л)
и каждой константы а. на φ(αί); будем писать Н\-* S. Этот предикат
S может принимать значение 1 (быть выполненным) для одних
значений переменных из множества Μ и значение 0 (быть
невыполненным) для других.
Пример 1.7. Найдем значение формул УхР*(х), ЗхР*(х),
УхР* (χ) ν ЗхР? (х)9 ΜχΡί (χ) => ЗхР? (х), ЗхР* (х) =* \/хР* (х) в
интерпретации Jl = (Ml9 фх>, где Μ = {α, 6}, φίΡ/ (χ)) = S(x), sl S(a) = 1 и S(b) = 0.
В этой интерпретации значение формулы УхР^(х) есть 0, так
как предикат S(x) имеет значение 0 при χ = Ь, т. е. не имеет
значения 1 для всех χ из М. Но значение формулы 3xPl(x) есть 1, так
как предикат S(x) имеет значение 1 при χ - а. Тогда 3, 4 и 5-я
формулы имеют соответственно значения 0vl = l, 0=»1 = 1,1=>0 = 0.
Пример 1.8. Найдем значения формул -ί\/χΑ(χ) и Зх^А(х), где
А(х) — произвольная формула, содержащая χ свободно, в
произвольной интерпретации.
Пусть J — произвольная интерпретация с областью М. Если
формула —\\/хА(х) истинна в J, то формула УхА(х) ложна в J.
Последнее означает, что существует элемент d из М, что A(d) = 0, и,
значит, —A(d) = 1. Отсюда вытекает, что формула Зх—А(х) истинна в
интерпретации J.
С другой стороны, если формула —МхА(х) ложна в J, то
формула \/хА(х) истинна в J. Это означает, что А(х) истинна для каждого
d из М. Тогда формула -А(х) ложна в J, значит, формула Зх-А(х)
также ложна в J.
20
Тем самым формулы —у\/хА(х) и Зх—А(х) имеют одно и то же
значение в произвольной интерпретации. Поэтому -iVxA(x) = Зх—Л(х).
Заметим, что формула А(х) может содержать свободно и другие
переменные (кроме х). В таком случае формулы -λ/χΑ(χ) и Зх-~А(х)
в любой интерпретации представляют равносильные предикаты,
т. е. предикаты, значения которых совпадают при любом наборе
значений их переменных.
1.2.2. Равносильные формулы.
Приведенная и нормальная формы
Здесь мы покажем, что одно и то же утверждение в логике
предикатов может быть представлено в различных видах (хотя и
равносильных).
Две предикатные формулы F и G называются равносильными
(что записывается в виде F - G), если истинностные значения FuG
одни и те же в любой интерпретации.
Ясно, что равносильности формул логики высказываний (см. под-
раз д. 1.1.2) имеют место и для формул в логике предикатов, считая,
что 1 (соответственно 0) есть формула, которая истинна
(соответственно ложна) в любой интерпретации. Примерами таких формул
соответственно являются Ρ* ν -J*1 и Pj1 λ —uPj1 .
Согласно примеру 1.8, формулы —МхА(х) и Зх—А(х)
равносильны, т. е.
-λ/χΑ(χ) = 3χ-Λ(χ). (1.2)
Другими примерами равносильных предикатных формул
являются
-ЗхА(х) = Vx-A(x), (1.3)
VA(x) = -ι3χ-τΑ(χ), (1.4)
ЗхА(х) = -nVx-τΑίχ), (1.5)
где А(х) — любая предикатная формула, содержащая χ свободно.
Если А(х) — указанная формула, а В — формула, не
содержащая х, то имеют место равносильности
\/хА(х) ν В = \/х(А(х) ν β),
\/хА(х) лВ = Ух(А(х) α β),
3χΑ(χ)νΒ = Зх(А(х) νβ),
ЗхА(х) л β = Ξχ{ Α(χ) α β).
21
(1.6)
(1.7)
(1.8)
(1.9)
Если же формула С(х) (как и А(х)) содержит χ свободно, то
\/хА(х) л УхС(х) = \/х(А(х) лОД), (1.10)
3xA(x)v3xC(x) = 3x(A(x)vC(x)), (1.11)
но
\/хА(х) ν VxG(x) Φ \/χ(Α(χ) vC(x)),
ЗхА(х) л УхС(х) Φ Зх(А(х) лС(х)).
Доказательство равносильности (1.3) аналогично
доказательству равносильности (1.2), но ее можно доказать, используя эту
равносильность. В самом деле, в равносильности (1.2) формулу
А(х) заменим на-тА(;с), а затем возьмем отрицание обеих ее частей.
Равносильности (1.6)-(1.9) почти очевидны, ибо формула В не
содержит л: и ее можно внести в область действия кванторов.
Доказательства равносильностей (1.10) и (1.11) несложны.
Эти равносильности позволяют для любой предикатной
формулы получить ей равносильную формулу специальных видов.
Скажем, что формула F находится в приведенной форме, если
она не содержит операций логики высказываний, кроме -ι, ли ν,
причем отрицание относится только к предикатным буквам.
Например, следующие формулы находятся в приведенной форме
\/хР11(х)^Зу(Р11(у)л^Р21(у)), 3xVy-J>2(x, y)vPi(z), но не формулы
-nV*^1 (χ) ν3χΡ2λ (χ)и Зх-,Ρ?(χ) =* MyPl(у).
Говорят, что формула F находится в нормальной форме, если
она не содержит кванторов и находится в приведенной форме или
имеет BKRQlxlQ2x2...QmxrnG, где каждоеQixi (1 <i < τη) есть Vx, или
3xt, а формула G не содержит кванторов и находится в
приведенной форме. Например, для формулы ЗуР2 (х, y)v3yP22(x, у)ейрав-
носильную в нормальной форме можно получить по
равносильности (1.11), что дает Зу(Р2(х, y)vP2(x, у)). Но можно действовать и
по-другому, используя переименование связных переменных*,
получая
ЗуР2(х, y)v3yP22(x, y) = 3yP2(x, y)v3zP2(x, г) =
= 3y(P2(x, y)v3zP22(x, z)) = 3y3z(P2(x, y)vP2(x9 z)).
* Это равносильности VxA(x) = \/иА(и)и ЗхА(х) =ЗиА(и), где А{и)
получается из А(х) заменой каждого вхождения χ на переменную и, которая не входит в
А(и). (См. [21], где есть и другие равносильности.)
2. ЭЛЕМЕНТЫ ТЕОРИИ МНОЖЕСТВ
И КОМБИНАТОРИКИ
Этот раздел посвящен начальным понятиям наивной теории
множеств и основным понятиям комбинаторики. Вводятся именно
все те понятия, которые широко встречаются в информатике.
2.1. МНОЖЕСТВА, СПОСОБЫ ИХ ЗАДАНИЯ.
ПОДМНОЖЕСТВА
Понятие множества является первоначальным,
неопределяемым. Опишем это понятие следующим образом: под множеством
понимается любое собрание определенных и отличных друг от
друга объектов, мыслимое как единое целое. Создатель теории
множеств немецкий математик Георг Кантор (1845-1918) говорил так:
«Множество есть многое, мыслимое нами как целое».
Согласно этому описанию, здесь внимание переносится с
отдельных объектов на их собрания, которые сами рассматриваются как
предметы. В математике встречаются следующие синонимы термина
«множество» — система, класс, семейство, совокупность, область.
Объекты (которые могут быть самой разной природы),
составляющие множество, называются его элементами. Подчеркнем, что
в множестве не бывает одинаковых (неразличимых) элементов.
Множества чаще всего обозначают прописными буквами
латинского алфавита, а их элементы — строчными. Например, в
курсе школьной математики буквами N9Z,Q,R обозначают
соответственно множества натуральных, целых, рациональных и
действительных чисел.
Если Μ — множество и α — его элемент, то пишут ае Μ
(читается: «а принадлежит М»); если же Ъ не является элементом М, то
пишут Ъ&МилиЪ~ё Μ (читается: «Ъ не принадлежит Μ» в обоих
случаях). Например, 1 е Ν, -1 е Z, V2 g Q.
Множества могут содержать много элементов, а иногда лишь
несколько. В общем случае множества бывают конечные и бесконечные.
23
Конечное множество — это такое множество, для которого
существует натуральное число, являющееся числом его элементов.
Конечное множество, содержащее в качестве элементов только
объекты а1У а2, ..., ап, обозначается {ах, α2, ..., ап}. (Заметим, что
запись{ах, а1У а2, ..., ап)считается некорректной, так как
множества состоят из попарно различных объектов.) Конечное
множество, не содержащее ни одного элемента, называется пустым, и его
обозначают 0.
Множество, не являющееся конечным, называется
бесконечным. (Ниже мы укажем на другое определение бесконечного
множества.)
Если А — конечное множество, то через |А| будем обозначать
число его элементов. Например, если А1 ={1, 2, *}, А2 ={{0,1}}, то
\А,\ =3,|А2| = 1.
Два множества Μ и N называются равными, если они состоят из
одних и тех же элементов; в этом случае пишут Μ - Ν, а в
противном — Μ ^ N.
Например: {1, 3, 5} = {5, 1, 3}, а{{0,1}} Φ {0,1}.
Существуют два основных способа задания множеств:
перечисление и описание. Множество можно задать, перечислив все его
элементы, а также при промощи свойства (т. е. одноместного
предиката), определяющего, какие элементы ему принадлежат.
Перечислением можно задать только конечное множество, хотя иногда
проще его задать описанием. Например, трудно перечислить все
натуральные числа от 2 до 2100, а описание соответствующего
множества содержится в выделенных словах или может быть еще
следующим: {хе Ν\ 2 <х<2100}. Разумеется, бесконечные множества
можно задать только описанием.
Укажем на часто используемый способ обозначения множеств.
Пусть χ — переменная над множеством М, &р(х) — свойство (или
одноместный предикат). Тогда через {хе Μ \ р(х)}* обозначается
множество, состоящее из всех тех и только тех элементов а из М, что
р(а) = 1. Выражение {хе Μ \ р(х)} читается «множество всех χ из М,
чтор(х)». Если множество Μ ясно из контекста, то пишут {χ \ р(х)}.
Пример 2.l.{xeN\x<10} = {0, 1, 2, 3, ..., 9, 10}**.
* Иногда пишут {χе Μ : р(х)}или{х: р(х)}.
**В дискретной математике и математической логике полагается, что N
содержит число 0.
24
Пример 2.2. {хе Ζ\ χ >-!} есть множество, состоящее из целых
чисел —1, 0, 1, 2, 3, ....
Пример 2.3. Пусть χ — переменная над N. Тогда {х\ χ = 2k при
некотором к из N} — множество всех четных чисел.
Множество А называется подмножеством множества Б, если
каждый элемент множества А является и элементом множества В;
в этом случае пишут ЛсБ(или BdA) (читается «А включено в Б»).
Если же А с Б, но А Φ Б, то пишут А с: В (читается «А строго
включено в Б ») и говорят, что А есть собственное подмножество
множества В.
Включение Б с; А называется обратным включению ЛсБ.
Очевидны следующие свойства: для любых множеств А, Б и С
выполнены
А с: А; (2.1)
0^А; (2.2)
если A^BvlB cC, то А сС; (2.3)
если А с: Б и Б с:С, то А с:С; (2.4)
еслиАсВиВсА, тоА = Б. (2.5)
Свойство (2.5) в дальнейшем будем часто использовать для
доказательства равенств множеств.
Согласно свойствам (2.1) и (2.2), каждое множество А имеет два
подмножества — 0 и А, которые называются его несобственными
подмножествами.
Множество всех подмножеств множества А называется
степень-множеством (менее удачное название —
множество-степень) множества А и обозначается через Р(А).
Например, если А = {1,2}, то Р(А) = {0, {1}, {2}, {1, 2}},
Для любого множества А верны следующие утверждения:
если Б с: А, то Б е Р(А);
если α ε А, то {а} с А и {α} ε Ρ{Α}.
Ясно, что если А — бесконечное множество, то Р(А) — также
бесконечно. В случае, если А — конечное множество, то
справедлива следующая теорема.
Теорема 2.1 (о мощности степень-множества). Если \А\ = п,
то |Р(А)| = 2\ /1>1.
Доказательство этой теоремы следует из такого отображения.
Пусть Α = {αλ, а2, ..., ап}. Тогда каждому В, Б с А можно взаимно
25
однозначно сопоставить вектор ав = (а19 а2, ..., ап), где каждое
а. е {О,1} и ai = 1, если ai е Б, в противном случае а, = 0. (Другое
доказательство этой теоремы будет получено ниже.)
Укажем еще наследующие примеры. Одноэлементное
множество {0} есть пример того множества, для которого его
единственный элемент 0есть его подмножество (согласно свойству (2.2)).
Множества{0, {0}} и {0,{0},{0,{0}}} есть примеры
двухэлементного и трехэлементного множеств, каждый элемент которых есть
его подмножество.
Аналогично можно построить конечное множество {а19а2, ..., ап}
(п >4), каждый элемент которого есть его подмножество.
2.2. ОПЕРАЦИИ НАД МНОЖЕСТВАМИ.
ОСНОВНЫЕ РАВЕНСТВА
Основными операциями над множествами являются:
объединение (Ц), пересечение (П) и разность (\); каждая из них
двухместная.
Объединением множеств А и Б называется множество,
обозначаемое AUB, состоящее из всех тех и только тех элементов,
которые принадлежат А или Б, т. е.
A\JB = {χ | (χ ε Α) ν(χ ε Б)}.
Выражение A\JB читается «А, объединенное с Б».
Пример 2.4. Если А = {1,2, 3,4}, Б = {1,3,5}, С = {5,6}, то А11Б =
= {1,2,3,4,5},AUC = AU5U{6},5UC = {1,3,5,6}.
Пример 2.5. Если некоторое множество А изобразить левым, а
некоторое множество Б — правым кругом (рис. 2.1), то
заштрихованная фигура на рис. 2.2 изобразит АиБ. Такие изображения
называются кругами Эйлера.
В В
'(9
Рис. 2.1 Рис. 2.2
26
Аналогично определяется объединение п(п>2) множеств А19
л
А2, . · ·»Αι» обозначаемое Ах \JA2 U-. -UАп или (JAf.
Пусть имеется система множеств At, i e J, где J — конечное или
бесконечное множество. Тогда объединением множеств этой системы
называется множество (обозначается [J At), состоящее из всех тех и
только тех элементов, которые принадлежат хотя бы одному из
множеств данной системы; если J=N, то вместо \<jAi часто пишут [JA..
ieJV i=0
Пересечением множеств An В называется множество,
обозначаемое Af)B, состоящее из всех тех и только тех элементов,
которые принадлежат каждому из множеств А и Б, т. е.
АГ\В = {х\(хе А)л(хе В)}.
Выражение A f]B читается «А, пересеченное с В».
Пример 2.6. Если А, Б и С — множества из примера 2.4, то
АПС = 0, АПБ = {1, 3},БПС = {5}.
Если обратиться к кругам Эйлера, то пересечение множеств,
представленных на рис 2.1, изобразится заштрихованной фигурой
на рис. 2.3.
В
Рис. 2.3
Если А(~)В = 0, то множества А и Б называются
непересекающимися; в противном случае — пересекающимися. Аналогично
объединению системы множеств определяется их пересечение
(с аналогичными обозначениями).
Разностью множеств А и Б называется множество,
обозначаемое А\В, состоящее из всех тех элементов множества А, которые
не являются элементами множества Б, т. е.
А\В = {х\(хеА)л(х<£В)}.
Выражение А\В читается «А без Б».
27
Пример 2.7. Если А, Б и С — множества из примера 2.4, то
А\В = {2,4},А\С = А,В\С = {1>3},С\В = {6}, В\А = {5}.
Если А и В — множества, изображенные на рис. 2.1, то
множества А \ В и В\А представляются заштрихованными фигурами на
рис. 2.4, а и б соответственно.
В В
Рис. 2.4
Если в некотором рассмотрении (которое может быть целой
теорией, например, теорией функций двойственного переменного, где
U -R) все множества являются подмножествами некоторого
фиксированного множества £У, то U называется универсом (для этого
рассмотрения) или (просто) универсумом. В таком случае разность
U\A называют дополнением множества А (до множества U) и
обозначают А или СиА.
Перечислим основные равенства множеств, построенных с
помощью введенных операций.
Для любых множеств А, В и С верны следующие равенства, где
U — универсум:
a1)A\jB = B\jA;
&1)AU(BUC) = (AUB)UC;
с J AU(BflC) = (AUB)il(AUC);
άλ)Αΐ]0 = Α;
ei)A[jA = U;
Д)Аив = АПВ;
^)Аи(АПВ) = А;
Заметим, что для каждого α е {а, Ь, с, d, g, f, h) равенство αχ
получается из равенства α 2 (и обратно) заменой Π на Ц U на П, 0 на U и
U на 0. Это явление называется законом двойственности.
Доказательство каждого из этих равенств можно провести,
опираясь на свойство (2.5). В качестве образца докажем равенство Д.
а2)АПВ = ВПА;
Ь2)АП(ВПО = (АПВ)ПС;
с2)АП(вио = (АПВ)и(АПО;
d2)Af]U = A;
е2)АПА = 0; _
/2)AHB = AUB;
g2)Af1(AUB) = A.
28
Пусть те А ЦВ. Тогда по определению дополнения т ε U \ (A LIB),
т. е. т е U и т £ A\JB. Последняя непринадлежность означает т <£ А и
т£ В. Следовательно, т е U\Anme U\B> т.е^тпЕ Аите В. Отсюда
получаем т ε А П-В. Итак, мы доказали, что A US с А П-В. Обратное
включение доказывается аналогично (по сути дела, это повторение
приведенного доказательства в обратном порядке).
Можно ввести и другие операции, например симметрическую
разность ΑΔΒ = (А \Б)ЦБ\ А) и др. [5, 24].
Операции «симметрическая разность» и «пересечение»
обладают следующими свойствами, где А, Б и С — любые множества, a U
есть универсум:
ААВ = ВАА;
АА0 = А;
ААА = 0;
А№ = А;
АА(ВАС) = (ААВ)АС;
АП(ВАС) = (АПВ)Д(АПС);
АА(ААВ) = В;
(ААВ=С)=>(В = ААС).
(2.6)
(2.7)
(2.8)
(2.9)
(2.10)
(2.11)
(2.12)
(2.13)
Из равенств (2.12) и (2.13) следует, что операция
«симметрическая разность» имеет обратную, и этой обратной является она сама.
Согласно формулам (2.6)-(2.13) можно сказать, что
совокупность всех множеств образует коммутативное кольцо с единицей,
где роль «суммы» играет операция Δ, роль «произведения» —
операция П, роль «нуля» — 0, а единицей является универсум.
2.3. УПОРЯДОЧЕННАЯ ПАРА.
ДЕКАРТОВО ПРОИЗВЕДЕНИЕ МНОЖЕСТВ.
ОТНОШЕНИЯ
В предыдущем разделе операции над данными множествами
давали множества той же природы, т. е. если, например, исходные
множества были множествами чисел, то и получающиеся в
результате рассмотренных операций множества были также
множествами чисел. Здесь мы определим операцию, с помощью которой
меняется природа элементов получающихся множеств.
29
Упорядоченной парой (или набором длины 2) из элементов а и Ъ
(символически (а, Ь))у взятых именно в этом порядке, называется
множество {{а}, {а, Ь}}у т.е.
(а,Ь) = «а},{а,Ь}}.
Исходя из этого определения, легко доказать, что справедлива
следующая лемма.
Лемма 2.1 (об упорядоченной паре), (а, Ъ) = (с, d) тогда и
только тогда, когда а = с и Ъ = d.
Пусть уже определено понятие набора длины п: (а1У а2,..., ал),
п>2. Τ'orда набором длины п + 1 из элементов а1У а2, ..., ап, ал+1,
взятых именно в этом порядке (символически (а1У а2, ..., апУ ап+1)),
называется упорядоченная napa((ax, a2, ..., an), an+1), т. e. (aly a2, ..., an,
αΛ+ι) = ((<*!> a2> ···> aJ> αΛ+ι)·
Из приведенной выше леммы следует, что (а1у а2, ..., ал) = (Ьх,
Ь2У ..., frj, η > 3, тогда и только тогда, когда для каждого i(l<i<n)
выполнено ах - bt.
В наборе (аи а2У ..., aj, η > 2, элемент а^ называется его i-u тссш-
понентой или координатой. (Иногда вместо «набора длины п»
говорят «упорядоченная n-ка» или «кортеж длины п» и пишут (а1у
я2> ...» О·)
Декартовым произведением множеств Ах, А2, ..., Ап(п>2)
называется множество, обозначаемое Ах х А2 х...х Ап, состоящее из
всех тех и только тех наборов длины п, i-я компонента которых
принадлежит Ai (I <i <п)у т. е.
ΛχΑ2χ-χ4 ={(χ1,χ2,..., *n)|V*(l<*£n)x( eAJ.
Если Ах = А2 =... = Ап = М, то множество Α^Α^.,.χΑ^
обозначается через Μ η и называется η-u декартовой степенью
множества Μ. Обычно элемент α называют набором длины 1 и еще
полагают: М1 =МиМ° = Λ, где Λ — набор длины 0.
Итак, элементами множествам" являются наборы, т. е.
меняется природа элементов по сравнению с множеством Μ. Например,
если Μ = {ауЬ}у то М2 = {(а, а), (а, Ь), (Ь, а), (Ь, Ь)}.
η-Местным отношением называется любое подмножество
множества Μ п, где Μ — произвольное множество, η > 1.
2-Местное отношение называют бинарным.
Из данного определения следует, что пустое множество 0
является я-местным отношением при любом п.
30
Если φ — η-местное отношение, то через Μφ обозначим
множество, элементами которого являются только все компоненты всех
наборов из φ. Например, если φ = {(1,1), (1,0), (2, 2)}, τοΜφ = {0, 1, 2};
еслиже\|/ = ^2, τοΜψ =Ν.
Множество Μφ называется областью задания отношения φ и
будем говорить, что φ является η-местным отношением в
множестве М, где Μ — любое множество, такое, что Μφ сМ. (Иногда
употребляют выражение «η-местное отношение φ в множестве
Мх х М2 х... х Мп », где φ с Мх χ Μ2 χ... χ Μη; в таком случае
полагаем Μ = МХ иМ2 u...uMn.)
2.4. СВОЙСТВА БИНАРНЫХ ОТНОШЕНИЙ.
ОТНОШЕНИЕ ЭКВИВАЛЕНТНОСТИ
Если φ — бинарное отношение, то вместо (а,Ъ) ε φ часто пишут
ац>Ь. Например, 2< 3, где <={(*, у) ε Ζ2 \3k (y = х + к)л(к >0)}.
Если φ — бинарное отношение в множестве Μ и множество из
всех первых компонент из всех пар из φ есть Μ, то будем говорить,
что φ есть бинарное отношение на множестве Μ.
Бинарное отношение φ на множестве Μ называется:
1) тождественным, если φ = {(α, α) | α ε Μ};
2) полным, если φ = Μ2;
3) пустым, если φ = 0;
4) рефлексивным, если для каждого α из Μ выполнено αφα;
5) антирефлексивным, если для каждого α из Μ выполнено
(α, α) £ φ;
6) симметричным, если из афЬ следует 5φα;
7) антисимметричным, если при а ^ Ъ из αφ& следует (Ь, а) g φ;
8) транзитивным, если из афЬ и Ьфс следует афс;
9) связанным, если для любых неравных α и Ъ из Μ выполнено
афЬ или Ьфа.
Пример 2.8. Отношение φ = {(1, 1), (а, а), (а, 2), (2, 2)} является
рефлексивным, антисимметричным, транзитивным.
Пример 2.9. Отношение 0 является полным (на 0) и
одновременно обладает всеми остальными 8 свойствами.
Пример 2.10. Отношение τ = {(1, 2), (2, 1), (1, 1), (2, 2), (3, 3)}
транзитивно, рефлексивно и симметрично, но не антисимметрично
и не связанно.
31
Бинарное отношение, являющееся одновременно
рефлексивным, симметричным и транзитивным, называется отношением
эквивалентности.
Если φ — отношение эквивалентности, то вместо афЬ часто
пишут или а~Ъ плпа~Ьу если в данном контексте φ одно и то же, и го-
φ
ворят: а и Ъ эквивалентны (по отношению к φ).
Например, отношение τ из примера 2.10 является отношением
эквивалентности, а также отношения 0и
р = {((а, Ь); (с, d))<=N2xN2\ad=bc},
ψ={(α, 6)eQ2|a-bEZ}.
Разбиением множества А(А Φ 0) называется система
множеств {Х19 Х2, ..., ХА} таких, что каждое X, * 0, X. ПХ; = 0 при
k
ίΦ /иА = ^JXj · Например, если А ={1, 2, 3}, то системы {{1, 3}, {2}}
i=l
и {{1}, {2}, {3}} являются его разбиениями.
Имеется прямая связь между отношением эквивалентности на
множестве Μ и его разбиениями. А именно: если R — разбиение
множества А, то отношение (рд , состоящее только из всех пар (х, у)
таких, что существует класс Bi из R, а х и у из Bi, является
отношением эквивалентности. Кроме того, если^ ий2 — различные
разбиения, то φΕ Φ φΕ .
Обратно, пусть φ — отношение эквивалентности на множестве
Μ и Μ Φ 0. Определим для каждого α из Μ множество α/φ =
= {хе М\(а9х)е φ}.
Легко убедиться, что если αφ£, то α/ φ = &/ φ; если же (а, Ь) g φ, то
а/(рП*>/ср=0.
Теперь можно проверить, что система S = {α/ φ| α ε Μ} есть
разбиение множествами φ5 = φ. Например, для отношения\|/каждый
класс ос/\усостоит из всех чисел вида 2 + а, где ζ е Z, a a — дробь из
интервала (0, 1) и классы 2 +оси ζ + β различны, если α-β£ Ζ.
Рефлексивное, антисимметричное и транзитивное бинарное
отношение φ на множестве Μ назывется частичным порядком на М, а
само множество Μ — частично упорядоченным (этим отношением φ).
Пример 2.11. Отношения {(#, у) ε Μ2 \ х< у}, где Μ ε {#, Q, Z, iV},
являются частичными порядками. Значит, множества/?, Q> Z> N
частично упорядочены отношением «меньше».
32
Пример 2.12. Для любого множества Μ бинарное отношение
р(М) = {(А, В) | (А е Р(М)) л(Б е Р(М)) л(А с Б)} является
частичным порядком. Любое частично упорядоченное множество удобно
представлять в виде схемы (рис. 2.5).
{1,2,3}
{1,2}
{1}
0
Рис. 2.5
На схеме точки изображают элементы этого множества, и точка
χ располагается ниже точки у> и они соединены отрезком, если χ
«меньше» у (символически х< у) и нет точки г такой, что x<z<y.
Такие схемы называются диаграммами Хассе. На рис. 2.5
изображена диаграмма Хассе для отношения р(М), где Μ = {1, 2, 3}.
Частичный порядок на М, в котором любые два элемента сравнимы,
называется линейным. Частичные порядки из примера 2.11 линейные.
2.5. ФУНКЦИИ. СЧЕТНЫЕ МНОЖЕСТВА
Понятие функции определим через понятие бинарного
отношения.
Функцией называется любое бинарное отношение, которое не
содержит двух пар с равными первыми компонентами и
различными вторыми.
Если / — функция, то множествоDf ее первых компонент
называется ее областью определения, а множество R. всех ее вторых
компонент — областью ее значений.
Пример 2.13. Бинарное отношение {(1,1), (2, 3), (3, 2)} есть
функция, области определения и значений которой есть множество {1, 2, 3}.
Пример 2.14. Бинарное отношение {((х, у), х + 2у)\(х, y)eR2}
также функция, область ее определения —R2, а множество
значений — R.
{2,3}
33
Если f — функция и xfy, то элемент у называют значением
функции f на (или в) χ или образом элемента χ при /. Будем его
обозначать f(x)*, т. е.
У = Нх). (2.14)
Элемент χ из равенства (2.14) называется прообразом элемента
у относительно функции /; в этом же равенстве букву χ называют
аргументом или независимой переменной функции /, а букву у —
зависимой переменной.
К функциям применимо определение равенства, поскольку они
являются множествами: функции fug равны тогда и только тогда,
когда они состоят из одних и тех же элементов. Но это же
определение можно сформулировать и следующим образом: f = g тогда и
только тогда, когдаDf =Dg и f(x) = g(x) для любого xnDf.
Пример 2.15. Если Df сХи^ с У, то говорят, что функция /
определена в X и принимает свои значения в У. Если же Df = X и
Rf с У, то говорят, что / определена на X и принимает свои
значения в У, а / называют отображением X в У, символически
/ : X—>У. Если, кроме этого, i?, = У, то / называют отображением
в
Хна У, символически/ : X—»У, или сюръективным отображением
типаХ —>У.
Функция / называется:
1) константной, если существует Ь из М^ такое, что для
любого χ из Μ1 выполнено f(x) = Ь;
2) тождественной, если для любого χ из М^ выполнено /(х) = х;
3)инъектной(плп разнозначной), если иза^Ьследует /(а) * /(b).
Инъективная функция /, являющаяся отображением
множества X на множество У, представляет собой множество пар таких, что
каждый элемент из X и из У входит только в одну пару. Поэтому
инъективное отображение множества X на У называют взаимно
однозначным (или биективным) соответствием между множествами
X и У или биекцией типа X —> У.
Еще введем следующие две функции ft\ R->Z : fx(x) = \_х] —
нижнее целое (т. е. наибольшее целое, не большее х) и f2(x) = \х\ —
верхнее целое (т. е. наименьшее целое, не меньшее х). Например,
число разрядов в двоичной записи числа η (η > 1) равно Llog2^J + 1 =
= riog2(n + l)"|.
* Kormx = (xlfx2t...txJfn>2tBMecTof((xltx2,...,xJ)miiiryTf(xltx2J...7xn).
34
Множество А называется счетным, если существует взаимно
однозначное соответствие между А и N. Другими словами,
множество А счетное, если его элементы можно занумеровать всеми
натуральными числами.
Например, счетным является само множество N
(поскольку ё\{п)-п есть требуемая в этом случае функция), множество
четных чисел (так как функция g2(n) = 2n есть требуемая биек-
ция), множество Z; требуемой функцией в этом случае является
ч f2|m|-l, еслияг<0,
gs (т) = <
]2т, если τη >0.
Пример 2.16. Пусть имеется счетное множество конечных
множеств {At \i >0}, т. е. имеем семейство {А0, А19 ..., Ап,...}, где
каждое At есть конечное множество. Тогда множество В = [jAt яв-
ляется счетным.
Доказательство. Элементы множества В можно занумеровать
всеми натуральными числами, действуя по следующему
алгоритму. Сначала элементы из А0 нумеруются первыми | А0 \
натуральными числами. Затем перебираем элементы из {Ах, А2, ..., Ап,...}, и
если очередной элемент отличен от уже занумерованных, то ему
присваиваем в качестве номера следующее натуральное число за
максимальным из присвоенных номеров. (Поскольку мы
рассматриваем множество {A; |i>0}, то его элементы попарно различны,
т. е. Ai ^Aj при i Φ у. Но поскольку эти элементы А. есть множества,
то не исключено, что Af ПАу. Φ 0 при некоторых различных i и у.)
Оказывается, если допустить, что эти множества At непустые и
попарно не пересекаются, то можно явно определить требуемую би-
екцию.
В самом деле, пусть А, = {ап, ai 2, ..., ain } (i > 0) и А. Π Α} = 0 при
i Φ у. Тогда требуемая биекция f(n) определяется следующим образом:
i-1
f(aij) = n, если ^nk =m, m-l<n<m + ni -l,
k=0
и
(п-т + 1, если т < 0,
]п - т, если т > 1.
Действительно, первыми п0 (п0 =\А0\) натуральными
числами 0, 1, ..., п0 -1 нумеруются элементы из А0, так как т = 0. Когда
35
i-1
m = ^Jik будет больше 0 и п > τη -1, то будут нумероваться элемен-
ты из множества А. следующими числами: т, τη + 1, τη + 2, ..., τη +
+ и,- 1.
Тем самым в случае τη = 0 номер ; элемента в множестве А0
равен η + 1, а если τη >0, то номер у элемента в множестве А.
равен п-т.
Пример 2.17. Множество всех алгоритмов является счетным.
Доказательство. Каждый алгоритм можно рассматривать как
слово в соответствующем алфавите, если ввести специальную
букву, обозначающую пробел. Тогда всех алгоритмов (слов) данной
длины будет конечное число. Следовательно, из примера 2.16
вытекает требуемое утверждение.
Бесконечное множество, не являющееся счетным, называется
несчетным. Несчетными множествами являются R иR \Q и др.
Наконец о том, как по-другому определить бесконечное
множество. Раньше (см. подразд. 2.1) мы определяли бесконечное
множество как отрицание конечного, а в определении последнего мы
опирались на считающееся интуитивно ясным понятие «число
элементов множества».
Справедлива следующая теорема.
Теорема 2.2 (о бесконечности множества). Множество Μ
бесконечно тогда и только тогда, когда существует взаимно
однозначное соответствие между Μ и Мх, где Мх есть собственное
подмножество Μ [11, с. 110].
Эта теорема позволяет дать «положительное» определение
бесконечного множества (без отрицания конечного); его впервые дал
немецкий математик конца XIX в. Р. Дедекинд.
В заключение сравним скорости роста двух функций с
неотрицательными значениями.
Пусть f(n) и g(n) — две функции, отображающие N в R+.
Будем говорить, что f(n) порядка не более чем g(n) (в символах
f{n)-0(g{n))), если существуют положительные константы с и τη
такие, что f(n) <с - g(n) для всех п, п>т; более кратко, существует
с, что для почти всех η выполнено f(n) <c-g(n).
Еще скажем, что f(n) порядка не менее чем g(n) (в символах
f(n) = Ω(#(η))), если существуют положительные константы с и τη
такие, что f(n) > с · g(n) для любого п, п>т.
36
Ясно, что f(n) = Q(g(n)) тогда и только тогда, когда g(n) = 0(/(п)).
Употребляется и запись f(n) - S(g(n)), означающая, что
одновременно f(n) = 0(g(n)) и /(η) = Ω(#(η)).
Также говорят, что функции f(n) и g(n) асимптотически равны
-f(n\
(в символах f(n) ~ £(п)), если lim = 1.
»->- g(n)
2.6. РАЗМЕЩЕНИЯ И РАЗМЕЩЕНИЯ С ПОВТОРЕНИЯМИ
В комбинаторном анализе любое конечное множество А при
| А | = η называется п-множеством.
Определение 2.1. Система множеств {Хг, Х2,..., Xk} назы-
k
вается покрытием множества А, если \^Xt = А.
i=l
Понятие разбиения множества уже определялось выше (см.
подразд. 2.4). С учетом определения 2.1 разбиение множества
А — это такое покрытие этого множества, в котором все элементы
непустые множества и любые два из них являются
непересекающимися.
Очевидны следующие утверждения.
Принцип Дирихле. Если система {Хх, Х2,..., Xk} является
покрытием η-множества, то найдется хотя бы одноi (l<i <n)такое,
что|Х. | > -.
1 k
Правило суммы. Для каждого разбиения {Хг, Х2,..., Xk}
конечного множества А верно равенство
|αι=ςι*.ι·
Правило произведения. Для любых конечных множеств
Хх, Х2, ..., Xk верно равенство
ΙΧ,χΧ,χ.,.χΧ,^ΥΙΙΧ^.
Из правила произведения непосредственно вытекает
следующее следствие.
37
Следствие 2.1. Для любого конечного множества X верно
равенство
|х"| = |х|\
Определение 2.2. В комбинаторике произвольный тп-век-
тор с координатами из п-множества называется т-размещениями с
повторениями из η-множества (или размещениями с
повторениями из η элементов по т).
Обозначим через Рлщ число всех различных /η-размещений с
повторениями из данного я-множества (п, т > 1). Тогда, согласно
следствию 2.1, имеем Рлт -пт .
Например, всех η-наборов из 0 и 1 ровно 2п .
Определение 2.3. τη-Вектор с попарно различными
координатами из η-множества называется т-размещениями из п-множе-
ства (илиразмещениями из η элементов по т), 1<т<п.
Число всех различных /η-размещений из данного п-множества
обозначим через Рлт . Имеет место равенство
Рлт =n(n-l)...(n-m + l), (2.15)
которое легко доказать методом математической индукции по т.
Еще положим Рл° = 1 и Рлт = 0 при т>п.
Определение 2.4. η-Размещения из η-множества
называются п-перестановками.
Пусть п\ = 1 2 ·... · η для каждого натурального числа η (η > 1) и
О! = 1. Тогда согласно (2.15) имеем Рлл = п\.
Например, 5 различных книг на полке можно расставить 5!
способами.
Функция п\ растет очень быстро (например, 5! = 120, 7! = 5040)
и асимптотически
ла Стирлинга.
равна — л/2яп, т. е. п\ ~ — ν2πη; это форму-
2.7. СОЧЕТАНИЯ И СОЧЕТАНИЯ С ПОВТОРЕНИЯМИ
Здесь мы продолжим знакомство с комбинаторными объектами.
Определение 2.5.В комбинаторике /п-подмножества
п-множества называются т-сочетаниями из η-множества или
сочетаниями из η элементов пот(0<т<п).
38
Через С™ или I обозначается число всех различных тп-со-
\т
четаний из данного η-множества, О <т <п\ С™ и
\mJ
называется
биномиальным коэффициентом.
Из определения 2.5 вытекает, что
r^m s^n — m
η η '
и еще положим С™ = О при тп>п.
η
Также из определения 2.5 следует, что ^JCkn есть число всех под-
η
множеств данного η-множества (или ]^С* = | -Р(^)|> если это гс-мно-
жество есть А). Много других равенств с биномиальными
коэффициентами имеется в [4, 8, 17].
Ясно, что С° = 1. При 1 < m < η /η-сочетания из η элементов
отличаются от яг-размещений из этих же η элементов тем, что не
учитываются m-перестановки рассматриваемых m элементов, которых
ровно ml. Следовательно,
рпг
С™ =-^-при1<7п<п
ml
или
с«т = ,/' ν (2·16)
ml[n-m)l
Формула (2.16) имеет место для всех /п, где0 <m<n.
Определение 2.6. ПустьX = {х19 х2,..., хл}, ά = (α1,α2,...,αΛ)
η
есть η-вектор с натуральными координатами и Voc. -m{n, m >l).
Объект Х-, в котором элемент χ. из X встречается at раз, называется
т-мультимножеством, порожденным множеством X
относительно вектора ос:
- / \
Х- =1 xl,...,x1,...9xi9...,xi,...,xn9...9xn ). Если ос^ = 0, то элемент
xi не входит в Ха .
39
Например, если X = {α, Ь, с}, а ах = (1,0,3)иа2 =(2, 1, 1),тоХа =
= (а, с, с, с) и Х- = (а, а, Ь, с).
ос2
m-Мультимножество, порожденное η-множеством, называют
т-сочетанием с повторениями из η-множества или сочетанием
с повторениями из η элементов по т.
Два /η-сочетания с повторениями называются равными, если
они состоят из одних и тех же элементов, взятых с одной и той же
кратностью.
Число всех различных /η-сочетаний с повторениями из данного
я-множества обозначается через Η™ (τι, т > 1).
Справедливо равенство
^Г = СГ«,-1· (2·17)
Это равенство следует из взаимно однозначного отображения
m-сочетаний с повторениями из данного тг-множества на
множество всех т-подмножеств (п + т- 1)-множества. За тг-множество
возьмем множество X - {1, 2,..., п} и каждое /тг-сочетание с
повторениями, порожденное этим множеством, будем записывать так:
где^ <i2 <...<im.
Теперь вводим отображение g, полагая
g((il, 12, ..., im)) = {ίΐ, 12 +1, ..., im + m - 1}.
Нетрудно убедиться, что g есть требуемая биекция, и, значит,
формула (2.17) имеет место.
Введенные понятия позволяют решать ряд реальных задач.
Пример 2.18. Некоторая комиссия собиралась ровно 40 раз.
Каждый раз на заседаниях присутствовали по 10 человек,
причем никакие двое из ее членов не были на заседаниях вместе
больше 1 раза. Доказать, что число членов такой комиссии
больше 60.
Решение. Поскольку на каждом заседании было 10 человек, то
из них можно образовать Сх20 = =45 пар. Так как никакая пара
на всех заседаниях не встречалась более 1 раза, то на всех 40 заседа-
40
ниях встречалось пар45 · 40 = 1800. Но из 60 человек можно
образовать только Св20 = ^^ = 30-59 = 1770пар)и1770<1800,аСп2+1 >С2п
при η > 1.
Пример 2.19. Группа из 41 студента успешно сдала сессию из
трех экзаменов. Возможные оценки 5, 4, 3. Доказать, что, по
крайней мере, пять студентов сдали сессию с одинаковыми оценками
(независимо от экзаменов).
Решение. Результат сдачи одним студентом экзаменов можно
представить в виде (ос1э ос2, ос3), где каждое ос^ ε {5, 4, 3} (1 < i < 3). А это
есть 3-мультимножество, порожденное множеством {5, 4, 3}
относительно вектора ά = (αχ, α2, α3), где αχ + α2 + α3 = 3. Обратно, если у
нас есть такое 3-мультимножество (bl9 b2i b3), то некоторый студент
получил оценки^, Ъ2, Ь3; например, это могут быть (5, 5, 4), (3, 3, 3),
(4, 3, 3) и т. п. Следовательно, все возможные успешные сдачи трех
экзаменов взаимно однозначно представляются
3-мультимножествами, порожденными 3-множеством {5, 4, 3}. Тогда число всех таких
5 4
различных сдач экзаменов равно Н* = C|+3-i = С\ = С52 = =10.
Итак, получаем, что 41 студент должен быть размещен по
10 «ящикам» (типам оценок). Согласно принципу Дирихле, хотя
41
бы один такой «ящик» будет содержать > — = 4,1 студентов,
значит, не менее 5 студентов.
Пример 2.20. Лифт отправляется с г пассажирами и
останавливается на η этажах. Сколько имеется: 1) всех возможностей выхода
пассажиров и 2) тех возможностей, когда никакие два пассажира
не выйдут на одном этаже, если г < п.
Решение. Возможным выходам пассажиров сопоставим
вектор (р1У р2, ..., рг), где pi (l<i<r) означает номер этажа, на
котором выходит i-й пассажир и, возможно, pt = р. при i = j. Ясно, что
такое сопоставление взаимно однозначно. Тогда в случае 1)
ответом будет число Рпг = ηг.
В случае 2) в указанном векторе pi ^ р} при i Φ ;, что возможно,
п\
так как г <п. В этом случае ответом будет число Рлг = —.
41
2.8. ФОРМУЛА БИНОМА НЬЮТОНА
Формула Бинома Ньютона. Для любого натурального числа п*
и любых действительных чисел χ и у имеет место равенство
(х + уУ =^Скпхку"-к. (2.18)
Эта формула бинома Ньютона оправдывает название
«биномиальные коэффициенты» для С*.
Доказательство этой формулы весьма краткое. При η = 0 и η = 1
легко проверить, что формула (2.18) верна. Если η > 2, то слева в
равенстве (2.18) имеем η сомножителей χ + у: (х + у)(х + у)...(х + у). По
правилам перемножения коэффициент при одном члене хкуп~к
получается всевозможными выборами из k скобок (х + у) переменного
χ и из остальных η -k скобок переменного у> что как раз и дает
коэффициент С *.
Встречаются и доказательства формулы (2.18) с помощью
математической индукции по тг, в которых используется формула
сг=сг.1 + с:л1. <2·19)
где 1<т<п, называемая рекуррентным соотношением для
биномиальных коэффициентов.
Доказательство формулы (2.19) можно получить, используя
формулу (2.16).
Мы ее докажем, применяя правило суммы. При т = 1 формула
(2.19), очевидно, верна.
Если т >2, то и η >2, ив рассматриваемом я-множестве
выделим некоторый элемент хх. Затем множество всех /п-подмножеств
рассматриваемого η-множества (мощность которого С™ ) разобьем
на два класса: в первый класс включим все /η-подмножества, не
содержащие хх, а во второй — все /η-подмножества, содержащие χλ.
Тогда мощность первого класса равна С™_х, а мощность второго —
С^1, и согласно правилу суммы это завершает доказательство
равенства (2.19).
Обобщением формулы (2.18) является следующая формула.
Для этого подсчитаем число С"1' "" Пк всех квазиразбиений конеч-
* Имеется обобщение формулы (2.18) на случай действительного п.
42
ного η-множества X на. k подмножеств Х19 Х2, ..., Xk (&>1), та-
k η
κΗΧ,4το|Χί I = ni,X = [JXi, Xt пХ; = 0при**;и^уг. = rc, но, воз-
можно, для некоторых i выполнено Xt = 0 (из-за последнего
условия мы употребили термин квазиразбиение)*.
Стандартное рассуждение о выборе на первом этапе п1
-подмножества из гс-множества (число способов С*1) и на у-м этапе (2 <j<k)
выбор η}-подмножества из \η~Σηρ гмножества дает следующую
V p=l J
формулу:
п-п п-пх-...-пк
я"-1 n\n2\...nk\
к
Замечание 2.1. Число С^1*""' Пк, где nt > 0 и \п. =пу равно
числу η-размещений с повторениями из ^-множества, среди
компонент которых содержится nt раз i-й элемент (1 <i <k) этого
^-множества.
Пример 2.21. В студенческой группе из 25 человек при выборе
старосты за выдвинутую кандидатуру проголосовало 14 человек,
против — 9, воздержалось — 2. Сколькими способами могло быть
проведено такое голосование?
Решение. Участие в голосовании за одно возможное решение
исключает участие в голосовании за другое (т. е. если кто-то
голосовал «за», то он не голосовал «против» и не «воздержался»).
Поскольку 25 = 14 + 9 + 2, то искомое число равно
14,9,2 _ 25! _ 15 16-17-18-19-20 21 22 23 24 25 _
25 ~14!9!2!~ 1234-56 7 8-9 2
= 15 17 19 11 23 24 25=15 49031400.
Обобщением формулы бинома Ньютона является следующая
полиномиальная формула.
* Число всех разбиений (т. е. без Xt =0) τι-множества на k подмножеств
называют числом Стирлинга второго рода [20, с. 99].
43
Для любого натурального η и любых действительных xt (1 < i < ή)
справедливо равенство
(x1+x2+...+xkr= Σαηη1,η' "* *,"'*,"* ■·.*;*.
п1+..лпк=п
где суммирование ведется по всем решениям уравнения хг +
+х2 +... + xk = η в натуральных числах (включая 0).
В заключение остановимся на двух применениях формулы
бинома Ньютона.
1. О мощности множества Р(А), где | А\ = п. Положим в
формулу
ле (2.18) х = у= 1. Тогда получим 2п = ]£С*, что означает: каждое
η-множество имеет 2п различных подмножеств (см. подразд. 2.1).
η
2. О значении сумм 5λ(αι) = ^ϊ*. Значение S1(n) = l + 2 + ... + n =
Al(tt + l)
= известно из школьного курса математики. Для того
чтобы найти S2(n) = I2 + 22 + ... + п2, представим каждое число
т(2<т<п + 1)в виде т = (т -1) +1 и найдем его куб по формуле
бинома Ньютона. Имеем
I3 = +1,
23 = (1 + 1)3 = 13+3 12+3 1 +1,
З3 = (2 + 1)3 = 23+3 22+3·2 +1,
43= (3+1)3 = 33+3 32+3 3 +1.
п3 = ((п-1) + 1)3 = (п-1)3 +3 · (п-1)2 + 3 (п-1)+1,
(п + 1)3 = п3 + 3п2 +3 η +1.
Сложив все эти равенства, получим
(п +1)3 = 3S2 (η) + 3S, (η) + (η +1),
откуда
(η + 1)3-3^(η)-(η4-1)
S2(n) = ,
44
а подставив значение 5Х (η), имеем
У1(у1 + 1)(2п + 1)
52 W = g ·
Возведя указанные числа вида ρ +1 в степень /п + 2 и зная
значения всех Sk(n) при l<k <т> найдем значение Sm+1(n).
Итак, описан алгоритм нахождения значений Sk(n) при
помощи формулы бинома Ньютона. Чтобы найти значение Sm+1 (n) в этом
алгоритме, требуется знать все значения S^n), S2(n), ..., Sm (n).
2.9. РЕКУРРЕНТНЫЕ СООТНОШЕНИЯ И ИХ РЕШЕНИЯ
Запишем формулу (2.19) в обычных функциональных
обозначениях:
g(n9 m) = g(n-l9 m) + g(n-l9 т-1), 1<т<п.
Это специальное рекуррентное соотношение для функции
двух переменных g(n> m) (формула (2.19) называлась
рекуррентным соотношением для биномиальных коэффициентов). Это
рекуррентное соотношение позволяет находить «последующие»
значения g(n, т)у если известны «предыдущие» значения g(n - 1, т) и
g(n- lym- 1).
В самом деле, из определения С™ известно, что С° = 1,С* = п,
С·* = С„~п = С° = 1 и С™ = О при т >п. А значит, известны значения
С!,С1, С2°, С\, С22, С3°, С3\ С32 = Cj, C4°, С\. НайдемС42. ИмеемС42 =
= #(4, 2) = £(3, 2) + g(3,1) = С32 +Cg = 3 + 3 = 6. Следовательно, знаем все
значения С* , 0 <& <4 Теперь можно приступить к нахождению
всех значений С5т , 0 < η < 5. Имеем С52 = £(5, 2) = £(4, 2) + #(4,1) = С42 +
+ С4 =6+4=10. После этого уже известны все значения С™ , так
как С\ = С|"^ = С|, а С5 = С55"4 = С^. Теперь можно переходить к
нахождению всех значений С™ , 0 <т <6, и т. д.
Аналогично действуя, найдем значения других функций, если
для них будут заданы соответствующие рекуррентные
соотношения. Но хотелось бы описать некоторые регулярные методы реше-
45
ния для рекуррентных соотношений. Правда, они применимы для
весьма узкого класса. Приступим к его описанию.
Рекуррентное соотношение для функции одной переменной
f(m) в общем случае записывается в виде
f(n+k) = F(n, /(n+ft-1), /(n+fc-2), ..., /(η)),
где F — некоторая функция от k + 1 переменной.
Число k называется порядком соотношения. Например, в
рекуррентном соотношении
f(n + 2) = 3/(^1 + 1)- 2 f(n) (2.20)
порядок равен 2.
Последовательность ос(тг) (п = 0, 1, 2, ...) называется решением
данного рекуррентного соотношения, если при ее подстановке в
рекуррентное соотношение последнее тождественно выполняется.
Например, последовательность 2п (п = 1, 2, ...) является одним
из решений соотношения (2.20), другим его решением является
С 2п (С — константа).
В настоящее время известен общий метод решения линейных
рекуррентных соотношений с постоянными коэффициентами [20].
Рекуррентные соотношения вида
f(n+k) = a1f(n+k-l)+a2f(n + k-2) + ...+akf(n) + v(n), (2.21)
f(n +k) = aj(n +k- l) + a2f(n+k-2) + ... +akf(n), (2.22)
где al9 a2, ..., ak — произвольные комплексные числа, a v(n) —
функция от п, не равная нулю, называются соответственно
линейными и линейными однородными рекуррентными
соотношениями с постоянными коэффициентами.
Например, соотношение (2.20) есть линейное однородное
рекуррентное соотношение с постоянными коэффициентами.
Общее решение линейного однородного рекуррентного
соотношения (2.22) имеет вид
^n) = %Lcii +ci2n + .-- + cirnr'-1)Xni,
где с. (l<i<s, 1<7'<η) — произвольные комплексные числа, а
λχ, λ2, ..., λβ —различные корни уравнения
xk -axxk~x -a2xk~2 -...-ak =0 (2.23)
соответственно кратности г1У г2, ..., rs [20].
46
Уравнение (2.23) называют характеристическим уравнением
рекуррентного соотношения (2.22).
Пример 2.22. Для рекуррентного соотношения (2.20) его
характеристическое уравнение есть ;с2-3;с + 2=0, корни которого
X = 1, λ2 =2. Кратность этих корней — единица. Следовательно,
1 2
общее решение α(η) = ]Гспλ" =си1п +с212п =сх +с22л.
i=l
Пример 2.23а. Найдем решение рекуррентного соотношения
f(n + 2) = 4/(п +1) - 4/(п), удовлетворяющего начальным значениям
/(0) = 1, /(1)=4 Его характеристическое уравнение х2 -4х + 4 = 0
имеет корень λχ =2 кратности 2. Следовательно, его общее
решение есть а(п)=(с1 + с2п)-2п . Так как ДО) = 1 и /(1) = 4, то имеем
систему
|(с1+с2-0)-20=1,
[(с1+с2-1)-21=4,
откуда сх = 1, с2 = 1. Значит, требуемое решение — это
последовательность (1 + п) -2 п, п>0.
Пример 2.236. Рекуррентное соотношение f(n) = 2(1 +1/ η)/(η -1)
при η > 1 и /(0) = 1 не является линейным однородным с постоянны-
ми коэффициентами. Но разделив его на η +1, имеем = 2— ~,
η + 1 η
и, полагая Ь(п) = , получаем Ып) = 2Ь(гс -1) при гс > 1 и Ъф) = 1 —
п + 1
линейное однородное рекуррентное соотношение с постоянными
коэффициентами .
Аналогично решаются:
1) nf(n) = 2(n-2)f(n-l) при η > 1 и /(0) = /(1) = 1 (умножением
на η - 1);
2)nf(n) = 6(n - l)/(n -1) при η > 1 и /(0) = /(1) = 2 (делением на2л).
Перейдем к рассмотрению неоднородных рекуррентных
соотношений (2.21) с постоянными коэфициентами.
Общее решение рекуррентного соотношения (2.21) можно
представить как сумму общего решения соответствующего однородного
рекуррентного соотношения (2.22) и некоторого решения
соотношения (2.21) [20]. Это некоторое решение (2.21) укажем для
случая, когда в соотношении (2.21) функция ν(η) есть Rm(n)Xn, где
Rm (ή)λη — многочлен от η степени т и λ Φ 0. В таком случае реше-
47
ние соотношения (2.21) имеет вид Qm (η)λη, Tfl,eQm (η) — многочлен
от η степени m, если λ не является корнем характеристического
уравнения (2.23), и вид nrQm(n)Xn, если λ — корень уравнения
(2.23) кратности г (г > 1) [20].
Пример 2.24. Найдем решение рекуррентного соотношения
/(η + 1) = -/(η) + 2, (2.24)
о
удовлетворяющего начальному условию /(0) = 6.
Характеристическое уравнение соответствующего
однородного, т. е. fin +1) = - fin), есть χ — = 0, откуда х--. Значит, общим ре-
ό ό ό
шением этого однородного будет сх -
В неоднородном соотношении υ(η) = 2, т. е. Rm (η)λη = 2, и,
значит, Rm (η) = 2 и λ = 1. Так как 1 не является корнем
характеристического уравнения, то должно существовать решение вида£?0(п)1п , где
Q0(n) — многочлен нулевой степени, т. е. в виде с 1п =с. Подставляя
с
в (2.24), имеем с- +2. Откуда с = 3. Итак, общее решение (2.24)
о
имеет вид сх - +3. Из начального условия /(0) = 6 находим, что
+ 3 = б исх =3. Таким образом, α(η) = 3· - +3 = 3 - +1
Пример 2.25. Найдем решение рекуррентного соотношения
f(n +1) = f{n) + η +1, удовлетворяющее начальному условию /(0) = 1.
(Величину f(n) можно интерпретировать как наибольшее число
частей, на которые делят плоскость η прямых.)
Общее решение соответствующего однородного соотношения
f(n +1) - f{n) = 0 есть произвольная константа с, так как его
характеристическое уравнение х-1 = 0 своим корнем имеет 1.
Частное решение исходного соотношения будем искать в виде
п(ап+Ь)у поскольку в рассматриваемом случае v(n) =R1(n)lnn 1 —
корень характеристического уравнения. Подставляя п(ап+Ь) в
исходное соотношение, получаем
(η + 1)(α(η +1) + Ь) = п(ап + Ь) + п +1
или 2ап+а + Ь = п + 1.
48
Γ2α = 1, 1
Отсюда ^ иа = 6 = -.
[а + о = 1 2
Итак, общее решение о{п) = ~(п +1) + с. Из начального условия
/Υ0) = 1 находим с: с = 1. Тогда требуемое решение есть
^±1> + 1,п>0.
2
Заметим, что в [20] рассматриваются еще линейные
рекуррентные соотношения с переменными коэффициентами.
В заключение остановимся на одном рекуррентном
соотношении, возникающем при оценке сложности вычислений
многочисленных алгоритмов типа «разделяй и властвуй».
В алгоритме нахождения наибольшего и наименьшего
элементов 2к-множества [2, с. 77] общее число сравнений удовлетворяет
системе
Г»:
1, если η = 2,
ргЛ— +2, если η >2(здесьп = 2*).
В алгоритме умножения η-разрядных двоичных чисел (п = 2к),
описанном в работе [2, с. 78], число операций Т2(п) удовлетворяет
системе
Т2(п)-
\k, если η = 1,
ЗТ2 — \+kn, если η >1,
где k — константа.
В других аналогичных алгоритмах сложность их вычислений
Т(п) удовлетворяет системе
Ь при η = 1,
Т(п) =
\αι ι — \-ton при/i χ
где а, Ь и с — натуральные константы и η = ck.
лЛ (2 25)
α^Ι — +Ьпприп>1,
49
Решение рекуррентного соотношения (2.25):
|0(п), если а<с9
Т2(п) = lO(n\og2 η), если а = с,
\р(п1оее а), если а >с [2, с. 80].
В монографии [13, с. 66] приведено рекуррентное соотношение,
являющееся обобщением (2.25), и определено его решение.
2.10. ФОРМУЛА ВКЛЮЧЕНИЙ И ИСКЛЮЧЕНИЙ
Введем важную комбинаторную формулу. Пусть Xt (l<i<n) —
некоторые конечные множества и для каждого из этих i выполнено
включение: Xf cl. Напомним, что |Xi | есть мощность конечного
множества Xf.
Убедимся, что верна следующая формула:
I^UXJHXJ+IXJ-IX^XJ. (2.26)
В самом деле, каждый элемент из Хг U Х2 в левой части
равенства (2.26) учитывается 1 раз. В правой же части этого равенства он
учитывается в Χλ или Х2, и если он входит в Хх ПХ2» то
учитывается дважды; поэтому двойное учитывание исключается
присутствием следующего члена: -|Х1ПХ2|- (Заметим, что в этом простом
рассуждении процесс состоял во включении «всех» и исключении
«лишнего».)
При изображении Хх U Х2 кругами Эйлера элементы двойного
учитывания заштрихованы; именно они составляют Χλ Π Χ2 (рис. 2.6).
Рис. 2.6
КогдаХх ПХ2 = 0, т. е.\Хг f|X21 =0, то согласно равенству (2.26)
получаем
\ΧιΌΧ2\=\Χι\ + \Χ2\· (2.26')
50
Теперь, исходя из равенств (2.26) и (2.26'), найдем мощность
множествах\(ХХ U Х2). Очевидно имеем
(Х\(Х1их2))П(Х1их2) = 0,
X = (X\(X1UX2))U(X1UX2).
Тогда согласно равенству (2.26') получаем, что | Х| = | X \(ХХ U
UX^I + IXxUXal, откуда |Х\(ХХ U X2)|=|X|-IXjUXj. И
согласно равенству (2.26) имеем
|Х\(Х1их2)|=|Х|-|Х1|-|Х2|+|Х1ПХ2|. (2.27)
Придадим равенству (2.27) следующий смысл. Пусть X —
множество элементов, каждый из которых может обладать либо
свойством осх, либо свойством ос2 и | Х| = N. Далее, пусть Xi есть
множество всех элементов из X, которые обладают свойством at (i = 1, 2) и
\Xi\ = N(ai), α\ΧίΠΧ2\ = Ν(α1ία2). Тогда X\(X1UX2) есть
подмножество всех тех элементов из X, которые не обладают ни αχ, ни
а 2, и пусть | X \ (Хх U Х2) | = N(ax, а 2). Следовательно, в таком
случае равенство (2.27) перепишется следующим образом:
iV(a1,oc2) = iV-iV(a1)-iV(a2) + iV(a1, ос2). (2.28)
Формула (2.28) есть частный случай формулы включений и
исключений, общий вид которой мы напишем после следующих
обозначений.
Пусть имеется множество X из N элементов, обладающих η
свойствами аг, α2,..., осп; каждый элемент из X может либо не обладать
ни одним из указанных свойств, либо обладать одним или
несколькими свойствами. Обозначим через N(at, ос;.,..., ос Л) количество
элементов, обладающих свойствами ос., ос.,..., осЛ (и, быть может,
некоторыми другими свойствами). Число элементов, не обладающих ни
одним из указанных свойств, обозначим через Ν(α1, α2,..., ап).
Тогда общий вид формулы включений и исключений
Ν(άλ, a2, ..., aJ = iV-]TjV(a.) + ]TiV(ai(, a(|) +
i ii<i2
+ (-l)s ^JV(a(jl at|, ...,ocie) +...+
i1<i2<...<i,
+ (-1)ηΛΓ(α1, cc2, ..., an). (2.29)
В формуле (2.29) алгебраическая сумма распространена на все
сочетания свойств из п-множества{а1, ос2,..., ал}, причем знак «+»
51
ставится, если число учитываемых свойств четно, и знак «-», если
такое число нечетно; как будет указано ниже, правая часть этой
формулы содержит 2 л алгебраических слагаемых.
Доказательство формулы (2.29) можно провести аналогично
тому, как мы доказали формулу (2.28).
Убедимся методом математической индукции по п, что для
любых конечных множеств Xt (l<i<n, n>2) верно равенство
|χ1υχ2υ...υχ„ι=(|χ1ι+|χ2ι+...+|χ„ΐ)-
-(|х1пх2|+|х1пх31+...+|х1пх„|+|х2пхз1+...+
+|χη_1ηχ„|)+(|χ1ηχ2ηχ3|+|χ1ηχ2ηχ4|+...+
+ |X„_2nxn.inxJ)-...+(-l)"+l|^inx2n...nx„|, (2.30)
в правой части которого имеется 2п -1 алгебраических слагаемых.
Формулу (2.30) запишем в более компактном виде следующим
образом:
и*.
:£|х,|- ΣΙ^ηχ,.μ
\<,i<j<,n
kn+l.
+ Х|Х;ПХуПХ,|-... + (-1)"+|^1ПХ2П...ПХ„|. (2.30')
l<i<j<k<n
Базис индукции: η = 2 верен согласно формуле (2.26), в правой
части которой имеется 22 -1 = 3алгебраических слагаемых.
Предположим, что равенство (2.30) верно для случая η -1
подмножеств, где η >3, и в правой его части будет2п_1 -1 слагаемых.
Докажем (2.30) для η подмножеств. Разобьем множества Хи
Х2, ---,Хп на Две системы {Χλ, Х2,..., Хп_х}, {Хп}. Согласно формуле
(2.26) имеем
| Хг UX2 U.. .UX J = | (Xt UX2 U.. .UZ... )UX J =
= \х, UX2 U. ..UXn.1|+|Xj-|(X1UX2U...UX„.1)nx„ 1(2.31)
или
|x1ux2u...uxj=|x1ux2u...uxn_1|+|xj-|y1uy2u...urn_1|,
где У, =Х|ПХЙ, l<i<n-l.
Согласно индуктивному предположению, имеем, используя
(2.31'):
52
a) ι χ, υχ,υ.-.υχ^ ι="fix, ι - £|χ,nx/1+
f=l l^f</^n-l
+ Х|Х(П^ПХ,| -...+(-l)"|Xinxin...nx,,.1|;
l<i<;<fcSn-l
б)|у1иу1и...иу,,.1| = Х|у)|- Sy.nyj +
i=l l<i</<n-l
+ ΣΙΥ,ΠΥ,.ΠΥ,Ι -...+(-1)п|У1ПУ2П...ПУп.1| =
l£i</<A£n-l
= χι χ, ηχ„ ι - χι χ, nxj οχη \+ χι χ, ηχ, f)xk ηχ„ ι -
i=l l£i</<n-l 1<*</<&<л-1
-...+(-ΐ)Λ|χ1ηχ2η...ηχη_1ηχΛ|,
где в каждой из этих формул в правой части имеется по 2л1 -1
алгебраических слагаемых.
Подставляя в (2.31) формулы, полученные в пп. а) и б),
получаем (2.30). Осталось подсчитать число слагаемых в (2.30). В формуле
(2.31) имеются три слагаемых, но вместо первого и третьего
подставляются πο2η_1 -1 слагаемых; следовательно, всех слагаемых в
(2.30) будет 2(2Л"1 -1) +1 = 2п -1.
Теперь пусть каждое из рассмотренных множеств Xt (l<i<n)
является подмножеством множествах, т. е. Xt с X. Тогда(Х \(ХХ U
UX2U..UXJ)n(X1UX2U...UXJ = 0,а (Х\(ХХ UX2 U...UXJ)U
U(X1UX2U...UXJ = X.
Отсюда, согласно (2.26), получаем
|X\(X1UXaU..UXJ|+|X1UX2U...UXj=|X|,
откуда|х\(х1их2и...ихл=|х|-|х1их2и...ихй|.
Используя в последнем равенстве формулу (2.30) и
интерпретацию, аналогичную той, которую мы применили к равенству (2.27),
получаем формулу (2.29). Заметим, что в правой части формулы
(2.29) ровно 2п алгебраических слагаемых.
Пример 2.26. Было опрошено 70 человек. В результате опроса
выяснили, что 59 человек знают английский язык, 31 —
немецкий, 45 — французский, 25 — английский и немецкий, 30 —
английский и французский, 25 — немецкий и французский, all
человек — все три языка. Сколько человек из опрошенных не знают
ни одного языка?
53
По формуле (2.29) при η = 3 получаем
Ща1У α2, α3) = Ν-Ν(α1)-Ν(α2)-Ν(α3) + Ν(α1, α2) + Ν(α19 α3) +
+Ν(α2, a3)-.V(a1, a2, a3) = 70-(59 + 31+45) + 25 + 30 + 25-ll = 4.
Пример 2.27. В ряде случаев формулу (2.29) можно
использовать для того, чтобы показать, что решения комбинаторной задачи
не существует.
Например, староста одного класса дал следующие сведения об
учениках: «В классе учатся 45 учащихся, в том числе 25
мальчиков. Спортом занимаются 28 учеников, из них 18 мальчиков и
17 хорошо успевающих школьников, 15 мальчиков в классе учатся
хорошо и в то же время занимаются спортом; 30 школьников
учатся хорошо, среди них 16 мальчиков; 30 школьников учатся
хорошо, среди них 16 мальчиков».
Выясним, являются ли эти сведения совместимыми.
Обозначим через αλ принадлежность к мужскому полу, через ос2 —
хорошую успеваемость и через ос3 — увлечение спортом. По условию
задачи
iV(a1) = 25, ΛΓ(α2) = 30, iV(a3) = 28,
N(alf a2) = 16, N(a19 a3) = 18,
N(a2> a3)=17, N(aiy a2, a3) = 15.
Тогда N(aiy ά2, ά3) есть число слабо успевающих девочек, не
занимающихся спортом. По формуле (2.29) получаем
Ν(α19 α2, α3) = 45-(25+30 + 28) + 16 + 18 + 17-15 = -2.
Но отрицательным ответ быть не может. Значит, данные
сведения противоречивы.
Рассмотрим частный случай формулы (2.29), когда число
N(a19a2y...9ak) элементов, обладающих свойствами а19 ос2,..., ak
(l<k <n), не зависит от самих свойств, а только зависит от их
числа. Таким образом, пусть
N(a1) = N(a2) = ...= N(an),
N(aiy a2) = N(a19 a3) = ... = N(an_19 aj,
N(aiy a2, a3) = iV(a1, a2, a4) = ... = JV(a„_2, αη_χ, απ)
ит. д.
54
Тогда в сумме ^N(ai ) = /i-iV(1) =Cln -iV(1), полагая N{k)
= Ν(α19 α2, ..., ak)9 & >2, получаем, что
^(а1? а2, ..., ak) + N(a19 а2, ..., ocfe, ам) + ...+
+W<aIf_M,aI,_M1,..., a„) = C*iV(*\
потому что в левой части сумма берется по всем возможным
сочетаниям k свойств из η свойств. Следовательно, в рассмотренном
случае формула (2.29) принимает вид
iV(0)=iV-Ci.iV(1)+Cn2-iV(2)-...+
η η
+ (-l)8C8n'N(8)+... + (-l)n-Nin). (2.32)
Пример 2.28. Найти числоD(N) перестановок а19 ос2, ..., ап из
η элементов 1, 2, ..., /ι, в которых для каждого i (1 < i < η) выполнено
al ^i9 т. е. ни один элемент не остается на месте. Ясно, что в этом
случае будет применима формула (2.32), так как все элементы
равноправны. Здесь через Nik) обозначим количество перестановок, в
которых заданные k чисел остались на своих местах, l<k<n. Но
если k чисел остались на своих местах, то в таких перестановках ос-
тальныые η-к чисел будут занимать любые места, что дает (п -к)!
случаев. Значит,
D(/i) = C^-7i!-Ci(/i-l)!+Cn2(7i-2)!-...+(-l)sC;(Ai-s)!+...+
( 1 1 1 (—Wn \ п (-Л\к
+ (-1)"С" ·(*-*)! = *! 1-- + — -...+(-l)ei. + ... + L_yL =Αΐ!γ^_^_,
V
1! 2! s! n!
- (-1)
т. e.Z>(n) = n!]Tv '
Очевидно, что фигурирующая здесь сумма — частная сумма
разложения в"1.
2.11. ПРОИЗВОДЯЩИЕ ФУНКЦИИ
Одним из наиболее эффективных средств решения
перечислительных комбинаторных задач является метод производящих
функций, суть которого состоит в сопоставлении каждой числовой после-
55
довательности функции действительной (или комплексной)
переменной, причем отношения между последовательностями отражаются в
отношениях между функциями. К самим функциям применимы
аналитические методы исследования, которые иногда оказываются
более простыми и удобными, чем непосредственное оперирование с
числовыми последовательностями.
Вместоа0, ах, ..., ап, ... будем писатьап (τι>0).
Определение 2.7. Производящей функцией (ПФ)
последовательности ап (п >0) называется степенной ряд вида
Α(ζ) = Σαηζ\ (2.33)
п = 0
а экспоненциальной производящей функцией (ЭПФ) этой же
последовательности называют ряд
Α(ζ)=]Γ^-ζ\ (2.34)
Числа ап и ап /п\ называют соответственно коэффициентами
этих рядов.
Если ряды (2.33) и (2.34) являются сходящимися, то их суммы
можно рассматривать как соответствующие функции и,
используя операции над ними, получать полезную информацию об
исходной последовательности. Если же радиус сходимости этих
рядов равен нулю, то оперировать с ними можно, только
рассматривая их как некоторые формальные объекты. Оперирование с
такими объектами проводится в рамках алгебры формальных
степенных рядов. В этой алгебре основными операциями являются
следующие.
1°· 2>»г" = Σ6»*" и JT^-г" = ±Цг*г
п=0 п=0 η=0Λ' п=0П^
еслиа„ =Ьп для любого п.
2°. jra„2"+Xb„2"=jr(a„+&n)Z\
п=0 п=0 п=0
56
\n=0 J\n=0 ) n=0
где
t=0
где
i=0
4°. Для любого с gR
с\ >az' | = >caz\ c\ y^-zn ^°a"
Σ«.«· =Σ~-«". «ΣΞτ
Последовательность сл (л >0), определяемая равенством (2.35),
называется сверткой последовательностейап(п >0) и&л (п >0).
Значит, если известны производящие функции A(z) и B(z) последних
двух последовательностей, то производящей функцией их свертки
является A(z)B(z).
Из математического анализа известно, что ряд ^zn при | z\ < 1
сходится и имеет своей суммой (1-г)"1, т. е. Σ2" = (1-2) *· А со"
п=0
гласно определению 2.7, этот же ряд является ПФ для
последовательности 1, 1, 1, ... и ЭФП для последовательности п\ (п >0). Это
обстоятельство является иллюстрацией основного принципа
теории производящих функций: если имеется равенство со
степенными рядами, которое выполняется, когда степенные ряды
рассматриваются как функции (т. е. считают ряды сходящимися в
некоторой окрестности нуля), то это равенство продолжает
оставаться верным при его рассмотрении как соотношения между
формальными степенными рядами, лишь бы операции,
участвующие в формулах, имели смысл для формальных степенных рядов.
57
Рассмотрим примеры ПФ и их применение. Согласно формуле
бинома Ньютона, функция (1 + z)r — производящая функция для
последовательности С" (п >0): (1 + 2)г = ^ГС"2П (напомним, что С™ = 0
п=0
при/τι > г). Далее, ^2Л ζη = ^(2ζ)η =(1-2ζ)~1 и, следовательно, про-
п=0 п=0
изводящей функцией последовательности 2п (п>0) будет (1 —2χ)-1.
ПФ последовательности ап =Н^ (п>0) есть (l-z)~m
(доказательство индукцией по т; здесь полагаем Н^ = 1).
Поскольку аналитическую функцию можно дифференцировать
почленно, имеют место равенства
Jnz» =ζΎηζ"-1=ζ4-Σζη =ζ^-(1-ζ)-1=ζ(1-ζ)-2
t!> По dzt^ dz
и, значит, ПФ последовательности η (η >0) есть ζ (Ι- ζ)~2.
Если перемножить производящие функции (1 + 2)г и (1 + 2)*, то
получим другую производящую функцию: (1 + z)r · (1 + ζ) * = (1 + ζ)r+8.
Приравнивание коэффициентов при zn в обеих частях последнего
равенства дает
Это тождество Коши, доказанное при помощи метода
производящих функций.
Аналогично имеем
(l-z)r =JTc;(-l)"2", (1-ζΥ(1 + ζΥ=α-ζ2Υ,
п=0
а приравнивание коэффициентов при ζη в последнем равенстве дает
(η η
(-1)2 Сг2, если η четное,
0 в противном случае.
Снова тем же методом легко получили нетривиальное равенство.
τη \ 2
Еще, используя этот же метод, вычислим ]£дС£ ) . Имеем
58
(l + z)m (1 + ζΓ =%ηζ\
η
гдесп =]£с£ -Cm~k·
Однако(1 + 2)т -(l + z)m = (l + z)2m =^Сп2тгп.
Снова приравнивание коэффициентов при zm дает
т т
cm=X^cr*=]L(c*)2=c2V
Значит,
Z(ci)i=c"»·
Иногда удается использовать свойства исходной
последовательности для получения уравнения для производящей функции. Если
удастся решить полученное уравнение, то из разложения решения в
степенной ряд мы сможем получить формулу членов исходной
последовательности. Продемонстрируем этот прием на следующем
примере. Рассмотрим последовательность fn (η >0), определяемую
следующим образом: /0 = fx - 1 и fn =fnl+ fn2 при η >2; она называется
последовательностью Фибоначчи. Найдем формулу для fn .
Производящая функция этой последовательности есть F(z) — ^fn ·ζη. Выпол-
п=0
няя алгебраические преобразования, получаем
*■(«) = /„ +£«+£/,,«" =/o+/12+X(/n_1+/n_2)2" =
п=2 п=2
T.e.F(z) = f0+flZ + ±fnzn+1+ifn*n+2·
п=1 п=0
Поскольку
п=1 п=1 п=1
= z-F(z)-f0 z = z(F(z)-f0), а £/„ ·2"+2 = г2 ·£/„ -г» = ζ2 F(z),
n=0 n=0
59
то из последнего равенства для F(z) получаем
F(z) = f0+f1z + z(F(z)-f0) + z2F(z)
или
F(z) = 1 + z + z(F(z)-l) + ζ2 ·F(z) = 1 + zF(z) + ζ2F(z),
откуда F(z) = (1 - ζ - ζ2)_1.
Эту функцию легко разложить в степенной ряд.
Действительно, найдя корни уравнения 1-z-z2 = О, получим 1-z-z2 = (1 -
-аг)(1-Ъг), гдеа = (l + V5)/2, 6 = (l-V5)/2.
Тогда функция F(2) представится в виде
с =
α
,D =
-b
1-аг 1-Ьг
α-Ь α-fr
Поскольку для малых положительных ζ (чтобы
выполнялось 0 < cz < 1) верно равенство (1 - cz)_1 = ^(cz)n, то получаем F(z) =
п-0
оо оо оо П-(4 L Л+1
= С(1-агУ1 +D(l-bz)1 = С^(аг)п +Ό^φζ)η = ]jT ζ\
n=0 n=0 n=0 Л—Ь
Значит, согласно свойству 1°, получаем
fn =
_ η+1 ι п+1
α — ρ
1
V5[
I 2 J
1-V5
, n>0.
Этот пример ярко демонстрирует связь дискретного и
непрерывного анализа.
В заключение отметим, что ЭПФ последовательности 1, 1, 1, ...
является экспонента
= expz=][^U
Пусть мы имеем ЭПФ для последовательности dn (η >0): У"<2П —.
Если умножим ее на 2, получим
60
dn(/z >0) по ζ дает ]TWn ^- = γάη
т. е. получили ЭПФ последовательности0, d0, 2dx, 3d2, ....
Почленное дифференцирование ЭПФ последовательности
^ * ^ ϊΛ+1 —, а это ЭПФ
п=0 П\ п=1 КП-1)1 ~0 П\
последовательности dn(n>l).
В заключение найдем формулу для η-го члена
последовательности Ьп(п>0), определяемой следующим образом: b0=b1=l,
Ъп = ηφη_λ + (п- 1)Ъп_2) при η > 2.
ЭПФ этой последовательности — Be(z) = ^bnzn /п\. Выполнив
п=0
преобразования, аналогичные тем, которые мы проделали при
рассмотрении последовательности Фибоначчи, получим
Be(z) = l + z Be{z) + z2Be{z\
откуда
Be(z) = (l-z-z2)1.
Таким образом, функция Ве (ζ) тождественна функции F(z),
значит, их степенные ряды совпадают. Следовательно, fn = Ъп / п\,
откуда6„ =fn η!, т. е.
" V5
/ г— χ п+1
Имеем Ь2 = 4, Ь3 = 18, Ъ. =120, Ь5 =960.
2.12. НЕОРИЕНТИРОВАННЫЕ ГРАФЫ
Изложим основные понятия этого раздела теории графов.
Через [А]* обозначим множество всех /^-элементных
подмножеств множества Л, k >2.
Графом называется параG = (V, Е)множеств Vи£,
удовлетворяющая условиям 7^0и £с[У]2. Таким образом, элементами
множества Ε являются двухэлементные подмножества множе-
61
ства V; такие графы называются неориентированными или
неорграфами.
Элементы множества V будем называть вершинами графа G,
элементы множества Ε — его ребрами.
Обычно графы изображают, рисуя каждую вершину как точку
на плоскости (или в пространстве), и соединяют две точки линией,
если соответствующие им вершины соединены ребром. При
изображении графа важна только информация о том, какие вершины
с какими соединены (рис. 2.7), но линии соединений не должны
образовывать новых вершин; такие изображения графов называются
их геометрической реализацией.
Рис. 2.7. Граф с V={1, 2, ..., 6}
и с множеством ребер
О графе с множеством вершин V мы будем говорить как о графе
на V. Множество вершин графа G будем обозначать через V(G)> a
множество ребер — через E(G). Граф G называется (п, /п)-графом,
если| V(G)\ = η и | E(G)\ = т.
Число вершин графа G будем называть его порядком, обозначая
\G\; число ребер обозначаем через j|G|j.
Графы могут быть конечные и бесконечные в зависимости от их
порядка.
Теорема 2.3 (о геометрической реализации графа). Каждый
конечный граф может быть реализован в трехмерном евклидовом
пространстве.
Доказательство основывается на том, что в трехмерном
евклидовом пространстве через одну прямую можно провести связку (из
любого числа) плоскостей. На этой прямой размещаются вершины
графа, а ребра проводятся в разных плоскостях, и поэтому новых
вершин не возникает.
62
Замечание 2.2. На плоскости не каждый конечный граф мо-
жет быть реализован, что подразделяет конечные графы на
плоские и неплоские.
В дальнейшем мы рассматриваем конечные графы, если не
оговорено противное.
Вершина υ инцидентна ребру е, если υ ε е. Две вершины,
инцидентные одному ребру, называются его концевыми вершинами.
Ребро {х, у) будем для простоты записывать ху. Вершина, не
инцидентная ни одному ребру, называется изолированной.
Две вершины х, у графа G называются соседними, если ху е E(G).
Два ребра е, f(e * /) называются смежными, если они имеют общую
вершину. Если все вершины графа G попарно соседние, то G
называется полным. Полный граф на η вершинах обозначается Кп.
Конечный граф G = (V, E) (наряду с заданием в виде пары)
еще можно задать с матрицей инциденций А = (atj), где 1 <i <\ V\ и
1 <; <| Е\, т. е. ее строки нумеруются вершинами графа, а ее
столбцы — его ребрами. Элемент ai} = 1, если i-я вершина инцидентна
;-му ребру; в противном случае ai} = 0.
Множество попарно не соседних вершин называется
независимым.
Подчеркнем связь между неорграфами и покрытием
множества (см. подразд. 2.6).
Неорграфом пересечений, соответствующим системе множеств
F ={Аг, А2, ..., Ат } (каждое At — непустое), называется такой
неорграф G = (F, Е), в котором вершины А. и А.} соседние тогда и
только тогда, когда At Π Α} ^ 0.
Теорема 2.4 (о неорграфах пересечений). Каждый конечный
неорграф является неорграфом пересечений для соответствующего
семейства множеств.
Доказательство следует из построения семейства множеств,
мощность которого равна числу вершин исходного графа. Для i-й
вершины графа множество At состоит из этой вершины и всех
ребер, ей инцидентных.
η-Мерным кубом (п > 1) называется неорграф, множество
вершин которого совпадает с множеством{0,1}лив котором соседними
являются любые две вершины, различающиеся ровно в одной
компоненте.
63
Два графа G = (V, Ε) и G' = (V, E') называются изоморфными
(обозначение G ~ G'), если существует биекция φ: V —» V такая, что
хуе Ε <=> φ(χ)φ(ι/) g Ε' для любых х, у из V.
Содержательно изоморфизм двух графов означает, что эти
графы могут быть представлены одной и той же фигурой.
Ясно, что отношение изоморфизма есть бинарное отношение
эквивалентности. В дальнейшем мы не будем делать различия
между изоморфными графами.
Через N(h) обозначим максимальное число попарно
неизоморфных неорграфов без изолированных вершин с h ребрами, h > 1.
Теорема 2.5 (о верхней оценке неизоморфных неорграфов)
N(h) < a (bh)п, где а = 1 / 4е', Ь = 2е (е = 2,71).
Доказательство идейно просто. Сначала оценивается сверху
число вершин таких графов; их не более 2Л, так как нет
изолированных вершин. Тогда число г типов ребер не более C\h - h(2h-l).
После этого заключаем, что N(h) <C* , а преобразование последнего
неравенства дает требуемую оценку.
Гомеоморфизм. Если 7'с7и£'с£, то графО'=(^',
^называется подграфом графа G = (V9 E).
Дополнением G графа G = (V, Е) назовем граф на множестве V с
множеством ребер[V]2 \2£(см. рис. 2.8).
Линейным графом L(G) графа G = (V, Е) назовем граф на Е, в
котором х, ye E соседние как вершины тогда и только тогда, когда
они смежны как ребра в G.
Рис. 2.8. Граф, изоморфный своему дополнению
Подразделением ребра ху неорграфа G называется замена его
следующими двумя: χζ и zy, где ζ — новая вершина, т. е. не
принадлежащая V(G).
Граф G называется подразделением графа Н, если он может
быть получен из Η при помощи конечного числа раз
подразделений ребер.
64
Два неорграфа называются гомеоморфными, если существуют
такие их подразделения, которые изоморфны.
Например, графы, приведенные ниже (рис. 2.9), не являются
изоморфными, но они гомеоморфны.
,3 ^2
Рис. 2.9
Степень вершины. Пусть G = (V, Е). Множество соседей
вершины υ в G обозначим через E(v).
Степенью dG (υ) = d(v) вершины υ назовем число | Ε(υ)\, τ. е.
число ребер, инцидентных вершине υ.
Вершина степени 0 является изолированной.
Число b(G):=mm{d(v)\ veV} называется минимальной
степенью графа G, а число A(G):=max{<2(i>)| v gV} — его максимальной
степенью.
Если все вершины графа G имеют одинаковую степень k, то G
называется k-регулярным; 3-регулярный граф называется
кубическим.
Число d(G) - -—- ^d(v) называется средней степенью G.
I V] ι*= V
Очевидно, что
5(G)<d(G)<A(G).
Величины | Е\ и d(G) связаны следующим соотношением:
Λ veV *
Теорема 2.6 (о вершинах нечетной степени). Число вершин
нечетной степени в графе всегда четно.
Доказательство. Граф на Vимеет всегда - ^d(v) ребер, следова-
тельно, > d{v) — четное число.
veV
65
Пути и циклы. Путем из вершины х0 в вершину хк в графе
G = (V, Е) называется набор (х0х19 х1х2,..., хк_1хк)9гц,е xt GV(0<i<k)
nXjXj+1 eE(0 <j <k-l), причем xi Фх} при* Ф].
Число ребер пути называется его длиной. Путь длины k
обозначим через Ρk, т. е. Pk = (х0х19 х1х2,...9 хк_1хк)(рис. 2.10).
Рис. 2.10. Путь Р=Р7 в G
В дальнейшем мы будем задавать путь из вершины х0 в вершину
хк последовательностью вершин, т. е. Р= х0х1...хк.
ЕсллР= х0х1...хк_1лх1 Φ χ.j при i ^;, a& >3, тогда путь (Ρ, хк_гх0)
называется циклом. Цикл также можно задавать
последовательностью вершин. Так, указанный выше цикл может быть записан
xQx1.. .χΗ_λχ0. Длиной цикла называется число его ребер.
Теорема 2.7 (о длинах пути я-цикла). Любой граф G
содержит путь длины 6(G) и цикл длины не меньше 6(G) +1.
Доказательство. Пусть xQx1...xk — путь максимальной длины
в G. Тогда все соседи вершины хк лежат на этом пути (рис. 2.11).
х0 xi хк
Рис. 2.11
Следовательно, k >d(xk)> 5(G).
Если i<k — минимальный индекс, такой, что xtxh e E(G), то
хг..хкх. является циклом длины не менее 6(G) +1.
Расстоянием dG(x,y) в G между вершинами х, у называется
длина кратчайшего пути пзхвув графе G. Если пути из χ в у не
существует, то обычно полагают d(x,y) := со.
Наибольшее расстояние между двумя произвольными
вершинами в G называется диаметром графа G.
66
Вершина называется центральной, если ее максимальное
расстояние до любой другой вершины минимально. Это расстояние
называется радиусом G и обозначается rad(G). Следовательно, верны
неравенства
rad(G) <diam(G) <2rad(G).
Теорема 2.8 (о верхней оценке числа вершин). Граф G
радиуса не более k и максимальной степени d имеет не более 1 -г k dk
вершин.
Доказательство. Пусть ζ — центральная вершина в G и пусть
J)i обозначает множество вершин в G расстояния ϊ от 2. Тогда
k
V(G) = (Jd. и |D0 I = 1. Так как A(G) <d, мы имеем \Dt \ <d JJD.^ | для
i = 1, 2, ..., k. Следовательно, по индукции\Di \<dl. Суммируя
указанные неравенства, получаем
|F(G)|<1 + £<T <l + kdk.
Маршрутом (длины k) в графе G назовем непустую
чередующуюся последовательносты;0е01;1в1...вЛ_11;Л вершин и ребер в G,
такую, что е. ={vi9 vi+1} для Vi <k. Если v0 = vk, то маршрут называют
замкнутым. Если все вершины в маршруте различны, то мы
получаем путь.
Связность. Граф G называется связным, если любые две его
вершины связаны путем в G.
Теорема 2.9 (о путях связного графа). Вершины связного
графа G всегда могут быть занумерованы υλ ,...,υη, что [v1,...,vi]
есть путь для любого ί.
Доказательство. Выберем произвольную вершину в качестве νγ
и далее предположим, что выбраны v1,...,vi для i<|G|. Выберем
произвольную veG-Gr Из связности G следует, что существует
путь Ρ между иииг. Выбираем в качестве υ i+1 последнюю вершину из
Ρ в G-Gb. Очевидно, vi+1 имеет соседа в Gi. Связность каждого G.
следует из индукции по i.
Деревья. Ациклический граф, т. е. не содержащий циклов,
называется лесом. Связный лес называется деревом (рис. 2.12).
Вершины степени 1 в дереве называются листьями. Каждое не триви-
67
альное дерево имеет по крайней мере два листа (например, можно
взять концы самого длинного пути).
Рис. 2.12
Теорема 2.10 (о деревьях). Для графа Gen вершинами и т
ребрами следующие предложения эквивалентны:
1) G — дерево;
2) G — связный граф и т = η -1;
3) G — ациклический граф и т = η -1;
4) любые две несовпадающие вершины графа G соединяет
единственная простая цепь;
5) G — ациклический граф, но если какую-либо пару его
несоседних вершин соединить ребром, то полученный граф будет
содержать ровно один цикл.
Доказательство теоремы довольно обширное и состоит в
следующем: показывается, что из утверждения Ϊ) следует
утверждение i + 1), (1 <i <4) и что из утверждения 5) следует утверждение 1)
[см. 15, с. 53-55].
Следствие 2.2. Связный граф на η вершинах является
деревом тогда и только тогда, когда он содержит η -1 ребер.
Дерево, в котором выделена одна вершина, называемая
корнем, является деревом с корнем.
Другим определением дерева с корнем является следующее
индуктивное определение.
1.· и 1 есть (исходные) деревья с корнями.
2. Если А и Б — деревья с корнями α и & не имеют общих
элементов, то объединение их корней в общий корень дает новое дерево с
корнем.
3. Если А есть дерево с корнем а, то объявление а не корнем и
добавление нового ребра аЪ с корнем Ъ дает новое дерево с корнем Ъ.
68
Определение закончено, т. е. других способов построения
деревьев с корнем нет.
Два корневых дерева называются изоморфными, если их графы
изоморфны, причем корень отображается в корень.
Через D(h) обозначим максимальное число попарно
неизоморфных деревьев с корнями с h ребрами, h >0; заметим, что!)(1) = 1.
Лемма 2.2 (о неизоморфных корневых деревьях). D(h) <4", h >0.
Доказательство можно получить, используя индуктивное
определение дерева с корнем следующим образом. Дереву 1
сопоставляется двоичное слово 01. Пусть деревьям А и В сопоставлены
соответственно двоичные слова end. Тогда дереву, возникающему в п. 2
индуктивного определения, сопоставляется слово cd, а. дереву из п. 3 —
слово 0с1.
Замечание 2.2. Известно, чтоD(h)~ fgh / hs/2, где f—
некоторая константа, a g = 2,9; легко доказать, что при h > 1 верно
неравенство D(h +1) > 2D(h), а из него следует D(h +1) > 2h.
В приложениях рассматриваются различные деревья с
занумерованными вершинами.
Два дерева с η вершинами, занумерованными натуральными
числами, называются различными, если найдутся такие числа
U J (i * Λ 1 ^ i> J ^ ίι)> что вершины i, j соседние в одном дереве, но не
в другом.
Теорема 2.11 (Кэли). Число различных деревьев с η
занумерованными вершинами (п >2) равно η η~2.
Доказательство вытекает из следующего отображения
занумерованного дерева с η вершинами в вектор длины η -2.
Пусть среди концевых вершин данного дерева вершина ix имеет
наименьший номер. Тогда найдется единственная вершина jx,
соседняя с ix. Удаляем из данного дерева ix и ребро iljl. В оставшемся
дереве пусть i2 снова вершина, имеющая наименьший номер среди
концевых вершин, a i2j2 — инцидентное ей ребро; удаляем его, и
так далее до тех пор, пока после удаления ребра in_2Jn-2 не
останется одно ребро. Набор (д, ;2, ..., jn_2) однозначно определяется по
данному дереву, и любой такой набор, где l<jk <n (1 <k <n -2),
соответствует некоторому занумерованному дереву. Для его
восстановления выбирается наименьшее число ix, отсутствующее в наборе
Οι» Λ» ···» Λι-г)» соединяем ix ид ребром и удаляем jx из
рассматриваемого набора, поступая с «укороченным» набором аналогично.
69
Двудольные графы. Пусть г > 2 — целое число. Граф G = (F, Е)
называется г-долъным, если V можно разбить на г классов так, что
каждое ребро имеет свои концевые вершины в разных классах (рис. 2.13).
2-Дольный граф будем называть двудольным.
Рис. 2.13
г-Дольный граф, в котором любые две вершины разных классов
соседние, называется полным. Полный двудольный граф с долями
мощности пит соответственно обозначается через Кпт.
Теорема 2.12 (Понтрягина — Куратовского). Для того чтобы
неорграф был плоским, необходимо и достаточно, чтобы любой его
подграф не был гомеоморфен ни одному из графов К3 3 и Къ.
С графами связано много реальных задач. Одна из них — это
раскраска географических карт, которая сводится к следующей
раскраске графов. Требуется раскрасить соседние вершины
данного графа в разные цвета, используя наименьшее число красок.
Например, чтобы раскрасить полный граф, на η вершинах требуется η
красок. Для плоских графов формулируется такая проблема.
Проблема четырех красок. Доказать, что соседние вершины
каждого плоского графа можно раскрасить в разные цвета с
помощью четырех красок.
Эта проблема была решена положительно в 1976 г.
американскими математиками Т. Аппелем и М. Хакеном с помощью ЭВМ.
Идея этого решения описана в [14], но некоторые математики не
считают такое решение корректным [16, с. 67].
Теорема 2.13 (Кёнига). Граф является двудольным тогда и
только тогда, когда он не содержит циклов нечетной длины.
Доказательство необходимости очевидно, а доказательство
достаточности довольно сложно [15].
Эйлеров цикл. Замкнутый маршрут в графе называется
эйлеровым циклом, если он проходит через каждое ребро графа
ровно 1 раз. Граф называется эйлеровым, если он содержит
эйлеров цикл.
70
Первоначальным толчком в исследовании эйлеровых графов
дала задача о кенигсбергских мостах, впервые рассмотренная
Эйлером в 1736 г. (рис. 2.14).
Рис. 2.14. Граф, формализующий
задачу о кенигсбергских мостах:
можно ли из мостов старой части
города Кенигсберга составить
эйлеров цикл?
Теорема 2.14 (Эйлера, 1736). Связный граф является
эйлеровым тогда и только тогда, когда каждая вершина имеет четную
степень.
Доказательство. Необходимость очевидна.
Достаточность. Пусть G — связный граф с четными
степенями вершин и пусть W = v0e0...ei_1vi — самый длинный маршрут, в
котором ребро встречается не более 1 раза. Следовательно, он
содержит все ребра, инцидентные вершине ι>.. По предположению,
степень каждой вершины четная. Следовательно, υ. =ν0> т. е.
маршрут замкнут.
Предположим, указанный маршрут не является эйлеровым
туром. Тогда в G существует ребро, не принадлежащее W, но
инцидентное некоторой вершине из W, скажем ve-uvk. Тогда мы без
труда находим более длинный маршрут:
uevkek...ei_1vie0...ek_1vk.
Получили противоречие.
Еще отметим, что для каждого связного плоского конечного
графа G верна формула Эйлера
n-m + f =2,
где η = | V(G)\, т = \ E(G)\ и / — число его граней (гранью плоского
графа называется максимальное по включению множество точек
плоскости, каждая пара которых может быть соединена
непрерывной кривой, не пересекающей ребра графа).
Заметим, что согласно формуле Эйлера для любого связного
плоского (п, тп)-графа величина / = т - η + 2 постоянна (является
ивариантом).
Ориентированным графом или орграфом называется napa(F, R),
где VV 0, ai?cF2; элементы ^называются вершинами, а элементы
R — дугами или ориентированными ребрами.
71
При геометрическом изображении орграфа в пространстве (или
на плоскости) дуга (l>, w) представляется отрезком со стрелкой,
направленной от υ к w. Дуга (и, υ) называется петлей при вершине υ.
Конечный орграф G = (V> R) также можно задать матрицей ин-
циденций, но ее элементами являются 0, 1, -\\ац = -1
(соответственно 1), если i-я вершина есть начало (соответственно конец)
/-й дуги, а значение ах] - 0 имеет прежний смысл. Еще этот орграф
задается матрицей соседства вершин £ = (biy), где 1 <i, ; <| V\.
Элемент Ъ1} - 1, если есть дуга, направленная от i к ;'; в противном
случае Ъч - 0. Неорграф также можно задать такой матрицей, если
полагать, что {υу w) представляет две дуги — (l>, w) и (ιυ, υ).
Заметим, что каждому орграфу можно сопоставить
соответствующее бинарное отношение и обратно: каждому бинарному
отношению сопоставляется соответствующий орграф.
Общее определение орграфа (а также и неорграфа) может быть
следующее. Орграфом называется пара (V, R), где V — непустое
множество, a R есть τη-мультимножество, порожденное
множеством V2, т >0.
3. ФОРМАЛЬНЫЕ ГРАММАТИКИ И ЯЗЫКИ
В литературе этот раздел информатики освещен по-разному
(имеются монографии [6, 7] и другие, а также главы в
монографиях, например, в [1], посвященные формальным грамматикам).
Мы опишем иерархию Хомского и докажем ряд утверждений о
рассматриваемых языках. В частности, будет изложено короткое
(по сравнению с имеющимся в [7]) авторское доказательство
неразрешимости проблемы грамматического разбора для
грамматик типа 0. Также будет продемонстрирована связь между КС-
языками и языками программирования высокого уровня. В
заключение опишем класс так называемых аксиоматических
грамматик, сочетающий в себе элементы исчислений.
3.1. ОСНОВНЫЕ ПОНЯТИЯ
В дальнейшем конечные множества символов называются
алфавитами, а их элементы — буквами. Конечная
последовательность букв (из данного алфавита) называется словом (в данном
алфавите). Пустое слово обозначается через Λ (читается «ламбда»).
Если А — алфавит, то множество всех слов в алфавите А
обозначается через А * (включая пустое слово), а А+ есть А * без Λ.
Определение 3.1. Порождающей грамматикой, или П-грам-
матикойу или грамматикой типа 0 называется упорядоченная
четверка Г = (V, W, J, R), где VnW — непересекающиеся непустые
конечные алфавиты, причем V — алфавит основных символов, &W —
алфавит вспомогательных символов, J — начальный символ и J e W>
slR — конечное множество слов вида φ —>ψ, называемых правилами,
где φ и ψ — различные слова в алфавите V\J W и символ —> не
принадлежит множеству W U V.
Пример 3.1.Г1 = <{0, 1}, {J}, J, {J -> 0J1, J-> 01}) есть П-грам-
матика.
73
Согласимся, что ап есть αα.,.α (η раз, η >1), а А —>φ1|φ21 ...| φη
означает А —> φχ, А —> φ2, ..., Α —» φη .
С учетом этих соглашений грамматика Г\ запишется
следующим образом: 1\ = ({0, 1}, {J}, J, {J-> 0l| 0J1}).
Грамматика определяет язык рекурсивно. Рекурсивность
проявляется в задании особого рода слов, называемых выводимыми
словами грамматики.
Определение 3.2. Индуктивное определение выводимых
слов грамматики Г = (V, W, J, R).
1. J — выводимое слово этой грамматики.
2. Если αβγ — выводимое слово грамматики Г и правило β —» δ
из Ry то αδγ есть также выводимое слово; будем говорить, что
слово αδγ непосредственно выводимо из слова αβγ в грамматике Г и
писать αβγ l· αδγ. Определение закончено, т. е. других правил
построения выводимых слов нет.
Пример 3.2. Слова J, 0J1, 00J11, 0011выводимы в Г\, причем
последнее слово есть слово из основных символов.
Определение 3.3. Множество всевозможных слов из
основных символов, выводимых в грамматике Г, называется языком,
порождаемым грамматикой Г, и обозначается через ДГ).
Пример 3.3. ЦГ,) = {0п V \ η > 1}.
Определение 3.4. Последовательность слов w19 w2, ..., wn
называется выводом слова wn из слова wx в грамматике Г
(символически wx \=wn), если для каждогоi(l<i <η) выполнено wt bu>.+1.
Теперь определение языка, порождаемого грамматикой Г =
= (V, W, J, R)y можно записать следующим образом:
UT) = {w\weV* aJ\=w}.
Пример 3.4. Язык ДГ2), порождаемый грамматикой Г2 =
= ({0, 1, ..., 9}, {J}, {J^>0J\ 1J|...9J|0|1|2|...|9|}>, состоит из всех
десятичных записей натуральных чисел, включая 00...0, 0008
и др., т. е. возможны записи с незначащими нулями слева.
Определение 3.5. П-грамматика Г = (V> W, Jy R), каждое
правило которой имеет вид αΑβ —»<χι#β, где α, β, w e (V(JW)*, w Φ Λ
и Α ε W, называется грамматикой непосредственно
составляющих, или НС-грамматикой, или грамматикой типа 1; в правиле
αΑβ —> αι^β слова α и β называются контекстами.
74
Пример 3.5. Грамматика Г3 = ({а,Ъ,с), {J,A,B,C}, J, {J —>aJAC|
abC, CA ->ΒΑ, ΒΑ -^ВС, ВС -^ АС,ЪА -^>ЪЪ,С^>с}) есть
НС-грамматика. Можно доказать, что ДГ3) = {апЬпсп \п >1}.
Определение 3.6. П-грамматика T = (V, W, J, R), каждое
правило которой имеет вид А —» w, где AgWhwg (V\J W)+,
называется контекстно-свободной, или КС-грамматикой, или
грамматикой типа 2.
Подчеркнем, что в каждом правиле A -^w из КС-грамматики
ιν Φ Λ. В приведенных выше примерах грамматики Гх и Г2 были
КС-грамматиками.
Пример 3.6. а) Грамматика Г4 = ({0,1}, {J), J, {J -> JJ | 0J1 \ 1J0 \
110101}) есть КС-грамматика. Язык ДГ4) состоит из всех слов с
равным числом нулей и единиц.
б) Грамматика Г5 = ({if, then, else, for, do, a, b, c}, {J, A}, J, {J —>a\
| if b then A \ if b then A else J, A —»a, A —» for с do J}) также есть КС-
грамматика.
Определение 3.7. П-грамматика Г = (V, W, J, R), каждое
правило которой вида А —»аВ или А^>а, где А е W, BgW и α ε F,
называется автоматной, ляп А-грамматикой, или грамматикой
типа 3.
В примере 3.4 грамматика есть А-грамматика.
Определение 3.8. Языки, порождаемые П-, НС-, КС- и А-
грамматиками, называются соответственно 77-, НС-, КС- и А-языками.
Автоматные, КС-, НС- и П-грамматики образуют иерархию
порождающих грамматик Хомского.
3.2. ВАЖНЫЕ ПРИМЕРЫ ГРАММАТИК
Во всех следующих примерах основные символы (буквы из
основного алфавита) будут обозначаться строчными латинскими
буквами или арабскими цифрами; вспомогательные символы (буквы
из вспомогательного алфавита — прописными латинскими
буквами; все эти буквы могут быть с индексами). Начальный символ
всегда будем обозначать буквой J. Это позволит нам ограничиться
выписыванием только множества правил приводимых грамматик.
Пример 3.7. а) Каждый непустой конечный язык{ах, а2,..., ап),
где каждая буква at не является пустым символом, порождается
А-грамматикой с правилами J —» ах \ а21.. .| ап.
75
б) Каждый непустой конечный язык {ιυλ, ιν2, ..., ινη}, где wt =
-ailai2...ai (l<i<n)y порождается Α-грамматикой с множеством
правил {J-^'k^, An -->ai2Ai2, Ai2 ^>ai3Ai3,..., Aikii ->a№| \l<i <n).
в) Пустой язык 0 порождается Α-грамматикой с правилом
J -^aJ.
Следствие 3.1. Каждый конечный язык, не содержащий
пустого слова Л, является А-языком.
Пример 3.8. Для каждого алфавита V язык V+ -V* \ {Л}
порождается Α-грамматикой с множеством правил {J -^>a\aJ : ае V), в
котором ровно 2| V\ правил.
Пример 3.9. Язык {апЪт |п>1, т>1} порождается А-грамма-
тикой с правилами J ^>aJ\aB, В^>ЪВ\Ъ.
Пример 3.10. Языки
Lx ={anbnam Iлг, m>l}nL2 ={ambnan\n, т>1)
порождаются соответственно КС-грамматиками с множествами
правил:
{J —> J а | Аа, А —> аАЪ \ аЪ) и {J —»a J \ аА> А —» ЪАа \ Ъа).
Если χ и у — слова, то их умножением (или конкатенацией)
называется слово хуу получаемое дописыванием к слову χ справа
слова у.
Умножением языков Lx и L2 (взятых именно в этом порядке)
называется язык LXL2 ={xy\xeL1 ai/eL2}.
Имеет место следующая почти очевидная лемма.
Лемма 3.1 (об объединении и умножении КС-языков).
Объединение и умножение КС-языков есть КС-язык.
Пример 3.11. Язык L0 ={anbnan \n >1} порождается П-грамма-
тикой с множеством правил {J -^>aJBa\aba, ЪВ —»&&, аВ -*Ва).
(Почему она не НС-грамматика?)
Действительно, для любого вывода слова в основном алфавите
только 1 раз должно применяться правило J -^aba, после чего
слово будет иметь вид anbwy где w содержит η вхождений а и (τι - 1)
вхождение В. Например:
J aJBa aaJBaBa aaabaBaBa.
Вывод закончится лишь тогда, когда все В превратятся в Ъу но для
этого все В должны «собраться вместе » в середине слова. Можно
доказать, что этот язык не является КС-языком.
76
Следствие 3.2. Пересечение КС-языков не всегда есть
КС-язык.
В самом деле, L0 = Lx f]L2.
Пример 3.12. Язык {an(ab)m Ьп \п >0, т>1} порождается КС-
грамматикой с правилами J —» aJb \ аЛЪ \А,А—> АаЪ \ аЪ.
Пример 3.13. Язык {12п |п>1} порождается Α-грамматикой с
правилами J —»LA, А —»1В\ 1, В —» 1А.
Пример 3.14. Для каждого словам = ai a. ...ai в алфавите V =
= {04, a2...ak} его обращением назовем словом* =at ...a. ai
^читаем, что Л = Л.
Язык {хх* |xe V*} порождается КС-грамматикой с правилами
{J -*aJa\aa\aG V).
Пример 3.15. Множество всех арифметических выражений,
построенных из символов а, +, *, ( и ), порождается
КС-грамматикой с правилами
J -+J + T\T,
T^>T*F\F,
F->(J)|a
(здесьV = {α, + ,*,(, )}).
3.3. Α-ГРАММАТИКИ И АВТОМАТЫ
Сначала установим связь между Α-грамматиками и
недетерминированными конечными автоматами (НКА), а затем
воспользуемся их эквивалентностью детерминированным конечным
автоматам (ДКА) (см. подразд. 4.15). Поскольку автомат может
представлять пустое слово, то разрешим Α-грамматикам иметь правило
J —> Л (J — начальный символ).
Теорема 3.1 (о НКА и Α-грамматиках). Пусть Ε —
некоторый Α-язык. Тогда найдется такой НКА А, что ДА) = Е.
Доказательство. Пусть Ε — некоторый Α-язык и грамматика
Г = (V9 W, J, R) его порождает. Построим НКА А = (У, Q, δ, q19 F),
где Q=W\J{J1}, J^VDW.
Функцию переходов определяем следующим образом: δ(£, α)
содержит все состояния D, для которых в грамматике Г есть
правило В —» aD, а еще и состояние Jx, если в Г есть правило В —» α (здесь В
и D из W, α ε V). Далее, δ( J1, α) = 0 для каждого а из V. За начальное
77
состояние qx берется J. Наконец, множество заключительных
состояний F полагается равным {Jx}, если нет правила J —» Л; если
такое правило есть, то F = {J, Jx}.
Докажем, что Ε = ДА).
а) Пусть w = ai ai ...ai . Тогда в Г имеем вывод J\-*aiiA1 ь->
ь->а. а, А9 и...иа( а. ...а, А. . ь->а,. а. ...а. а, , где А1Э А2, ...,
ll l2 2 *1 »2 lk~\ ft_1 Ί l2 lk-l 1к ' " i.» 4» >
Afe — вспомогательные символы. Следовательно, грамматика Г
имеет правила
J ь-> αέ] Αχ, Αλ ь-> ah A2, ..., ΑΛ_2 н> aihi Ah_x, Ам н> α,4.
Отсюда согласно определению НКА А имеем Ах ε δ(J, α. ),
Α2 εδ^, α/2), ..., Α,_χ εδ(ΑΛ_2, α,^), Jx ^(Α^, aifc), откуда^ е
ε δ( J, w) и, значит, ιυ ε ДА). Если Ае Ε,ύοβΓ есть правило t/^Ли
J входит в множество заключительных состояний.
б) Обратно, пусть w = ai af ...α. ε ДА). Тогда имеются
внутренние состояния J, Ах, А2, ..., ΑΛ_Χ, Jx такие, что слово w переводит
J в Jl, т. е.
Ах εδ(</, ah), А2 Εδ(Αχ, α^), ..., Jx εδίΑ^, αίλ).
Отсюда следует, что грамматика Г имеет правила
Jh^a^A,, Ax h->ai2A2, ..., Ak_, y->aih
и, значит, ДА) = i£.
Теорема доказана.
Пример 3.16. Пусть грамматика
Г = ({ау Ь}9 {J, А, В}, J, {J\-*aJ\bJ\aA, Аь->6В, By-* a}).
Тогда НКА А - ({а, &}, {J, А, Б, Jx}, δ, J, {Jx }>, где 8(J, a) = {J, A},
6(J,&) = {c7},6(A,a) = 0,5(A>&) = {B}>5(B,a) = {J1}>5(B,b) = 0>5(J1>a) =
= Ы^х, &) = 0, ДГ) = ДА) = {w ε {α, &}*I и; = wxaba).
Следствие 3.3. Для каждого автоматного языка существует
ДКА, порождающий этот язык.
Это непосредственное следствие доказанной теоремы и
эквивалентности НКА и ДКА (см. подразд. 4.15.2).
Если w есть слово, то число его букв обозначаем через \w\, когда
w ^ Л; длина пустого слово есть 0.
Лемма 3.2 (о разрастании А-языков). Пусть L есть Α-язык.
Тогда существует такая натуральная константа /?, что если w e L и
I w\ >ρ, то слово w можно представить в виде xyz, т. е. w = xyz, где
0 <| у\ < ρ (значит, уф Λ) и ху1 2 ε L для всех i >1.
78
Доказательство этой леммы несложно (константа/? выбирается
так, чтобы она была больше числа вспомогательных символов в
грамматике, а у есть то слово, которое появляется в выводах между
двумя последовательными появлениями одного и того же
вспомогательного символа). Эта лемма может быть использована при
доказательствах того, что некоторый язык не является автоматным.
3.4. НЕКОТОРЫЕ СВОЙСТВА ГРАММАТИК
Докажем несколько важных свойств. Сначала согласимся, что
если φ —» ψ есть правило, то φ будем называть его левой, а ψ—
правой частью.
Определение 3.9. Вывод, в котором никакое слово не
встречается более 1 раза, называется бесповторным.
Определение 3.10. Два вывода в одной и той же грамматике
называются равносильными, если их первые и последние слова
соответственно совпадают.
Лемма 3.3 (о бесповторных выводах). Для любого вывода в
произвольной грамматике существует равносильный ему
бесповторный вывод.
Доказательство очевидно.
Определение 3.11. Две грамматики Г\ и Г2 называются
эквивалентными, если Д Г\) = ЦГ2).
Лемма 3.4 (о грамматиках, левые части правил которых не
содержат вхождений основных символов). Для каждой грамматики
Гх может быть построена эквивалентная ей грамматика Г2, левые
части правил которой не содержат вхождений основных символов.
Доказательство. Пусть Гх = (V, W, J, R) — произвольная
грамматика. Каждой букве а из V сопоставим букву А, где А £ V\JW,
причем если а1Фа2, то и АХФА2. Положим V = {A\aeV}, R =
= {А —> α | α е V} и пусть еще R получается из R заменой каждого а на
А. Тогда грамматика Г2 = (V9 V\JW, J, R \JR) есть искомая. Лемма
доказана.
В определении НС-грамматики требование непустоты слова,
вставляемого вместо вспомогательного символа в правилах,
является весьма существенным. Снятие этого ограничения приводит к
понятию обобщенной НС-грамматики (ОНС-грамматики). Приме-
79
ром ОНС-грамматики является следующая: I-*аСЬ, аС -*а2СЬ,
С —» λ, порождающая язык {апЪп\п >1}.
Теорема 3.2 (о П- и ОНС-грамматиках). По произвольной
П-грамматике может быть построена ей эквивалентная ОНС-грам-
матика.
Доказательство. Возьмем некоторую П-грамматику Г. Будем
считать, что Г есть грамматика, левые части правил которой не
содержат вхождений основных символов. Рассмотрим некоторое
правило Yt —» zt грамматики Г. Пусть Г' — строящаяся ОНС-грам-
матика..
1. Если Y. = Л, то в правила грамматики Г' включаем такую
серию правил А —> Azt, А -» zt А для каждого вспомогательного
символа А грамматики Г.
2. Если | Y. | = 1, то такое правило будет и правилом
грамматики Г'.
3. Если Yt - Ах А2... Ar (r> l), то в таком случае в правила
грамматики Г' включаем правила
Ах А2... Аг —> Вх А2... Аг,
В[А2...АГ^В[В2А,...АГ,...,
Β[Β2...ΒΐλΑΓ ->B{B[...Blr, В[В[...В1 ^B2...BU
Βι2...ΒιΓ^Βι3...ΒιΓ,...,Βΐ->Ζι,
где В[, Βι2, ..., В1Г есть новые вспомогательные символы
грамматики Г'. Теорема доказана.
Определение 3.12. Если каждое правило φ —>ψ
грамматики Г такое, что 1 < | φ | < | ψ|, то такая Г называется неукорачивающей.
Теорема 3.3 (о НС-языках). Язык L является НС-языком
тогда и только тогда, когда он может быть порожден
неукорачивающей грамматикой.
Доказательство. Необходимость очевидна, ибо правила НС-
грамматики удовлетворяют определению 3.12. В доказательстве
достаточности каждое правило Аг А2... Ап -> ΒλΒ2... Bq, где η <q и в
его левой части нет основных символов, заменяется на η + g правил
АгА2...Ап ->ДА2...АП, ΏγΑ2...Αη ->DXD2AZ ...An, ...,
D^.-.D^A» ->D1D2...DnDn+1...Dq,
D1D2...Dq -+BxD%...Dq9 B1D2...Dq -+BxB2Db...Dq9
B1B2D3...Dq -^I^JV^, ..., B1B2...Bq_1Dq ->В,В2 ...Bq.
80
Заметим, что вспомогательные символыDx, D2, ..., Dq для
каждого правила АгА2... Ап —*B1B2...Bq свои. Теорема доказана.
3.5. ИЕРАРХИЯ ЯЗЫКОВ
Согласно определению грамматик, каждая грамматика типа i,
где 1 <i <3, является и грамматикой типа i-\. Следовательно:
• А-языки — подмножество КС-языков;
• КС-языки — подмножество НС-языков;
• НС-языки — подмножество П-языков.
Мы докажем, что все эти включения собственные.
Теорема 3.4 (о включении А-языков). Множество всех А-
языков является собственным подмножеством множества всех
КС-языков.
Доказательство. Теорема будет доказана, если укажем язык,
который не порождается ни одной Α-грамматикой, но является
КС-языком.
Рассмотрим язык L = {апЬп \ η > 1}. Он порождается грамматикой
Г\ с правилами J -»ае/Ь|а&и, следовательно, является КС-языком.
Докажем, что язык L не порождается ни одной А-граммати-
кой. Допустим противное. Пусть некоторая Α-грамматика Г2
порождает язык L, т. е. ДГ2) = L, и Г2 = ({a, b), W, J, R), где W —
конечное множество и | W\ = г, а множество R состоит из правил вида
А —> аВ или А -» а, ае{а, &}. Каждый вывод в грамматике Г2 будет
вида «7, α1Αί, аха2А2, ага2агА3,..., где at e{a, &}, ΐ>1. Рассмотрим
выводаЛ&п прип >r: J, αΑ1χ, a2Ai%> ..., akAik, ..., anAin.
Так как | W\ = г <п, то найдутся такие числа I и т, что πιφίπ
Ai( =A. . Значит, продолжение указанного вывода даст
выводимое слово а1Ът, где ΙΦ т. Противоречие. Теорема доказана.
Теорема 3.5 (о включении КС-языков). Множество всех КС-
языков является собственным подмножеством множества всех НС-
языков.
Доказательство. По аналогии с доказательством предыдущей
теоремы укажем НС-язык, который не порождается ни одной КС-
грамматикой.
ЯзыкL0 ={anbnan \ η > 1}порождается П-грамматикой (см.
пример 3.11), которая является неукорачивающей. Следовательно, со-
81
гласно теореме о НС-языках, этот язык L0 является НС-языком.
Осталось доказать, что L0 не порождается ни одной КС-грамматикой.
Допустим, что некоторая КС-грамматика Г\ порождает L0.
Значит, из ее начального символа J будут выводимы все слова
апЬпап и только они (их бесконечно много). Можно считать, что
какой бы ни был другой вспомогательный символ, отличный от J,
этой грамматики, из него также выводимо бесконечно много слов
в алфавите {а, Ь}. В самом деле, если бы из некоторого
вспомогательного символа В можно было вывести только конечное
множество слов z19 z2, ..., zk, то, заменяя в правых частях правил
грамматики Г вхождения В на все возможные z19 z2, ..., zk, мы
получим другую КС-грамматику, эквивалентную исходной.
Пусть г есть максимальная длина правых частей правил
грамматики Г. Рассмотрим вывод словааг+1&г41аг+1. На последнем шаге
вывода было применено некоторое правило В —» α (| α | < г),
превратившее слово w1Bw2 в слово ar+1br+1ar+1. Так как В —
вспомогательный символ, то по предыдущему из него выводимо бесконечно
много слов в алфавите {а, Ь), и пусть В 1= β, где β * а. Тогда J 1= w$w2 и
юг^ю2 е L0. Но при β Φ α получим, что w^w2 ФапЪпап ни при каком
η (η > 1). Противоречие. Теорема доказана.
Доказательство того, что множество всех НС-языков есть
собственное подмножество множества всех П-языков, намного сложнее
и будет рассмотрено далее.
3.6. ГРАММАТИЧЕСКИЙ РАЗБОР
Задача грамматического разбора (или синтаксического
анализа) заключается в следующем: указать алгоритм, с помощью
которого для любого слова χ из основных символов грамматики Г
можно решить: χ е ДГ) или χ £ ЦТ).
Теорема 3.6 (о распознавании НС-языков). Существует
алгоритм, с помощью которого для любой НС-грамматики Г и любого
слова χ в основном алфавите этой грамматики за конечное число
действий можно решить: χ е ЦТ) или нет.
Доказательство. Каждая НС-грамматика является неукорачи-
вающей, так как для любого ее правила ο^4β -» αιοβ, где ιυ Φ Λ
выполнено неравенство
|αΑβ|<|αιι>β|. (3.1)
82
Пусть задано некоторое слово χ в основном алфавите
НС-грамматики Г и | х\ = /п. Тогда существует конечное число бесповторных
выводов в грамматике Г, в которых последние слова имеют длины,
не большие т0, где т0 > т, потому что основной алфавит
конечный и слов в нем данной длины также конечное число. Если среди
последних слов таких выводов нет слова х, то оно и ни в каких из
остальных выводов не появится из-за того, что имеет место
неравенство (3.1). Теорема доказана.
Следствие 3.4. Существует алгоритм для грамматического
разбора КС-языков.
Алгоритмы, решающие задачу грамматического разбора для
КС-грамматик по методу построения вывода, делятся на
алгоритмы типа «сверху вниз» и «снизу вверх».
Алгоритмы типа «сверху вниз» строят вывод от начального
символа к анализируемому слову х. Пусть уже построен вывод
J, w19 w2, ..., wi9
значит,
J\-*wx, wx \-*w2, ...,w._x ±->ιυη
где w. -yAz, x-yw, Ae W и Ав αχ|α2 |...|αΓ есть правила КС-
грамматики.
Для продолжения вывода требуется найти слово wi+1 = y$z такое,
что А н» β есть правила грамматики. Очевидно, β е {αλ, α2, ..., ar}.
КС-грамматики, для которых выбор правила А н» β на произвольном
шаге выписываемого вывода осуществляется однозначно по первым
k (k >1) символам слова и/, называются ЬД&)-грамматиками [1].
Алгоритмы типа «снизу вверх» строят вывод от заданного
слова χ к начальному символу грамматики. Пусть уже построен
«хвост» вывода wi+1, ινι+2, ..., ιυη = χ. Требуется найти такое
разложение слова w ί+1, чтобы w 1+1 = y$z, x = w'ζ и А н» β являлось
правилом КС-грамматики, aw. = yAz. Сложность алгоритмов разбора
зависит от способов выделения подслов β и выбора правил А н» β.
Теперь перейдем к грамматическому разбору П-грамматик. Для
этого нам понадобится понятие ассоциативного исчисления (АИ).
АИ задается:
1) конечным алфавитом А;
2) конечной системой подстановок вида φ <->ψ, где φ и ψ —
различные слова в алфавите А, причем подстановка φ<->ψ означает
следующие два правила: φ —»ψ и ψ -> φ; <-» g A.
83
Например, АИ Ц задается алфавитом Ζ = {α, Ь, с, d, е) и
правилами ас <-» са, ad <-> da, be <-» с&, &<2 <-» db> eca <-> се, edb <-» <2е,
edea <r^> edeae, caaa <r^>aaa, daaa <^>aaa [27, c. 172-189].
Слово А называется непосредственно выводимым из слова β в
АИ J (символически В \~А), если в этом исчислении имеется
подстановка Ρ <-» Q такая, что или А имеет вид αΡβ, а В — вид αφβ, или А
имеет вид αφβ, аБ~ вид αΡβ.
Например, aaa l· caaa, daaa l· aaa.
Слова А и Б называются эквивалентными в АИ J, если
найдется последовательность слов хг, х2, ..., хп (п > 2), что хг = А, хп = Б и
л:. h χί+1 для каждого i (1 < г < п).
Например, в АИ Ц слова сааа и daaa эквивалентны, так как
имеется последовательность сааа, ааа, daaa.
Теорема 3.7 (Цейтина, [27]). В ассоциативном исчислении
Ц алгоритмически неразрешима проблема эквивалентности
слову ааа, т. е. не существует алгоритма, с помощью которого для
любого слова χ в алфавите Ζ можно было бы определить,
эквивалентны ли слова χ и ааа.
По АИ построим грамматику Μ типа 0: Μ = (Z9 W, J, jR), где
W -{a, b, -, d, ё, J, J19 J2, J3, J4}, а множество R правил
грамматики М состоит из всех правил, получаемых из всех φ <-» ψ е Ц
заменой каждого α из Ζ на α и добавлением в левую и правую части
J19 т. е. получается правило грамматики φJx <rJ>\\fJ1 и еще
следующие правила:
1) J -» J2aJ3a (a e Z);
2) Js —> a J3a (a e Z);
3)aJx <r^>J1a(aeZ);
4) J3 -J>J1JA, J 2a~a~a~JxJ A ->aaa.
Лемма 3.5 [23]. Язык L(M) состоит из всех тех и только тех слов
вкр,&ааахтхт_1...х2х1 из2Г\ для которых слово хгх2... χ т_ххт
эквивалентно слову ааа в ассоциативном исчислении Д.
Доказательство. Первый шаг в построении вывода слова в
основном алфавите единственный: применить правило J —> J2aJ3a.
После этого применяется т раз правило J3 —»aJ3a> чтобы
получилось слово βίχ Рхя — β*„Η-ι' котоРое будем строить с помощью правил
^Jx 4-> ψ Jl (по существу являющимися правилами АИ Д), преобра-
84
зовывать в слово а а а после того, как применим правило J3 —»е7х J"4.
Заметим, что одновременно со словом β^ β. ... β. получится и сло-
воPim+1 ♦•·βί2βίι > которое не будет изменяться.
После применения правила J3 ^>JXJA единственный вариант
преобразования — это применять правила АЕГЦ, которые в этой
грамматике имеют вид φ^ <r^^J1. Если слово β^ β£ ...β^ в АИД
будет эквивалентно слову ааа, то получим слово J2aaaJ1JA. Из
этого слова с помощью соответствующего правила (которое
только одно) получаем слово ааа, которое будет соседствовать со
словом βiw+1 · · · βι2 βtl · Лемма доказана.
Теорема 3.8 (о грамматическом разборе для П-грамматик).
Проблема грамматического разбора для П-грамматик
алгоритмически неразрешима.
В самом деле, проблема грамматического разбора для П-грамма-
тики Μ алгоритмически неразрешима согласно теореме 3.7 (Цейти-
на) и лемме 3.5.
Из последней теоремы непосредственно вытекает
Следствие 3.5. Множество всех НС-языков является
собственным подмножеством множества всех П-языков.
3.7. КС-ЯЗЫКИ И СИНТЕЗ ЯЗЫКОВ
ПРОГРАММИРОВАНИЯ
Этот раздел посвящен только КС-грамматикам. Будет
сформулировано несколько утверждений о них и продемонстрировано их
применение к синтезу языков программирования высокого уровня.
Лемма 3.6 (о разрастании КС-языков). Если L есть КС-язык, то
существует такое натуральное число п, что если ze Ln\z\>n, то
слово Ζ может быть записано в виде uvwxy, где υχ & Λ, | ιν | > 1, | vwx | < η, и
для любого натурального i выполнено условие: uvlwxly^ L.
Лемма о разрастании КС-языков может быть использована для
доказательства того, что некоторый язык не является КС-языком,
например язык{апЬпап | η >1}.
Определение 3.13. Пусть Г = (V, W, J, R) есть
КС-грамматика. Вывод в Г: w0, w19 w2, ..., wn, где п >1, назовем
левосторонним (соответственно правосторонним), если для каждого
85
i(0 <i <n)слово wi+1 получается из w. заменой самого левого
(соответственно правого) вспомогательного символа из wi по
некоторому правилу из R.
Теорема 3.9 (о выводах в КС-грамматиках). Пусть Г —
произвольная КС-грамматика. Тогда для каждого слова w из ЦТ) в Г
существует левосторонний (правосторонний) вывод w из
начального символа.
Доказательство очевидно (строго: индукция по длине вывода).
В алгоритмах типа «сверху вниз» (соответственно «снизу вверх»)
описываемый вывод был левосторонний (соответственно
правосторонний).
Приведем еще одно утверждение о КС-грамматиках.
Теорема 3.10 (о правилах КС-грамматики). Для каждой КС-
грамматики может быть построена эквивалентная ей
КС-грамматика с правилами вида А —> ВС или А —» а, где А, Б и С —
вспомогательные символы, а — основной символ.
КС-грамматики часто используют для задания языков
программирования высокого уровня. Чтобы это
продемонстрировать на простом языке, описанном в [10], предварительно введем
записи в нормальной форме Бэкуса. Эти записи используют
символы:
::= означает «равно по определению»;
| означает «или»;
(тек-т) означает вспомогательный символ, который
представляет собой текст, заключенный в эти угловые скобки.
Пример 3.17. В подразд. 3.1 был пример грамматики, язык
которой состоит из десятичных записей натуральных чисел. Здесь
определим ее правила следующим образом:
J->J0|J1| J2|...|J9|0|l|2|...|9
и запишем их в нормальной форме Бэкуса. Вспомогательный
символ в ней представится так: <десятичная запись натурального чис-
ла> или кратко <д.з.н.ч.>. Указанные правила запишутся так:
<д.з.н.ч.> ::= <д.з.н.ч.>0|<д.з.н.ч.>1|<д.з.н.ч.>2|...<д.з.н.ч.>9|0|1|2|
3|4|5|6|7|8|9.
Теперь рассмотрим конструирование одного простого языка
программирования [10]. Задано бесконечное множество перемен-
86
ных: х1У х2, ..., хп> ... и следующие две функции S(x.) = xi +1 и
B(xt) = xi -L
Метками называются произвольные слова в алфавите {0, 1},
начинающиеся с 1.
Пусть выражение «:=» означает «присвоить значение». В
описываемом языке введем четыре операции:
Xi := 0, χι := xj9 χι := S(xj), χι := R(xj).
Они будут задавать операторы, и еще введем исполняемые
операторы вида
k : do α then go to I; k : go to I,
где а есть операция, а & и Ζ — метки. Содержательный смысл их
очевиден.
В описываемом языке есть также условные операторы вида
k : if χι =* 0 then go to 1 else go to /n,
где kyljam — метки.
Наконец, заключительный и начальный операторы
соответственно следующие:
k : stop и start: go to k.
Программой, записанной на рассматриваемом языке, назовем
любое конечное множество операторов, в котором есть ровно один
начальный оператор и в котором для каждой метки т,
участвующей в некотором операторе в контексте «.. .go to т...» присутствует
точно еще один оператор в контексте «т: ...».
Подчеркнем, что слова do, then, go, to, if, else, start, stop следует
рассматривать как один символ языка. Это содержательное
определение программы можно записать в нормальной форме Бэкуса,
что довольно громоздко. В качестве примера мы запишем
определения операции и переменной:
<операция>:: =<переменная>:=0|<переменная> :=<переменная>|
<переменная>:=8(<переменная>)|<переменная>:=Л(<переменная>),
<переменная>::=<переменная>0|<переменная>11 xl.
Пример 3.18. Запишем на рассматриваемом языке программу
для вычисления х3 : = хг + х2. Алгоритм вычисления х3 будет
следующий: от х2 вычитается по 1 до нуля, ак хг соответственно по 1
87
добавляется и полагается хг = хг. Полагая хг = xl, x2 = jcIO, xs = jell,
программа для указанного вычисления хг - хг + х2 имеет вид
start go to l;
1 : do aril := xl then go to 10;
10 : if xlO = 0 then go to 11 else go to 100;
11: stop;
100 : do xlO :=R(xl0 ) then go to 101;
101 :doxll :=S(xll) then go to 10.
Обычно программу, состоящую из разветвлений, представляют
в виде двоичного дерева, называемого деревом решений [2].
В заключение сформулируем основные алгоритмически
неразрешимые проблемы, связанные с КС-языками [6].
Теорема 3.11 (о пересечении КС-языков). Пусть алфавит V
содержит не менее двух букв. Не существует алгоритма,
позволяющего по произвольным двум КС-грамматикам Г\ и Г2 с
основным алфавитом Vузнать, является ли множество Х^Г^П-ЦГ^) КС-
языком.
Теорема 3.12 (о включении и равенстве КС-языков). Пусть
алфавит Vсодержит не менее двух букв. Не существует алгоритма,
позволяющего по произвольным двум КС-грамматикам Tt и Г2 с
основным алфавитом V определить:
а) имеет ли место включение ДГХ) с!/(Г2);
б) совпадают ли языки ЦГг) и ДГ2).
Для порождения слов КС-грамматиками имеется удобное их
представление в виде дерева, называемого «деревом разбора».
Такое дерево встречается также в компиляции и является основной
структурой данных для представления исходной программы.
Пусть Г = (V, W9 J, R) есть КС-грамматика. Дерево разбора для
Г — это отмеченное корневое дерево со следующими свойствами.
1. Корень отмечен символом J.
2. Каждая висячая вершина (кроме, быть может, корня)
отмечена основным символом.
3. Если внутренняя вершина отмечена символом А, а соседние с
ней вершины слева направо отмечены соответственно хх, х2> ..., xk,
то А —> ххх2 ..*xk есть правило из R.
Пример 3.19. Для КС-грамматики из примера 3.15 дерево
разбора для порождения слова а* а изображено на рис. 3.1, а.
88
Рис. 3.1
Иногда корень дерева разбора помечают вспомогательным
символом, отличным от начального, и тогда говорят о выводе из этого
символа соответствующего слова. Например, на рис. 3.1,6
изображен вывод слова а * а из вспомогательного символа Τ в той же
грамматике.
Пример 3.20. Для КС-грамматики
Гх =<{а, +, *}, {J}, J, {J^ J + J\ J* J\a))
для слова а + а*а существуют два порождения:
1) J + J + Jh J + J* J\=a + a*a;
Деревья их разбора показаны на рис. 3.2.
Рис. 3.2
Заметим, что эти деревья различны, ибо первое говорит, что
α складывается с произведением α* α; авторов —а + а
умножается на а.
89
КС-грамматика Г называется неоднозначной, если найдется
хотя бы одно слово w из ДГ), для которого существуют два разных
дерева разбора; если же для каждого слова существует не более
одного дерева разбора, то грамматика однозначна.
Некоторые неоднозначные КС-грамматики могут быть
заменены на эквивалентные однозначные, но в общем случае не
существует алгоритма для определения того, является ли КС-грамматика
неоднозначной.
3.8. АКСИОМАТИЧЕСКИЕ ГРАММАТИКИ
Опишем еще один вид грамматик, сочетающий в себе элементы
ассоциативного исчисления и порождающих грамматик [22]. Хотя
описываемые грамматики не содержат вспомогательных
символов, но их возможное обобщение такие символы будет содержать.
Определение 3.14. Аксиоматическая грамматика (АК-
грамматика) — это упорядоченная тройка G = (V, A, R), где V —
конечное непустое множество (или алфавит), А — конечное
(возможно, пустое) множество слов в алфавите V (называемых
аксиомами) и R —конечное (возможно, пустое) множество выражений
вида х^>у (называемых правилами), в которых χ и у —
различные слова в алфавите V, а символ —»не принадлежит V.
Пример 3.21. АК-грамматикой является грамматика G1 -{{a, b},
{аЪ},{аЪ^а2Ъ2}).
Определение 3.15. Слово Ь непосредственно выводимо в
АК-грамматике G из слова а (символически a l· &), если а = dxxd2,
Ь = агуа2 (άλ и <22 — возможно, пустые слова) и G имеет правило
χ —»ζ/. Слово а порождается грамматикой G, если существует
последовательность слов хх, х2, ..., хт такая, что хт = а и каждое xt есть
или аксиома, или х} У- х. при у <i (будем говорить, что слово хт
выводимо из слова χλ и писать хх 1= хт или хх И хт ).
G
Множество всех слов, порождаемых АК-грамматикой G,
называется АК-языком (или просто языком), порождаемым G, и
обозначается ЦО).
Пример 3.22. Для грамматики Gx из примера 3.21 Щ*х) =
= {апЬп\п>1}.
90
Свойство. Каждое конечное множество А слов в алфавите V
является АК-языком.
В самом деле, за аксиомы можно взять это множество А при
пустом множестве правил.
Как было доказано в подразд. 3.2, каждое конечное множество
порождается Α-грамматиками. Но, с другой стороны, АК-язык из
примера 3.22 не является Α-языком (см. подразд. 3.5).
Пример 3.23. Язык L2 = {апЬт атЬп \ η, т > 1} порождается АК-
грамматикойG2 =({α, b}, {abab}, {abab ->a2bab2, ba->b2a2}).
Пример 3.24. Любой язык вида
{ат*ат\..ат»Ьт> \bm*bmi Ι τη, >1 (l<i<k)},
где все буквыai , α. , ..., α£ , bt ,bi ,...,&. попарно различны,
является АК-языком (и КС-языком также). Правила
соответствующей АК-грамматики аналогичны правилам грамматики G2.
Пример 3.25. Язык L3 = {anbn \ η > 1}U {a2nbn \ η > 1} не является
АК-языком. В самом деле, какое бы конечное множество
{апЪл \l<n<m1}\J{a2nbn \1<п<т2)
слов мы ни взяли за аксиомы, чтобы оставшиеся слова из L3 были
порождены, должны быть правила вида α—>αα&πβ—>α2β&, где а —
слово вида апЬп, а β — вида а2пЬп. Но тогда в построении выводов
эти правила можно будет применить для получения слов из разных
теоретико-множественных слагаемых из L3.
Если обобщить понятие АК-грамматики (путем введения в них
вспомогательного алфавита, которое мы здесь не будем
приводить), то этот язык L3 может быть порожден такой обобщенной
АК-грамматикой: ее аксиомы — слова aJxb и a2J2b, а правилами
вывода являются Jx -xiJfilA, J2 ->a2J2b\A.
Конечно, выводимыми считаются слова только в основном
алфавите. Еще подчеркнем, что эта обобщенная АК-грамматика имеет
четыре правила, а любая КС-грамматика, порождающая L3, имеет
не менее шести правил.
Можно доказать, что специальные КЗ-языки (определение
которых довольно сложно; см. [22, с. 52, 53]) порождаются АК-грам-
матиками.
4. АЛГОРИТМЫ
Понятие алгоритма является одним из основных в математике.
Сначала мы изложим интуитивное описание этого понятия,
выделим его характерные черты и необходимость уточнения; после этого
приведем определение алгоритма, данное английским
математиком Алланом Тьюрингом (1912-1954), которое теперь называется
машиной Тьюринга. Также будут рассмотрены операции над
машинами Тьюринга.
Затем мы сравним два класса числовых функций, вычислимых
по Тьюрингу и с помощью операций над равенствами (которые
задают частично-рекурсивные функции).
Рассмотрим понятия универсальных машин и функций, ал го-
ритмично неразрешимые проблемы и некоторые общие теоремы
теории алгоритмов.
Также будут рассмотрены такие обобщения машин Тьюринга,
как ^-ленточные детерминированные и недетерминированные
машины (k > 1), и проблема P=?NP, которая на их основывается.
Вводится понятие iVP-полной проблемы. Описывается пример просто
определяемой невычислимой функции, с помощью которой
определяется соответствующая игра.
Будет очерчено исследование сложности вычислений без
зависимости от типа рассматриваемых алгоритмов (так называемая
аксиоматическая сложность вычислений) с обсуждением теоремы об
ускорении.
В заключение вводится понятие конечного автомата как
частного случая одноленточной одноголовочной машины Тьюринга;
обсуждаются автоматы Мили и Мура, доказывается их
эквивалентность. Также рассматриваются недетерминированные
конечные автоматы. Наконец, описываются эвристические алгоритмы и
приводятся их поучительные примеры.
92
4.1. ИНТУИТИВНОЕ ПОНЯТИЕ АЛГОРИТМА
И НЕОБХОДИМОСТЬ ЕГО УТОЧНЕНИЯ
С III в. до н. э. в арифметике известно слово «алгоритм». Оно
встречается в выражении «алгоритм Евклида» — это способ
нахождения наибольшего общего делителя двух натуральных чисел.
Этот алгоритм заключается в следующем. Для того чтобы
найти наибольший общий делитель двух произвольных натуральных
чисел тип, действуют следующим образом. Если τη > 0 и η > О, то
делят большее из этих чисел на меньшее, т. е. в случае т >п
получают т = кг · /1 + 1г\ когда 1Х = 0, тогда η есть искомое число. Если же
1Х *0, тогда делят меньшее из этих чисел на полученный остаток,
т.е. получают η= к2 · 1-± ~l· 12 · -В случае 12 = 0 наибольший общий
делитель τη и η есть 1г; когда же l2 ^ 0, тогда делят первый остаток на
остаток при втором делении, т. е. получают lx = k3 12 + 13 и так далее,
пока не придем к делению без остатка (что непременно случится,
ибо остатки убывают). Делитель в этом последнем делении и будет
искомой величиной.
Характерные черты этого алгоритма.
1. Находит наибольший общий делитель любых двух
натуральных чисел, которые отличны от нуля, т.е. решает бесконечное
множество всех задач, определяемых такими парами натуральных
чисел; эта черта присуща каждому алгоритму и называется
массовостью алгоритма.
2. Состоит из ряда этапов, каждый из которых есть деление
двух натуральных чисел, что является достаточно простой
операцией; эта черта присуща каждому алгоритму и ее называют
элементарностью шага алгоритма.
3. На каждом этапе после выполнения каждого шага
однозначно определено, что необходимо делать на следующем шаге; эта
черта присуща каждому алгоритму и ее называют
детерминированностью алгоритма.
4. Когда алгоритм заканчивает работу, дается указание, где
читать результат; эта черта присуща каждому алгоритму и ее
называют результативностью алгоритма.
Согласно изложенному, можно сказать, что алгоритм —
это точное предписание о выполнении в определенном порядке
93
некоторой системы операций для решения всех задач одного и
того же типа*.
Заметим, что это не определение понятия алгоритма, а
только его интуитивное описание. (Из каждого определения всегда
вытекает, какой объект ему не удовлетворяет, но этого нельзя
сказать о приведенном описании алгоритма из-за присутствия
выражения «точное предписание».) Подчеркнем также, что все
перечисленные черты алгоритма вытекают из этого описания.
Следовательно, примерами алгоритмов являются правила
сложения, вычитания, умножения двух десятичных чисел;
извлечение квадратного корня из десятичного числа с заданной
точностью; метод Гаусса решения системы η линейных уравнений с η
неизвестными и др.
При поиске решений некоторых задач долго не удавалось
сформулировать соответствующий алгоритм. Примерами таких задач
являются:
а) определить метод, с помощью которого для любой
предикатной формулы за конечное число действий можно узнать, является
ли она общезначимой;
б) разрешимо ли в целых числах каждое диафантовое
уравнение (т.е. алгебраическое уравнение с натуральными показателями
и целыми коэффициентами).
Поскольку для решения этих задач сформулировать
соответствующие алгоритмы долго не удавалось, то возникло подозрение,
что этих алгоритмов вообще нет. На самом деле так и получилось:
были решены отрицательно первая проблема А. Черчем, а
другая — Ю. Матиясевичем [19] и Г. Чудновским [29]. Но доказать это
с помощью интуитивного понятия алгоритма в принципе
невозможно. Вот поэтому были сделаны попытки дать точные
математические определения понятий алгоритма и вычислимой функции.
В середине 1930-х гг. математики С. К. Клини, Э. Пост, А.
Тьюринг, А. Черч и другие предложили различные математические
определения понятия алгоритма. Позже было доказано, что все эти
формальные определения понятия алгоритма в некотором смысле
эквивалентны: они вычисляют одно и то же множество функций.
* Задачи одного типа — это вычисления значений произвольной функции
для всех возможных значений ее аргументов.
94
Этот факт, очевидно, подчеркивает, что основные черты
интуитивного понятия алгоритма правильно отображены в приведенных
определениях.
4.2. МАШИНЫ ТЬЮРИНГА
Определим математическое уточнение алгоритма, которое было
дано А. Тьюрингом [32] (теперь это уточнение называется машиной
Тьюринга).
Пусть А = {а0, а19 ..., ak} и Q = {g0> ?ι> ···» Чт) ~~ Два
непересекающихся множества (т. е. Af]Q- 0), называемые алфавитами,
причем k > 1 и т > 1 (их элементы называют буквами).
Определение АЛ. Командой (в алфавитах А и Q) называется
каждое выражение вида
q.a. ->asdqt, (4.1)
где qi и qt из Q, но i * 0, а. и as из A, d e D = {17, JI, Н). В
выражении (4.1) q.aj называется левой частью команды, aasdgf —
правой ее частью.
Определение 4.2. Машиной Тьюринга (МТ) Г в алфавитах
А и Q называется совокупность всевозможных команд в этих
алфавитах с попарно различными левыми частями.
Ясно, что такая совокупность команд в алфавитах А и Q имеет
мощность |А|· (|Q| -1) = (& + 1)яг. МТ Τ будем представлять в виде
таб л .4.1, где на пересечении строки q.(l<i<m)n сто л бца a. (0<j<k)
пишется правая часть команды (4.1).
Таблица 4.1
4ι
a8dqr
Определение 4.3. Конфигурацией в момент t(t = 1, 2, 3, ...)
МТ Г называется слово вида. К t = Pq^, где Ρ и R — слова в алфави-
95
те А, причем R — непустое, a qx из Q. Конфигурация Kt называется
заключительной, если* = 0; в противном случае она называется
незаключительной.
Определение 4.4. Пусть Kt =PqiR — незаключительная
конфигурация и R~ajR19 где R19 возможно, пустое слово.
Непосредственно следующая за Kt конфигурация Kt+1 определяется
следующим образом.
1. Если МТ Τ имеет команду qiaj -* a8Hq t, το Кt+1 =Pqta8R1.
2. Если МТ Т имеет команду qta} -*a8nqt vlR1 —пустоеслово, то
Kt+1 -PqsqtaQ\ если же^ — непустое слово и Rx = atR2, то Kt+1 =
= PaeqtalR2.
3. Если МТ Τ имеет команду qta. -^a$oqt и Ρ — пустое слово, то
Kt+1 = qtaQa8R1; если же Ρ — непустое слово и Р = Ргаг, то Kt+1 =
= P1qtaraaRl.
Определение 4.5. Вычислением машины Τ называется
последовательность конфигураций
■^1» -^2» -^3» ·■·» (4.2)
где Кг =q1ai ai ...ai , и говорят, что Кх соответствует начальному
слову а. а. .,,аь,& Ki+1 непосредственно следующая за Ki.
Если в последовательности (4.2) заключительная конфигурация
не встречается (значит, последовательность (4.2) бесконечная), то
говорят, что машина Τ не применима к начальному слову, и
результат такого вычисления не определяется. Если в (4.2)
заключительная конфигурация встречается (и, значит, последовательность (4.2)
является конечной), то говорят, что МТ Τ применима к начальному
слову, и результатом такого вычисления объявляется слово PR, где
К8 = Pq0R — заключительная конфигурация.
Согласно этому определению, вычисление любой машины —
это преобразование слов в алфавитах А и Q, но в эти слова входит
только одна буква из Q. В этом преобразовании эта буква из
алфавита Q, вообще говоря, «перемещается» и изменяется. Поэтому
при описании МТ ([21] и др.) эту букву из Q называют
считывающей головкой (СГ), полагая, что все буквы из алфавита А
записываются в клетках ленты. В дальнейшем мы будем использовать
такое толкование, согласно которому левая часть каждой команды
состоит из величин в момент f, а правая часть — из величина, и qr
в момент t + 1, а величина сдвига d — движение СГ в момент ί, τ. е.
q. — q(t), a. — a(t), a6— a(t + 1), qr — q(t + 1), d — d(t).
96
Значит, команду (4.1) можно записать следующим образом:
q(t) a(t) ->α (f + 1) d(t) q(t + 1). (4.3)
В выражении (4.3) с учетом определений программы машины и
функциональной зависимости вытекает, что МТ определяется
такой системой трех функций φ, ψ, χ:
α(* + 1) = cp(g(i),o(i))l
q(t + l) = y(q(t),a(t)) , (4.4)
d(t) = %(q(t),a(t))\
где α(ί), a(t + 1) e A; q(t + 1), q(t) e Q; d(t){II, Л, Н).
Также говорят, что МТ в алфавитах Q и А определяется
отображением множества (Q\{g0})х^ в множество А х {77, JI,H}xQ.
Встречается и такое определение: машиной Тьюринга называется семерка
(Q,A, J, δ, λ, ql9 g0>,
где Q, A, q0, qx и λ имеют тот же смысл, что и раньше, a J есть
множество входных букв (J czA, λ е A\J);
5:(Q\{q0})xA->Ax{n,o,n}xQ.
В качестве примера приведем машину Т0 (табл. 4.2), которая
каждое двоичное слово В преобразует в слово ΒλΒ, где λ — пустая
буква, и останавливается.
Таблица 4.2
То
Qi
Чг
?з
Ча
<1ь
?б
Чч
Qs
09
| 010
λ
)JIq1Q
λΖΤςτ4
AJ7g5
0Лq6
1Лд8
XJIq7
onqi
XJIq9
1Щг
λΚςτ0
0
UIq2
0Щ2
0Яд3
ояд4
0Яд5
0Лq6
0JIq7
0Лqь
0Лд9
0Лд10
1
АЯд3
1Яд2
1Яд3
1Яд4
1Яд5
1Яд6
1 Лд7
lЛq8
lЛq9
1 -ffgio
97
Машина Т0 работает следующим образом. Каждая буква Ъ.
(1 < i< 0) исходного двоичного слова B = b1b2...bn при начальном
внутреннем состоянии машины заменяется на букву λ и справа во
второй пустой клетке пишется Ь.. После этого СГ возвращается
налево, восстанавливает букву Ъ. и переходит к удвоению буквы
Ь.+1. Когда все буквы Ьг будут удвоены, тогда СГ занимает клетку, в
которой записана буква Ъг исходного слова.
В заключение заметим, что букву а0 из А обычно называют
пустой, а множество А — внешним алфавитом; множество Q
называют множеством внутренних состояний. При этом
содержательном изложении иногда машину будем называть программой.
4.3. ФУНКЦИИ, ВЫЧИСЛИМЫЕ ПО ТЬЮРИНГУ.
ТЕЗИС ТЬЮРИНГА
Будем рассматривать только так называемые арифметические
(или числовые) функции. Их определение следующее.
Определение 4.6. Пусть N ={0,1,2,...} — множество
натуральных (или положительных целых) чисел. Каждая функция
f :Nm —»iV называется арифметической функцией от т (или т)
аргументов, т > 1.
Теперь договоримся о задании значений аргументов
арифметических функций на лентах МТ. Конечно, возможно использовать
десятичную или двоичную системы записи натуральных чисел, но
в каждом из этих случаев внешний алфавит будет содержать не
менее трех букв. Вот поэтому мы используем так называемую
унарную систему записи натуральных чисел.
В этой системе натуральное число η задается словом 1(п+1) =11.1
длины η + 1, η > 0. В таком случае возможно использовать только
две буквы на лентах машин Тьюринга, что мы в дальнейшем чаще
всего будем и делать.
Числовые значения а1,а2,...,агп аргументов хг, х2,..., хт (т > 1)
условимся задавать на ленте МТ в первый момент следующим словом:
1(αι+1)λ1(α2+1)λ...λ1(α-+1), (4.5)
где λ — пустая буква.
Определение 4.7. Говорим, что машина Τ вычисляет
арифметическую функцию f(xn) (в символах Τ : хп ->f(xn))> если для
98
любого наборааг, α2,..., αη значений аргументов хг, х2,..., хп
машина Т9 начиная работу с начальной конфигурации,
соответствующей слову (4.5), не остановится, если значение f(a19 α2, ...,αη) не
определено, и остановится в противном случае, причем на
некотором участке ленты будет написано слово 1(т+1), где т = f(ax ,α2,...,αη),
а все остальные клетки ленты (если такие окажутся) будут пусты.
Еще говорят, что данная функция вычислима по Тьюрингу,
если существует машина Тьюринга, которая ее вычисляет.
Множество всех арифметических функций, вычислимых по
Тьюрингу, обозначим через Т.
Пример 4.1. Убедимся, что функция0(х) = 0 для любого xgN —
константа нуль — вычислима по Тьюрингу. Для этого требуется
построить машину Т19 Тг: 1(η4ΐ) ->1, η >0, которая любое слово из
единиц преобразует в слово 1.
За алгоритм работы машины Тг выберем следующий алгоритм:
машина стирает все единицы, которые существуют на ленте в
первый момент, после чего пишет одну единицу и останавливается.
Очевидно, что такой алгоритм работы машины Тг всегда даст
требуемый результат. После этого уже молено начать составлять
команды машины Тх.
За внешний алгоритм машины Тх возьмем алфавит Аг ={λ, 1}.
Согласно принятому алгоритму работы машины, следует стереть
все единицы и после этого написать только одну. Поскольку в
первый момент СГ находится над крайней слева единицей исходного
слова, то стирание всех единиц выполнится одной командой
q1l-^ λΠς1. Остается еще присоединить команду qxX->lHq0,
чтобы получить программу машины Тх (табл. 4.3).
Таблица 4.3
Тг
Qi
λ
lHq0
1
\nqx
Подчеркнем, что при построении этой программы мы
выполнили следующие этапы.
1. Поиск алгоритма, который осуществит требуемое
преобразование слова на ленте в начальный момент в слово на ленте в
заключительный момент.
2. Исследование предложенного алгоритма.
99
3. Программирование предложенного алгоритма на языке
команд машины Тьюринга.
Эти три этапа должны присутствовать при построении любой
МТ (и даже каждой программы для ЭВМ).
Пример 4.2. Убедимся, что арифметическая функция sum(je; у) =
= χ + у для любых натуральных чисел χ и у вычислима по Тьюрингу.
За алгоритм работы требуемой машины Т2,
Т2 : ι<»*>λΐ<""ΐ> -> !<■»**> (щ9 η >0),
примем следующий алгоритм: машина стирает слева первые две
соседние единицы слова на ленте в первый момент и при движении
СГ вправо в первой встречаемой пустой клетке пишет единицу и
останавливается; если же до этой первой пустой клетки на ленте в
начальный момент имеется только одна единица, то после стирания
первой единицы машина останавливается.
Нетрудно сообразить, что такой алгоритм работы машины
Т2 даст требуемый результат. Программа машины Т2 записана в
табл. 4.4, где знак «-» обозначает, что команда с левой частью qxX
в работе описываемой машины никогда не встретится и поэтому ее
правая часть игнорируется.
Таблица 4.4
т2
$1
- Я»
Чг
λ
-
XHq0
lHq0
1
UIq2
Xnq3
inqs
Замечание 4.1. Если в табл. 4.4 дописать произвольное
число новых строк g4, g5, ..., qm (m >4), то получим новую машину,
которая вычисляет функцию χ + у. Следовательно, для любой
вычислимой функции существует бесконечное множество различных
машин Тьюринга, которые ее вычисляют.
В действительности почти все известные из школьного курса
математики функции являются вычислимыми по Тьюрингу.
Более того, полагается, что каждая вычислимая в некотором смысле
арифметическая функция является вычислимой и по Тьюрингу,
что и составляет тезис Тьюринга.
100
Сформулируем его более точно. Пусть J — множество всех
арифметических функций, для каждой из которых существует
алгоритм в интуитивном смысле, который ее вычисляет. Тогда
включение
Τ с: J (4.6)
является очевидным, так как в качестве интуитивного алгоритма
можно взять МТ. Обратное включение
JcT (4.7)
не может быть доказано, потому что описание класса J неточное,
хотя это включение можно опровергнуть. Но весь опыт
математики его подверждает, и включение (4.7) называется тезисом
Тьюринга. Из тезиса Тьюринга (4.7) и включения (4.6) следует, что
Это равенство еще раз свидетельствует, что определение МТ
правильно отображает интуитивное понятие алгоритма.
4.4. ОПЕРАЦИИ НАД МАШИНАМИ ТЬЮРИНГА
Опишем операции над машинами, которые в настоящее время
отображают соответствующие операции над программами,
представленными на языках программирования высокого уровня; но
операции над МТ были описаны в то время, когда таких языков еще не
существовало. Эти операции позволяют относительно легко проводить
доказательства существования соответствующих машин, что мы
используем в дальнейшем.
Напомним, что МТ мы отождествляем с их программами.
Поэтому будем описывать способы их получения без выписывания
конкретных программ.
Теперь договоримся о следующем: будем считать, что в
заключительный момент СГ каждой машины считывает крайнюю слева
непустую букву слова на ленте. Например, машины Т0 из под-
разд. 4.2 и Тх из примера 4.1 этим свойством обладают, но не
машина^ из примера 4.1. Кроме того, будем рассматривать только
вычисления арифметических функций одного аргумента.
101
Суперпозиция машин. Пусть существуют две машины Тх и Т2:
7\ :*->£(*), Г2 :*->/,(*). (4.8)
Требуется построить машину Τ : л: —> f2(fi(x))> используя
машины ТгиТ2;в таком случае машина Τ называется суперпозицией
машин ТгиТ29л будем писать Τ = Т2 о 7\. Значение /2 (Д (п)) определено
тогда и только тогда, когда определены значения fi(n) и /2(/ι(η))·
Программу машины Г можно получить следующим образом.
Внутреннее состояние машины Т2 переобозначают таким образом,
чтобы все они, за исключением начального, отличались от
внутренних состояний машины Тх\ начальное состояние машины Т2
отождествляется с заключительным состоянием машины Тх. После
этого программа машины Т2 приписывается к программе машины
Τλ (если машины Тх и Т2 имели различные внешние алфавиты, то
соответствующие команды в машине Τ игнорируются (см.
пример 4.2)). Начальное состояние машины Τ есть начальное
состояние машины Тх, а ее заключительное состояние — заключительное
состояние машины Т2.
Теперь легко убедиться, что описанная машина Τ решает
поставленную задачу.
Композиция машин. Пусть существуют машины, заданные
выражениями (4.8), и буква * не принадлежит внешним алфавитам
машин Тг и Т2. Требуется построить машину Τ : х-> /Дх)* /2(x), ис~
пользуя машины Тх и Т2; в таком случае машина Τ называется
композицией машин Тг и Т2 и будем писать Τ = Тх* Т2.
Существуют различные методы построения машины Т, из
которых мы выбираем способ ограниченных участков.
Пусть число χ задается словом w. Сначала слово w
преобразуется в слово w*w (при помощи вспомогательной машины,
аналогичной машине Т0 из подразд. 4.2). Затем начинают выполняться
команды машины Тх на участке ленты левее клетки, в которой
записана буква *. При их выполнении, если в некоторый момент t СГ
встречает букву *, то всё появившееся к моменту t слово на ленте
левее буквы * сдвигается на одну клетку влево. Это проходит при
помощи новой вспомогательной машины Т3, после чего СГ
перемещается в пустую клетку, которая находится непосредственно слева
от клетки, в которой записана буква *. После этого снова
выполняются команды машины Тх и т. д.
102
Если машина Тх закончит работу, тогда на участке ленты правее
клетки, в которой записана буква*, начинают выполняться
команды машины Т2 аналогично выполнению команд машины 7\.
Только в этом случае вместо машины Т3 используется машина Тр,
которая передвигает вправо на одну клетку слово на ленте,
расположенное направо от клетки, в которой записана буква *.
Если и машина Т2 закончит работу, тогда результаты
вычислений машин Тг и Т2 (с использованием еще одной вспомогательной
машины) записывают на соседних участках ленты, которые
разделяются буквой *.
Более подробно этот способ рассматривать не будем.
Подчеркнем только, что с его применением можно получить композицию k
(k >2) машин Тх * Т2 * . *Тк, которая вычисляет Д (х) * f2 (χ)*.. .* fk(x).
Ветвление машин. Пусть существуют машины, заданные
выражениями (4.8), и буквы и, л («истина», «ложь») и еще буква * не
принадлежат их внешним алфавитам.Требуется построить
машину Т, которая слово σ* χ, где σ е {и, л}, преобразует в Д (х), если σ = и,
и в f2 (χ), если σ = л. Если при этом используются машины Тг и Т2,
тогда будем писать Τ = Тг у Т2.
Программу машины Τ можно получить следующим образом.
Каждое внутреннее состояние qi машины Tt (i = 1, 2) обозначим
через gj° и переписываем в этих обозначениях все их команды. После
этого программы Тх и Т2 записываем в одну таблицу, причем
вводим новое начальное состояние qx и следующие команды:
qiu->mqf\ q™*-*mq*\
q^->Xnq[2\ ?1(2)*-»λΖΤ9ί2).
Еще заключительные состояния g*x) и g£2) «измененных»
машин Тг и Т2 заменяем на букву qQ и считаем qQ заключительным
внутренним состоянием машины Т.
Легко убедиться, что машина Τ выполняет нужные
преобразования.
Осуществление цикла. При программировании задач часто
процесс вычисления разбивают на циклы. После осуществления
очередного цикла проверяют выполнимость некоторого свойства. Если
это свойство имеет место, то выдается результат, в противном случае
цикл повторяется.
103
Сформулируем эту процедуру более точно на языке машин
Тьюринга. Пусть имеются следующие машины:
Тх :*-»£(*), T2:x->f2(x),
Мг : χ -> S(x), М2 :х->х>
где машина вычисляет свойство S(x), а машина М2 каждое число
оставляет без изменения.
Машину Ту которая будет осуществлять цикл, можно
построить следующим образом. Вначале число χ преобразует машина
Мх * М2, результатом чего будет слово σ* χ, где а-и, если χ
обладает свойством S, и σ = л в противном случае. После этого
запускается машина Тг у Т2. С этой целью заключительное состояние
машины Мг * М2 отождествляется с начальным состоянием
машины Тг у Т2. Но в этой конструкции заключительные состояния q^
и д£2) «измененных» машин Тг и Т2 остаются различными. Внут-
(2)
реннее сотояниед^ ' отождествляется с начальным состоянием
машины Т, а внутреннее состояние д£° объявляется ее
заключительным состоянием. Поэтому, если машина Тх у Т2 вычисляла как
машина Тх, то полученные значения будут результатом; если же она
вычисляла как машина Т2, то полученное значение становится
начальным для машины 7\
Перечисленные способы сочетания машин облегчают процесс
программирования. С их помощью можно разбить задачу на
подзадачи, а затем использовать последовательное соединение программ
для отдельных подзадач (т. е. суперпозицию), или параллельное
(т.е. композицию), или использовать условное соединение (т. е.
когда S, вычисляй Д, иначе /2), или циклическое соединение (т. е.
пока S, вычисляй Д, иначе /2). Эти сочетания программ
используются и при составлении программ на языках программирования
высокого уровня.
4.5. ЧАСТИЧНО-РЕКУРСИВНЫЕ ФУНКЦИИ (КЛАСС Ч)
Мы уже подчеркивали, что было предложено несколько
уточнений интуитивного понятия вычислимой функции. В подходе
А. Тьюринга сначала описывался сам алгоритм и затем с его помо-
104
щью определялся класс всех вычислимых арифметических
функций. Здесь будет описан еще один подход уточнения понятия
вычислимой функции без явного описания алгоритма, что лежит в
основе этого уточнения (и который, несомненно, есть).
В этом подходе класс всех вычислимых арифметических
функций возникает из некоторого множества исходных
арифметических функций, называемых первоначальными (иногда —
простейшими), с помощью ряда операций.
Первоначальными называются следующие арифметические
функции:
О(х) = 0 — константа нуль;
S(x) = χ + 1 — функция следования;
Iim)(xn) = хт(п> 1,1 <т<п) — функции выбора аргумента.
Замечание 4.2. Все эти первоначальные функции являются
всюду определенными и вычислимыми как в интуитивном смысле,
так и по Тьюрингу.
Теперь перейдем к рассмотрению операций (точнее операторов)
над функциями.
Операция суперпозиции. Пусть заданы функции f(xn) и g. (xm ),
1 <i < п. То обстоятельство, что все функции gt зависят от одного и
того же числа аргументов, не является существенным, так как
можно вводить фиктивные аргументы с помощью функций 1^].
Например:
/К, *3) = /(/<3)(*3), if\xz)) = Kxx, χ2, *,).
Суперпозицией функций f(xn) и gt(xm) (l<i<n) называется
функция h(xm) = f(g1(xm)9 g2{xm), ..., *η(*"*))·
Функция Цхш ) на данном наборе (а1У а2, ..., ат ) будет
определена тогда и только тогда, когда определены все значения
gi(a19 α2, ..., ат ), 1<ί <η, и еще значение
Замечание 4.3. Операция суперпозиции сохраняет
свойства всюду определенности и вычислимости, т. е. в случае
применения ее к всюду определенным (вычислимым) функциям
получается всюду определенная (вычислимая) функция.
105
Например, при помощи операции суперпозиции из
первоначальных функций получаем функции:
On(xn) = O(ll:\xn))=0,
Сх(х) = S(0(x)) = 1, С2(х) = SiC,(х)) = 2,
С%)(хп) = т, m>l, meN,
S2(x) = S(S(x)) = х + 2, Sm (χ) = SiS^ix)) = x + m,
S%\xn) = Sm(lln\xn)) = xk+mA<k<n,m>L
Операция примитивной рекурсии. Существуют два случая этой
операции. Начнем с простейшего.
Пусть заданы натуральное число а и арифметическая функция
h(x, у). Функция f(x), определяемая следующей системой
*(0) = а' (4.9)
/(* + 1) = й(*,/(*)),
называется функцией, которая получается из числа а и функции
h(x, у) с помощью операции примитивной рекурсии.
Система (4.9) позволяет последовательно находить значения
/(0) = а,/(1) = М0,/(0)),/:(2) = М1,Я1)) = М1,М0,/(0)))и,значит,пол-
ностью определяет функцию f(x).
Пример 4.3. По числу а = 1 и функции h(x, у) - (х +1) · у при
помощи примитивной рекурсии определяется функция
/(*)·ί/ι(0)=1-
lV '" \f1(x + l) = h(x,f1(x)) = (x+l)f1(x).
Согласно этой системе, получаем
/1(l) = /1(0 + l) = (0 + l)./1(0) = l-l=l·
/1(2) = /1(1+1) = (1 + 1)·/1(1) = 2.1 = 2!,
/1(3) = /1(2 + 1) = (2 + 1)./1(2) = 3.2! = 3Ι.
Пусть fx(x) = xl, x>0. Тогда
f1(x + l)=(x + l)-f1(x) = (x + iyxl=(x + l)L
Таким образом, эта система определяет функцию fx(x) = х\.
106
Пример 4.4. По числу а = Ои функции Сх(2)(;с, у) = 1при помощи
операции примитивной рекурсии определяется функция f2(x):
ί/ι(0) = 0,
\f2(x+l) = Cl2)(x,f2(x)) = l.
Рассуждая аналогично примеру 4.3, получаем, что
если χ = О,
если х>1.
Функцию f2(x) обычно обозначают через sg χ (т. е. sgx = f2(x)) и
называют сигнум.
Пример 4.5. По числу а = 1 и функции 0(2)(χ, ι/) = 0 с помощью
операции примитивной рекурсии получается функция
Γΐ, если χ = О,
[О, если χ > 1
(называется антисигнум).
Отметим простой случай такой операции. Арифметическая
функция f(n), определяемая следующим образом: f(0) = a и /(τι + 1) =
= g(f(n)\ называется итерацией функции g от числа а.
Перейдем к рассмотрению общего случая операции
примитивной рекурсии. Пусть заданы функции g(xп) и Ыхп, у, ζ). Функция
f(xn, у), определяемая системой
f(x\0) = g(xn),
f(xn,y+l) = h(xn,y,f(xn,y)),
называется функцией, которая возникает из функций g(xn) и
Ыхп у у у ζ) с помощью операции примитивной рекурсии.
Например, из функций
1?\хх) = х1 и h(xl9y9 z) = S(I*\xl9 у9г)) = г + 1
с помощью операции примитивной рекурсии возникает функция
sum(Xj, χ2) = χχ + χ2.
Замечание 4.4. Операция примитивной рекурсии
сохраняет свойства всюду определенности и вычислимости.
Определение 4.8. Арифметическая функция называется
примитивно рекурсивной, если она может быть получена из пер-
107
воначальных функций при помощи конечного числа раз
операций суперпозиции и примитивной рекурсии.
Класс всех примитивно рекурсивных арифметических
функций обозначим через π.
Согласно определению и примерам 4.3-4.5, все
первоначальные функции и функции х\, sgx, sgx, (sum^, x2) принадлежат
классу π, а также и многие другие).
Замечание 4.5. Согласно замечаниям 4.2-4.4, каждая
функция из класса π является всюду определенной и вычислимой.
Примитивная рекурсия является простейшим случаем рекурсии.
Рекурсией (в общем случае) называется такой способ определения
арифметической функции, при котором значения этой функции для
произвольных значений аргументов выражаются соответственным
образом через значения определяемой функции для меньших
значений аргументов.
Примерами такой рекурсии являются следующие два
определения:
Г/(0) = 1, [Б(0, х) = х + 2,
\f(l) = 2, Шп +1, 0) = sgn,
[f(x + l) = sum(f(x), 2Пх~1)), lB(n + l,x + l) = B(n,B(n + l,x)).
Операция минимизации. Пусть имеется арифметическая
функция g(xn), η > 1. Зафиксируем некоторый набор (аг, α2, ..., ат )
значений аргументов хг, х2, ..., хп и рассмотрим уравнение
Будем решать это уравнение, последовательно вычисляя
g(ax, ..., αΛ_1, 0)9g(a19 ..., αη_χ, l)9g(aiy ..., an_lf 2), ....
Наименьшее число b, для которого g(ax, ..., ап_х, b) = an и все
значения
g(alf..., an.lf т), 0<m<b,
определены, обозначается через \xy[g(ax, ..., ап_19 у) = ап\
Полагается, что это значение не определено, если для некоторого числа
с(с < Ъ) значение g(ax, ..., ап_19 с) не определено или все значения
108
g(ai, -·, αη-ι> m) определены и отличаются от ап . Этот алгоритм
определяет функцию f(xn) и поэтому пишут
Это функция, которая получается из функции g с помощью
операции минимизации.
Например, если взять g(xx) = 1^\х1) = хх, тогда
/(ж,) = \iyVf\y) = xl] = x1 = I^ix,).
Замечание 4.6. Функцию f(x) = \\,yj[g{y) = χ] называют
обращением функции g и обозначают g'1 (x).
Определение 4.9. Арифметическая функция нызывается
частично-рекурсивной, если она может быть получена из
первоначальных функций с помощью конечного числа операций
суперпозиции, примитивной рекурсии и минимизации. Всюду
определенная частично-рекурсивная функция называется общерекурсивной
(иногда рекурсивной).
Класс всех частично-рекурсивных (соответственно
общерекурсивных) арифметических функций обозначим через Ч
(соответственно О).
Из определений 4.8 и 4.9 вытекает, что
П^О^Ч. (4.10)
4.6. КЛАССЫ ЧИГ
Сначала уточним включения (4.10). С этой целью еще
рассмотрим примеры функций, которые получаются с помощью операции
минимизации.
Пример 4.6. Пусть g1 (χ) = сх (χ) = 1 для любого χ из N и построим
функцию fx{x) = fx(x) - \лу[с1(у) = χ]. Решая уравнение 1 = χ или 1 +
+ 0 · у = х, получаем, что
[0, если χ = 1,
/ι(*) = 1
(не определена при хф\.
Согласно этому примеру, fx(x) е Ч, но Д (х) <£ О.
109
Пример 4.7* Пусть g2{{x1, х2) = s\xm.{x1, x2)~ хг + х2)и
построим функцию f2(x19 x2) = V>y[g2(x1iy) = x2\^\yy[x1+y=x2\. Решая
уравнение хг + у = х2 (в натуральных числах), получаем, что
Г х9 - хл, если х, < х0,
[не определена, еслид^ >x2,
а это значит, что f2{xx ,х2) = х2—х1У так как х2 - хг не определено в
области натуральных чисел при хх >х2.
CnoBSLf2(xlfx2)e Ч, nof2(x1,x2)£0.
Таким образом, согласно примерам 4.3—4.7, имеем, что
операция минимизации, примененная даже к всюду определенным
функциям, дает как всюду определенные, так и частичные функции.
Другими примерами таких функций являются следующие:
V* = μι/[ί/2 = *1
- = μί[0·* = χ].
У
Замечание 4.7· Операция минимизации сохраняет свойство
вычислимости.
Согласно примерам 4.6 и 4.7, получаем, что Ос?,и отсюда с
учетом включений (4.10) вытекает
П^Ос:Ч. (4.11)
На самом деле имеют место включения
ПаОсЧ. (4.12)
Примером функции, которая принадлежит классу О, но не
принадлежит классу 77, является диагональная функция А(х)=В(х, х),
где функция В(п, х) была определена в подразд. 4.5.
Теорема 4.1 (о классах Ч и Г). Арифметическая функция
является частично рекурсивной тогда и только тогда, когда она
вычислима по Тьюрингу, т.е. Ч~Т.
Идея доказательства. Чтобы доказать эту теорему, достаточно
доказать включения
?сГиГс?.
Доказательство последнего основывается на процедуре ариф-
метизации вычислений на машинах Тьюринга и, кроме того, тре-
110
бует рассмотрения дополнительных свойств
частично-рекурсивных функций [30, с. 190]. Поэтому оно довольно сложное. После
этого перейдем к доказательству включения ?с!Г. Идея его
доказательства заключается в следующем. Достаточно убедиться, что
все первоначальные функции из класса Ч вычислимы по
Тьюрингу и что операции суперпозиции, примитивной рекурсии и
минимизации сохраняют вычислимость по Тьюрингу.
Для первоначальной функции О(х) МТ, которая ее вычисляет,
уже была построена (см. пример 4.1). Также легко построить
машины, которые соответственно вычисляют S(x) и каждую
функцию Ι^\χη). Таким образом, все первоначальные функции
вычислимы по Тьюрингу.
Теперь о сохранении свойства вычислимости тремя
операциями из построения классов Ч. В замечаниях 4.3, 4.4 и 4.7 говорится,
что операции суперпозиции, примитивной рекурсии и
минимизации сохраняют свойство вычислимости в интуитивном смысле.
Тогда, согласно тезису Тьюринга, эти операции сохраняют
вычислимость и по Тьюрингу. Рассмотренные операции над МТ позволяют
в этом легко убедиться и без помощи тезиса Тьюринга, хотя
довольно громоздки.
4.7. ОДНА ПРОСТО ОПРЕДЕЛЯЕМАЯ
НЕВЫЧИСЛИМАЯ ФУНКЦИЯ
Начнем с содержательного описания «соревнования по
трудолюбию» Радо [31]. Участник этого соревнования с η
состояниями — это произвольная машина Тьюринга R во внешнем алфавите
{λ, 1} с η внутренними состояниями (п > 1), не считая
заключительного, но такая, что, отправляясь от начальной конфигурации q1 λ,
остановится. Когда машина R остановится, то число единиц на ее
ленте в заключительный момент определяет количество очков
машины Ε в этом соревновании. Если считать победителем машину с
максимальным числом очков, то каждая такая машина пытается
написать как можно больше единиц на своей ленте к моменту
остановки. Пусть ^(^) — максимально возможное число очков для
участника соревнования с η состояниями.
111
Функция ]jT(rc) формально определяется следующим образом.
Пусть Sn — множество всех МТ с внешним алфавитом {λ, 1},
каждая из которых имеет η внутренних состояний, не считая
заключительного, т. е. ее состояниями являютсяд0 , qx , ..., qn (η >1).
Определим Sn, Sn c:Sn, как класс всех тех машин из Sn, каждая из
которых остановится, будучи запущенной в начальной
конфигурации с^Х.ЕслиДе Sn, то через \R\ обозначим число единиц на ее
ленте в заключительный момент. Теперь положим \(n)= max IjRl.
*-* VRe Sn
Ясно, что функция V(η) определена для каждого η (η > 1) и
^J(ji) < ^(л. +1). Если допустить, что ^Jin) невычислима, то она
должна отличаться от каждой функции /(/г), где f(n) e О. Это
подтверждается следующей теоремой.
Теорема 4.2 (Радо). Функция ]JT(n) является невычислимой.
В действительности, для любой общерекурсивной функции f(x)
выполнено f(x) < ^(х) для всех достаточно больших х.
Доказательство. Несложно убедиться, что функции
О, если χ < у, / . ч
ишах(л:, у) = х+(у-х)
х-у, еслкх>у,
являются примитивно-рекурсивными (что sum (л:, у) = х+ у из класса
π было доказано в подразд. 4.5). Поэтому если f(n) е О, то и функция
g(n) = max(/(2n + 2), f(2n + 3)) из класса О. Следовательно, функция
g{ri) вычислима на некоторой машине Μ с внешним алфавитом {λ, 1}
и имеющей, скажем, k внутренних состояний, не считая
заключительного. Теперь для каждого η (η > 1) рассмотрим машину Rn,
которая сначала пишет η +1 единиц на пустой ленте (используя η + 2
внутренних состояний*) и затем работает, как машина Μ. Тогда машина
Rn является участником соревнования по трудолюбию сл + й + 2
состояниями. Следовательно, ее количество очков ограничено
величиной ^(/г+& + 2) и по монотонности функции V(n) получаем, что
при n>k выполнено неравенство ^Γ(τι+&+2) < V(2n + 2). Но
согласно определению вычисления функции g(n) в заключительной
конфигурации на ленте будет написано g(n) + l единиц, т. е.
* Это можно сделать и с меньшим числом внутренних состояний.
112
max(/(2/i + 2), /(2τι+3)) + 1 единиц. Тогдаmax(f(2n + 2), /(2n + 3)) + l<
< ]£(2η + 2) и f(2n + 2) < ]j£(2n + 2). Теорема доказана.
В [25] отмечается: «Функция ]ЦГ поразительно проста». Там же
приведены начальные известные значения ^: ^(1) = 1, ^(2) = 4,
£(3) = 6, ]Г(4) = 13 и следующие оценки: ]Г(5)>17, ]Г(6)>35,
£(7) >22961, £(8) >81044.
Машины Тьюринга, пишущие ^(i) единиц при i = 1,2,3,
построить легко. Машина, пишущая У"(4) единиц, была найдена с помощью
ЭВМ, и ее программа выписана в табл. 4.5, а заключительная
конфигурация имеет вид 1л2^ Xq01.
Таблица 4.5
Я.
Qi
Чг
?з
?4
λ
1Пд2
wqi
lHq0
1Лд4
1
λ#ςτ3
mqi
Шд,
7JIq2
Согласно приведенным оценкам значений ]?/^)> можно
предложить следующую интеллектуальную игру. Группа игроков
выбирает натуральные числа т, η такие, что т > 10, η > 6. Кто построит
участника соревнования по трудолюбию с η состояниями за т
минут с большим числом очков, тот победитель.
4.8. АЛГОРИТМИЧЕСКИ НЕРАЗРЕШИМЫЕ ПРОБЛЕМЫ
Как уже подчеркивалось, каждый алгоритм решает
соответствующее множество однотипных задач. Поэтому такое множество
задач называют иногда массовой проблемой. Если алгоритм для
некоторой проблемы не существует, тогда такая массовая проблема
называется алгоритмически неразрешимой (в противоположном
случае — алгоритмически разрешимой). Здесь мы докажем
алгоритмическую неразрешимость только четырех массовых проблем,
но сначала следует дать необходимые определения.
113
Нам потребуется задавать машины Тьюринга в виде слов в
фиксированном алфавите. Поэтому условимся (как и ранее) внешний
алфавит каждой машины выписывать из букв а0 = λ, αλ, а2,..., а ее
внутреннюю память — из буквд0, qx, д2,.... Теперь сопоставим этим
буквам и буквам Л, Н9 Π следующие двоичные слова:
Л ы> 10, Η н> 100, 77н> 1000,
α. н->10(а|+4)(*£0),д, н>10(2/+5)(;>0).
Если Ъ — одна из этих букв, то через k(b) будем обозначать
слово, которое ей сопоставлено. Например: k(a0) = 10(4) = 10 000,
fe(g1) = 10(7>=10 000 000.
Команде g.at —>asdqt сопоставим слово
JP(ff,a;.)=*(g,)ft(a/)*(a.)*(d)*(?t),
которое назовем кодом этой команды.
Машине Τ с внешним алфавитом А = {а0, ах,..., ak} и множеством
внутренних состояний Q = {д0, д1? ..., дт} сопоставим слово
ΛΓ(^ = ^ϊια0)^?1α^...^9ιαΑ)ί(?2α0)ί(?2α1)...
-K(qma0)K(qma1) ...K(qmak),
которое назовем ее кодом. Код машины получается из кодов всех ее
команд, выписываемых в указанном порядке.
Таким образом, по программе машины эффективно строится ее
код в алфавите {0,1}. Также можно убедиться, что по коду машины
эффективно строится ее программа (с точностью до обозначений
букв внешнего алфавита), поскольку каждые пять массивов
единиц с нулями представляют команду машины.
Проблема самоприменимости. Теперь условимся рассматривать
только те МТ, внешний алфавит которых содержит буквы 0 и 1;
класс всех таких машин обозначим через D. Пусть Τ — одна из
таких машин. Если Τ применима к слову Ν(Τ) (которое является
кодом), тогда она называется самоприменимой, в противном случае Τ
несамоприменимая ♦
Каждая рассматриваемая машина является самоприменимой
либо несамоприменимой. Примером самоприменимой (несамо-
применимой) машины может быть машина, правая часть каждой
команды которой содержит заключительное (незаключительное)
внутреннее состояние.
114
Проблема самоприменимости заключается в том, чтобы
построить алгоритм для определения того, является ли произвольная
машина из класса D самоприменимой или нет. Поскольку мы в
качестве уточнения интуитивного понятия алгоритма взяли МТ, тогда
следует сформулировать этот алгоритм в виде соответствующей
МТ. Значит, следует построить такую МТ, которая была бы
применима к кодам всех машин из класса!), и ее заключительные
конфигурации при работе над кодами самоприменимых и несамоприме-
нимых машин были различными. Например, условимся, что при
работе над кодом самоприменимой машины заключительная
конфигурация имеет вид Pq0 Ш (вне считываемой буквы 1 слова Ρ и Q
могут быть произвольные), а в случае работы над кодом несамопри-
менимой машины — Pq 0(Ш.
Теорема 4.3 (о проблеме самоприменимости). Проблема
самоприменимости алгоритмически неразрешима, т. е. не
существует машины Тьюринга, которая решает эту проблему в указанном
выше смысле.
Доказательство. Допустим противное. Пусть существует
машина L, которая решает проблему самоприменимости. По машине L
построим машину Т, обладающую следующими свойствами:
1)Т применима к кодам всех несамоприменимых машин;
2) Τ неприменима к кодам всех самоприменимых машин.
Машина Τ получается следующим образом: все команды машины
L объявляются командами машины Т, но заключительное состояние
машины L не будет заключительным для Т. Заключительное
состояние машины Τ обозначим через q'0, и к командам машины L
присоединяются еще две новые команды д00 -bOHq'Q9 tfo* ~~* ϋϊ^0> κοτο~
рые вместе и образуют программу машины Т.
Теперь легко убедиться, что машина Τ обладает свойствами 1) и 2)
и, значит, не может быть ни самоприменимой, ни несамопримени-
мой. Противоречие. Теорема доказана.
Проблема применимости заключается в следующем. По
каждой машине Τ из класса D и каждому двоичному слову В узнать,
применима ли машина Τ к слову В; иначе говоря (в терминах
машин Тьюринга), построить машину, которая будет применима ко
всем словам вида Ν(Τ)λΒ, где Τ — произвольная машина из класса
Ζ), а В — произвольное двоичное слово, причем в случае, когда Τ
применима (соответственно неприменима) к слову Б, в заключи-
115
тельной конфигурации на ленте в клетке, над которой СГ, была бы
единица (соответственно нуль), а в остальных клетках —любые
символы.
В доказательстве следующей теоремы мы используем так
называемый метод сводимости. Он обосновывается таким образом.
Пусть существуют две массовые проблемы X = {xt} и У = {i/J и еще
некоторый алгоритм построения по каждой задаче хи xt e X,
такой задачи yi9 yt е У, что у. имеет утвердительный ответ тогда и
только тогда, когда ответ на задачу xt также утвердительный
(в этом случае говорят, что проблема X сводится к проблеме У).
Если проблема X сводится к проблеме У и X является
неразрешимой, тогда неразрешима и проблема У. Действительно, в
противном случае по каждой задаче xi9 x.eX, построить задачу yi9
у. е У, и, решив ее (проблема У разрешима), получить решение
задачи х. (значит, проблема X также разрешима).
Теорема 4.4 (о проблеме применимости). Проблема
применимости алгоритмически неразрешима, т. е. не существует
машины Тьюринга, которая решает эту проблему в указанном выше
смысле.
Доказательство. Убедимся, что проблема самоприменимости
сводится к проблеме применимости. Алгоритм сводимости будет
следующим: сначала каждое двоичное слово В преобразуется в
слово ΒλΒ, где λ — пустая буква (т. е. слово В удваивается). Этот
алгоритм выполняет машина Т0 из подразд. 4.2. Если бы
существовала машина Р, решающая проблему применимости, то тогда
машина Р°Т0 решала бы проблему самоприменимости.
Противоречие. Теорема доказана.
Проблема переводимости состоит в следующем: задана
произвольная машина Τ из класса D и две ее конфигурации Кг и К2.
Нужно узнать, переводит ли машина Τ конфигурации Кх в
конфигурацию К2.
Не будем определять в терминах машины Тьюринга решение
этой проблемы (следует ввести понятие кода конфигурации), а
только подчеркнем, что проблема переводимости также
алгоритмически неразрешима.
Все перечисленные здесь алгоритмически неразрешимые
проблемы касались МТ; существуют другие алгоритмически
неразрешимые проблемы, которые не определяются через МТ.
116
4.9. УНИВЕРСАЛЬНЫЕ МАШИНЫ ТЬЮРИНГА
И ФУНКЦИИ
Если задана некоторая МТ Μ и конфигурация К = а а. ...
...аь qjai ...α. (где полагается, что СГ читает букву ai ) этой
машины, то тогда можно чисто механически возобновить работу
машины М, начиная с этой конфигурации. Следовательно, этот
процесс может выполнить соответствующая машина Тьюринга.
Поскольку произвольная машина может иметь сколь угодно букв во
внешнем алфавите и внутренних состояний, а конкретная
машина — только их фиксированное число, то машины будем
представлять в виде их кодов. Аналогичным образом следует поступить и с
конфигурациями. С этой целью кодом вышеуказанной
конфигурации К назовем двоичное слово
S(K) = k(ah )...k(aitx )k{q})k(aig),..k{au ),
где k(b) — двоичное слово, сопоставляемое b (букве или
внутреннему состоянию) в вышеописанном отображении.
Если К является конфигурацией машины Μ и Μ применима к
слову на ленте в этой конфигурации, то через М(К) обозначим
соответствующую значительную конфигурацию и еще будем говорить,
что машина Μ применима к конфигурации К.
Машина U называется универсальной машиной Тьюринга
(УМТ), если для произвольной машины Μ из класса D и любой
конфигурации К машины Μ слово N(M) * S(K) на ленте в первый
момент машина U преобразует в слово S(M(K)), если Μ
применима к К у и работает бесконечно в противном случае.
Согласно этому определению, современная ЭВМ начинает
работу при тех же предположениях, что и УМТ (если код Ν(Μ) считать
программой). Это уже подсказывает следующее утверждение.
Теорема 4.5 (об универсальной машине). Существует
универсальная машина Тьюринга.
Доказательство этой теоремы заключается в последовательном
выполнении кодов команд моделируемой машины [30, с. 194].
Код ЩМ) каждой машины Μ есть слово из 0 и 1, и его можно
рассматривать как двоичную запись натурального числа.
Поскольку каждый код начинается с 1, то различным кодам соответствуют
различные натуральные числа. Этот факт и то, что по машине код и
117
по коду машина строятся эффективно, мы используем в
следующем алгоритме нумерации всех машин.
Берем произвольное натуральное число т(т >0) и строим его
двоичную запись. Затем убеждаемся, является ли эта запись
кодом некоторой машины Тьюринга М; в случае положительного
ответа машине Μ сопоставляем номер т. Если же двоичная
запись числа т не является кодом ни одной машины, тогда числу т
сопоставляется машина, которая «ничего не вычисляет».
Например, следующая:
?1
λ
XHq0
0
OHq0
1
1Э$о
Машина, которой сопоставлен номер nl обозначим через Мп9
η > 0. Таким образом, получаем нумерацию всех МТ:
М0,М19М19...,МЯ,.... (4.13)
Поскольку каждая машина Μг вычисляет соответствующую
частично-рекурсивную функцию (считаем, что одного аргумента
и которую обозначим через <р£х))9 тогда одновременно с
нумерацией всех машин получаем и нумерацию всех
частично-рекурсивных функций одного аргумента:
<Ро(*)> Φι(*). Ф2(*)> ···> Ф»(*)» ...· (4.14)
Пусть F — класс функций от η аргументов. Функция
Щт, х19 ..., хп) (от η + 1 аргумента) называется универсальной для
класса F, если выполняются следующие свойства:
1) при каждом фиксированном т функция f(xt, ..., хп) = U(m,
χί9 ..., хп) принадлежит классу F;
2) для любой функции f(xl9 ..., хп) из F найдется такое значение
m = mf94Tof(xl9 ..., хп) = U(mf9 xl9 ..., χη).
Например, для класса константных функций fm (χ) = т9 т >0,
универсальной является функция U(m9 x) = m.
Теорема 4.6 (об универсальной функции для класса Ч).
Существует частично-рекурсивная функция U(n9 x)9 универсальная
для класса всех частично-рекурсивных функций от одного
аргумента.
Эскиз доказательства. Введем функцию U(n9 χ) = φη(#), где
ψη(χ) — функция из нумерации (4.14). Сначала убеждаются, что
118
U(n, x) является частично-рекурсивной. Для этого достаточно
сообразить, что U(n9 χ) вычислима соответствующей МТ; это
вытекает из существования УМТ. Следовательно, функция U(n, χ) =
= φη(χ) частично-рекурсивная.
Осталось убедиться, что выполняются два свойства из
определения универсальной функции.
1. При каждом фиксированном η функция ψ(χ) = Щп, х)
является частично-рекурсивной, так как класс частично-рекурсивных
функций замкнут относительно операции суперпозиции.
2. Рассмотрим произвольную f(x) e Ч(1). Существует машинаМ,
которая ее вычисляет, и пусть это машина Мп из нумерации (4.13).
Тогда f{x) = <рЛо (х) = Щп0, х).
Эскиз доказательства завершен.
Теорема 4.7 (об универсальной функции для класса О1). Не
существует общерекурсивной функции Щп, х), универсальной для
класса О1 всех общерекурсивных функций одного аргумента.
Доказательство. Предположим противное. Если бы такая
функция существовала, тогда можно была бы получить функцию g(χ) =
= U(x, x) + l, принадлежащую классу О1. Она имела бы некоторый
номер /10, т. е. g(x) = U(nQ, χ), и, следовательно, g(n0) = Щп0, η0) +1 =
= U(n0, η0), что невозможно.
4.10. НЕКОТОРЫЕ ОБЩИЕ ТЕОРЕМЫ
ТЕОРИИ АЛГОРИТМОВ
О числе аргументов вычислимой функции. В теории функций
действительного переменного число аргументов функции
является существенным при рассмотрении некоторых проблем
(например, дифференцирования). В теории вычислимых функций число
аргументов вычислимой функции не играет существенной роли
(что уже было использовано при нумерации всех вычислимых
функций). Для того чтобы это точно сформулировать, нужны
следующие определения.
Существуют вычислимые функции, которые взаимно
однозначно отображают Ν2 на Ν; одной из них является [18, с. 60] функция
119
которая называется канторовской нумерующей функцией. С
помощью суперпозиции из этой функции можно получить для каждого
т9 т > 3, функцию С (m)(xi9 х2, ...» хт)> которая взаимно однозначно
отображает N т на N. Например:
С {хг, х2, х3) = 0(0(3^, #2)> ^з)»
С(4) =0(Св,)(Ж1, ДС„ *3), Х4)ИТ.Д.
Для функции С(х, ι/) можно построить две вычислимые
функции Ζ(η)-Η ф) [18, с. 61]:
1(п) = п —
2
г(п) =
|_V8n + lJ
+ 1
|_V8n + lJ-
|_V8ra + lJ
+ 1
Цп),
причем эти функции такие, что
С(Цп),г(п)) = п, 1{С{х,у)) = х, фЗ(х,у)) = у.
Из функций 1(п) и φι) с помощью операции суперпозиции
возможно построить такие вычислимые функцииCmi(ή), 1<ί<τη, что
Cim\Cml(n), Ст2(п), ..., Стт(п)) = п,
Cmi(Cim)(x19x29...9 *„)) = *„ l<i<m.
Теорема 4.8 (о числе аргументов вычислимой функции).
1. Если φ(χ) является частично-рекурсивной функцией одного
аргумента, то
ψί*!, х2, ..., хп) = <$С(п\х19 х2, ..., хп))
есть частично-рекурсивная функция η аргументов, η > 2.
2. Если \у(х19 х2, ..., хп) — частично-рекурсивная функция η
аргументов (п > 2), то
ф)=уу(Сп1(г)9Сп2(2),..., Спп(г))
есть частично-рекурсивная функция одного аргумента.
120
Доказательство непосредственно вытекает из определений
вычислимых функций С {п)(х19 х2, ..., хл)иСл.(2), l<i<7i.
О доопределении вычислимых частичных функций. В теории
алгоритмов иногда частичную вычислимую функцию доопределяют и
получают снова вычислимую и всюду определенную (т. е. из
класса О). Например, вместо частичной функции χ - у рассматривают
[О, если χ < у,
[х - у, если χ > уу которая из класса π.
Но не каждую вычислимую частичную функцию можно
доопределить, чтобы получить вычислимую и всюду определенную.
Доопределением частичной арифметической функции f(x)
назовем всюду определенную функцию f0(x) такую, что для любого т,
если значение f{m) определено и f(x) = η, то f0(m) = η, а если f(m) не
определено, то f0(m) = I, где I — некоторое натуральное число.
Теорема 4.9 (о доопределении функции). Существует
вычислимая частичная функция, которая не может быть доопределена
до общерекурсивной.
Доказательство. Определим функцию d(x) следующим
образом: d(x) = sgU(x, x), где U(n, x) — универсальная функция для
класса ЧГ1. Очевидно, что d(x)e Ч, и поэтому d(x) — вычислимая
функция. Допустим, что существует общерекурсивная функция
d0(x), которая является доопределением d(x).
Поскольку d0(x) е О, то и d0(x) e Ч и, значит, существует такой
номер п, что d0(x)-U(n9 x). Из d0(x)eO вытекает, что значение
d0(n) определено, а тогда и значение Щп, п) также определено, так
как d0(n) = Щп, ή). В таком случае определено и значение sgU(n, ή),
причем d(n) = sgUjn, ή). По смыслу доопределения имеем dQ(ri) =
= d(n), откудаsgU(n, ri) = d(n)=dQ(n) = U(n, η), τ. e. sgU(n, п) = Щп, ή).
Противоречие. Теорема доказана.
Для того чтобы описать случай, когда доопределение
возможно, определим понятие рекурсивного множества, которое
используем и в дальнейшем.
Пусть Μ — некоторое подмножество множества натуральных
чисел. Характеристической функцией множества Μ называется
следующая функция:
Г1, если хеМ,
Xm(x)=L „ ДуГ
[О, если χ £ М.
121
Множество М называется рекурсивным, если его
характеристическая функция общерекурсивна.
Содержательно рекурсивность множества Μ означает, что
существует алгоритм распознавания принадлежности натуральных
чисел множеству М; для этого достаточно взять алгоритм,
который вычисляет Хм, и по его результатам решать хе Μ или нет.
В повседневной практике чаще всего мы встречаемся с
рекурсивными множествами. Например, каждое конечное множество и
множества четных (нечетных) чисел рекурсивные.
Теорема 4.10 (о возможном доопределении). Если область
определения частично-рекурсивной функции / есть рекурсивное
множество, то / имеет общерекурсивное доопределение.
Доказательство приведено в работе [18, с. 126].
О неподвижной точке. Мы уже рассматривали универсальную
функцию U(n, χ) для класса ^Г1. Иногда удобно вводить и классы 4k
при k> 2. Понятно, что универсальную функциюU(Л)(п, хх , ..., xk)
для класса 4k, k>2, можно определить через универсальную функ-
цкюЩп, л:)дляклассаЧ1; например,U(2)(п, х19 х2)-Щп,С(х1, х2)),
где С(хг, х2) — канторовская нумерующая функция.
В последней функции Щп, С(хх, х2)) мы «разграничим»
аргументы хг и х2, представив эту функцию в виде функции (7(τ(η, χχ), х2)), т.е.
17{2\п, х1, х2) = Щп, С(хг, χ2)) = ϋ(τ(η, хх), х2), (4.15)
где функция τ вычислимая и всюду определенная, значит, τ е О;
равенство (4.15) называется итерационным утверждением.
Равенство (4.15) можно обосновывать следующим образом.
Заданные значения х2 сначала преобразуются в слово хгХх2 (при
помощи специальной машины Т(хг)9 которая зависит от х19 хг~
= 0, 1, 2, ...)> затем запускается машина Мс> вычисляющая
С(хх , х2), а затем — машина Мп, которая и вычисляет значение
U(n,C(x19 х2)). Следовательно, в этой процедуре τ(τι, л^) есть номер
машины Мп о (Мс oT(^)), построенной из машин Т(хг), Мс и Мп
с помощью операции суперпозиции.
Поскольку τ(η, χχ) вычислима и всюду определена, поэтому
те О. Таким образом, равенство (4.15) имеет место.
Теорема 4.11 (Клини). Для каждой частично-рекурсивной
функции g(x) существует число тп, что
Ф*(т)(*) = Ф»(*) (4·16)
(число пг называется неподвижной точкой функции g).
122
Доказательство. Определим функцию
f(y, χ) = U(g(%(y, у)), χ),
где Щп, χ) — универсальная функция, а τ — функция из равенства
(4.15). Функция f еЧ2, так как Ue ЧихеО. Поскольку функция U2
есть универсальная для класса Ч2, то
f(y, x) = U2(n, у, x)nnJiU(g(x(yy у), x) = U2(n, yy х).
Отсюда, согласно равенству (4.15), получаем
Щё«У, У)), ос) = Щт(п, у), х)
и при у-η имеем
U(g(x(n, η)), χ) = ί/(τ(η, η), χ).
Функция τ из О, и поэтому значение τ(/ι, η) определено. Если
положить, что τ(η, η) = яг, то из последнего равенства вытекает
U(g(m), χ) = C7(m, x),
а это равенство выражает то, что и равенство (4.16).
Теорема Раиса. Это одна из наиболее общих теорем теории
алгоритмов, которая позволяет доказать алгоритмическую
неразрешимость многих задач, связанных с вычислениями на машинах и
языках программирования.
Теорема 4.12 (Раиса). Пусть F — некоторое непустое
множество частично-рекурсивных функций одного аргумента и F * Ч(1).
Тогда множество NF всех номеров всех функций из класса F не
является рекурсивным.
Доказательство. Пусть выполняются условия этой теоремы.
Допустим противное, т. е. что множество NF является
рекурсивным, и поэтому XN e О. В этом случае дополнение NF множества
NF также будет рекурсивным, поскольку его характеристическая
функция определяется следующим равенством:
Согласно определению множества F, множества NF и NF не
являются пустыми. Это позволяет выбрать такие натуральные числа
а и b: a e NF, Ь е NF. Теперь определим следующую функцию:
, ν ία, если хе Ν„,
(ft, если χ g NF.
123
Функция geO, потому что
gix) = aX-F(x)+bXNr(x).
По теореме о неподвижной точке существует натуральное
число п, такое, что <?g{n)(x) = φη (#). Число η должно принадлежать
множеству NF или множеству NF, так как NF U NF = N. Но как в случае
η е NF, так и в случае η е JVj. получаем противоречие.
Рассмотрим один из них. Пусть η е NF. Согласно определению
NF, имеем φη е F, а из-за равенства φη = φ^(л) еще и φ^(η) eF.C
другой стороны, из пе NF вытекает, что g(n) = &, но beNF; значит,
ein)eArjHq>,(n)ejF.
Получили противоречие. Таким образом, множество NF не
может быть рекурсивным. Теорема доказана.
Подчеркнем, что даже в случае, когда множество функций F
является конечным (но F Φ 0), множество NF из всех номеров
бесконечное (замечание 4.1) и согласно теореме 4.12 не рекурсивно.
Существует содержательный вариант этой теоремы, который
мы только сформулируем. Пусть S — некоторое свойство
частично-рекурсивных функций одного аргумента. Свойство S
называется нетривиальным, если существуют функции, которые
обладают этим свойством, и функции, для которых S не имеет
места. Примерами нетривиальных свойств являются:
функция константа 1, всюду определенная функция, монотонная
функция, инъективная функция, функция, которая определена в
точке 0, и т. п.
Обычно частично-рекурсивные функции задаются
программами их вычисления. Возникает вопрос, существует ли алгоритм
распознавания по программе того свойства, которым вычислимая
ею функция обладает. В нашем подходе программами
вычислений частично-рекурсивных функций являются МТ, которые^в
свою очередь, задаются своими кодами. Определение того, чтр МТ
распознает нетривиальные свойства, аналогично определению
решения проблемы самоприменимости МТ.
Теорема 4.13 (теорема Раиса в содержательной
формулировке). Какое бы ни было нетривиальное свойство S
частично-рекурсивных функций, проблема распознавания S алгоритмически
неразрешима.
124
Идея доказательства. Допускают противное и приходят к
следствию, что множество всех номеров всех функций, которые
обладает свойством S, рекурсивное.
4.11. fr-ЛЕНТОЧНЫЕ МАШИНЫ ТЬЮРИНГА, /г>1
(детерминированные и недетерминированные)
Машины Тьюринга, которые мы рассматривали в подразд. 4.2,
имели только одну ленту. Логично допустить, что МТ имеет k лент
(k > 1), на каждой из которых имеется по одной СГ. На первой из
этих лент пишется в начальный момент то слово, которое будет
преобразовываться машиной, а остальные ленты в этот момент
имеют по одной пустой клетке; в случае применимости машины к
слову на 1-й ленте результат пишется на этой же ленте. Таким
образом, каждая команда k-ленточной (детерминированной) МТ (k > 1)
имеет вид
q(t)(ai(О,..·,ak(О) ->(аг(t +1),...,ak(t + 1))(άλ(t),...,dk(t))q(t +1),
где q(t)(q(t)#q0) есть внутреннее состояние машины в данный
момент t; am {t) (l<m<k) есть считываемая буква на т-й ленте в
момент t; am (t + l)(l<m<k) есть буква на т-й ленте в момент t +1 и
которая получается из буквыат (t); dm(t) (l<m<k) есть направление
движения СГ на т-й ленте в момент t; q(t + 1) есть внутреннее
состояние машины в момент t + 1. Следовательно, fc-ленточная
(детерминированная) МТ определяется отображением множества
(Q\{q0})xAk в множество А* х {П,Л,Н)к xQ,
где Q (соответственно А) есть множество ее внутренних состояний
(соответственно внешний алфавит машины).
В дальнейшем вместо fe-ленточной детерминированной
машины Тьюринга будем писать &-ДМТ.
Пример 4.8. Двоичное слово ιν = ιν1ιυ2...ιυη, η>1, называется
симметричным (или палиндромом), если для каждого i (1 < i < η)
выполнено ю% = wn_i+1. Например, симметричными словами явля-
ютсяО,1,010,11,00,101,1001ит.п.,нонеслова01,10, НОит.п.
Построим 2-ДМТ Мх, которая каждое двоичное слово w
преобразует в 1, когда w симметричное, и в 0 — в противном случае.
125
Условимся, что машина Мг вычисляет согласно следующему
алгоритму. Исходное слово w1w2...wny записанное в первый момент
на 1-й ленте, переписывается на 2-ю ленту, но оно сохраняется и на
1-й ленте. Затем СГ на 2-й ленте передвигается на левый край
ленты, после чего СГ на двух лентах передвигаются в разных
направлениях, сравнивая ιυ. и ivn_i+1,1 <i <n, с заменой их на λ, а в
последний момент — на 1 (или 0).
После исследования этого алгоритма и его программирования
на языке команд МТ получаем следующую программу 2-ДМТ М1
(табл. 4.6), в которой ради выразительности столбцы (а не строки,
как ранее) таблицы обозначаются внутренними состояниями
машины, и правая часть команды пишется на пересечении столбца и
строки.
Таблица 4.6
Мг
(ОД)
(1, λ)
(λ, λ)
(0,0)
(1,1)
i (0,1)
Ι (ΐ,ο)
9i
(0,0)(Π,Π)9ι
(1,1)(Я,Я)?1
(λ, X)(JI, JI)q2
-
-
-
-
?2
(0Д)(Я,Я)д3
(1Д)(Я,Я)д,
-
(0, 0)(Я, Л) д2
(1,1)(Я,Я)д2
(0,1)(Я,Л)д2
(1,0)(Я,Л)д2
?з
-
-
(1Д)(Я,Я)д0
(ХД)(Л,Я)д3
(λ, Х)(Л, Я) д3
(ХД)(Л,Я)д4
(λ, λ)№ Я) д4
?4
-
-
(ОД)(Я,Я)д0
(ХД)(Л,Я)д4
(ХД)(Л,Я)д4
(ХД)(Л,Я)д4
(λ, Х)(Л, Я) д4
В табл. 4.6 пара (α, β), где α, β е {0, 1, λ}, означает, что буква α (β)
записана на 1-й (2-й) ленте; аналогичная пара (δ, γ), где δ, γ е {Π, Л, Η},
означает движение СГ на лентах. Начальное состояние машины Мг
есть qx, а ее заключительное состояние — qQ. Пока машина Мх
находится во внутреннем состоянии qx, идет перезапись исходного
слова из 1-й ленты на 2-ю. При внутреннем состоянии q2 СГ на 2-й
ленте передвигается на левый край, а СГ на 1-й ленте не движется;
после этого машина переходит во внутреннее состояние q3, когда
начинается сравнение букв wi ишп.к1. Когда все такие пары состоят
из равных букв, тогда внутреннее состояниед4 не появляется, и
машина имеет 1 на 1-й ленте в заключительный момент; в противном
126
случае внутреннее состояние g4 возникает и пишется 0 на 1-й ленте
в заключительный момент.
Определение 4.10. Арифметическая функция Т(п)
называется временной сложностью вычисления &-ДМТ М, если над
каждым исходным словом длины η машина Μ выполнит не более чем
Т(п) шагов.
Для машины Мх из примера 4.8 ее временная сложность
вычисления
Т1(п) = (п + 1) + (п + 1) + (п + 1)=0(п).
Если для машины Мх определить емкостную сложность (или
объем памяти) вычисления Ех{п), равную максимальному числу
всех использованных клеток на двух лентах при обработке
исходных слов длины η у тогда легко убедиться, что Ег (п) = 2п + 2.
Определение 4.11. к-Ленточной недетерминированной
машиной Тьюринга (&-НМТ) с внешним алфавитом А и
множеством внутренних состояний Q называется отображение множества
(Q\{<70}xA*)b подмножества множества Ак х{П,Л,Н}к xQ,k>l.
Другими словами, по данному внутреннему состоянию дД£ *0) и
списку {ах, а2,..., ak) из k-ленточных букв машина имеет конечное
множество вариантов правой части команды, определяемой
этими qi n(a1,a2,...,ak); каждый вариант правой части команды
состоит из k новых ленточных символов, k движений СГ и нового
внутреннего состояния машины (подчеркнем, что &-НМТ может
выбрать любой из этих вариантов).
Замечание 4.8. Каждая &-ДМТ является &-НМТ, но не
обратное.
Как и в случае &-ДМТ, будем полагать, что и для &-НМТ
исходное слово и результат вычисления пишутся на 1-й ленте (при k > 1).
Пример 4.9. Построить 3-НМТ М2, которая каждое двоичное
слово вида0101)01(*2)...01(1ж), i. > 1 (1 <; <т)9 преобразует в 1тогдаи
только тогда, когда
для некоторого множества J е{1,2,..., т). Эта задача называется
задачей о разбиении (или о камнях).
Примем, что машина М2 вычисляет согласно следующему
алгоритму. На 1-й ленте СГ передвигается в направлении слева на-
127
право и всякий раз, когда встречается подслово вида liij) (запис
числа i.)9 на 2-ю или 3-ю ленту переписываются эти i. единиц
причем это переписывание единиц происходит
недетерминированно. После того как СГ на 1-й ленте достигнет правого конца
входного слова, машина начинает проверять, совпадают ли числа единиц
на 2-й и 3-й лентах; если эти числа равны, то только в таком случае
машина выдает 1. Вот поэтому, если какая-нибудь
последовательность переписываний приведет к равным суммам, то эта машина
пишет 1.
Последовательности шагов машины, которые приводят к
неравным словам из единиц на лентах 2 и 3, игнорируются, если хотя
бы одна последовательность выборов приводит к положительному
результату.
После исследования этого алгоритма и его
программирования на языке команд 3-НМТ получаем следующую программу Μ
(табл. 4.7; чтобы подчеркнуть недетерминированность,
представляем список команд). Во внутреннем состоянииqx при считывании
О на 1-й ленте машина недетерминированно решает, писать ли
следующее за ним подслово из единиц на 2-ю или на 3-ю ленту (при
внутреннем состоянии q2 илид3). Во внутреннем состоянии qA
машина сравнивает числа единиц на 2-й и 3-й лентах. Если в этом
процессе будут считываться на лентах сначала наборы (λ, 1, 1), а затем
встретится набор (λ, λ, λ), то машина останавливается, и на 1-й
ленте пишется 1; если же встретятся наборы (λ, λ, 1) или (λ, Ι, λ), тогда
результатом является 0.
Таблица 4.7
Левая часть команды
Внутреннее
состояние
Ч\
Чг
Буквы
на лентах
1
0
1
0
λ
2
λ
λ
λ
λ
3
λ
λ
λ
λ
Правая часть команды
Новые буквы
и движения СГ
1
λ, Я
λ, Я
λ, Я
о, я
λ, Я
2
λ, Я
λ, Я
1>Я
λ, Я
λ, л
3
λ, Я
λ, Я
λ, Я
λ, Я
λ, Л
Новое
внутреннее
состояние
Чз
42
Чг
128
Окончание табл. 4.7
Левая часть команды
Внутреннее
состояние
Яз
?4
Буквы
на лентах
1
1
0
λ
λ
λ
λ
λ
2
λ
λ
λ
1
λ
λ
1
3
λ
λ
λ
1
λ
1
λ
Правая часть команды
Новые буквы
и движения СГ
1
λ, Я
о,я
λ, Я
λ, Я
1,Я
о,я
о,я
2
λ, Я
λ, Я
λ, Л
λ, Л
λ, Я
λ, Я
λ, Я
3
1,Я
λ, Я
λ, Л
λ, Л
λ, Я
λ, Я
λ, Я
Новое
внутреннее
состояние
34
34
Зо
Зо
00
Таким образом, 3-НМТ М2 имеет только одну команду, правая
часть которой представляет собой выбор из двух вариантов; это
команда с левой частью дх (0, λ, λ). Все другие команды этой машины
являются командами детерминированной машины.
То исходное слово, которое данная k-ΉΜΎ Μ преобразует в 1,
будем называть допустимым для М.
Определение 4.12. Говорят, что &-НМТ Μ имеет временную
сложность вычисления Т(п), где Т(п) — арифметическая
функция, если для каждого допустимого исходного слова длины η
найдется такое вычисление машины М, которое состоит не более чем
из Т(п) шагов.
Например, для машины М2 из примера 4.9 ее временная слож-
m
ность вычисления есть Т2(η) = η + [η/ 2J-f-2, где η = m + ^j..
Замечание 4.9. В примере4.9 вес камней задавался в
«почти унарной» системе. Аналогичным образом можно построить
3-НМТ М3 для решения задачи о разбиении, когда вес камней
задается в двоичной (или десятичной) системе счисления, т.е. исходное
слово имеет вид *αλ * ос2 *.. *ост , где at (l<i<m) — двоичное (или
десятичное) число. Для такой машины М3 ее временная сложность
вычисления есть линейная (от длины записи чисел); для такого
варианта задачи о разбиении неизвестно (на октябрь 2006 г.) ни одной
я-ДМТ с полиномиальной сложностью вычисления, но для унарной
записи весов камней такую &-ДМТ построить возможно.
129
4.12. КЛАССЫ Ρ И ΝΡ. ПРОБЛЕМА Ρ =?ΝΡ.
WP-ПОЛНЫЕ И WP-ТРУДНЫЕ ПРОБЛЕМЫ
В предыдущем разделе были рассмотрены примеры 2-ДМТ и
3-НМТ, каждая из которых вычисляла функцию со множеством
значений {0,1} (такие функции называются предикатами). Это
обстоятельство не является существенным ограничением,
поскольку вместо произвольной функции f(xn) можно рассматривать
предикат
[1,если f(xn) = y,
1 [О, если f(xn)*y
(Rf называется предикатом, представляющим функцию f).
Определение 4.13. Пусть машина Тьюринга Μ (детерми-
нированная или недетерминированная) вычисляет предикат
g(xn), п>1.
Будем говорить, что машина Μ распознает множество L(M)9
составленное из всех наборов (αλ,..., а п), для которых g (ах,..., а п) = 1.
Например, машина Мг из подразд. 4.11 распознает множество
всех симметрических слов.
В дальнейшем условимся рассматривать только машины
Тьюринга (детерминированные и недетерминированные), которые
вычисляют предикаты или распознают множества слов (и последние
иногда будем называть языками), где натуральные числа
представляются в двоичной системе записи.
Определение 4.14. Обозначим через Ρ класс всех множеств
слов, распознаваемых &-ДМТ(& > 1) с полиномиально ограниченной
временной сложностью вычислений, т. е. Ρ = {R | существует &-ДМТ
Μ и полиномом р(п), что временная сложность вычисления
машины Μ естьр(п) и L(M) = В].
Через NP обозначим класс всех множеств слов,
распознаваемых &-НМТ(& > 1)с полиномиально ограниченной временной
сложностью вычислений.
Согласно замечанию 4.8, имеем Ρς:ΝΡ. Доказательство
обратного включения ΝΡ с: Ρ до нашего времени никому не удалось дать,
и поэтому проблема Ρ = ΊΝΡ является пока нерешенной.
Оказывается, исследование включения ΝΡ с Ρ может быть
осуществлено при помощи поиска полиномиальных алгоритмов
сложности вычислений конкретных предикатов из класса ΝΡ [9].
130
Определение 4.15. Язык L полиномиально сводится к
языку L0, если некоторая &-ДМТ(& > 1) с полиномиально ограниченным
временем вычисления преобразует каждое слово w из алфавита
языка L в такое слово ю0 из алфавита языка L0, что we L тогда и
только тогда, когда w0 e L.
Определение 4.16. Язык (или проблема) L0 называется
NP-полной, если он (или она) принадлежит классу NP и любой
язык из NP полиномиально сводится к L0; если здесь опустить
условие принадлежности L0 к NP, то получится определение NP-
трудной проблемы.
Проблема выполнимости КНФ состоит в следующем: по
произвольной КНФ выяснить, принимает ли значение 1 реализуемая
этой КНФ булева функция (или она константа нуль).
Пример 4.10. КНФ Кх = (хг ν х2)(х2 ν χ3 ν χ~4) принимает
значение 1, еслид^ = l(i = 1, 2, 3, 4), &К2 = х1(х1 ν х2)(хг ν
χ2)реализует булеву функцию 0.
Заметим, что каждая КНФ может быть задана словом в
алфавите {х, х, 0, 1, (, )}.
Пример 4.11. Из примера 4.10 КНФ Кг можно задать
следующим словом s(K1) = (xl jcIO) (xlO xl 1 jcIOO).
Теорема 4.14 (Кука). Проблема выполнимости КНФ
является iVP-полной.
Доказательство весьма объемно, и его идея заключается в том,
что описать вычисление каждой k-ΉΜΎ (k > 1) возможно с помощью
формулы, которая имеет вид КНФ, причем если результатом
вычисления является 1, то эта КНФ выполнимая.
Наряду с методом Кука доказательства iVP-полноты еще можно
отметить и следующее: чтобы убедиться в iVP-полноте некоторой
новой проблемы L, достаточно доказать, что LeNP и некоторая
iVP-полная проблема L0 полиномиально сводится к проблеме L.
Определение 4.17. Будем говорить, что данная формула
есть т-КНФ, если она представляет собой КНФ и каждая ее
элементарная дизъюнкция содержит не более чем т букв, т > 1.
Проблема т-выполнимости — это проблема выполнимости
КНФ, которые являются т-КНФ.
Теорема 4.15 (о 3-выполнимости*). Проблема 3-выполнимости
является iVP-полной.
* Проблема 2-выполнимости принадлежит классу Ρ [9].
131
Доказательство ее основывается на том, что проблема вьт
нимости полиномиально сводится к проблеме 3-выполнимое
Для этого каждую элементарную дизъюнкцию D, содержащую б
лее трех букв, т. е. в случае!) = х[х vx2fl2v...v^ (k >4),
преобразуют в эквивалентную по выполнимости КНФ:
K(D)=(x? ν χ2- ν ух)(х? ν у, ν y2)...(xak^ v x*h> ν ^_3),
где ух, у2,..., 1/Л_з — новые переменные (для разных элементарных
дизъюнкций различные). Легко убедиться, что этот алгоритм зада
ет требуемую полиномиальную сводимость.
Еще сформулируем две проблемы, которые не касаются формул
Проблема т-клики состоит в следующем: по данному
неорграфу G и натуральному числу т выяснить, содержит ли G полный
подграф с т вершинами.
Теорема 4.16 (о /η-клике). Проблема /η-клики является ΝΡ-
полной.
Доказательство. Снова покажем, что проблема выполнимости
полиномиально сводится к проблеме m-клики. Возьмем некоторую
КНФ К и пусть т есть число ее элементарных дизъюнкций. По
строим по К неорграф G = G(K) следующим образом. Каждому
вхождению буквы ха. в К сопоставим вершину графа, которую обозна-
чим через (χ*, Ϊ), где i — номер элементарной дизъюнкции, которая
содержит х*, 1 <i <т. В этом графе вершины (χ*, ι) и (xbs, г) будут
соседними тогда и только тогда, когда i Φ г и буква xj не является
отрицанием х\ . Теперь легко убедиться, что если КНФ К из т
элементарных дизъюнкций выполнимая, тогда граф G(K) содержит
полный подграф с т вершинами; если же КНФ не выполнима, то
такого подграфа нет. Теорема доказана.
Пример 4Л2. Для КНФ Кх из примера 4.10 неорграф G(KX)
показан на рис. 4.1.
(*ι. 1) (*., 1)
(*2.2) <*з> 2) (-4> 2)
132
Рис. 4.1
Проблема покрытия таблиц. Многочисленные задачи техниче-
кой диагностики или создания банков знаний приводят к проблеме
покрытия таблиц. Ее можно сформулировать следующим образом.
Пусть Τ — таблица из 0 и 1 размером тхη без нулевых
столбцов и строк. Если (ос1;, ос2у, ..., amj)T — столбец этой таблицы и
а ., осЛ ·>···> α*;· — все единицы этого столбца (остальные
элементы — нули), то будем говорить, что этот столбец покрывает
строки таблицы Τ с номерами kx, k2, ..., kr. Теперь определим
покрытие таблицы Τ как такую минимальную совокупность ее
столбцов, которые вместе покрывают все строки таблицы Т.
Теорема 4.17 (о покрытии таблиц). Проблема покрытия
таблиц является ЛГР-трудной.
Доказательство. Снова опишем алгоритм полиномиальной
сводимости проблемы выполнимости к проблеме покрытия таблиц.
ПустьК(хг, х2, ..., xn)=D1 aD2 A...ADm есть некоторая КНФ от
аргументов хх, х2,..., хп . По К построим таблицу Τ - Т(К), которая
будет иметь 2п столбцов и которые мы обозначим через х19 х2, ..., хп,
xl9x2f...,xn; строк в ней будет η + m.
Первые η строки являются вспомогательными, а остальные
соответствуют элементарным дизъюнкциям Dlf D2, ...,Dm этой КНФ.
Строка Dt (l<i<m) образуется следующим образом: если χ J входит
в Di, то на пересечении столбца xj и строки 2λ пишется 1, и только
в этом случае. Вспомогательные строки представляют собой две
матрицы из 0 и 1 размером η χ η, в которых единицы написаны
только на главной диагонали.
Теперь легко убедиться, что если КНФ К выполнимая при
*, = α. (1 < i < η), то таблица Т{К) имеет максимальное покрытие из
η столбцов х[х, х22,..., хапя. Теорема доказана.
Пример 4.13. Для КНФ К2 из примера 4.10 таблица Т(К2) будет
следующая:
• вспомогательные строки,
*1
1
0
0
1
1
*2
0
1
0
1
0
Χι
1
0
1
0
0
*2
°1
1J
°1
0
1J
— строки, которые соответствуют Д.
133
Замечание 4 Л 0. Две различные iVP-полные проблемы
являются разными формулировками одной и той же проблемы.
Все перечисленные здесь задачи имеют общую структуру,
которую мы подчеркнем следующим образом.
Определение 4.18. Проблема Ζ называется переборной, если
она может быть сформулирована в следующем виде: для каждой
индивидуальной задачи ζ е Ζ длины l(z) найти слово ι/, длина 1(у)
которого не превосходит некоторого полинома от l(z), и такое, что имеет
место свойство R(z, у), проверяемое на соответствующей &-ДМТ за
время, ограниченное некоторым полиномом от l(z) + 1(у).
Все рассмотренные здесь iVP-полные проблемы являются
переборными. Но в общем случае имеет место только такое утверждение.
Теорема 4.18 (о переборных проблемах). Каждая переборная
проблема принадлежит классу NP.
Предлагается сформулировать такие переборные проблемы,
которые не являются iVP-полными.
4.13. О МАШИННО-НЕЗАВИСИМОЙ
ТЕОРИИ СЛОЖНОСТИ ВЫЧИСЛЕНИЙ
Понятие сложности вычислений является содержательным
понятием. Поэтому его можно изложить по-разному. Чтобы это
осуществить, необходимо в вычислениях при помощи данного типа
алгоритмов (или машины) условится о том, что следует понимать
под единицей сложности вычисления. Например, при
рассмотрении в подразд. 4.11 многоленточных машин под единицами
сложностей вычислений мы понимали один шаг машины и одну клетку
ленты, получая соответственно временную и емкостную
сложности вычислений. Таким образом, сложность вычислений имеет
различные смыслы, как и сложность алгоритма, хотя последняя
чаще всего понимается как длина записи алгоритма.
Согласно результатам М. Блюма [3], возможно рассмотрение
вопросов сложности вычислений без связи с типом
рассматриваемых машин. Здесь мы только очертим подход Блюма, в котором
используется эффективная нумерация (4.14).
Определение 4.19. Мерой сложности вычисления Φ
называется эффективная нумерация φ0, φχ, ..., φη, ... всех частично-
134
рекурсивных функций, которым сопоставлены
частично-рекурсивные функции Ф0, Ф19 ..., Фп, ... такие, что выполняются
следующие два свойства:
1) Ф^п) определено тогда и только тогда, когда определено φ^η);
, если Φί (η) Φ τη,
, если Φ. (η) = τη,
является общерекурсивным, что означает: неравенство Ф{(п) < т
алгоритмически проверяемо.
Временная и емкостная сложности вычислений удовлетворяют
такому определению. Более того, другие меры естественных
сложностей вычислений, которые встречаются на практике,
удовлетворяют этому определению. Но этому определению не удовлетворяют
те меры, которые не имеют реального смысла меры сложности
вычислений.
Пример 4.14. Функции ФД*>0), определяемые равенством
Φι(η) = 0 (или другому натуральному числу) для каждых i и п, не
удовлетворяют свойству 1).
Пример 4.15. Функции ФД^ >0), определяемые следующим
образом:
О, если φ£ (ή) определено,
не определено в противном случае,
не удовлетворяют свойству 2), поскольку (рДп) определено для
каждых i и η тогда и только тогда, когда Μ(ί, η, 0) = 1, и, значит, Μ <έΟ
(в противном случае мы решили бы проблему применимости).
Пример 4.16. Число рекурсий, используемых для определения
функции по схеме примитивной рекурсии*, нельзя использовать в
качестве меры. В самом деле, этими рекурсиями не могут быть
заданы все частично-рекурсивные функции, и, таким образом, мы не
имеем эффективной нумерации всех алгоритмов.
Подчеркнем, что согласно этим примерам свойства 1) и 2) из
определения 4.19 являются независимыми.
Пусть Ζ есть некоторая задача распознавания, к которой
сводится некоторая iVP-полная проблема. Тогда независимо от того,
* В подразд. 4.5 было указано, что функция sum(x, у) = х + у определяется по
схеме примитивной рекурсии из функций I^lx) и S(I%(χ3)). Функция р(х, у) =
= ху определяется по этой же схеме из функций О(х) = 0и sum( if (хг), /J( хг ))=
= jq +x3. В определении функциир(х, у) используются две рекурсии.
о
2) предикат M(i, n, m) = 1
*,<») =
135
принадлежит ли задача Ζ классу ΝΡ или нет, она обладает тем
свойством, что ее невозможно решить за полиномиальное
время, если Ρ^ΝΡ. В таком случае задачу Ζ называют NP-трудной
(см. подразд. 4.12).
И еще. Имеется ряд экстремальных задач (т. е. задач на
нахождение максимума или минимума), для которых на
сегодняшний день не известны полиномиальные алгоритмы. Примером
такой задачи может быть следующая: в произвольном неорграфе
найти максимальный полный подграф. Задача яг-клики (см.
подразд. 4.12) есть задача распознавания, соответствующая
сформулированной.
Экстремальную задачу назовем NP-трудной, если
соответствующая ей задача распознавания является iVP-трудной.
Определение 4.20. Арифметическая функция г(х)
называется функцией большого размаха, если для каждого i = 0,1,2,...
существует бесконечно много η таких, что r(n) = i, т. е. если она
отображает N на N, и каждое натуральное значение принимает
бесконечно много раз.
Например, каждая из функций гх (х) = х-2^- °g2* ,r2(x) = х~\ 4х
являются функциями большого размаха, причем они
общерекурсивные.
Теорема 4.19 (о неограниченности сложности вычислений).
Пусть Φ есть мера сложности вычислений и f — произвольная
общерекурсивная функция. Тогда существует общерекурсивная
функция φ такая, что для каждой вычисляющей ее машины М.
справедливо неравенство Φί (η) > f(n) для бесконечно многих п.
Доказательство. Пусть выполняются условия этой теоремы и
возьмем некоторую общерекурсивную функцию г\х) большого
размаха. Теперь определим следующую функцию:
φ(η) = fsi Фго.)(*). если <Prin)(n)<f(n),
[0 в противном случае.
Поскольку /иг — общерекурсивные функции, тогда по
свойству 2) из определения 4.19 возможно выяснить, имеет ли место
неравенство
Фг(п)(п)<№,
136
так какΦί(η) <тозначает, что существует у(у<т)кФ1 (п) = у.
Следовательно, φ(η) е м; поэтому существует номер ; такой, что φ(η) -
= фДп) для всех п.
Согласно определению функции г(п), существует бесконечно
много чисел п19 п2, ..., пт , ... таких, что r(ni) = j(i>l) и, значит,
φ(η) = φΓ(η }(η) для всех η и всех i. Случай, когда φ(η.) = φΓ(η ){ni) =
= sg φΓ(η Д/iJ, невозможен. Поэтому для всех п19 п2,..., пт ,... имеет
место неравенство Фу (п^) > f(ni). Теорема доказана.
Замечание 4.11. Существует вариант этой теоремы, в
котором вместо слов «для бесконечно многих п» употребляются слова
«для почти всех п».
Замечание 4.12. Определенная в доказательстве этой
теоремы функция φ(η) является предикатом, поскольку множество ее
значений есть {0,1}.
Теорема 4.20 (о зависимости между мерой сложности и
функцией). Пусть Φ есть мера сложности вычислений. Тогда:
1) не существует общерекурсивной функции ψ такой, что для
каждого i выполнено неравенство Φί (η) <ψ(τι, φ£ (η)) для почти всех η;
2) существует общерекурсивная функция h такая, что для
каждого i выполнено неравенство (р. (п) < h(n, Ф^ (п)) для почти всех п.
Доказательство. Утверждение 1) вытекает из теоремы 4.19, так
как в противном случае имели бы
Φ,(η)<ψ(η, 0) + ψ(η, 1),
т. е. мера сложности вычисления Φ, (η) была бы ограничена сверху
для функций, которые являются предикатами (см. замечание 4.12).
Утверждение 2) интуитивно понятно, потому что значение φ. (η)
получается через ФДп) шагов. Формально доказательство
следующее: определим функцию
гту. ν [срДл),еслиФДп) = лг,
Η(ι, п,т)={ '
[1 в противном случае.
Теперь требуемая функция h(n, m) получается следующим
образом: h(n, т) = maxuf(i, η, т), и поскольку η > i, то это неравенство
имеет место для почти всех η (т. е. для всех п, кроме конечного
числа). Теорема доказана.
137
Теорема 4.21 (об ускорении). Пусть Φ есть мера сложности
вычислений и г(п) — общерекурсивная функция. Тогда
существует общерекурсивная функция φ(η) такая, что для каждой
машины Mt, ее вычисляющей, существует другая машина Μ.,
которая также ее вычисляет, и выполнено неравенствоФДп) >г(Ф](п))
для почти всех п.
Доказательство этой теоремы весьма сложное и объемное
[3, с. 407-411], и мы его только прокомментируем. По условиям
теоремы возможно взять г(п) = 2 п, что дает неравенство ФДп) >2Ф](п)
для почти всех η или Ф. (п) <log2 Φι (η) для почти всех п. Более того,
этот процесс можно повторить и получить, что Фк(п) <log20 (п) <
<log2log2Φi(n) для почти всех п. Такое логарифмическое
ускорение можно продолжить сколь угодно раз. Это не означает, что
сложность вычисления Ф1 (п) является неограниченной; также мы
никогда не получим, что на некотором шаге I сложность
вычисления ФДп) будет отрицательной из-за условия «для почти всех п».
Таким образом, существуют вычислимые функции, которые не
имеют наилучших вычислений.
4.14. ПЕРЕЧИСЛЕНИЕ
РЕКУРСИВНО-ПЕРЕЧИСЛИМЫХ МНОЖЕСТВ
При вычислении функций требуется на каждой заданной
точке найти значение вычисляемой функции именно в этой точке.
Можно представить более слабое требование на вычисление
функций: при вычислении функций на каждой заданной точке η найти
значение этой функции в точке, которая необязательно совпадает
с п, но чтобы все значения функции в конце концов были
вычислены. В таком понимании вычисления функций (которое в
дальнейшем называется перечислением) теорема 4.19 уже не
выполняется. Чтобы в этом убедиться, перейдем от интуитивных
соображений к точным определениям.
Определение 4.21. Множество Μ (MciV) называется ре-
курсивно-перечислимым (р.-п.) множеством, еслиМ = 0или
существует общерекурсивная функция f(x), для которой Μ есть
множество ее значений (в символах Μ = Rf).
Определение 4.22. Машина Тьюринга Τ перечисляет
непустое р.-п. множество Μ (Μ =Rf), если на каждом значении ар-
138
гумента п машина Τ выдает значение f(m), где возможно, что
т^п, но множество всех вычисленных машиной Τ значений
совпадает с Μ.
Теорема 4.22 (о перечислении множеств). Каждое непустое
рекурсивно-перечислимое множество может быть перечислено с
временной сложностью вычисления 0(пlog 2 п)*.
Эскиз доказательства. Пусть Μ — некоторое непустое р.-п.
множество. Значит, существует f еО такая, что Μ = Rf, и пусть we Μ.
Поскольку / е О, тогда существует машина Тг, которая ее
вычисляет (в обычном смысле). По машине Тх возможно построить
машину Т2, которая работает вечно и последовательно получает
конфигурации m * f(m) для каждого m e N, в каждой из которых
машина имеет специальное внутреннее состояние q.
Теперь строится машина Т3, которая вычисляет всюду
определенную функцию g(n) такую, 4ToRg =Rf = Μ.
Машина Т3 работает следующим образом. Сначала по числу п,
заданному в начальной конфигурации в унарной системе записи,
строится его двоичная запись <2(п), что можно осуществить за
0(n\og2 η)шагов. После этого запускается машина Т2, но после
каждого ее шага машина Т3 из d(n) вычитает единицу; когда d(n)
превратится в нуль, тогда 7^ проверяет, имеет ли машина Т2
внутреннее состояние q. Если оно имеется, тогда выдается результат
g(n) = f (m), в противном случае g(n) = w. Ясно, что будут выданы
все значения из множества Rf.
Временная сложность вычисления машины Т3 будет
0(п log 2 ή) + (Χμ) = (Хп log 2 η).
Таким образом, каждое непустое р.-п. множество можно
перечислить с небольшой временной сложностью вычисления.
4.15. КОНЕЧНЫЕ АВТОМАТЫ
Рассмотрим специальный подкласс машин Тьюринга —
конечные автоматы, которым посвящена обширная литература ([12, 26]
* Напомним, что выражение а(п)=0(Ь(п))у гдепе Ny обозначает:
существует действительное число С и натуральное число not что для каждого nt когда
п>п0, тогдаа(п)<Cb(n).
139
и др.). Этот подкласс характеризуется тем, что в каждом
вычислении СГ в каждый момент сдвигается вправо. Следовательно, если
слово на ленте в первый момент имеет η букв, то после η шагов
вычисления такой машины все буквы исходного слова будут
прочитаны и при каждом следующем шаге СГ будет рассматривать вновь
появившийся пустой символ. Значит, время работы такой
машины, т.е. конечного автомата, будет в случае применимости
ограничено сверху величиной η + С, где С — константа, зависящая только
от автомата; вычисления с такой временной сложностью
называются вычислениями в реальном времени.
4.15.1. Автоматы Мили и Мура
Принятая характеристика работы таких МТ (т.е. движение СГ
всегда вправо) с учетом того, что произвольная МТ определяется
системой (4.4), позволяет такие машины определить следующей
системой:
a(* + l) = cp(g(*), а(*)),1
g(* + l)=\|/(g(*), a(t))A (4.17)
g(0) = gx. J
Следовательно, система (4.17) определяет конечный автомат.
В системе (4.17) символ a(t + 1) никогда на работу конечного
автомата не влияет. Это обстоятельство позволяет символ a(t), t > 1,
относить к входным символам, a a(t + 1), f > 1, — к выходным.
В литературе первые определения конечных автоматов
вводились без ссылки на МТ; в них входные символы обозначались через
x(t), а выходные — через y(t)y и сами автоматы определялись
следующей системой:
y(t) = ^(1-1), x(t))A
<Ζ(0 = Ψ(?(*-1), *(*)),[ (4.18)
д(0) = д:. J
Отличие этой системы от системы (4.17) в том, что символ y(t)>
который пишется (выдается) в момент t, определяется через
символ x(t)9 который считывается в момент t\ это возможно благодаря
делению символов на входные и выходные.
140
Конечные автоматы, определяемые системой (4.18),
называются автоматами Мили, причем инициальными (так как q(0) = ql).
Если в (4.18) q(0) = q1 заменить на g(0) = qt, то говорят, что такая
система задает неинициальный автомат; значит, в нем за
начальное состояние может быть взято любое внутреннее состояние.
Изначально содержательная интерпретация конечного
автомата была следующая: в устройство с конечной памятью Q =
= {(Ζι» Я. 2» · · ·» Я. т ) подается входная последовательность х(1) х(2)... х(п),
по которой выдается выходная последовательность у(1)у(2)... у(п),
причем y(i) однозначно определяется через q(i -1) и x(t).
(Допускалась возможность, что каждое x(i) — r-вектор, г>2, т. е. χ(ί) =
= (*ι(0> #2(0> ···> хг0))> а каждое y(i) — Z-вектор, I >2. В таком
случае в нашем определении конечного автомата (как подкласса МТ)
полагается, что входные слова пишутся на г лентах, а
выходные — на Ζ лентах.)
В литературе фигурируют и инициальные автоматы Мура,
определяемые следующей системой:
q(t)=v(q(t-l), x(t)),
q(0)=q,
(4.19)
(еслид(О) = gx заменить na.q(0)=qi, то получим неинициальный
автомат).
Автоматы Мура являются частным случаем автоматов
Мили. В самом деле, из системы (4.19) получаем y(t) = h(q(t)) =
= h(\\f(q(t-l), x(t))) и y(t) = <p(q(t-l), x(t)), где φ=Λ(ψ), значит, y(t)
определяется как в системе (4.18), но функция φ есть
суперпозиция функций h и ψ.
4.15.2. Эквивалентность автоматов Мили и Мура
Оказывается, без потери общности, можно ограничиться
рассмотрением только автоматов Мура. Чтобы в этом убедиться,
введем следующие определения.
Два инициальных автомата называются эквивалентными, если
любую заданную входную последовательность х(1) х(2)... х(п) они
преобразуют в одну и ту же выходную последовательность у(1)у(2)... у(п).
141
Значит, для инициальных автоматов выходная
последовательность однозначно определяется по входной.
Два неинициалъных автомата А и А' называются
эквивалентными, если для любого внутреннего состояния g автомата А
найдется внутреннее состояние д' автомата А' такое, что если автоматы А и
А' запускать соответственно в состояниях q ид', то они одинаковые
входные последовательности будут преобразовывать в одинаковые
выходные и, наоборот, для любого внутреннего состояния q'
автомата А' найдется внутреннее состояние q автомата А, что будет
выполняться указанное в этом предложении свойство. Другими
словами, эквивалентность инициальных автоматов означает равную
переработку входных последовательностей, а эквивалентность
неинициальных — что это всегда можно получить при помощи
подходящей выборки начальных состояний.
Подчеркнем, что эквивалентные конечные автоматы имеют
одинаковые алфавиты входных символов и одинаковые алфавиты
выходных символов, но они могут иметь различные множества
внутренних состояний. Например, автоматы Мили, заданные табл. 4.8
и 4.9, эквивалентны.
Таблица 4.8 Таблица 4.9
\ q
4ι
Чг
X
0
1>92
0,q2
1
0,*
i»gi
ч
4ι
Чг
1 Чг
χ
0
1>?2
o,g3
о,<?2
1 J
0,?ι
l.tfi
Ι.ϊι
Теорема 4.23 (об автоматах Мили и Мура). Для каждого
автомата Мили существует эквивалентный ему автомат Мура (и это
справедливо как для инициальных, так и для неинициальных
автоматов). ь
Доказательство. Пусть неинициальный автомат Мили А
имеет входной алфавит А={а0, alf ..., ak}, выходной алфавит £ =
= {fr0, b19 ..., ^г}, множество внутренних состоянийQ = {g0,g1,...,ge}
(его функции φ и ψ). Построим эквивалентный ему
неинициальный автомат Мура А'. Его множество внутренних состояний опре-
142
делим следующим образом: каждой паре(д^, Ъ}) сопоставим
внутреннее состояние q t. автомата А', 0<i<s, 0 < /' < г. Функции К и \|/
автомата А' определим следующим образом. Для всех i положим
*'(?„) = *>,.
Функция ψ7 автомата А' определяется по функциям φ и ψ
автомата А. А именно, еслих^д,, at) = qm и q(qi, at) = bp, τοψ^., at) =
= qmp для каждого;.
Построенный автомат А'будет моделировать работу
автомата А. Если автомат А запускается во внутреннем состоянии qi, то
А' — во внутреннем состоянии qtj при некотором ;. Тогда на
каждом такте внутреннее состояние qtj автомата А' соответствует
внутреннему состоянию qi и значению выхода^ автомата А, так
как выходным символом автомата А'является h\qi}) = Ь}, т. е.
совпадает с выходным символом для автомата А.
Этот же алгоритм построения годится и для инициальных
автоматов. Теорема доказана.
Согласно этой теореме, в дальнейшем мы ограничимся
рассмотрением только автоматов Мура.
4.15.3. Множества слов, вычислимые в реальное время
Как уже выше отмечено, будем рассматривать только автоматы
Мура. Здесь мы хотим выяснить, какие функции вычисляются
такими конечными автоматами или, иначе говоря, какие множества
слов вычисляются за реальное время. Поскольку в автомате Мура
выходной символ определяется состоянием, то удобно положить,
что входное слово х(1)х(2)...х(п) принимается (допускается)
автоматом Мура, если после прочтения буквы х(п) он окажется в одном
из принимающих (или заключительных) состояний. Выразим
сказанное более точно.
Определение 4.23. (Детерминированным) конечным
автоматом К называется пятерка К = (A, Q, ψ, q1, F), где А — входной
алфавит, Q — множество внутренних состояний, ψ — функция из
системы (4.19), отображающая Qx А в Q и называемая функцией
переходов, qx — начальное состояние, F (JF cQ) есть множество
заключительных состояний.
143
Пусть А* — множество всех слов в алфавите А, включая
пустое λ. Теперь распространим функцию ψ на множество Qx А*
следующим образом. Пусть q^Q, осе А* (т. е. α есть слово), а е А.
Тогда положим\\f(q., λ):^, \\f(qt, cui)=\\f(\\f(qi9 α), α) и определим
множество ЦК) = {ос е А* | \\f(q1, α) е F).
Множество ЦК) называется множеством (или событием)
входных слов, представляемых конечным автоматом К с начальным
состоянием q1 и множеством заключительных состояний F.
Другими словами, множество L(K) — это то множество входных слов,
которое допускает (или вычисляет в реальное время) автомат К.
Например, для автомата Кх =({0, 1}, {qlf q2, g3}, ψ1? q19 {q2}), Tfl,e\\fl
задана табл. 4Л09 ЦК1) = {1(п) | п>1}.
Таблица 4.10
q
Ч\
Чг
\ ъ
q*
λ
mq2
1Лд1
lHqQ
1Л<?4
1
λΠς8
1Π4ί
lJ7g4
1ЛЧг
Чтобы описать множества ЦК), нужны следующие понятия.
Пусть Ε nF — два множества слов в алфавите А, т. е. Ε ci* и
FcA*. Как и раньше, E(JF есть обычное объединение множеств.
Через EF обозначим множество, состоящее из всех слов вида αβ, где
α ε Ε и β ε F; множество EF называется умножением
(конкатенацией) множеств EuF. Если же Ε = F, то множество EF
обозначается через Е2. Итерацией множества Ε называется множество
Ε* =λυΕΌΕ2υ...{]Εη[]..=(ΐΕ\
Множества λ (из пустого слова) и {ai}, где ai e А, называются
элементарными. Множество называется регулярным, если оно
может быть построено из элементарных множеств с помощью
конечного числа раз применений операций объединения, умножения и
итерации.
144
Отметим некоторые свойства введенных операций. Для любых
множеств Е, F,G верны равенства:
E(F\JG) = EF\JEG, (E\JF)G = EGUFG,
E(FG) = (EF)G, (E*)* = Ε* ,
ЕЕ* =Ε*Ε, Ε*Ε* =Ε\ Ε* = λ[)ΕΕ\
Ε0 = 0Ε = 0, λΕ = Ελ = Ε, λ* =λ,
(E{JF)* =(E*F*)* =(E*{JF*)*.
Пример 4.17. Через А* мы обозначили множество всех слов в
алфавите А, включая λ. Теперь А* — это итерация множества А,
т. е. снова множество всех слов в алфавите А, включая λ.
Пример 4.18. Множество, состоящее из одного слова а. ...ai
регулярно, так как оно построено из букв с помощью операции
умножения. Любое конечное множество слов Ε = {осх, ..., ak }регуляр-
k
но, так как Ε = (Jia^}, т. е. есть конечное объединение регулярных
множеств.
Теорема 4.24 (Клини). Множество допускается конечным
автоматом тогда и только тогда, когда оно регулярно.
Все рассмотренные проблемы касались подкласса
детерминированных машин Тьюринга. Но у нас были введены и
недетерминированные Мишины Тьюринга. Естественно выделить аналогичный
и им подкласс, называемый недетерминированными конечными
автоматами (НКА), для них детерминированные конечные
автоматы будут частным случаем.
Определение 4.24. Недетерминированным конечным
автоматом N (над алфавитом А) называется пятерка
N = (A,Q,5,q19F),
где A, Q, qx, F имеют тот же смысл, что и в определении 4.23, а δ
есть функция, отображающая QxA в P(Q) (напомним, что P(Q) —
множество всех подмножеств множества Q).
Определение того, что данное слово допускается НКА,
аналогично определению того, что слово допускается НМТ. Справедлива
следующая теорема.
145
Теорема 4.25 (о НКА и ДКА). Пусть некоторое множество L
состоит из всех слов, допускаемых НКА. Тогда можно построить
ДКА К такой, что L(K) = L.
Итак, согласно этой теореме, НКА не могут «делать» больше,
чем «делают» ДКА.
4.16. ПРИБЛИЖЕННЫЕ (ЭВРИСТИЧЕСКИЕ) АЛГОРИТМЫ
На сегодняшний день, пока проблема P=?NP остается
открытой, надежд построить полиномиальный алгоритм для iVP-полной
задачи очень мало. Но иногда возникающая на практике NP-иол-
ная проблема настолько важна, что мы не можем уклониться от ее
решения, сославшись на iVP-полноту. Поскольку алгоритм,
дающий экспоненциальную сложность вычисления, даже при
небольших размерах задач практически неосуществим, можно пытаться
найти за полиномиальное время не точное решение, а некоторое
приближение к нему. Алгоритмы, дающие такие решения,
называются приближенными (или эвристическими). Но все же мы
желаем подчеркнуть, что приближенное решение ищется тогда, когда
есть все предпосылки, что оно имеется. Например, в задаче о
разбиении искать приближенное решение в случае, когда сумма весов
«камней» нечетная, по-нашему мнению, нелогично, ибо в этом
случае не существует разбиения. Так какое может быть в этом случае
приближенное решение? Итак, подчеркнем, что приближенное
решение следует искать только тогда, когда точное решение может
быть. (В той же задаче о разбиении, если сумма весов четная, то все
равно разбиения может не быть, но это уже следует из точного
решения, которое мы заменяем на приближенное.)
4.16.1. Оценки качества приближенных алгоритмов
Здесь мы ограничимся рассмотрением оптимизационных
задач, т. е. задач, в которых объект с наибольшей или наименьшей
стоимостью среди множества объектов, на которых задана
функция стоимости, всегда существует. Считаем, что стоимость
каждого объекта положительна. Будем говорить, что некоторый
алгоритм решает такую задачу с ошибкой не более чем в р(п) раз, если
146
стоимость найденного им решения, обозначаемая через С(п),
отличается от стоимости оптимального, обозначаемого через С*(п),
ровно вр(п) раз (здесь η — это длина записи исходных данных задачи).
Следовательно, справедливо неравенство
max(C(n)/C*(n), C*(n)/C(n)) <р(п). (4.20)
Эта запись годится как для задач на максимум, так и на
минимум . В самом деле, в задачах на максимум имеем0 <С(п) < С * (п),
откуда С(п)/С*(п) <1, а дробь С(п)/С*(п) показывает, во сколько раз
оптимальное решение лучше нашего.
В задачах на минимум 0 <С*(п) <С(п), откуда С(п)/С*(п)
показывает, во сколько раз стоимость нашего решения больше
стоимости оптимального.
Подчеркнем, что р(п) >1, так как С(п) /С* (п) к С* (п)/С(п) не
могут одновременно быть меньше 1.
Иногда удобнее оценивать качество алгоритма, измеряя
относительную ошибку. Она определяется для каждого входа
алгоритма следующим образом:
\С(п)-С*(п)\
С»
Скажем, что приближенный алгоритм имеет относительную
ошибку не более ε(η), если
1с(п)-с»1 (421)
с»
для любого входа длины п.
Убедимся, что
ε(η)>ρ(η)-1 (4.22)
для задач на минимум. В самом деле, в этом случае С*(п) <С(п) и
~/ ч °(П) тт ,л 01Ч С(П)-С*(П) ^ , ч
р(п) = ——-- Поэтому из неравенства (4.21) получаем ^ —- < ε(η)
С (п) С {п)
или — 1<ε(η), τ. е. неравенство (4.22).
С (п)
147
Для задач на максимум выполнено
e(n)>l_J_. (4.23)
Р(п)
С** (пЛ
Действительно, в этом случаеС(п) <С*(п)и р(п) = . Тогда из
С(п)
<л о1ч С\п)-С(п) ^ / ч 1 С(п) ^ / .
неравенства (4.21) получаем ^-<ε(η) или 1 ; ^ε(τι),
С (п) С (п)
т. е. неравенство (4.23). (В [13] почему-то утверждается, что
ε(η) < р(тг) -1 при таких же исходных данных.)
4.16.2. Примеры приближенных алгоритмов
1. Задача о вершинном покрытии. Для графа G = (V, R)
множество вершин νλ (Vx сУ) называется его вершинным покрытием,
если у любого ребра графа хотя бы один из концов принадлежит Vx.
Размером вершинного покрытия называется] V1 | — мощность
множества Vx.
Например, для графа
Gi =({x,y,z,t,u,v,w}, {[z,t], [г,у], [ζ,υ], [w,v], [w,u], [w,x]})
его вершинные покрытия {w, ζ), {t, w, у} и др.
Задача о вершинном покрытии состоит в том, чтобы указать
минимально возможный размер вершинного покрытия для
заданного графа. Для рассмотренного примера минимальный
размер — 2.
Обычно от задачи оптимизации переходят к задаче
распознавания и спрашивают, имеет ли данный граф вершинное покрытие
данного размера. Эта задача является iVP-полной (к ней сводится
задача о /п-клике).
Несложно находить вершинное покрытие, которое объемнее
оптимального не более чем в 2 раза. Это дает следующий алгоритм
Приближенного вершинного покрытия (ПВП) (в нем G-граф,
E(G) — множество его ребер):
1)С<-0;
2) Е' <- E(G);
148
3) while Я'*0;
4) do возьмем произвольное ребро [и, ν] из Е'\
5)C<-CU{i/,i;};
6) удалим из Е' все ребра, инцидентные и или υ;
7) return С.
Теорема 4.26 (об алгоритме ПВП) ([13]). Алгоритм ПВП
работает с ошибкой не более чем в 2 раза.
Доказательство. Сначала заметим, что даваемое им множество
С является вершинным покрытием, так как цикл в строках 3-6
продолжается до тех пор, пока множество Е' непокрытых ребер не
станет пустым.
Далее рассмотрим множество R ребер, выбираемых в ходе
работы алгоритма. Никакие два из них не имеют общей вершины
(после того, как ребро выбрано в строке 4, все имеющие с ним
общую вершину удаляются в строке 6). Поэтому общее число вер-
глин в С вдвое больше числа ребер в R. Теперь заметим, что любое
вершинное покрытие (в частности, оптимальное С*) содержит
хотя бы одну вершину каждого выбранного ребра, и для разных
ребер эти вершины разные. Таким образом, \R\ <\C* | и,
следовательно, \С\ = 2| Д| <2|С* |, т. е. \С\ <2|С* |.
Теорема доказана.
2. Задача о покрытии таблиц. В предыдущем примере мы
описали приближенный алгоритм, в 2 раза хуже оптимального. В
общем случае приближенные алгоритмы могут и не существовать в
константу раз хуже оптимальных [13]. В качестве примера
рассмотрим задачу о покрытии таблиц (см. подразд. 4.12).
В построении приближенного алгоритма для задачи о
покрытии таблиц используем принцип жадного алгоритма, т. е. на
очередном шаге в покрытие будем включать тот столбец, который
содержит наибольшее число единиц. Такой приближенный алгоритм
будет хуже оптимального в Inn раз для следующей таблицы.
Пусть Т0 — таблица размером 2к xk, состоящая из
всевозможных наборов длины k из 0 и 1, расположенных в
лексикографическом порядке, а7\ —таблица размером 2k хЗ, в которой
i-й столбец состоит из единиц, а два остальных — сплошь из
нулей 1 <i <3.
149
Рассмотрим таблицу 7\ собранную из таблиц Т0, Т1У Т2, Т3
следующим образом:
Γι Т0
т2 1 г0
ί То
В этой таблице Г/п = 3 2* строк ип=НЗ столбцов.
Подчеркнем, что,первые три столбца содержат по 2к единиц, а все
остальные — по 3 · 2*"1 единиц. Жадный алгоритм на первых k шагах
первые три столбца не выбирает, поскольку 3 · 2*"1 >2*. В таком
случае его работа выдает покрытие {1, 2, ..., k + З} сложности lg =k + 3.
В то же время минимальное покрытие образуют первые три
столбца, значит, оптимальная сложность /0 равна 3 : /0 =3. Отсюда
. ,. & + 3 к л bi.
lg /10 = = — +1, что по порядку равно k, a k по порядку не мень-
о о
ше1п(3 2к). Другие примеры приближенных алгоритмов см. в [13].
ЛИТЕРАТУРА
1. Αχο,Α. Теория синтаксического анализа, перевода и
компиляции / А. Ахо, Дж. Ульман. М. : Мир, 1978.
2. Αχο,Α. Построение и анализ вычислительных алгоритмов /
А. Ахо, Дж. Хопкрофт, Дж. Ульман. М. : Мир, 1979.
3. Блюм, М. Машинно-независимая теория сложности
рекурсивных функций / М. Блюм // Проблемы математической логики.
М. : Мир, 1970.
4. Гаврилов, Г. П. Задачи и упражнения по дискретной
математике / Г. П. Гаврилов, А. А. Сапоженко. М. : Наука, 1992.
5. Гиндикин, С. Г. Сколько существует операций над
множествами / С. Г. Гиндикин // Квант. 1973. № 7.
6. Гинзбург С. Математическая теория контекстно-свободных
языков / С. Гинзбург. М. : Мир, 1970.
7. Гладкий,А. В. Формальные грамматики и языки / А. В.
Гладкий. М. : Наука, 1973.
8. Грэхем, Р. Конкретная математика / Р. Грэхем, Д. Кнут,
О. Поташник. М. : Мир, 1998.
9. Гэри, М. Вычислительные машины и труднорешаемые
задачи / М. Гэри, Д. Джонсон. М. : Мир, 1982.
10. Денев, И. Дискретная математика / Й. Денев, Р. Павлов,
Я. Деметрович. София, 1984.
11. Карпов, Б. Г. Математическая логика и дискретная
математика / В. Г. Карпов, В. А. Мощенский. Минск : Выш. шк.,
1977.
12. Кобринский, Η. Ε. Введение в теорию конечных
автоматов / Н. Е. Кобринский, Б. А. Трахтенброт. М. : Наука, 1962.
13. Кормен, Т. Алгоритмы : построение и анализ / Т. Кормен,
Ч. Лейзерсон, Р. Ривест. М. : МЦНМО, 1999.
151
14. Кузнецов, О. П. Дискретная математика для инженера /
О. П. Кузнецов, Г. М. Адельсон-Вельский. М. : Энергоатомиздат,
1988.
15. Лекции по теории графов / В. А. Емеличев [и др.]. М. :
Наука, 1990.
16. Леонтьев, В. К. Комбинаторика : ретроспектива и
перспективы / В. К. Леонтьев // Компьютер и задача выбора. М. : Наука,
1989.
17. Липский, В. Комбинаторика для программистов / В. Лип-
ский. М. : Мир, 1988.
18. Мальцев, А. И. Алгоритмы и рекурсивные функции /
A. И. Мальцев. М. : Наука, 1986.
19. Матиясевич, Ю. В. Диофантовость перечислимых
множеств / Ю. В. Матиясевич // ДАН. 1970. № 191. С. 279-282.
20. Матросов, В. Л. Лекции по дискретной математике /
B. Л. Матросов, В. А. Стеценко. М. : МГПУ, 1997.
21. Мощенский, А. В. Курс математической логики / А. В. Мо-
щенский, В. А. Мощенский. Минск : БГУ, 2001.
22. Мощенский, В. А Контекстно-свободные и
аксиоматические грамматики / В. А. Мощенский, Д. В. Дворцевой // Вестн.
Белорус, гос. ун-та. Сер. 1. 1992. № 3.
23. Мощенский, В. А. Новое доказательство алгоритмической
неразрешимости проблемы грамматического разбора для
грамматик типа 0 / В. А. Мощенский // Вестн. Белорус, гос. ун-та. Сер 1.
1993. №3.
24. Паравиченко, И. И. К общей теории операций над
множествами / И. И. Паравиченко // Успехи математических наук.
1973. № 5.
25. Справочная книга по математической логике : в 3 ч. М. :
Наука, 1982. Ч. 3 : Теория рекурсии.
26. Трахтенброт, Б. А. Конечные автоматы (поведение и
синтез) / Б. А. Трахтенброт, Я. М. Барздинь. М. : Наука, 1970.
27. Цейтин, Г. С. Ассоциативное исчисление с неразрешимой
проблемой эквивалентности / Г. С. Цейтин // Труды матем. ин-та
им. В. А. Стеклова. 1958. Т. 52. С. 172-190.
28. Ченъ, Ч. Математическая логика и автоматическое
доказательство теорем / Ч. Чень, Р. Ли. М. : Наука, 1983.
152
29. Чудновский, Г. В. Диофантовы предикаты / Г. В. Чуднов-
ский // УМН. 1970. Т. 25, № 4. С. 185-186.
30. Шоломов, Л. А. Основы теории дискретных логических и
вычислительных устройств / Л. А. Шоломов. М. : Наука, 1980.
31. Rado, Т. On non-computable functions / Т. Rado // Bell System
Tech. J. 1962. Vol. 41. P. 877-884.
32. Turing, A. On computable numbers, with an application to the
Entscheidungsproblem / A. Turing // Proc. London Math. Soc.
Vol. 42. P. 230-265; Vol. 43. P. 544-546.
СОДЕРЖАНИЕ
ОТ АВТОРОВ 3
1. ЯЗЫК ТЕОРИЙ ПЕРВОГО ПОРЯДКА
1.1. Язык логики высказываний 4
1.2. Язык логики предикатов первого порядка 16
2. ЭЛЕМЕНТЫ ТЕОРИИ МНОЖЕСТВ
И КОМБИНАТОРИКИ
2.1. Множества, способы их задания. Подмножества 23
2.2. Операции над множествами. Основные равенства 26
2.3. Упорядоченная пара. Декартово произведение множеств.
Отношения 29
2.4. Свойства бинарных отношений. Отношение эквивалентности.... 31
2.5. Функции. Счетные множества 33
2.6. Размещения и размещения с повторениями 37
2.7. Сочетания и сочетания с повторениями 38
2.8. Формула бинома Ньютона 42
2.9. Рекуррентные соотношения и их решения 45
2.10. Формула включений и исключений 50
2.11. Производящие функции 55
2.12. Неориентированные графы 61
3. ФОРМАЛЬНЫЕ ГРАММАТИКИ И ЯЗЫКИ
3.1. Основные понятия 73
3.2. Важные примеры грамматик 75
3.3. Α-грамматики и автоматы 77
3.4. Некоторые свойства грамматик 79
3.5. Иерархия языков 81
3.6. Грамматический разбор 82
3.7. КС-языки и синтез языков программирования 85
3.8. Аксиоматические грамматики 90
4. АЛГОРИТМЫ
4.1. Интуитивное понятие алгоритма и необходимость его
уточнения , 93
4.2. Машины Тьюринга 95
154
4.3. Функции, вычислимые по Тьюрингу. Тезис Тьюринга 98
4.4. Операции над машинами Тьюринга 101
4.5. Частично-рекурсивные функции (класс Ч) 104
4.6. Классы? и Τ 109
4.7. Одна просто определяемая невычислимая функция 111
4.8. Алгоритмически неразрешимые проблемы 113
4.9. Универсальные машины Тьюринга и функции 117
4.10. Некоторые общие теоремы теории алгоритмов 119
4.11. к-Ленточные машины Тьюринга, k > 1 (детерминированные
и недетерминированные) 125
4.12. Классы Ρ и ΝΡ. Проблема Ρ =?ΝΡ. TVP-полные и NP-трудные
проблемы 130
4.13.0 машинно-независимой теории сложности вычислений 134
4.14. Перечисление рекурсивно-перечислимых множеств 138
4.15. Конечные автоматы 139
4.16. Приближенные (эвристические) алгоритмы 146
ЛИТЕРАТУРА 151
Учебное издание
Мощенский Андрей Владимирович
Мощенский Владимир Андреевич
МАТЕМАТИЧЕСКИЕ ОСНОВЫ
ИНФОРМАТИКИ
Пособие для студентов
специальности 1-31 03 04 «Информатика»
Редактор У. Ю. Верина
Художник обложки Т. Ю. Таран
Технические редакторы Г. М. Романчук, Т. К. Раманович
Корректор Л. В. Рутковская
Компьютерная верстка Е. В. Заиченко
Подписано в печать 21.02.2008. Формат 60x84/16. Бумага офсетная.
Гарнитура SchoolBook. Печать офсетная. Усл. печ. л. 9,07. Уч.-изд. л. 7,76.
Тираж 300 экз. Зак. 564.
Белорусский государственный университет.
ЛИ № 02330/0056804 от 02.03.2004.
220030, Минск, проспект Независимости, 4.
Отпечатано с оригинала-макета заказчика.
Республиканское унитарное предприятие
♦Издательский центр Белорусского государственного университета».
ЛП № 02330/0056850 от 30.04.2004.
220030, Минск, ул. Красноармейская, 6.
в. В. Мошснскии
В. в· Мошенскиа
I '
" \