Перечислимые языки
Версия от 22:35, 1 декабря 2010; Spolan (обсуждение | вклад)
Определение: |
Перечисляющая программа для языка | - программа, по очереди выводящая все слова языка . Если слово принадлежит языку, то программа за конечное время выдаст его на выходе. Слова, не принадлежащие языку, программа выводить не будет.
Определение: |
Полуразрешающая программа для языка | - программа, которая при подаче на вход слова из языка за конечное время завершится и вернет 1, а при подаче на вход слова не из языка может за конечное время вернуть 0, а может и зависнуть.
Определение: |
Перечислимый язык - язык, для которого существует перечисляющая программа. |
Определение: |
Перечислимый язык - язык, для которого существует полуразрешающая программа. |
Теорема: |
Два определения перечислимого языка эквивалентны. |
Доказательство: |
Пусть имеется перечисляющая программа для языка, построим полуразрешающую. Сделаем это следующим образом. Получаем на вход некоторое слово Теперь пусть имеется полуразрешающая программа для языка, построим перечисляющую. , запускаем перечисляющую программу. Если в процессе вывода слов встретится , то завершаем работу, вернув 1. Таким образом при подаче на вход слова из языка построенная программа вернет 1 и завершится. Если же мы подадим на вход слово не из языка, то построенная программа будет работать бесконечно долго, что вполне устраивает. Таким образом полуразрешающая программа построена. |