Jump to content

Альфа-бета-обрезка

(Перенаправлено из альфа-бета-поиска )
Альфа-бета-обрезка
Сорт Алгоритм поиска
Худшая производительность
Лучшая производительность

Альфа-бета-обрезка — это алгоритм поиска , который стремится уменьшить количество узлов, которые оцениваются минимаксным алгоритмом в его дереве поиска . Это алгоритм состязательного поиска, обычно используемый для машинной игры в комбинаторные игры для двух игроков ( Крестики-нолики , Шахматы , Connect 4 и т. д.). Он прекращает оценивать ход, когда найдена хотя бы одна возможность, которая доказывает, что этот ход хуже, чем ранее рассмотренный ход. Такие шаги не нуждаются в дальнейшей оценке. При применении к стандартному минимаксному дереву он возвращает тот же ход, что и минимакс, но отсекает ветви, которые не могут повлиять на окончательное решение. [1]

Джон Маккарти во время Дартмутского семинара встретил Алекса Бернштейна из IBM , который писал шахматную программу. Маккарти изобрел альфа-бета-поиск и рекомендовал его ему, но Бернштейна это «не убедило». [2]

Аллен Ньюэлл и Герберт А. Саймон, которые использовали то, что Джон Маккарти называет «приближением». [3] в 1958 году написал, что альфа-бета «похоже, изобреталась заново несколько раз». [4] У Артура Сэмюэля была ранняя версия симуляции шашек. Ричардс, Тимоти Харт, Майкл Левин и/или Дэниел Эдвардс также независимо изобрели альфа-бету в Соединенных Штатах . [5] Маккарти предложил аналогичные идеи во время семинара в Дартмуте в 1956 году и предложил их группе своих студентов, включая Алана Котока из Массачусетского технологического института в 1961 году. [6] Александр Брудно независимо разработал альфа-бета-алгоритм и опубликовал свои результаты в 1963 году. [7] Дональд Кнут и Рональд В. Мур усовершенствовали алгоритм в 1975 году. [8] [9] Judea Pearl доказал свою оптимальность с точки зрения ожидаемого времени работы для деревьев со случайно назначенными значениями листьев в двух статьях. [10] [11] Оптимальность рандомизированной версии альфа-бета была показана Майклом Саксом и Ави Вигдерсоном в 1986 году. [12]

Основная идея

[ редактировать ]

Дерево игры для двух игроков может представлять множество игр с нулевой суммой , таких как шахматы, шашки и реверси. Каждый узел дерева представляет возможную ситуацию в игре. Каждому конечному узлу (исходу) ветки присваивается числовой балл, определяющий ценность результата для игрока при следующем ходе. [13]

Алгоритм поддерживает два значения: альфа и бета, которые соответственно представляют собой минимальное количество очков, которое гарантировано максимизирующему игроку, и максимальное количество очков, которое гарантировано минимизирующему игроку. Первоначально альфа — это отрицательная бесконечность, а бета — положительная бесконечность, т. е. оба игрока начинают с наихудшим возможным счетом. Всякий раз, когда максимальное количество очков, которое гарантировано минимизирующему игроку (т. е. «бета-игроку»), становится меньше минимального количества очков, которое гарантировано максимизирующему игроку (т. е. «альфа-игроку») (т. е. бета < альфа), максимизирующий игрок игроку не нужно рассматривать дальнейших потомков этого узла, поскольку они никогда не будут достигнуты в реальной игре.

Чтобы проиллюстрировать это примером из реальной жизни, предположим, что кто-то играет в шахматы, и настала его очередь. Ход «А» улучшит положение игрока. Игрок продолжает искать ходы, чтобы не упустить лучший ход. Ход «Б» также является хорошим ходом, но затем игрок понимает, что он позволит противнику поставить мат за два хода. Таким образом, другие результаты хода Б больше не нужно учитывать, поскольку противник может добиться победы. Максимальный счет, который противник может получить после хода «Б», равен минус бесконечности: проигрыш для игрока. Это меньше минимальной позиции, которая была найдена ранее; Ход «А» не приводит к вынужденному проигрышу в два хода.

Улучшения по сравнению с наивным минимаксом

[ редактировать ]
Иллюстрация альфа-бета-обрезки. Затененные поддеревья не нуждаются в исследовании (когда ходы оцениваются слева направо), поскольку известно, что группа поддеревьев в целом дает значение эквивалентного поддерева или хуже, и поэтому не может влиять окончательный результат. Максимальный и минимальный уровни представляют ход игрока и противника соответственно.

