Перечислимые языки — различия между версиями
Spolan (обсуждение | вклад) м |
|||
| Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
| − | + | '''Полуразрешимый язык''' <tex>-</tex> язык, для которого существует программа <tex>p</tex> такая, что <tex>\forall x \in L \Leftrightarrow p(x)=1</tex>. | |
}} | }} | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
| − | + | '''Перечислимый язык''' <tex>-</tex> язык, для которого существует программа <tex>g</tex> такая, что <tex>g(i) = x_i, L = \{x_1, x_2, .., x_n, ..\}</tex>. | |
}} | }} | ||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
| − | + | Пусть имеется некоторая программа <tex>p</tex>, которая может либо завершиться за конечное время и что-то вернуть, либо зависнуть. Тогда запуск программы <tex>p</tex> с тайм-лимитом <tex>TL</tex> будем обозначать как <tex>p|_{TL}</tex> и иметь в виду следующее: если за <tex>TL</tex> операций программа <tex>p</tex> корректно завершилась и что-то вернула, то <tex>p|_{TL}</tex> вернет то же самое; если же за <tex>TL</tex> операций программа <tex>p</tex> не успела завершиться, то <tex>p|_{TL}</tex> вернет <tex>\bot</tex> (специально зарезервированное значение). | |
| − | } | ||
| − | |||
| − | |||
| − | |||
| − | |||
}} | }} | ||
| − | |||
| − | |||
| − | |||
| − | |||
{{Теорема | {{Теорема | ||
|id=th1 | |id=th1 | ||
|statement= | |statement= | ||
| − | + | <tex>L-</tex> перечислимый <tex>\Leftrightarrow L-</tex> полуразрешимый. | |
|proof= | |proof= | ||
| − | Пусть | + | Пусть <tex>L-</tex> перечислимый. |
| − | + | :<tex>p(x):</tex> | |
| − | + | :: <tex>for ~ i = 1 ~ .. ~ \infty</tex> | |
| − | + | ::: <tex>if ~ g(i) = x</tex> | |
| − | : | + | :::: <tex>return ~ 1</tex> |
| − | :: | + | Пусть <tex>L-</tex> полуразрешимый. |
| − | ::: | + | :<tex>g_0(i):</tex> |
| − | + | ::<tex>cnt = 0</tex> | |
| − | :::: | + | :: <tex>for ~ k = 1 ~ .. ~ \infty</tex> |
| − | ::::: | + | ::: <tex>for ~ x \in \{x_1, x_2, .., x_k\}</tex> |
| − | :: | + | :::: <tex>if ~ p|_k(i) = 1</tex> |
| − | :: | + | ::::: <tex>cnt++</tex> |
| − | + | :::: <tex>if ~ cnt = i</tex> | |
| − | + | ::::: <tex>return ~ x</tex> | |
| − | |||
| − | + | :<tex>g(i):</tex> | |
| − | + | ::<tex>U = \emptyset</tex> | |
| − | + | :: <tex>for ~ j = 1 ~ .. ~ \infty</tex> | |
| + | ::: <tex>x \leftarrow g_0(j)</tex> | ||
| + | :::: <tex>if ~ x \notin U</tex> | ||
| + | ::::: <tex>cnt++</tex> | ||
| + | ::::: <tex>if ~ cnt = i</tex> | ||
| + | :::::: <tex>return ~ x</tex> | ||
| + | ::::: <tex>U.insert(x)</tex> | ||
| + | Приведённые программы доказывают эквивалентность определений. | ||
}} | }} | ||
| − | |||
{{Теорема | {{Теорема | ||
| Строка 55: | Строка 51: | ||
|statement= | |statement= | ||
Любой разрешимый язык <tex>L</tex> является перечислимым. | Любой разрешимый язык <tex>L</tex> является перечислимым. | ||
| − | |proof= | + | |proof= |
| − | + | Любой разрешимый язык <tex>L</tex> является полуразрешимым. А так как любой полуразрешимый язык является перечислимым, то разрешимый язык <tex>L</tex> является перечислимым. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
}} | }} | ||
Версия 05:12, 18 декабря 2011
| Определение: |
| Полуразрешимый язык язык, для которого существует программа такая, что . |
| Определение: |
| Перечислимый язык язык, для которого существует программа такая, что . |
| Определение: |
| Пусть имеется некоторая программа , которая может либо завершиться за конечное время и что-то вернуть, либо зависнуть. Тогда запуск программы с тайм-лимитом будем обозначать как и иметь в виду следующее: если за операций программа корректно завершилась и что-то вернула, то вернет то же самое; если же за операций программа не успела завершиться, то вернет (специально зарезервированное значение). |
| Теорема: |
перечислимый полуразрешимый. |
| Доказательство: |
|
Пусть перечислимый. Пусть полуразрешимый. |
| Теорема: |
Любой разрешимый язык является перечислимым. |
| Доказательство: |
| Любой разрешимый язык является полуразрешимым. А так как любой полуразрешимый язык является перечислимым, то разрешимый язык является перечислимым. |