Bratko I. (1982). Knowledge-based problem-solving in AL3. In:
Buchanan B.G. and Shortliffe E.H. (1984, eds.).
Duda R., Gasschnig J. and Hart P. (1979). Model design in the Prospector consultant system for mineral exploration. In:
Hammond P. (1984). vMicro-PROLOG for Expert Systems. In:
Michie D. (1979, ed.).
Quinlan J.R. (1983). Inferno: a cautious approach to uncertain reasoning.
Reiter J. (1980). AL/X: An Expert System Using Plausible Inference. Oxford: Intelligent Terminals Ltd.
Shortliffe E. (1976).
Weiss S.M. and Kulikowski CA. (1984).
Winston P. H. (1984).
Глава 15
Игры
В этой главе мы рассмотрим методы программирования игр двух лиц с полной информацией (таких, как шахматы). Для игр, представляющих интерес, деревья возможных продолжений слишком велики, чтобы можно было говорить о полном переборе, поэтому необходимы какие-то другие подходы. Один из таких методов, основанный на минимаксном принципе, имеет эффективную реализацию, известную под названием "альфа-бета алгоритм". В дополнение к этому стандартному методу, мы разработаем в этой главе программу на основе Языка Советов (Advice Language), который дает возможность вносить в шахматную программу знания о типовых ситуациях. Этот довольно подробный пример может послужить еще одной иллюстрацией того, насколько хорошо Пролог приспособлен для реализации систем, основанных на знаниях.
15.1. Игры двух лиц с полной информацией
Игры, которые мы собираемся обсуждать в данной главе, относятся к классу так называемых игр двух лиц с полной информацией. Примерами таких игр могут служить шахматы, шашки и т.п. В игре участвуют два игрока, которые ходят по очереди, причем оба они обладают полной информацией о текущей игровой ситуации (это определение исключает большинство карточных игр). Игра считается оконченной, если достигнута позиция, являющаяся согласно правилам игры "терминальной" (конечной), например матовая позиция в шахматах. Правилами игры также устанавливается, каков исход игры в этой терминальной позиции.
Для игр такого рода возможно представление в виде
В большинстве игр этого типа возможны следующие исходы:
позиции игры | вершины, задачи |
терминальные позиции выигрыша | целевые вершины, тривиально решаемые задачи |
терминальные позиции проигрыша | задачи, не имеющие решения |
выигранные позиции | задачи, имеющие решение |
позиции игрока | ИЛИ-вершины |
позиции противника | И-вершины |