Стековые машины, эквивалентность двухстековой машины МТ — различия между версиями
Воронов (обсуждение | вклад) |
Воронов (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
== Стековая машина == | == Стековая машина == | ||
− | [[Изображение:PDAk.png|620px|thumb| | + | [[Изображение:PDAk.png|620px|thumb|center|Рис. 1. k-стековая машина]] |
Стековая машина является обобщением детерминированных МП-автоматов использованием нескольких стеков вместо одного. <br> | Стековая машина является обобщением детерминированных МП-автоматов использованием нескольких стеков вместо одного. <br> | ||
На рис. 1 изображена '''k-стековая машина'''. С ленты последовательно считываются символы входного алфавита (<tex>c_i</tex> — текущий считываемый символ). В каждом стеке с вершины снимается символ <tex>x_i</tex>, вместо него помещается строка <tex>\alpha_i</tex> таким образом, чтобы первый символ строки находился на вершине стека и делается переход в автомате в зависимости от считанного с ленты символа <tex>c_i</tex> и снятых со стеков верхних значений <tex>x_i</tex>. Возможен также и <tex>\varepsilon\</tex>-переход. | На рис. 1 изображена '''k-стековая машина'''. С ленты последовательно считываются символы входного алфавита (<tex>c_i</tex> — текущий считываемый символ). В каждом стеке с вершины снимается символ <tex>x_i</tex>, вместо него помещается строка <tex>\alpha_i</tex> таким образом, чтобы первый символ строки находился на вершине стека и делается переход в автомате в зависимости от считанного с ленты символа <tex>c_i</tex> и снятых со стеков верхних значений <tex>x_i</tex>. Возможен также и <tex>\varepsilon\</tex>-переход. | ||
Строка 20: | Строка 20: | ||
|proof= | |proof= | ||
Для упрощения доказательства без умаления общности предположим, что вход для двухстековой машины заканчивается специальным символом <tex>\$</tex>, которого нет в исходном алфавите. <br> | Для упрощения доказательства без умаления общности предположим, что вход для двухстековой машины заканчивается специальным символом <tex>\$</tex>, которого нет в исходном алфавите. <br> | ||
− | [[Изображение:SM.png|400px|thumb| | + | [[Изображение:SM.png|400px|thumb|center|Рис. 2. Представление ленты МТ двумя стеками и наоборот]] |
− | <tex>\Rightarrow | + | <tex>\Rightarrow</tex> <br> |
Докажем, что если язык <tex>L</tex> допускается машиной Тьюринга, то он допускается двухстековой машиной. <br> | Докажем, что если язык <tex>L</tex> допускается машиной Тьюринга, то он допускается двухстековой машиной. <br> | ||
Мы будем имитировать ленту МТ двумя стеками (Рис. 2). В первом стеке будет хранится кусок ленты слева от положения головки, во втором стеке — справа, включая текущий символ. Разумеется, куски ленты хранятся без бесконечных цепочек пробелов, окружающих значащие символы ленты. <br> | Мы будем имитировать ленту МТ двумя стеками (Рис. 2). В первом стеке будет хранится кусок ленты слева от положения головки, во втором стеке — справа, включая текущий символ. Разумеется, куски ленты хранятся без бесконечных цепочек пробелов, окружающих значащие символы ленты. <br> | ||
Строка 30: | Строка 30: | ||
Таким образом, мы с помощью двухстековой машины сымитировали МТ. | Таким образом, мы с помощью двухстековой машины сымитировали МТ. | ||
− | <tex>\Leftarrow | + | <tex>\Leftarrow</tex> <br> Этот пункт доказательства аналогичен предыдущему. Содержимое двух стеков отображается лентой МТ также, как и в предыдущем пункте (рис. 2). Снятие, например, с первого стека символа соответствует сдвигу куска ленты, соответствующего второму стеку, влево на одну позицию, что прекрасно умеет делать МТ. Положить символ на этот стек соответствует сдвигу куска ленты, соответствующего второму стеку, вправо на одну позицию, записи этого символа на место начального положения головки и сдвигу головки вправо на одну позицию (действие "положить цепочку на стек" аналогично последовательности действий "положить на стек один символ"). Операции со вторым стеком имитируются аналогично. |
}} | }} | ||
==Источники== | ==Источники== | ||
− | + | Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений. |
Версия 02:29, 29 декабря 2011
Стековая машина
Стековая машина является обобщением детерминированных МП-автоматов использованием нескольких стеков вместо одного.
На рис. 1 изображена k-стековая машина. С ленты последовательно считываются символы входного алфавита ( — текущий считываемый символ). В каждом стеке с вершины снимается символ , вместо него помещается строка таким образом, чтобы первый символ строки находился на вершине стека и делается переход в автомате в зависимости от считанного с ленты символа и снятых со стеков верхних значений . Возможен также и -переход.
Определение: |
| -cтековой машиной называется набор A= , где
Эквивалентность двухстековой машины машине Тьюринга
Теорема: |
Язык допускается машиной Тьюринга тогда и только тогда, когда он допускается двухстековой машиной. |
Доказательство: |
Для упрощения доказательства без умаления общности предположим, что вход для двухстековой машины заканчивается специальным символом
Этот пункт доказательства аналогичен предыдущему. Содержимое двух стеков отображается лентой МТ также, как и в предыдущем пункте (рис. 2). Снятие, например, с первого стека символа соответствует сдвигу куска ленты, соответствующего второму стеку, влево на одну позицию, что прекрасно умеет делать МТ. Положить символ на этот стек соответствует сдвигу куска ленты, соответствующего второму стеку, вправо на одну позицию, записи этого символа на место начального положения головки и сдвигу головки вправо на одну позицию (действие "положить цепочку на стек" аналогично последовательности действий "положить на стек один символ"). Операции со вторым стеком имитируются аналогично. |
Источники
Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.