Теорема Бермана — Форчуна
Версия от 23:25, 27 апреля 2012; AndrewD (обсуждение | вклад)
Лемма (1): |
Доказательство: |
Пусть . Тогда и .Рассмотрим произвольный язык лемме). . Тогда . Так как , то , следовательно (поПолучили, что В обратную сторону доказательство аналогично. и . Значит . |
Определение: |
— булева формула . |
Лемма (2): |
Доказательство: |
, то есть . Тогда по лемме (1) . |
Определение: |
полином . |
Теорема (Махэни, light): |
Доказательство: |
Пусть существует . Разрешим за полином.Для начала напишем программу, разрешающую :if return if return 0 if return 1 return Ответом будет .Так как и , то , то есть . Поэтому, если в предыдущей программе заменить все обращения к , на , то полученная программа по прежнему будет разрешать .Оценим необходимый размер . Можно считать, что , где , а — монотонно возрастающий полином. Тогда . Так как , то , где — полином. Можно считать, что монотонно возрастает. Тогда размер можно оценить сверху: , где — полином.if //(1) return if return 0 if return 1 //(2) if exit return Рассмотрим двоичное дерево, получающееся в результате рекурсивных вызовов данной программы. Рассмотрим произвольный элемент Итого, данная программа разрешает . Заметим, что условие в ходе выполнения программы является ложным при обращении к элементу не более одного раза. Так как всего в не более элементов, то суммарно за все время выполнения программы условие принимает ложное значение не более раз. Отсюда следует, что присваивание выполняется не более раз, а значит в дереве не более внутренних вершин. Значит всего в дереве не более вершин, то есть данная программа работает за полиномиальное время. за полиномиальное время. А так как , то , то есть , откуда . |