Счетчиковые машины, эквивалентность двухсчетчиковой машины МТ — различия между версиями
(→Эквивалентность двухсчётчиковой машины трёхсчётчиковой) |
|||
Строка 35: | Строка 35: | ||
|statement=Для любого <tex>k</tex> и для любой <tex>k</tex>-счётчиковой машины существует эквивалентная ей двухсчётчиковая машина. | |statement=Для любого <tex>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> — <tex>k</tex>-е простое число. Тогда любое состояние k-счётчиковой машины можно хранить на одном счётчике, | + | Для доказательства покажем, как имитировать <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> — <tex>k</tex>-е простое число. |
+ | Тогда любое состояние k-счётчиковой машины можно хранить на одном счётчике, и использовать второй счётчик для временных вычислений. | ||
+ | |||
+ | Тогда элементарные операции на <tex>k</tex>-счётчиковой машине реализуются следующим образом. | ||
+ | *Увеличить <tex>i</tex>-й счётчик. Для этого необходимо умножить значение счётчика на <tex>p_i</tex>. | ||
+ | *Уменьшить <tex>i</tex>-й счётчик. Для этого необходимо поделить значение счётчика на <tex>p_i</tex>. | ||
+ | *Сравнить с нулём значение <tex>i</tex>-го счётчика. Для этого необходимо найти остаток от деления значения счётчика на <tex>p_i</tex> и сравнить его с нулём. | ||
+ | Операции умножения деления и нахождения остатка при помощи двух счётчиков описаны в предыдущей лемме. | ||
+ | Таким образом, для любого <tex>k</tex> и для любой <tex>k</tex>-счётчиковой машины существует эквивалентная ей двухсчётчиковая машина. | ||
}} | }} | ||
+ | == Эквивалентность двухсчётчиковой машины МТ == | ||
{{Теорема | {{Теорема | ||
|statement=Для любого перечислимого языка <tex>L</tex> существует двухсчётчиковая машина, которая распознает этот язык. | |statement=Для любого перечислимого языка <tex>L</tex> существует двухсчётчиковая машина, которая распознает этот язык. | ||
|proof= | |proof= | ||
− | Утверждение теоремы очевидно следует из двух описанных выше лемм, | + | Утверждение теоремы очевидно следует из двух описанных выше лемм, [[Стековые машины, эквивалентность двухстековой машины МТ|эквивалентности двухстековой машины машине Тьюринга]] и тезиса Тьюринга-Черча. |
}} | }} | ||
==Источники== | ==Источники== | ||
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.) | * ''Хопкрофт Д., Мотвани Р., Ульман Д.'' — '''Введение в теорию автоматов, языков и вычислений''', 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.) |
Версия 04:06, 24 января 2012
Содержание
Счётчиковые машины
Определение: |
Для каждого счётчика возможны четыре операции: увеличить на один, уменьшить на один, не изменять значение, проверить является ли значение счетчика нулём. Будем считать, что значение нулевых счётчиков уменьшать нельзя. | -счётчиковой машиной называется набор , где
По сути, с односимвольным алфавитом. -стековой машиной
-счётчиковая машина являетсяЭквивалентность двухстековой машины трёхсчётчикой машине
Лемма: |
Язык допускается двухстековой машиной тогда и только тогда, когда он допускается трёхсчётчиковой машиной. |
Доказательство: |
Для доказательства необходимо показать, что двухстековая машина имитируется на трёхсчётчиковой. Пусть - стековый алфавит, . Пронумеруем символы алфавита от до . Тогда стек можно рассматривать как целое число в системе счисления с основанием .Будем использовать два счётчика для хранения состояний двух стеков, а третий счетчик будем использовать для временных вычислений. Для стека существует три типа элементарных операций: положить символ в стек, снять символ со стека, проверить верхний символ стека. Рассмотрим реализацию этих операция на трёхсчётчиковой машине.
Трёхсчётчиковая машина является частным случаем трёхстековой машины, а любая -стековая машина эквивалента по вычислительной мощности двухстековой, следовательно, любой язык, допускаемый трёхсчётчиковой машиной, допускается двухстековой. |
Эквивалентность двухсчётчиковой машины трёхсчётчиковой
Лемма: |
Для любого и для любой -счётчиковой машины существует эквивалентная ей двухсчётчиковая машина. |
Доказательство: |
Для доказательства покажем, как имитировать -счётчиковую машины на двухсчётчиковой. Пусть — значения счётчиков -счётчиковой машины. Тогда состояние -счётчиковой машины можно охарактеризовать одним числом , где — -е простое число. Тогда любое состояние k-счётчиковой машины можно хранить на одном счётчике, и использовать второй счётчик для временных вычислений.Тогда элементарные операции на -счётчиковой машине реализуются следующим образом.
Операции умножения деления и нахождения остатка при помощи двух счётчиков описаны в предыдущей лемме. Таким образом, для любого и для любой -счётчиковой машины существует эквивалентная ей двухсчётчиковая машина. |
Эквивалентность двухсчётчиковой машины МТ
Теорема: |
Для любого перечислимого языка существует двухсчётчиковая машина, которая распознает этот язык. |
Доказательство: |
Утверждение теоремы очевидно следует из двух описанных выше лемм, эквивалентности двухстековой машины машине Тьюринга и тезиса Тьюринга-Черча. |
Источники
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)