36
правок
Изменения
Нет описания правки
Формально, пусть <tex>Tm</tex> имеет на ленте <tex>\#w\#A_1A_2 \ldots A_k\#</tex>. <tex>Tm</tex> передвигает недетерминированно головку по <tex>A_1A_2
\ldots A_k</tex>, выбирая позицию <tex>i</tex> и константу <tex>r</tex> между <tex>1</tex> и максимальной длиной левой части любого правила вывода в <tex>P</tex>. Затем <tex>Tm</tex> проверяет подстроки <tex>A_iA_{i+1}...\ldots A_{i+r-1}</tex>. Если <tex>A_iA_{i+1}...\ldots A_{i+r-1}</tex> — левая часть некоторого правила вывода из <tex>P</tex>, она может быть заменена на правую часть. <tex>Tm</tex> может сдвинуть <tex>A_{i+r}A_{i+r+1}...\ldots A_k\#</tex> либо влево, либо вправо, освобождая или заполняя место, если правая часть имеет длину, отличную от <tex>r</tex>.
Из этой простой симуляции выводов в <tex>G</tex> видно, что <tex>Tm</tex> печатает на ленте строку вида <tex>\#w\#y\#</tex>, <tex>y \in V*</tex> в точности, если <tex>S \Rightarrow^* y</tex>. Если <tex>y = w</tex>, <tex>Tm</tex> допускает <tex>L</tex>.
Используя правила 1 и 2, <Br>
<tex>A_1 \Rightarrow^* q_o[a_1,a_1][a_2,a_2]...\ldots [a_n,a_n]A_2</tex>, где <tex>a_i \in \Sigma</tex> для некоторого <tex>i</tex>.
Предположим, что <tex>Tm</tex> допускает строку <tex>a_1a_2...\ldots a_n</tex>. Тогда для некоторого <tex>m</tex> <tex>Tm</tex> использует не более, чем <tex>m</tex> ячеек справа от входа. Используя правило 3, а затем правило 4 <tex>m</tex> раз, и, наконец, правило 5, имеем:<br><tex>A_1 \Rightarrow^* q_0[a_1,a_1][a_2,a_2]...\ldots [a_n,a_n][e,B]^m</tex>.<br>Начиная с этого момента могут быть использованы только правила 6 и 7, пока не сгенерируется допускающее состояние. Отметим, что первые компоненты ленточных символов в <tex>(\Sigma \cup {e}) \times \Gamma</tex> никогда не меняются. Индукцией по числу шагов <tex>Tm</tex> можно показать, что если <tex>(q_0,a_1a_2...\ldots a_n,1)\vdash(q, X_1X_2...\ldots X_S,r)</tex>, то <tex>q_0[a_1,a_1][a_2,a_2]...\ldots [a_n,a_n][e,B]^m \Rightarrow [a_1,X_1][a_2,X_2]...\ldots [a_{r-1},X_{r-1}]q[a_r,X_r]...\ldots [a_{n+m},X_{n+m}]</tex>, где <tex> a_1,a_2,...\ldots,a_n \in \Sigma</tex>, <tex>a_{n+1}=a_{n+2}=...\ldots =a_{n+m}=e</tex>, <tex>X_1, X_2,...\ldots ,X_{n+m} \in \Gamma</tex> и <tex>X_{S+1}=X_{S+2}=...\ldots =X_{n+m}=B</tex>.
Предположение индукции тривиально для нуля шагов. Предположим, что оно справедливо для <tex>k - 1</tex> шагов. Пусть <br><tex>(q_0,a_1a_2...\ldots a_n,1) \vdash (q_1,X_1X_2...\ldots X_r,j_1) \vdash (q_2,Y_1Y_2...\ldots Y_S,j_2)</tex><br> за <tex>k</tex> шагов. По предположению индукции<br><tex>q_0[a_1,a_1][a_2,a_2]...\ldots [a_n,a_n][e,B]^m \Rightarrow [a_1,X_1][a_2][X_2]...\ldots [a_{r-1},X_{r-1}]q_1[a_{j_1},X_{j_1}]...\ldots [a_{n+m},X_{n+m}</tex>.<br>
Пусть <tex>E=L</tex>, если <tex>j_2 = j_1 - 1</tex> и <tex>E = R</tex>, если <tex>j_2 = j_1 + 1</tex>. В этом случае <tex>D(q_1, X_{j_1}) = (q_1, Y_{j_1}, E)</tex>.
Теперь <tex>X_i=Y_i \forall i \neq j_1</tex>.
Таким образом, <Tex>q_0[a_1,a_1][a_2,a_2]...\ldots [a_n,a_n][e,B]^m \Rightarrow [a_1,Y_1]q_2[a_{j_2},Y_{j_2}]...\ldots [a_{n+m},Y_{n+m}]</tex>, что доказывает предположение индукции.
По правилам 8-10, если <Tex>q \in F</tex>, легко показать что <tex>[a_1,X_1]...\ldots q[a_j,X_j]...\ldots [a_{n+m},X_{n+m}] \Rightarrow^* a_1a_2...\ldots a_n</tex>.
Таким образом, <tex>G</tex> может генерировать <tex>a_1a_2...\ldots a_n</tex>, если <tex>a_1a_2...\ldots a_n</tex> допускается <tex>Tm</tex>. Таким образом, <tex>L(G)</tex> включает все слова, допускаемые <tex>Tm</tex>. Для завершения доказательства необходимо показать, что все слова из <tex>L(G)</tex> допускаются <Tex>Tm</tex>. Индукцией доказывается, что <tex>A_1 \Rightarrow w</tex> только если <Tex>w</tex> допускается <tex>Tm</tex>.
}}