Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
85
Добавлен:
10.05.2015
Размер:
264.19 Кб
Скачать

Эффективность поиска с помощью -процедуры

Для того, чтобы иметь возможность произвести отсечение хотя бы часть дерева поиска должна быть порождена на максимальную глубину, т.к. вычисления идолжны основываться на статических значениях концевых вершин, поэтому при использовании -процедуры обычно применяется некоторая методика поиска в глубину. Кроме того, число отсечений, которые могут быть проведены в процессе поиска, зависят от того, в какой мере первоначальные значенияиблизки к окончательным возвращенным значениям. Окончательное возвращенное значение для исходной вершины совпадает со статическим значением для одной из концевых вершин. Если при поиске в глубину удается достичь этой вершины первой, то число отсечений будет наибольшим. Следовательно, порождать и оценивать придется минимальное число концевых вершин. Пусть глубина дерева поиска равнаD, а каждая вершина, кроме концевой, имеетBдочерних вершин. В таком дереве содержится ВDвершин. Пусть альфа-бета-процедура порождает вершины в очередности, определяемой их истинным возвращенным значением, т.е. для Мин вершин выбираются потомки с наименьшимвозвращенным значением, а для Макс вершин - с наибольшим. Таким образом, такая очередность минимизирует число порождаемых концевых вершин и позволяет сделать максимальное количество отсечений. Обозначим наименьшее число вершин черезND, тогда:

2BD/2-1,D- четное

ND=

B(D+1)/2+B(D-1)/2-1,D- нечетное

Это означает, что при оптимальном -поиске на уровнеDпорождается примерно столько же вершин, сколько порождается на уровнеD/2 без использования альфа-бета-процедуры. Следовательно, альфа-бета-процедура позволяет удвоить глубину поиска при том же требуемом объеме памяти.

Повышение эффективности поиска с использованием альфа-бета процедуры

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

Таблица транспозиций.

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

Упорядочивание вершин.

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

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

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

Итеративное углубление (Iterative Deepening)

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

Минимальные окна.

Поиск на основе альфа-бета процедуры производится с использованием нижней границы и верхней границыдиапазона приемлемых оценок вершин, называемого окном поиска. Уменьшение ширины данного окна повышает вероятность возникновения отсечений. Минимальное окно возникает, когда+1=(при целочисленных оценках). Поиск с минимальным окном основан на предположении, что вершина, рассматриваемая первой, имеет наилучшую оценку чем все остальные, пока не будет доказано обратное. Сначала поиск производится с полным окном (,), для первой ветви и если он возвращает значениеvв пределах окна, то остальные ходы просматриваются с минимальным окном (v,v+1). Если же принятое выше предположение не выполняется, то поиск должен быть проведен повторно окном (v+1,).

Переменная глубина поиска.

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

Для усиления игры могут быть также использованы библиотека типовых игровых ситуаций и другие идеи.

Соседние файлы в папке Конспект лекций