День 10. Игры на графах.
- [Игорь Лабутин] Симметричные и несимметричные на ацикличном графе: win[state], win[state,who]
- Пример: кучка из n камней, за ход можно брать ai первому игроку, bi второму
- [Игорь Лабутин] Ретроанализ для симметричной игры на графе с циклами
- Вычисление за O(V+E) dfs/bfs-ом с конца результата игры из каждой вершины
- Вычисление длины игры, если из WIN-позиции игрок минимизирует длину игры, а из LOSE-позиции максимизирует
- [Игорь Лабутин] Гранди
- Ним: xor выигрывает c доказательством
- Определяем функцию Гранди: mex
- Замечаем, если она ноль, то LOSE, иначе WIN
- Учимся считать Гранди за O(E)
- Рисуем табличку: Функция Гранди для суммы двух Нимов
- Доказываем, что Гранди от суммы игр равна XOR.
- [Игорь Лабутин] Задачи
- Ретроанализ на графе с ребрами двух цветов
- Ретроанализ, который считает наидлиннейший выигрышный путь (иногда WIN∞)
- Жестокая задача: Штирлиц и Мюллер стреляют по очереди, в очереди N человек
- Гранди: пешки на доске 3 × N для N ≥ 109
- Гранди: из i-й кучки можно брать от 1 до ki камней за ход. Количества камней в кучках ni ≤ 1018
- [Сергей Копелиович] Задачи посложнее
- Hucken Bush: Grundi(1+T) = 1+Grundi(T)
- Ним, в котором кучки должны иметь неубывающие размеры
- Ним, в котором брать можно из не более чем двух кучек за ход (как факт, без доказательства)
- [Сергей Копелиович] Кое-что ещё
- DP, Ретро, Гранди → а для сложения независимых игр на графах с циклами есть функция Смита
- Шахматы без правила о трёх ходах: остались (K, Q), (K, P) → ретроанализ даже запущенный в лоб даст 224 состояний и понимание, кто выиграет, какой ход сделать.
- Игры на слишком больших графах: шахматы, крестики-нолики... Функция оценки позиции + перебор только k лучших ходов + перебор игры на глубину d