MakarovSuites
Русский
EnglishDeutschРусскийУкраїнськаFrançaisEspañolItalianoPolski
Связь и лицензии

Math

Ширина и глубина

Два одинаковых лабиринта, два обхода, клетка в такт. Слой, на котором ширина нашла клетку, равен кратчайшему пути — это тождество. Глубина не короче никогда, а насколько длиннее — зависит от того, куда идти.

Ширина и глубина — Изображение из программы
Изображение из программы

Что происходит

Один лабиринт, два поиска, одно открытие за шаг. Слева поиск в ширину берёт клетки из ОЧЕРЕДИ — первым пришёл, первым ушёл, — поэтому расходится кольцами, и кольцо, на котором он находит клетку, — её кратчайшее расстояние: в невзвешенном лабиринте поиск в ширину И ЕСТЬ поиск кратчайшего пути. Справа поиск в глубину берёт их из СТЕКА — последним пришёл, первым ушёл, — поэтому ныряет в первый поворот и отступает только из тупика; его маршрут — просто маршрут, без обещания краткости. Синие клетки ждут в структуре, серо-зелёные завершены, золотой квадрат раскрывается, а под каждым лабиринтом перечислены настоящие очередь и стек, следующая клетка первой. Рисуйте стены, нажимайте в лабиринте, чтобы предсказать, куда поиск пойдёт дальше, и делайте шаг. Если цель отрезана стенами, оба поиска заканчиваются на краю компоненты старта и прямо говорят об этом.

Уравнения модуля
Уравнения
лабиринт на сетке m x m, четыре соседа, старт в левом верхнем углу; порядок соседей: вверх, вправо, вниз, влево - одинаков в обоих поисках
поиск в ширину: номер слоя, на котором найдена клетка, РАВЕН длине кратчайшего пути - это тождество, проверенное по НЕЗАВИСИМОЙ релаксации до неподвижной точки и, на малых сетках, по полному перебору простых путей
пустая сетка:  расстояние до (i, j) = i + j;  клеток на расстоянии d = min(d, m−1) − max(0, d−m+1) + 1;  самый широкий слой = m при d = m − 1;  дальний угол = 2(m−1) = 40 при m = 21
оба поиска покрывают ОДНО И ТО ЖЕ множество - компоненту связности старта, независимо подсчитанную лесом непересекающихся множеств - и каждый просматривает каждое ребро дважды: 2|E| = 1196 при 21x21 и 20 % стен
поиск в глубину никогда не бывает короче, а насколько он длиннее, зависит от КЛЕТКИ: до дальнего угла пустой сетки он делает те же 2(m−1) шагов, а до клетки на шаг ниже старта - 421 при m = 21
на пустой сетке дерево поиска в глубину - это ГАМИЛЬТОНОВ ПУТЬ: у каждой клетки не более одного потомка, самая глубокая лежит на глубине m²−1, а чётность решает, где кончается змейка: (1,0) при чётном m, (m−1,0) при нечётном m
21x21, 20 % стен, цель в дальнем углу:  в ширину 40 шагов после просмотра 370 клеток;  в глубину 50 шагов после просмотра 53 - платят оба, но разной монетой
тот же лабиринт, цель в центре:  в ширину 20, в глубину 156;  а на 297 из 371 достижимых клеток путь поиска в глубину не менее чем втрое длиннее

Другие эксперименты

К каталогу
Самый дешёвый путь — Изображение из программы

Math

Самый дешёвый путь

Местность, где шаг стоит цену клетки, в которую входишь, и волна закрытых вершин расходится по ЦЕНЕ, а не по расстоянию. Ползунок кладёт на карту отрицательное ребро, и у него три измеренных участка: права, ошибается, пути нет вовсе.

Ним и двоичная сумма — Изображение из программы

Math

Ним и двоичная сумма

Кучи камней, а под ними их двоичная запись. Разряд, в котором единиц нечётное число, горит красным; когда красных нет, ходящий уже проиграл. Правило проверено разбором всей игры, а не пересказано.

Дерево игры и альфа-бета — Изображение из программы

Math

Дерево игры и альфа-бета

Дерево игры, в котором каждый блок высотой со своё значение: MAX-вершина ровно с самый высокий из детей, MIN-вершина — с самый низкий. Минимакс смотрит каждый лист; альфа-бета пропускает то, что не может изменить ответ, и сколько пропустит — зависит от порядка ходов.