Преимущество альфа-бета-отсечения заключается в том, что можно исключить ветви дерева поиска. [13] Таким образом, время поиска может быть ограничено «более перспективным» поддеревом и за то же время может быть выполнен более глубокий поиск. Как и его предшественник, он принадлежит к ветвей и границ классу алгоритмов . Оптимизация уменьшает эффективную глубину до чуть более половины от простого минимакса, если узлы оцениваются в оптимальном или близком к оптимальному порядке (лучший выбор для стороны на ходу, упорядоченной первой в каждом узле).

При (среднем или постоянном) ветвления коэффициенте b и глубине поиска d plies максимальное количество оцениваемых позиций конечных узлов (когда порядок перемещения пессимален ) равно O ( b д ) – то же, что и простой минимаксный поиск. Если порядок ходов для поиска оптимален (то есть лучшие ходы всегда ищутся первыми), количество оцениваемых позиций конечных узлов составляет около O ( b ×1× b ×1×...× b ) для нечетной глубины и O ( b ×1× b ×1×...×1) для четной глубины, или . В последнем случае, когда слой поиска четный, эффективный коэффициент ветвления уменьшается до квадратного корня или, что то же самое, поиск может идти в два раза глубже при том же объеме вычислений. [14] Объяснение b ×1× b ×1×... заключается в том, что все ходы первого игрока должны быть изучены, чтобы найти лучший, но для каждого из них нужен только лучший ход второго игрока, чтобы опровергнуть все, кроме первого (и лучший) ход первого игрока — альфа-бета гарантирует, что другие ходы второго игрока учитываться не будут. Когда узлы рассматриваются в случайном порядке (т. е. алгоритм рандомизируется), асимптотически ожидаемое количество узлов, оцениваемых в однородных деревьях с двоичными значениями листьев, равно . [12] Для одних и тех же деревьев, когда значения присваиваются значениям листьев независимо друг от друга и, скажем, ноль и единица одинаково вероятны, ожидаемое количество оцениваемых узлов равно , что намного меньше работы, выполняемой рандомизированным алгоритмом, упомянутым выше, и снова является оптимальным для таких случайных деревьев. [10] Когда конечные значения выбираются независимо друг от друга, но из интервал равномерно случайным образом, ожидаемое количество оцениваемых узлов увеличивается до в предел, [11] что снова оптимально для таких случайных деревьев. Обратите внимание, что фактическая работа для «малых» значений лучше аппроксимировать с помощью . [11] [10]

Шахматная программа, которая ищет четыре слоя со средним числом 36 ветвей на узел, оценивает более миллиона конечных узлов. Оптимальная альфа-бета-обрезка позволит устранить все терминальные узлы, за исключением примерно 2000, что составляет сокращение на 99,8%. [13]

Анимированный педагогический пример, который пытается быть дружественным к человеку, заменяя пустоты исходными бесконечными (или произвольно большими) значениями и избегая использования упрощений кодирования negamax .

Обычно во время альфа-бета поддеревья временно доминируют либо из-за преимущества первого игрока (когда многие ходы первого игрока хороши, и на каждой глубине поиска первый ход, проверенный первым игроком, является адекватным, но все ответы второго игрока необходимы для попытаться найти опровержение), или наоборот. Это преимущество может многократно переходить на другую сторону во время поиска, если порядок ходов неверен, что каждый раз приводит к неэффективности. Поскольку количество искомых позиций экспоненциально уменьшается с каждым приближением к текущей позиции, стоит потратить значительные усилия на сортировку ранних ходов. Улучшенная сортировка на любой глубине экспоненциально уменьшит общее количество искомых позиций, но сортировка всех позиций на глубинах рядом с корневым узлом обходится относительно дешево, поскольку их очень мало. На практике порядок перемещения часто определяется результатами более ранних, более мелких поисков, например, посредством итеративного углубления .

Кроме того, этот алгоритм можно тривиально модифицировать, чтобы он возвращал всю основную вариацию не только оценку, но и . Некоторые более агрессивные алгоритмы, такие как MTD(f), с трудом допускают такую ​​модификацию.

Псевдокод

[ редактировать ]

Псевдокод для минимакса с ограниченной глубиной и альфа-бета-обрезкой выглядит следующим образом: [15]

