Альфа – бета обрезка - Alpha–beta pruning
Класс | Алгоритм поиска |
---|---|
Худший случай спектакль | |
Лучший случай спектакль |
График и дерево алгоритмы поиска |
---|
Списки |
|
похожие темы |
Альфа – бета обрезка это алгоритм поиска который стремится уменьшить количество узлов, которые оцениваются минимаксный алгоритм в его дерево поиска. Это состязательный алгоритм поиска, обычно используемый для машинной игры для двух игроков (Крестики-нолики, Шахматы, Идти, так далее.). Он прекращает оценку хода, когда обнаруживается хотя бы одна возможность, доказывающая, что этот ход хуже, чем ранее изученный. Такие ходы не нуждаются в дальнейшей оценке. Применительно к стандартному минимаксному дереву он возвращает тот же ход, что и минимакс, но отсекает ветви, которые не могут повлиять на окончательное решение.[1]
История
Аллен Ньюэлл и Герберт А. Саймон кто что использовал Джон Маккарти называет "приближением"[2] в 1958 г. писал, что альфа-бета «по всей видимости, изобреталась заново несколько раз».[3] Артур Сэмюэл была ранняя версия для симуляции шашек. Ричардс, Тимоти Харт, Михаил Левин и / или Дэниел Эдвардс также независимо изобрел альфа-бета в Соединенные Штаты.[4] Маккарти предлагал аналогичные идеи во время Дартмутская мастерская в 1956 году и предложил его группе своих учеников, в том числе Алан Коток в Массачусетском технологическом институте в 1961 году.[5] Александр Брудно независимо разработал алгоритм альфа-бета, опубликовав свои результаты в 1963 году.[6] Дональд Кнут и Рональд В. Мур усовершенствовали алгоритм в 1975 году.[7][8] Жемчужина Иудеи доказал свою оптимальность с точки зрения ожидаемого времени работы для деревьев со случайно назначенными значениями листьев в двух статьях.[9][10] Оптимальность рандомизированной версии альфа-бета была показана Майклом Саксом и Ави Вигдерсон в 1986 году.[11]
Основная идея
Алгоритм поддерживает два значения, альфа и бета, которые соответственно представляют минимальный балл, в котором уверен максимизирующий игрок, и максимальный балл, который гарантирован минимизирующему игроку. Первоначально альфа - это отрицательная бесконечность, а бета - положительная бесконечность, то есть оба игрока начинают с худшим из возможных результатов. Каждый раз, когда максимальное количество очков, гарантированное минимизирующему игроку (т. Е. «Бета-игроку»), становится меньше минимального результата, гарантированного максимизирующему игроку (т. Е. «Альфа-игроку») (т. Е. Бета <альфа), максимальное Игроку не нужно рассматривать дальнейших потомков этого узла, так как они никогда не будут достигнуты в реальной игре.
Чтобы проиллюстрировать это на примере из реальной жизни, предположим, что кто-то играет в шахматы, и теперь его очередь. Движение «А» улучшит позицию игрока. Игрок продолжает искать ходы, чтобы не пропустить лучший. Ход «B» также является хорошим ходом, но затем игрок понимает, что он позволит сопернику форсировать мат за два хода. Таким образом, другие исходы хода B больше не нужно рассматривать, поскольку противник может форсировать победу. Максимальное количество очков, которое противник может набрать после хода «B», равно отрицательной бесконечности: проигрыш для игрока. Это меньше минимальной позиции, которая была найдена ранее; ход «А» не приводит к принудительному поражению за два хода.
Улучшения по сравнению с наивным минимаксом
Преимущество отсечения альфа-бета заключается в том, что ветви дерева поиска могут быть удалены. Таким образом, время поиска может быть ограничено «более перспективным» поддеревом, и в то же время может быть выполнен более глубокий поиск. Как и его предшественник, он принадлежит к ветвь и переплет класс алгоритмов. Оптимизация снижает эффективную глубину до немногим более половины, чем у простого минимакса, если узлы оцениваются в оптимальном или близком к оптимальному порядку (лучший выбор для стороны на ходу, заказанной первой в каждом узле).
С (средним или постоянным) фактор ветвления из б, а глубина поиска d слои, максимальное количество оцененных позиций конечных узлов (когда порядок перемещения пессимальный ) является О (б×б×...×б) = О(бd) - то же, что и простой минимаксный поиск. Если порядок ходов для поиска оптимален (это означает, что лучшие ходы всегда ищутся первыми), количество оцененных позиций конечных узлов составляет около О(б×1×б×1×...×б) для нечетной глубины и О(б×1×б× 1 × ... × 1) для равной глубины, или . В последнем случае, когда слой поиска четный, эффективный коэффициент ветвления уменьшается до его квадратный корень, или, что то же самое, поиск может пойти вдвое глубже с тем же объемом вычислений.[12] Объяснение б×1×б× 1 × ... состоит в том, что все ходы первого игрока должны быть изучены, чтобы найти лучший, но для каждого необходим только лучший ход второго игрока, чтобы опровергнуть все, кроме первого (и лучшего) хода первого игрока - альфа - бета гарантирует, что никакие другие ходы второго игрока не нужно рассматривать. Когда узлы рассматриваются в случайном порядке (то есть алгоритм рандомизирует), асимптотически, ожидаемое количество узлов, оцениваемых в однородных деревьях с двоичными значениями листьев, равно .[11]Для одних и тех же деревьев, когда значения присваиваются значениям листьев независимо друг от друга и говорят, что ноль и единица равновероятны, ожидаемое количество оцененных узлов равно , что намного меньше, чем работа, выполняемая рандомизированным алгоритмом, упомянутым выше, и снова является оптимальным для таких случайных деревьев.[9] Когда значения листьев выбираются независимо друг от друга, но от интервал равномерно случайным образом, ожидаемое количество оцененных узлов увеличивается до в предел[10] что снова является оптимальным для таких случайных деревьев. Обратите внимание, что реальная работа для «малых» значений лучше аппроксимируется с использованием .[10][9]
Обычно во время альфа-бета в поддеревьях временно доминирует преимущество первого игрока (когда много ходов первого игрока хороши и на каждой глубине поиска первый ход, проверенный первым игроком, является адекватным, но все ответы второго игрока требуются для попробуйте найти опровержение) или наоборот. Это преимущество может многократно переключаться на другую сторону во время поиска, если порядок ходов неправильный, что каждый раз приводит к неэффективности. Поскольку количество искомых позиций экспоненциально уменьшается с каждым шагом ближе к текущей позиции, стоит потратить значительные усилия на сортировку ранних ходов. Улучшенная сортировка на любой глубине экспоненциально уменьшит общее количество искомых позиций, но сортировка всех позиций на глубинах около корневого узла относительно дешево, поскольку их так мало. На практике порядок ходов часто определяется результатами более ранних небольших поисков, таких как итеративное углубление.
Кроме того, этот алгоритм можно тривиально изменить, чтобы он возвращал весь основная вариация в дополнение к баллу. Некоторые более агрессивные алгоритмы, такие как MTD (f) такую модификацию нелегко разрешить.
Псевдокод
Псевдокод для минимакса с ограниченной глубиной с отсечением альфа-бета выглядит следующим образом:[12]
функция алфавит (узел, глубина, α, β, максимизирующий игрок) является если глубина = 0 или узел является конечным узлом тогда вернуть эвристическое значение узла если maximizingPlayer тогда значение: = −∞ для каждого дочерний элемент узла делать значение: = max (значение, алфавитa (дочерний элемент, глубина - 1, α, β, FALSE)) α: = max (α, значение) если α ≥ β тогда перерыв (* β обрезание *) вернуть ценность еще значение: = + ∞ для каждого дочерний элемент узла делать значение: = min (значение, алфавитa (дочерний элемент, глубина - 1, α, β, ИСТИНА)) β: = min (β, значение) если β ≤ α тогда перерыв (* α обрезание *) вернуть ценность
(* Первоначальный звонок *)алфавита (происхождение, глубина, -∞, +∞, ПРАВДА)
Реализации альфа-бета-отсечения часто можно определить по тому, являются ли они «безотказными» или «отказоустойчивыми». Псевдокод иллюстрирует отказоустойчивый вариант. При отказоустойчивом альфа-бета функция алфавита может возвращать значения (v), которые превышают (v <α или v> β) границы α и β, установленные аргументами вызова функции. Для сравнения, отказоустойчивый альфа-бета ограничивает возвращаемое значение своей функции включительным диапазоном значений α и β.
Эвристические улучшения
Дальнейшее улучшение может быть достигнуто без ущерба для точности с помощью упорядочивания. эвристика для поиска более ранних частей дерева, которые могут вызвать отсечение альфа-бета. Например, в шахматах ходы взятия фигур могут быть проверены перед ходами, которые этого не делают, и ходы, получившие высокую оценку ранее проходит посредством анализа дерева игр могут быть оценены раньше других. Другой распространенный и очень дешевый эвристический метод - убийственная эвристика, где последний ход, вызвавший бета-обрезание на том же уровне дерева при поиске по дереву, всегда проверяется первым. Эту идею также можно обобщить на набор таблицы опровержения.
Альфа-бета-поиск можно сделать еще быстрее, если рассмотреть только узкое окно поиска (обычно определяемое предположениями на основе опыта). Это известно как поиск стремлений. В крайнем случае поиск выполняется с равными значениями альфа и бета; техника, известная как поиск в нулевом окне, поиск в нулевом окне, или поиск разведчика. Это особенно полезно для поиска выигрышей / проигрышей ближе к концу игры, когда дополнительная глубина, полученная из узкого окна, и простая функция оценки выигрыша / проигрыша могут привести к окончательному результату. Если поиск по стремлениям завершился неудачно, определить, не удалось ли он, просто высоко (высокий край окна был слишком низким) или низкий (нижний край окна был слишком высоким). Это дает информацию о том, какие значения окна могут быть полезны при повторном поиске позиции.
Со временем были предложены другие улучшения, и действительно идея Джона Фишберна (отказоустойчивая альфа-бета) Falphabeta почти универсальна и уже включена выше в слегка измененной форме. Фишберн также предложил комбинацию убийственной эвристики и поиска в нулевом окне под названием Lalphabeta («последний ход с минимальным окном альфа-бета-поиска»).
Другие алгоритмы
Поскольку минимаксный алгоритм и его варианты по своей сути в глубину, такая стратегия, как итеративное углубление обычно используется в сочетании с альфа-бета, чтобы можно было вернуть достаточно хороший ход, даже если алгоритм был прерван до того, как он завершил выполнение. Еще одно преимущество использования итеративного углубления состоит в том, что поиски на более мелких глубинах дают подсказки по упорядочиванию ходов, а также неглубокие альфа- и бета-оценки, которые могут помочь произвести отсечки для поисков с большей глубиной намного раньше, чем это было бы возможно в противном случае.
Алгоритмы вроде SSS *, с другой стороны, используйте лучший первый стратегия. Это потенциально может сделать их более эффективными по времени, но, как правило, требует больших затрат в плане экономии места.[13]
Смотрите также
- Минимакс
- Expectiminimax
- Негамакс
- Обрезка (алгоритм)
- Ветвь и переплет
- Комбинаторная оптимизация
- Поиск основного варианта
- Таблица транспонирования
использованная литература
- ^ Рассел, Стюарт Дж.; Норвиг, Питер (2010). Искусственный интеллект: современный подход (3-е изд.). Река Аппер Сэдл, Нью-Джерси: Pearson Education, Inc. стр. 167. ISBN 978-0-13-604259-4.
- ^ Маккарти, Джон (27 ноября 2006 г.). «ИИ человеческого уровня сложнее, чем казалось в 1955 году». Получено 2006-12-20.
- ^ Ньюэлл, Аллен; Саймон, Герберт А. (1 марта 1976 г.). «Информатика как эмпирическое исследование: символы и поиск». Коммуникации ACM. 19 (3): 113–126. Дои:10.1145/360018.360022.
- ^ Эдвардс, Д.Дж .; Харт, Т. (4 декабря 1961 г.). «Альфа-бета-эвристика (AIM-030)». Массачусетский Институт Технологий. HDL:1721.1/6098. Цитировать журнал требует
| журнал =
(Помогите) - ^ Коток, Алан (3 декабря 2004 г.). "Памятка 41 Массачусетского технологического института по искусственному интеллекту". Получено 2006-07-01.
- ^ Марсленд, Т.А. (Май 1987 г.). "Компьютерные шахматные методы (PDF) из Энциклопедии искусственного интеллекта. С. Шапиро (редактор)" (PDF). J. Wiley & Sons. С. 159–171. Архивировано из оригинал (PDF) 30 октября 2008 г.. Получено 2006-12-21.
- ^ Knuth, Donald E .; Мур, Рональд В. (1975). «Анализ альфа-бета обрезки». Искусственный интеллект. 6 (4): 293–326. Дои:10.1016/0004-3702(75)90019-3. S2CID 7894372.
- ^ Абрамсон, Брюс (1 июня 1989 г.). «Стратегии управления для игры вдвоем». Опросы ACM Computing. 21 (2): 137–161. Дои:10.1145/66443.66444. S2CID 11526154.
- ^ а б c Перл, Иудея (1980). «Асимптотические свойства минимаксных деревьев и поисковые процедуры». Искусственный интеллект. 14 (2): 113–138. Дои:10.1016/0004-3702(80)90037-5.
- ^ а б c Жемчуг, Иудея (1982). «Решение для фактора ветвления алгоритма альфа-бета-отсечения и его оптимальность». Коммуникации ACM. 25 (8): 559–64. Дои:10.1145/358589.358616. S2CID 8296219.
- ^ а б Сакс, М .; Вигдерсон, А. (1986). «Вероятностные булевы деревья решений и сложность оценки игровых деревьев». 27-й ежегодный симпозиум по основам компьютерных наук. С. 29–38. Дои:10.1109 / SFCS.1986.44. ISBN 0-8186-0740-8. S2CID 6130392.
- ^ а б Рассел, Стюарт Дж.; Норвиг, Питер (2003), Искусственный интеллект: современный подход (2-е изд.), Верхняя Сэдл-Ривер, Нью-Джерси: Prentice Hall, ISBN 0-13-790395-2
- ^ Жемчужина, Иудея; Корф, Ричард (1987), «Методы поиска», Ежегодный обзор компьютерных наук, 2: 451–467, Дои:10.1146 / annurev.cs.02.060187.002315,
Как и его аналог A * для однопользовательских игр, SSS * оптимален с точки зрения среднего количества проверяемых узлов; но его превосходная способность к обрезке более чем компенсируется значительным объемом памяти и необходимыми бухгалтерскими документами.
Список используемой литературы
- Джордж Т. Хейнеман; Гэри Поллис; Стэнли Селкоу (2008). «Глава 7: Поиск пути в AI». Об алгоритмах в двух словах. Oreilly Media. С. 217–223. ISBN 978-0-596-51624-6.
- Жемчужина Иудеи, Эвристика, Эддисон-Уэсли, 1984
- Джон П. Фишберн (1984). «Приложение A: Некоторые оптимизации поиска α-β». Анализ ускорения в распределенных алгоритмах (редакция кандидатской диссертации 1981 г.). UMI Research Press. С. 107–111. ISBN 0-8357-1527-2.