ЛЕКЦИЯ 13 КЛАСС BPP. ЗАДАЧИ ПОДСЧЕТА 1. Зависимость от «монетки» Зависимости такого рода используются в некоторых классах вероятностных вычислений. Часто встречаются случаи, когда значения 0 и 1 выпадают не с одинаковыми вероятностями (0,5), а с разными. Рассмотрим вероятностные вычисления со случайной величиной, которая равна 1 с вероятностью 𝑝 и 0 с вероятностью 1 − 𝑝. При решении различных задач используются разные значения 𝑝. Важно, является ли 𝑝 эффективно вычислимым. Например, можно считать, что последовательность из 0 и 1 кодирует ответы на требуемые вопросы (в битах числа 𝑝 будут записаны ответы ко всем входам). Тогда можно повторять опыт по выбору одного из двух случайных значений («подбрасывание монетки») и с высокой степенью точности вычислять конкретный бит (можно рассматривать невыполнимый язык и считать, что 𝑝 задает его характеристическую функцию). Если 𝑝 не вычислимо (вычислимое число — это число, по номеру одного из битов которого можно вычислить другие биты), то можно вычислить биты 𝑝 с высокой вероятностью. В любом случае можно создать модель «честной монеты». Для этого можно провести бросание монеты два раза: 01 → 0; 10 → 1; 00, 11 → повторить. Если 𝑝 является полиномиально вычислимым (то есть если за время poly(𝑖) можно вычислить 𝑝u� ), то монету (𝑝, 1 − 𝑝) можно смоделировать при помощи обычной. В общем случае применяется следующий алгоритм: пусть 𝑏u� — случайный бит, 𝑝u� — бит 𝑝. Если 𝑏u� < 𝑝u� → выдать 1; 𝑏u� > 𝑝u� → выдать 0; ! Конспект не проходил проф. редактуру, создан студентами и, возможно, содержит смысловые ошибки. Следите за обновлениями на lectoriy.mipt.ru. 2 𝑏u� = 𝑝u� → перейти к 𝑖 + 1. 1 В качестве примера рассмотрим . 3 1 = 0, 1010101 …2 3 — в двоичной записи. На первых двух шагах: 10 → 0; 11 → 0; 00 → 1; 01 → повторить. 2. Вероятностное вычисление с ограничением на память Широко используется класс BPPSPACE=PSPACE: можно посчитать все вероятности на полиномиальной памяти. Также существуют логарифмические вероятностные вычисления. Например, SPL, RL — классы языков, которые распознаются вероятностной машиной на логарифмической памяти с двусторонней или односторонней ошибкой. Рассмотрим задачу пути в графе UPATH ∈ RL — существование пути из 𝑠 в 𝑡 в ненаправленном графе. Можно запустить достаточно долгое случайное блуждание. Если 𝑡 будет посещено, то ответ «да» (∼ 𝑙4 ). Если 𝑡 не будет посещено, то ответ «нет». Для ориентированный графов эта схема не работает, то есть вопрос о том, как соотносятся RL и NL, остается открытым. Утверждение PATH ∈ RL нельзя доказать при помощи случайных блужданий. Рис. 13.1 Рассмотрим цепочку, в каждой вершине которой есть ребро, ведущее к началу. Чтобы пройти до 𝑛-й вершины, нужно 𝑛 раз подряд выбрать соответствующее ребро. Вероятность перехода 𝑝 = 2−u� . Значит, средняя длина будет расти экспоненциально. 3. Задачи подсчета В этом разделе будут рассматриваться задачи распознавания. SAT = {𝜙|𝜙 — выполнимый функционал}; ! Для подготовки к экзаменам пользуйтесь учебной литературой. Об обнаруженных неточностях и замечаниях просьба писать на pulsar@ phystech. edu 3 ! Конспект не проходил проф. редактуру, создан студентами и, возможно, содержит смысловые ошибки. Следите за обновлениями на lectoriy.mipt.ru. CYCLE = {𝐺|𝐺 — ориентированный граф, содержащий ориентированный цикл} ∈ P. Существуют модификации этих задач: #SAT — задача подсчета по формуле 𝜙 числа выполняющих наборов, #CYCLE — задача подсчета по графу 𝐺 числа ориентированных циклов. #SAT — NP-трудная; по ее результату можно решить NP-трудную задачу (сравниваем ответ с 0 — решаем SAT). #CYCLE — также NP-трудная. Она позволяет решить задачу о гамильтоновом цикле, которая имеет следующую конструкцию: Пусть 𝐺 — граф, в котором ищется гамильтонов цикл. Заменим каждое ребро 𝑢 → 𝑣 на следующую структуру: Рис. 13.2 Число способов пройти: 2u� = 𝑛u� . Если в графе есть гамильтонов цикл, то есть цикл длины 𝑛 в исходном графе, а 2 значит, есть более чем (𝑛u� )u� = 𝑛u� циклов в новом графе. Если в графе нет гамильтонова цикла, то все циклы имеют длину, не превышающую 𝑛 − 1, и количество циклов в старом графе не превосходит 𝑛u�−1 . Значит, число циклов 2 2 в новом графе не превосходит 𝑛u�−1 ⋅ (𝑛u� )u�−1 = 𝑛u� −1 < 𝑛u� . Алгоритм, сравнивающий 2 число циклов с 𝑛u� , превращается в алгоритм, решающий задачу HAMCYCLE. Определение 48: #P — это класс задач подсчета вида: вход: 𝑥; выход: #{𝑦 ∈ {0, 1}u�(|u�|) ∶ 𝑉 (𝑥, 𝑦) = 1}, где 𝑉 — полиномиальный алгоритм (т. е. это класс задач подсчета сертификатов для некоторого NP-верификатора). ♣ Определение 49: FP — это класс функций, вычислимых за полиномиальное время.♣ Справедливо следующее соотношение: FP ⊂ #P. Если функция 𝑉 (𝑥, 𝑦) = { 1, 0, 𝑦 < 𝑓(𝑥); 𝑦 ⩾ 𝑓(𝑥) вычислима за полиномиальное время, то из нее можно сделать верификатор 𝑉 , для которого количество сертификатов будет равно значению функции. 𝑓(𝑥) — некоторое число, которое записывается полиномиальным числом битов; 𝑦 — число, записанное тем ! Для подготовки к экзаменам пользуйтесь учебной литературой. Об обнаруженных неточностях и замечаниях просьба писать на pulsar@ phystech. edu ! Конспект не проходил проф. редактуру, создан студентами и, возможно, содержит смысловые ошибки. Следите за обновлениями на lectoriy.mipt.ru. 4 же числом битов. Число 𝑦, которые меньше 𝑓(𝑥), равно 𝑓(𝑥) (если начинать отсчет с нуля). Если FP=#P, то P=NP (это значит, что можно находить число сертификатов за полиномиальное время и сравнивать с нулем). Если P=PSPACE, то FP=#P (так как на полиномиальной памяти можно найти число сертификатов). Теорема 25 FP = #P ⟺ P = PP, где 1 PP = {𝐿 ∶ ∃ 𝑉 𝑥 ∈ 𝐿 ⟺ доля {𝑦 ∶ 𝑉 (𝑥, 𝑦) = 1} ⩾ } . 2 Док-во: ⟹ Если#P=FP, то количество 𝑦 можно посчитать точно. ⟸ Нужно доказать, что #P ⊂ FP, то есть количество 𝑦 ∶ 𝑉 (𝑥, 𝑦) = 1 можно найти 1 точно, если есть возможность сравнивать его с . 2 Используем двоичный поиск. Реализация (здесь 𝑏 ∈ {0, 1}): ⎧𝑉 (𝑥, 𝑦), 𝑏 = 0; { 𝑊u� (𝑥, 𝑏𝑦) = 1, 𝑏 = 1, 𝑦 < 𝑁 ; ⎨ {0, 𝑏 = 1, 𝑦 ⩾ 𝑁 . ⎩ #{𝑧 ∶ 𝑊 (𝑥, 𝑧) = 1} = 𝑁 + #{𝑦 ∶ 𝑉 (𝑥, 𝑦) = 1}. 1 |u�| ⋅ 2 = 2|u�| . Значит, можно 2 сравнивать #{𝑦 ∶ 𝑉 (𝑥, 𝑦) = 1} с 2|u�| − 𝑁 . Подстановкой нужных 𝑁 двоичным поиском находим точное значение. Таким образом, FP = #P. Если P = PP, то можно сравнивать #{𝑧 ∶ 𝑊 (𝑥, 𝑦) = 1} с ! Для подготовки к экзаменам пользуйтесь учебной литературой. Об обнаруженных неточностях и замечаниях просьба писать на pulsar@ phystech. edu