Реализации альфа-бета-обрезки часто можно охарактеризовать по тому, являются ли они «отказоустойчивыми» или «отказоустойчивыми». При отказоустойчивом альфа-бета функция алфавита может возвращать значения (v), которые превышают (v < α или v > β) границы α и β, установленные аргументами вызова функции. Для сравнения, отказоустойчивая альфа-бета ограничивает возвращаемое значение функции инклюзивным диапазоном α и β. Основное различие между отказоустойчивой и отказоустойчивой реализациями заключается в том, обновляются ли α и β до или после проверки отсечки. Если они обновляются до проверки, то они могут превысить начальные границы и алгоритм будет отказоустойчивым.

Следующий псевдокод иллюстрирует отказоустойчивый вариант. [15]

function alphabeta(node, depth, α, β, maximizingPlayer) is
    if depth == 0 or node is terminal then
        return the heuristic value of node
    if maximizingPlayer then
        value := −∞
        for each child of node do
            value := max(value, alphabeta(child, depth − 1, α, β, FALSE))
            if value > β then
                break (* β cutoff *)
            α := max(α, value)
        return value
    else
        value := +∞
        for each child of node do
            value := min(value, alphabeta(child, depth − 1, α, β, TRUE))
            if value < α then
                break (* α cutoff *)
            β := min(β, value)
        return value
(* Initial call *)
alphabeta(origin, depth, −, +, TRUE)

Следующий псевдокод иллюстрирует отказоустойчивую альфа-бету.

function alphabeta(node, depth, α, β, maximizingPlayer) is
    if depth == 0 or node is terminal then
        return the heuristic value of node
    if maximizingPlayer then
        value := −∞
        for each child of node do
            value := max(value, alphabeta(child, depth − 1, α, β, FALSE))
            α := max(α, value)
            if value ≥ β then
                break (* β cutoff *)
        return value
    else
        value := +∞
        for each child of node do
            value := min(value, alphabeta(child, depth − 1, α, β, TRUE))
            β := min(β, value)
            if value ≤ α then
                break (* α cutoff *)
        return value
(* Initial call *)
alphabeta(origin, depth, −, +, TRUE)

Эвристические улучшения

[ редактировать ]

Дальнейшего улучшения можно добиться, не жертвуя точностью, используя эвристику упорядочения для поиска в более ранних частях дерева, которые могут привести к сокращению альфа-бета. Например, в шахматах ходы, захватывающие фигуры, могут быть проверены перед ходами, которые этого не делают, а ходы, получившие высокие оценки в предыдущих проходах анализа дерева игры, могут оцениваться раньше других. Другая распространенная и очень дешевая эвристика — это эвристика-убийца , где в первую очередь всегда проверяется последний ход, вызвавший бета-обрезание на том же уровне дерева при поиске по дереву. Эту идею также можно обобщить в виде набора таблиц опровержений .

Альфа-бета-поиск можно сделать еще быстрее, если рассматривать только узкое окно поиска (обычно определяемое путем догадок, основанных на опыте). Это известно как окно стремления . В крайнем случае поиск осуществляется при равенстве альфа и бета; метод, известный как поиск с нулевым окном , поиск с нулевым окном или поиск скаута . Это особенно полезно для поиска выигрышей/проигрышей ближе к концу игры, когда дополнительная глубина, полученная за счет узкого окна, и простая функция оценки выигрыша/проигрыша могут привести к убедительному результату. Если аспирационный поиск не удался, можно легко определить, был ли он неудачным ( верхний край окна был слишком низким) или низким (нижний край окна был слишком высоким). Это дает информацию о том, какие значения окна могут быть полезны при повторном поиске позиции.

Со временем были предложены и другие улучшения, и действительно, идея Джона Фишберна Falphabeta (мягкая альфа-бета) является почти универсальной и уже включена выше в несколько измененной форме. Фишберн также предложил комбинацию эвристики-убийцы и поиска с нулевым окном под названием Lalphabeta («последний ход с альфа-бета-поиском с минимальным окном»).

Другие алгоритмы

[ редактировать ]

Поскольку минимаксный алгоритм и его варианты по своей сути ориентированы в глубину , такая стратегия, как итеративное углубление , обычно используется в сочетании с альфа-бета, чтобы можно было вернуть достаточно хороший ход, даже если алгоритм будет прерван до завершения его выполнения. Еще одним преимуществом использования итеративного углубления является то, что поиск на меньшей глубине дает подсказки по порядку ходов, а также мелкие альфа- и бета-оценки, которые могут помочь создать отсечки для поиска на большей глубине гораздо раньше, чем это было бы возможно в противном случае.

