Упражнение 2.1.25 |
Алгоритмические проблемы
14.3. Массовые задачи
Определение 14.3.1. Массовой задачей (problem) называется бесконечная серия "однотипных" индивидуальных задач (instance), каждая из которых имеет определенный ответ. С каждой массовой задачей связана некоторая фиксированная схема кодирования (encoding scheme), которая отображает индивидуальные задачи в их коды - слова в некотором фиксированном алфавите. При этом требуется, чтобы множество кодов всех индивидуальных задач было разрешимым.
Определение 14.3.2. Задачей распознавания (decision problem) называется массовая задача, в которой ответами индивидуальных задач могут быть только "да" и "нет" (то есть существует только два возможных ответа).
Пример 14.3.3.
Зафиксируем некоторый алфавит .
Рассмотрим следующие однотипные индивидуальные задачи:
даны два слова
и
,
необходимо выяснить, является ли
слово x
подсловом слова y.
Пусть # -
новый символ, не принадлежащий алфавиту .
Кодом индивидуальной задачи про конкретные
слова x и y
будем считать слово x#y
в алфавите
.
Эта массовая задача является задачей распознавания.
Определение 14.3.4. Алгоритмическая проблема - проблема, в которой требуется найти алгоритм для решения массовой задачи. Если такой алгоритм существует, то данная проблема называется алгоритмически разрешимой или просто разрешимой (decidable, solvable), в противном случае ее называют алгоритмически неразрешимой (undecidable, unsolvable).
Замечание 14.3.5. Алгоритмическая проблема, относящаяся к некоторой задаче распознавания, алгоритмически разрешима тогда и только тогда, когда разрешимо множество кодов индивидуальных задач с ответом "да".
Пример 14.3.6.
Рассмотрим массовую задачу из примера 14.3.3.
Соответствующая алгоритмическая проблема
разрешима, так как разрешим язык .
Пример 14.3.7.
Зафиксируем некоторый алфавит .
Рассмотрим следующие однотипные индивидуальные задачи:
дана порождающая грамматика
![G = \lalg \{ A_1 , \ldots , A_n \} , \Sigma , P , A_1 \ralg ,](/sites/default/files/tex_cache/59f74800e32d18a14c973db3e6d339bb.png)
Для полной строгости необходимо договориться, как
кодировать грамматику G
в виде слова.
Например, можно использовать алфавит ,
где
-
дополнительные символы, не принадлежащие множеству
.
Вспомогательный символ Ai
заменим на слово, состоящее из
символа
и кода числа i
в двоичной системе счисления.
В каждом правиле
добавим символ
на месте
и после слова
.
Кодом грамматики G
будем считать результат конкатенации кодов всех правил
из множества P.
Например, грамматика
![\begin{align*}
A_1 \; & {\to} \; a , \\
A_1 \; & {\to} \; A_2 A_1 , \\
A_2 \; & {\to} \; a A_3 , \\
A_3 \; & {\to} \; \varepsilon , \\
A_3 \; & {\to} \; b A_1
\end{align*}](/sites/default/files/tex_cache/dbda29b54da1c14355010d9df0658f86.png)
![\Sigma = \{ a , b \}](/sites/default/files/tex_cache/bfa83ff6f53b90ffc9b52c0210dc70c7.png)
![\heartsuit 1 \spadesuit
a \spadesuit
\heartsuit 1 \spadesuit
\heartsuit 1 0 \heartsuit 1 \spadesuit
\heartsuit 1 0 \spadesuit
a \heartsuit 1 1 \spadesuit
\heartsuit 1 1 \spadesuit
\spadesuit
\heartsuit 1 1 \spadesuit
b \heartsuit 1 \spadesuit .](/sites/default/files/tex_cache/e84c18dc515a20accf38355ce9749d95.png)
Легко понять, что соответствующая алгоритмическая проблема (проблема проверки праволинейности) разрешима.
Упражнение 14.3.8. Разрешима ли алгоритмическая проблема распознавания четности длины слова над алфавитом {a,b}?
14.4*. Грамматики типа 0
Теорема 14.4.1. Класс языков, порождаемых грамматиками типа 0, совпадает с классом перечислимых языков.
Доказательство можно найти, например, в [СерГал с. 24-26].
Упражнение 14.4.2. Выводимо ли слово aab в грамматике
![\begin{align*}
S \; & {\to} \; S b , & T a \; & {\to} \; a a T , \\
S \; & {\to} \; S T , & T b \; & {\to} \; a b , \\
S \; & {\to} \; S U , & U a a a \; & {\to} \; a a U , \\
S \; & {\to} \; \varepsilon , & U a b \; & {\to} \; b ?
\end{align*}](/sites/default/files/tex_cache/5e6bc7119033dfe022bfde545f3f7efc.png)
Упражнение 14.4.3. Выводимо ли слово aaaaaaaab в грамматике
![\begin{align*}
S \; & {\to} \; S b , & T a \; & {\to} \; a a T , \\
S \; & {\to} \; S T , & T b \; & {\to} \; a b , \\
S \; & {\to} \; S U , & U a a a \; & {\to} \; a a U , \\
S \; & {\to} \; \varepsilon , & U a b \; & {\to} \; b ?
\end{align*}](/sites/default/files/tex_cache/5e6bc7119033dfe022bfde545f3f7efc.png)
Замечание 14.4.4. Неизвестно, порождает ли грамматика
![\begin{align*}
R \; & {\to} \; Ra , & Ta \; & {\to} \; aaT , \\
R \; & {\to} \; S , & Tb \; & {\to} \; ab , \\
S \; & {\to} \; Sb , & Uaaa \; & {\to} \; aaU , \\
S \; & {\to} \; ST , & Uab \; & {\to} \; b \\
S \; & {\to} \; SU , \\
S \; & {\to} \; \varepsilon ,
\end{align*}](/sites/default/files/tex_cache/08c38824da29c8ac271eb9f947c78123.png)
Упражнение 14.4.5.
Пусть .
Рассмотрим грамматику
![\begin{align*}
R \; & {\to} \; ccdcdcddccddcdccca , & ce \; & {\to} \; eca , \\
ac \; & {\to} \; ca , & eca \; & {\to} \; ce , \\
ca \; & {\to} \; ac , & de \; & {\to} \; edb , \\
bc \; & {\to} \; cb , & edb \; & {\to} \; de , \\
cb \; & {\to} \; bc , & cca \; & {\to} \; ccae , \\
ad \; & {\to} \; da , & ccae \; & {\to} \; cca . \\
da \; & {\to} \; ad , \\
bd \; & {\to} \; db , \\
db \; & {\to} \; bd ,
\end{align*}](/sites/default/files/tex_cache/806e68b3b4d046539c9a86d55c1eb566.png)
Упражнение 14.4.6. Является ли разрешимым язык, порождаемый грамматикой
![\begin{align*}
S \; & {\to} \; c S , & ac \; & {\to} \; ca , & cdc \; & {\to} \; cdc R , \\
S \; & {\to} \; d S , & ca \; & {\to} \; ac , & R cca \; & {\to} \; cc R , \\
S \; & {\to} \; aa , & bc \; & {\to} \; cb , & R ddb \; & {\to} \; dd R , \\
& & cb \; & {\to} \; bc , & R cdd \; & {\to} \; cdd T , \\
& & ad \; & {\to} \; da , & T cc \; & {\to} \; cca T , \\
& & da \; & {\to} \; ad , & T dd \; & {\to} \; ddb T , \\
& & bd \; & {\to} \; db , & T cdc \; & {\to} \; cdc ? \\
& & db \; & {\to} \; bd ,
\end{align*}](/sites/default/files/tex_cache/505159462a3690856b3af5a3b862dbd9.png)
Определение 14.4.7. Порождающая грамматика в нормальной форме -
это порождающая грамматика, в которой
каждое правило имеет вид ,
или
,
где
,
,
,
.
Теорема 14.4.8. Каждая порождающая грамматика эквивалентна некоторой порождающей грамматике в нормальной форме.
Упражнение 14.4.9.
Существует ли такая порождающая грамматика G,
что язык
не порождается ни одной грамматикой типа 0?