Введение в теорию сложности (29 января 2024)
- Цель: наконец разобраться с тем, какие по сложности задачи бывают, какие решаются, какие нет.
- decision, search; decision-задача = множество (лежит, не лежит) = язык.
- Почти все задачи алгоритмически неразрешимы (счётное число решений, несчётное число задач).
- Алгоритмически не разрешимая задача (halting). Доказательство (от противного + инвертор). Ещё пример: пуст ли язык regexp.
- Классы по времени: DTime, P, EXP
- Полиномиальная иерархия: DTIME[f] строго в DTIME[f*log2(f)] (запуск с будильником). Следствие P ≠ EXP.
- Класс NP, примеры (k-CLIQUE & MAX-CLIQUE, HAM-PATH, IS-SORTED)
- Полиномиальное сведение (Карп), сведение по Куку (оракл с решением)
- Две Леммы про сводимость (A → B ⇒ ...)
- Классы NP-hard (NPh), NP-complete (NPc). Как правильно говорить "задача сложная"
− Перерыв −
- Класс coNP, пример PRIME & coPRIME
- Цель: найти хотя бы одну NP-полную задачу и построить ордерево сведений многих задач.
- BOUNDED-HALTING = BH. Th: BH ∈ NP-complete
- Сведения BH → CIRCUIT-SAT → SAT → 3-SAT → k-INDEPENDENT → k-CLIQUE (получили набор NP-полных задач)
- SAT → 3-SAT
- BH → CIRCUIT-SAT
- 3-SAT → k-INDEPENDENT
- k-INDEPENDENT → k-CLIQUE