такие алгоритмы, как SSS* С другой стороны, , используют стратегию «сначала лучшее» . Это потенциально может сделать их более эффективными по времени, но, как правило, за счет высокой эффективности использования пространства. [16]

См. также

[ редактировать ]
  1. ^ Рассел и Норвиг 2021 , с. 152-161.
  2. ^ Маккарти, Джон (30 октября 2006 г.). «Дартмутский семинар – как планировалось и как это произошло» . www-formal.stanford.edu . Проверено 29 октября 2023 г.
  3. ^ Маккарти, Джон (27 ноября 2006 г.). «ИИ на человеческом уровне сложнее, чем казалось в 1955 году» . Стэнфордский университет . Проверено 20 декабря 2006 г.
  4. ^ Ньюэлл, Аллен; Саймон, Герберт А. (1 марта 1976 г.). «Информатика как эмпирическое исследование: символы и поиск» . Коммуникации АКМ . 19 (3): 113–126. дои : 10.1145/360018.360022 .
  5. ^ Эдвардс, диджей; Харт, Т.П. (4 декабря 1961 г.). Альфа-бета-эвристика (Технический отчет). Массачусетский технологический институт . hdl : 1721.1/6098 . АИМ-030.
  6. ^ Коток, Алан (2004) [1962]. «Шахматная программа» . Проект искусственного интеллекта . РЛЭ и Вычислительный центр Массачусетского технологического института. Памятка 41 . Проверено 1 июля 2006 г.
  7. ^ Марсленд, штат Калифорния (май 1987 г.). «Компьютерные шахматные методы» (PDF) . В Шапиро, С. (ред.). Энциклопедия искусственного интеллекта . Уайли. стр. 159–171. ISBN  978-0-471-62974-0 . Архивировано из оригинала (PDF) 30 октября 2008 г.
  8. ^ Кнут, Дональд Э.; Мур, Рональд В. (1975). «Анализ альфа-бета-обрезки». Искусственный интеллект . 6 (4): 293–326. дои : 10.1016/0004-3702(75)90019-3 . S2CID   7894372 .
  9. ^ Абрамсон, Брюс (1 июня 1989 г.). «Стратегии управления для игр двух игроков». Обзоры вычислительной техники ACM . 21 (2): 137–161. дои : 10.1145/66443.66444 . S2CID   11526154 .
  10. ^ Перейти обратно: а б с Перл, Иудея (1980). «Асимптотические свойства минимаксных деревьев и процедуры поиска игр». Искусственный интеллект . 14 (2): 113–138. дои : 10.1016/0004-3702(80)90037-5 .
  11. ^ Перейти обратно: а б с Перл, Иудея (1982). «Решение фактора ветвления алгоритма обрезки альфа-бета и его оптимальность» . Коммуникации АКМ . 25 (8): 559–64. дои : 10.1145/358589.358616 . S2CID   8296219 .
  12. ^ Перейти обратно: а б Сакс, М.; Вигдерсон, А. (1986). «Вероятностные логические деревья решений и сложность оценки игровых деревьев». 27-й ежегодный симпозиум по основам информатики . стр. 29–38. дои : 10.1109/SFCS.1986.44 . ISBN  0-8186-0740-8 . S2CID   6130392 .
  13. ^ Перейти обратно: а б с Леви, Дэвид (январь 1986 г.). «Альфа-Бета-суп» . MacUser . стр. 98–102 . Проверено 19 октября 2021 г.
  14. ^ Рассел и Норвиг 2021 , с. 155.
  15. ^ Перейти обратно: а б Рассел и Норвиг 2021 , с. 154.
  16. ^ Перл, Иудея ; Корф, Ричард (1987), «Методы поиска», Annual Review of Computer Science , 2 : 451–467, doi : 10.1146/annurev.cs.02.060187.002315 . Как и его аналог A* для однопользовательских игр, SSS* оптимален по среднему количеству исследуемых узлов; но его превосходная мощность обрезки более чем компенсируется значительным объемом необходимого места для хранения и ведения бухгалтерского учета.

Библиография

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 653e78e02c85d4956353a8b4b131a6a8__1718800980
URL1:https://arc.ask3.ru/arc/aa/65/a8/653e78e02c85d4956353a8b4b131a6a8.html
Заголовок, (Title) документа по адресу, URL1:
Alpha–beta pruning - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)