Счетчиковые машины, эквивалентность двухсчетчиковой машины МТ — различия между версиями
Leugenea (обсуждение | вклад) м |
(→Эквивалентность двухсчетчиковой машины машине Тьюринга) |
||
Строка 42: | Строка 42: | ||
|statement=<tex>\forall k</tex> и для любой <tex>k</tex>-счетчиковой машины существует эквивалентная ей двухсчетчиковая машина. | |statement=<tex>\forall k</tex> и для любой <tex>k</tex>-счетчиковой машины существует эквивалентная ей двухсчетчиковая машина. | ||
|proof= | |proof= | ||
− | Пусть <tex>C_1, C_2, ..., C_k</tex> - значения счетчиков <tex>k</tex>-счетчиковой машины. Тогда состояние <tex>k</tex>-счетчиковой машины можно охарактеризовать одним числом <tex>2^{C_1}*3^{C_2}*...*p_k^{C_k}</tex>, где <tex>p_k</tex> - k-е простое число. Тогда любое состояние k-счетчиковой машины можно хранить на одном счетчике, а операции увеличения значения счетчика, уменьшения значения счетчика и проверки является ли счетчик нулем осуществляются на двухсчетчиковой машине при помощи операций умножения, деления и нахождения остатка от деления на соответствующее номеру счетчика простое число. Для этих вычислений и будет использоваться второй счетчик. Таким образом, <tex>\forall k</tex> и для любой <tex>k</tex>-счетчиковой машины | + | Пусть <tex>C_1, C_2, ..., C_k</tex> - значения счетчиков <tex>k</tex>-счетчиковой машины. Тогда состояние <tex>k</tex>-счетчиковой машины можно охарактеризовать одним числом <tex>2^{C_1}*3^{C_2}*...*p_k^{C_k}</tex>, где <tex>p_k</tex> - k-е простое число. Тогда любое состояние k-счетчиковой машины можно хранить на одном счетчике, а операции увеличения значения счетчика, уменьшения значения счетчика и проверки является ли счетчик нулем осуществляются на двухсчетчиковой машине при помощи операций умножения, деления и нахождения остатка от деления на соответствующее номеру счетчика простое число. Для этих вычислений и будет использоваться второй счетчик. Таким образом, <tex>\forall k</tex> и для любой <tex>k</tex>-счетчиковой машины существует эквивалентная ей двухсчетчиковая машина. |
}} | }} | ||
Версия 07:59, 5 января 2012
Определение: |
Для каждого счетчика возможны четыре операции: увеличить на один, уменьшить на один, не изменять значение, проверить является ли значение счетчика нулем. Будем считать, что значение нулевых счетчиков уменьшать нельзя. | -счетчиковой машиной называется набор , где
По сути, с односимвольным алфавитом. -стековой машиной
-счетчиковая машина являетсяЭквивалентность двухсчетчиковой машины машине Тьюринга
Лемма: |
Язык допускается машиной Тьюринга тогда и только тогда, когда он допускается трехсчетчиковой машиной. |
Доказательство: |
Так как двухстековая машина эквивалентна машине Тьюринга, то достаточно показать, что трехсчетчиковая машина эквивалентна по вычислительной мощности трехсчетчиковой машине. Пусть стековая машина имеет стековый алфавит . Тогда любое из состояний стеков можно считать числом в системе счисления с основанием . Пусть первому стеку соответствует число на первом счетчике трехсчетчиковой машины, второму стеку - второе, а третий счетчик используется для временных вычислений. Тогда операции со стеком можно реализовать на трехсчетчиковой машине:
Все эти элементарные операции очевидно реализуются при помощи третьего счетчика. Например, рассмотрим операцию добавления символа в стек. Напишем программу для трехсчетчиковой машины, реализующую эту операцию. while (первый счетчик не ноль)
{
for (i = 0; i <
Аналогично реализуются остальные стековые операции. Таким образом получили, что для любой операции с двухстековой машиной существует эквивалентная операция с трехсчетчиковой машиной. Так как стековый алфавит конечен, то и управляющий автомат эквивалентной трехсчетчиковой машины будет иметь конечное число состояний. То есть для любой двухстековой машины существует эквивалентная ей трехсчетчиковая. ; ++i)
увеличить третий счетчик;
уменьшить первый счетчик;
}
for (i = 0; i < номер добавляемого символа в алфавите; ++i)
увеличить третий счетчик;
while (третий счетчик не ноль)
{
уменьшить третий счетчик;
увеличить первый счетчик;
}
|
Лемма: |
и для любой -счетчиковой машины существует эквивалентная ей двухсчетчиковая машина. |
Доказательство: |
Пусть | - значения счетчиков -счетчиковой машины. Тогда состояние -счетчиковой машины можно охарактеризовать одним числом , где - k-е простое число. Тогда любое состояние k-счетчиковой машины можно хранить на одном счетчике, а операции увеличения значения счетчика, уменьшения значения счетчика и проверки является ли счетчик нулем осуществляются на двухсчетчиковой машине при помощи операций умножения, деления и нахождения остатка от деления на соответствующее номеру счетчика простое число. Для этих вычислений и будет использоваться второй счетчик. Таким образом, и для любой -счетчиковой машины существует эквивалентная ей двухсчетчиковая машина.
Теорема: |
Для любого перечислимого языка существует двухсчетчиковая машина, которая распознает этот язык. |
Доказательство: |
Утверждение теоремы очевидно следует из двух описанных выше лемм, тезиса Тьюринга-Черча и эквивалентности двухстековой машины машине Тьюринга. |
Источники
Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.