Счетчиковые машины, эквивалентность двухсчетчиковой машины МТ — различия между версиями
(→Эквивалентность двухсчетчиковой машины машине Тьюринга) |
(→Эквивалентность двухсчетчиковой машины машине Тьюринга) |
||
Строка 22: | Строка 22: | ||
*Удаление символа из стека: целочисленно разделить значение счетчика на <tex>|\Pi|</tex>. | *Удаление символа из стека: целочисленно разделить значение счетчика на <tex>|\Pi|</tex>. | ||
*Проверить верхний символ стека: найти остаток от деления значения счетчика на <tex>|\Pi|</tex>. | *Проверить верхний символ стека: найти остаток от деления значения счетчика на <tex>|\Pi|</tex>. | ||
+ | Все эти элементарные операции очевидно реализуются при помощи третьего счетчика. Например, рассмотрим операцию добавления символа в стек. Напишем программу для трехсчетчиковой машины, реализующую эту операцию. | ||
+ | '''while''' (перый счетчик не ноль) | ||
+ | { | ||
+ | '''for''' (i = 0; i < <tex>|\Pi|</tex>; ++i) | ||
+ | увеличить третий счетчик; | ||
+ | уменьшить первый счетчик; | ||
+ | } | ||
+ | '''for''' (i = 0; i < номер добавляемого символа в алфавите; ++i) | ||
+ | увеличить третий счетчик; | ||
+ | '''while''' (третий счетчик не ноль) | ||
+ | { | ||
+ | уменьшить третий счетчик; | ||
+ | увеличить первый счетчик; | ||
+ | } | ||
+ | Аналогично реализуются остальные стековые операции. Такм образом получили, что для люьой опреации с двухстековой машиной сществует эквивалентная операция с трехсчтечиковой машиной. Так как стековый алфавит конечен, то и управляющий автомат эквивалентной трехсчетчиковой машины будет иметь конечное число состояний. То есть для любой двухстековой машины существует эквивалентная ей трехсчетчиковая. | ||
}} | }} | ||
==Источники== | ==Источники== | ||
Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений. | Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений. |
Версия 21:24, 3 января 2012
Определение: |
Для каждого счетчика возможны четыре операции: увеличить на один, уменьшить на один, не изменять значение, проверить является ли значение счетчика нулем. Будем считать, что значение нулевых счетчиков уменьшать нельзя. | -счетчиковой машиной называется набор A= , где
По сути, с односимвольным алфавитом. -стековой машиной
-счетчиковая машина являетсяЭквивалентность двухсчетчиковой машины машине Тьюринга
Лемма: |
Язык допускается машиной Тьюринга тогда и только тогда, когда он допускается трехсчетчиковой машиной. |
Доказательство: |
Так как двухстековая машина эквивалентна машине Тьюринга, то достаточно показать, что трехсчетчиковая машина эквивалентна по вычислительной мощности трехсчетчиковой машине. Пусть стековая машина имеет стековый алфавит . Тогда любое из состояний стеков можно считать числом в системе счисления с основанием . Пусть первому стеку соотвествует число на первом счетчике трехсчетчиковой машины, второму стеку - второе, а третий счетчик используется для временных вычислений. Тогда операции со стеком можно реализовать на трехсчетчиковой машине:
Все эти элементарные операции очевидно реализуются при помощи третьего счетчика. Например, рассмотрим операцию добавления символа в стек. Напишем программу для трехсчетчиковой машины, реализующую эту операцию. while (перый счетчик не ноль)
{
for (i = 0; i <
Аналогично реализуются остальные стековые операции. Такм образом получили, что для люьой опреации с двухстековой машиной сществует эквивалентная операция с трехсчтечиковой машиной. Так как стековый алфавит конечен, то и управляющий автомат эквивалентной трехсчетчиковой машины будет иметь конечное число состояний. То есть для любой двухстековой машины существует эквивалентная ей трехсчетчиковая. ; ++i)
увеличить третий счетчик;
уменьшить первый счетчик;
}
for (i = 0; i < номер добавляемого символа в алфавите; ++i)
увеличить третий счетчик;
while (третий счетчик не ноль)
{
уменьшить третий счетчик;
увеличить первый счетчик;
}
|
Источники
Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.