Перечислимые языки — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «{{Определение |definition = Детерминированная машина Тьюринга <tex>\langle Q,\sum,\Gamma,b_0,\Delta,\{q_s\},\{q_a\}\rangle<…»)
 
м
Строка 1: Строка 1:
 
{{Определение
 
{{Определение
 
|definition =
 
|definition =
Детерминированная машина Тьюринга <tex>\langle Q,\sum,\Gamma,b_0,\Delta,\{q_s\},\{q_a\}\rangle</tex> допускает слово <tex>w\in \Sigma^{*}</tex>, если для некоторых <tex>m\in \mathbb{N}</tex> и <tex>n\in \mathbb{N}</tex> <tex>\langle \epsilon,q_s,b_0,w\rangle \vdash^{*}\langle b_0^{m},q_a,b_0,b_0^{n}\rangle</tex>
+
Перечисляющая программа для языка <tex>L</tex> - программа, по очереди выводящая все слова языка <tex>L</tex>. Если слово принадлежит языку, то программа за конечное время выдаст его на выходе. Слова, не принадлежащие языку, программа выводить не будет.
 
}}
 
}}
 +
 
{{Определение
 
{{Определение
 
|definition =
 
|definition =
Язык, допускаемый машиной Тьюринга <tex>M</tex>, - это язык, состоящий из всех допускаемых данной машиной Тьюринга слов.
+
Полуразрешающая программа для языка <tex>L</tex> - программа, которая при подаче на вход слова из языка за конечное время завершится и вернет 1, а при подаче на вход слова не из языка может за конечное время вернуть 0, а может и зависнуть.
 
}}
 
}}
 +
 
{{Определение
 
{{Определение
 
|definition =
 
|definition =
Язык называется <b>перечеслимым (рекурсивно перечислимым, полуразрешимым)</b>, если существует детерминированная машина Тьюринга, допускающая этот язык.
+
Перечислимый язык - язык, для которого существует перечисляющая программа.
 +
}}
 +
 
 +
{{Определение
 +
|definition =
 +
Перечислимый язык - язык, для которого существует полуразрешающая программа.
 
}}
 
}}
  
Строка 15: Строка 22:
 
|id=th1
 
|id=th1
 
|statement=
 
|statement=
Любой разрешимый язык является перечислимым.
+
Два определения перечислимого языка эквивалентны.
 
|proof=
 
|proof=
Пусть дана машина Тьюринга <tex>M=\langle Q,\sum,\Gamma,b_0,\Delta,\{q_s\},\{q_a, q_r\}\rangle</tex>, которая разрешает язык <tex>L</tex> тогда машина Тьюринга <tex>M'=\langle Q,\sum,\Gamma,b_0,\Delta,\{q_s\},\{q_a\}\rangle</tex> допускает язык <tex>L</tex>
+
Пусть имеется перечисляющая программа для языка, построим полуразрешающую. Сделаем это следующим образом. Получаем на вход некоторое слово <tex>w</tex>, запускаем перечисляющую программу. Если в процессе вывода слов встретится <tex>w</tex>, то завершаем работу, вернув 1. Таким образом при подаче на вход слова из языка построенная программа вернет 1 и завершится. Если же мы подадим на вход слово не из языка, то построенная программа будет работать бесконечно долго, что вполне устраивает. Таким образом полуразрешающая программа построена.
 +
 
 +
Теперь пусть имеется полуразрешающая программа для языка, построим перечисляющую.
 
}}
 
}}

Версия 22:35, 1 декабря 2010

Определение:
Перечисляющая программа для языка [math]L[/math] - программа, по очереди выводящая все слова языка [math]L[/math]. Если слово принадлежит языку, то программа за конечное время выдаст его на выходе. Слова, не принадлежащие языку, программа выводить не будет.


Определение:
Полуразрешающая программа для языка [math]L[/math] - программа, которая при подаче на вход слова из языка за конечное время завершится и вернет 1, а при подаче на вход слова не из языка может за конечное время вернуть 0, а может и зависнуть.


Определение:
Перечислимый язык - язык, для которого существует перечисляющая программа.


Определение:
Перечислимый язык - язык, для которого существует полуразрешающая программа.


Теорема:
Два определения перечислимого языка эквивалентны.
Доказательство:
[math]\triangleright[/math]

Пусть имеется перечисляющая программа для языка, построим полуразрешающую. Сделаем это следующим образом. Получаем на вход некоторое слово [math]w[/math], запускаем перечисляющую программу. Если в процессе вывода слов встретится [math]w[/math], то завершаем работу, вернув 1. Таким образом при подаче на вход слова из языка построенная программа вернет 1 и завершится. Если же мы подадим на вход слово не из языка, то построенная программа будет работать бесконечно долго, что вполне устраивает. Таким образом полуразрешающая программа построена.

Теперь пусть имеется полуразрешающая программа для языка, построим перечисляющую.
[math]\triangleleft[/math]