Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Слэйгл Д. Искусственный интеллект. Подход на основе эвристического программирования

.pdf
Скачиваний:
17
Добавлен:
25.10.2023
Размер:
12.47 Mб
Скачать

П Р О Г Р А М М Ы , И Г Р А Ю Щ И Е В Ш А Ш К И . КАЛАХ И ШАХМАТЫ

•< \

2.4.ДЕЙСТВУЮЩАЯ ПРОГРАММА, ИГРАЮЩАЯ В ШАШКИ

Ниже описывается вариант играющей в шашки про­

граммы,

которая была

написана Артуром Самюэлем

в 1967

г.

 

Программа реализует

альфа-бета-процедуру, кото­

рая использует методы сходящегося направленного со­ кращения и суживающегося направленного сокращения крайних, а также метод неглубокого поиска для форми­ рования процедуры суживающегося п-наилучшего на­ правленного сокращения и для вероятностного упорядо­ чения ходов. В программе использованы критерии окон­ чания «конец игры», «минимальная глубина», «макси­ мальная глубина», «направленное сокращение» и «мерт­ вая позиция». Описание некоторых других эвристиче­ ских приемов, использованных в программе, можно най­ ти в статье Самюэля (1967). В качестве признаков пози­ ции используются преимущество в числе шашек, преиму­ щество в числе дамок, преимущество в подвижности и около 24 других. Все эти признаки вводятся в вычисли­ тельную машину извне. Исходя из зачастую весьма не­ определенных описаний признаков, сделанных экспер­ тами, Самюэль представил их в виде подпрограмм1 .

Действие программы. Свою первую программу, играю­ щую в шашки, Самюэль написал в Иллинойсском универ­ ситете в 1947 г. С тех пор программа неоднократно усо­ вершенствовалась путем внесения изменений в проце­ дуру поиска и в результате «самообучения» машины в процессе игры. Программа различными способами усо­ вершенствовалась на собственном опыте, причем на та­ кое накопление опыта уходило много машинного времени. В какой-то период выпущенные фирмой IBMновые об­ разцы вычислительных машин подвергались испытаниям только в дневное время, а ночами простаивали. Самюэль, работавший в то время в фирме IBM, рассказал, как он,

1 Значение признака не может быть, видимо, всегда сразу за­ дано как число. В этом случае для описания функции, реализую­ щей признак, Самюэль использует аппарат подпрограмм, аналогич­ ным процедурам — функциям АЛГОЛа. — Прим. перев.

42 Г Л А ВА 2

воспользовавшись этим, заставлял четыре или пять вы­ числительных машин всю ночь играть друг с другом в

шашки. Как объясняется

ниже, программа,

играющая

в шашки, демонстрирует

такие свойства, как

«обучение

с обобщением» и «заучивание наизусть». Фактически за­ учивание наизусть было осуществлено уже в раннем варианте программы (Самюэль, 1959).

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

содержит

большое

количество описаний

партий,

заканчи­

вающихся выигрышем. Каждый

ход в

описании

партии

комментируется

экспертами.

Для заданной процедуры

поиска (с оценивающей функцией, принадлежащей

к не­

которому

классу)

 

и данного учебника существует

оцени­

вающая

функция

определенной

формы,

которая

изби­

рает

приведенные

в учебнике

ходы

по

крайней

мере

столь

же

часто,

как любая

другая оценивающая

функ­

ция этого класса. Такая оценивающая функция назы­ вается оптимальной. В своих ранних работах Самюэль ограничивал класс оценивающих функций линейными функциями (см. гл. 11, где обсуждаются линейные оце­ нивающие функции). Более поздней (и более эффективной) процедурой является предложенная им процедура с таблицей сигнатур (signature-table procedure), в которой оценивающая функция уже не обязательно должна быть линейной; на нее накладывается меньше ограничений, так как учитываются некоторые возможные взаимосвязи между признаками (Самюэль, 1967). Представляется ве­ роятным, что оптимальная оценивающая функция опре­ деленной формы (линейная или с таблицей сигнатур) ока­ жется эффективной даже в позициях, не описанных в учебнике. К сожалению, нет рабочих процедур для на­ хождения таких оптимальных оценивающих функций. Однако Самюэль получил рабочие процедуры для нахож­ дения хорошей (хотя и не оптимальной) оценивающей функции, заданной в форме таблицы сигнатур, которая

П Р О Г Р А М М Ы , И Г Р А Ю Щ И Е В Ш А Ш К И , КАЛАХ И ШАХМАТЫ

43

в 38% случаев избирает именно тот ход, который рекомен­ дуется учебником. Она достигает таких относительно высоких результатов несмотря на то, что процедура осу­ ществляет поиск только на уровне 1 для обычных преем­ ников и на большую глубину для преемника со взятием фигуры. Действующая программа, которая производит поиск на глубину, значительно большую, чем один уро­ вень, избирает указанный в учебнике ход в гораздо боль­ шем числе случаев. Для сравнения отметим, что проце­ дура, осуществляющая случайный выбор, избирала бы указанный в учебнике ход всего лишь приблизительно в 12% случаев.

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

Обычно программа тратила на свой ход около 1 мин. (Чтобы привести результаты, обсуждаемые в этих главах, к единой форме, мы всюду указываем время выполнения программ на цифровой вычислительной машине IBM 7094.) Действие программы улучшалось при введении альфа-бета- процедуры, процедур направленного сокращения крайних, сходящегося направленного сокращения и процедуры не­ глубокого поиска, которая была использована как для вероятностного упорядочения ходов, так и для формиро-

44

 

 

 

 

Г Л А ВА 2

Таблица

2.1

 

 

 

 

 

Черные

 

 

Черные

 

Номер

Белые

Номер

(вычисли­

Белые

(вычислительная

хода

(Нили)

хода

тельная

(Нили)

 

машина)

 

 

машина)

 

I

11—15

 

2S

 

27—23

2

 

23—19

29

15—19

 

3

8 - 11

 

30

 

23—16

4

 

22—17

31

12—19

 

5

4—8

 

32

 

32—27

6

 

17—13

33

19—24

 

7

15—18

 

34

 

27—23

8

 

24—20

35

24—27

 

9

9—14

 

36

 

22—18

10

 

26—23

37

27—31

 

11

10—15

 

38

 

18—9

12

 

19—10

39

31—22

 

13

6—15

 

40

 

9 - 5

14

 

28—24

41

22—26

 

15

15—19

 

42

26—22

23—19

16

 

24—15

43

 

17

5 - 9

 

44

 

19—16

18

 

13—6

45

22—18

 

19

1—10—19—26

 

46

 

21—17

20

 

31—22—15

47

18—23

 

21

11—18

 

48

 

17—13

22

 

30—26

49

2—6

16—11

23

8—11

25—22

50

7—16

24

 

51

20—11

25

18—25

29—22

52

23 -19

26

 

53

 

27

11—15

 

 

Белые

сдались

вания метода /г-наилучшего направленного сокращения. Действие программы было затем улучшено введением процедуры сужения для методов /і-наилучшего направ­ ленного сокращения и направленного сокращения край­ них. Программа является отличным игроком в шашки, хотя чемпион мира и одержал над ней победу во всех че­ тырех сыгранных с нею партиях. Программа побеждает своего создателя и однажды победила чемпиона штата Коннектикут. Эта партия приведена в табл. 2.1.

П Р О Г Р А М М Ы , И Г Р А Ю Щ И Е В Ш А Ш К И ,

КАЛАХ И ШАХМАТЫ

45

2.5. ПРОГРАММЫ,

ИГРАЮЩИЕ

В

КАЛАХ

 

Программа

для игры в калах,

разработанная

Джо­

ном Маккарти

и

его студентами,

реализует альфа-бета-

процедуру с жестким упорядочением. В ней используется также процедура направленного сокращения крайних. В качестве критериев окончания в программе использо­ ваны следующие критерии: конец игры, минимальная глубина, максимальная глубина и мертвая позиция. Оценивающая функция использует признак k, называе­ мый преимуществом в калахе. По определению преиму­ щество в калахе есть число косточек (stone) в калахе, принадлежащем программе, минус число косточек в ка­ лахе, принадлежащем человеку. В позициях, в которых право выбора хода имеет программист, значение оцени­ вающей функции равно либо k + d, либо просто /е. Так как признак распределения d не играет большой роли для понимания принципа действия программы, в дальней­ шем изложении он опускается. Программа для игры в калах, разработанная Джоном Диксоном и автором этой книги (1969), реализует альфа-бета-процедуру с ди­ намическим упорядочением. В действительности это есть

Л-5-альфа-бета-процедура с параметром сопротивляемости R. Критериями окончания являются конец игры и мак­ симальная глубина. Оценивающая функция есть просто преимущество в калахе.

Правила игры в калах. Исходная позиция игры в ка­ лах показана на фиг. 2.8. В игре участвуют игроки Р и р. Игрок Р владеет одним калахом К и шестью лунками А, В, С, D, Е и F. Аналогично игрок р владеет калахом k и шестью лунками от а до f. В начале игры в каждой из 12 лунок находится по шесть косточек. Побеждает тот игрок, который помещает в свой калах более половины всех косточек. Если все лунки одного игрока становятся пустыми (даже если не его очередь делать ход), косточки, остающиеся в лунках противника, кладутся в принадле­ жащий тому калах, и игра заканчивается.

Игрок р делает первый ход (в этом абзаце описывается процесс выбора хода одним из игроков. В следующем абза­ це описывается процесс формирования ходов обоих игро­ ков). Игрок начинает свой ход, вынимая косточки из

46

ГЛАВА 2

Ф и г. 2.8. Исходная позиция в калахе.

В

каждой лунке л е ж и т по шесть косточек,

а

в калахах косточек нет.

одной из принадлежащих ему лунок. Делая обход вокруг доски против часовой стрелки, он кладет по одной из вынутых им косточек в каждую лунку и в свой калах (пропуская калах противника) до тех пор, пока все вы­ нутые косточки не будут израсходованы. В зависимости от того, куда была положена последняя вынутая косточ­ ка, возможны три исхода. Если последняя косточка поло­ жена в калах игрока, он ходит снова. Если последняя косточка попадает в пустую лунку игрока и если в лунке его противника, лежащей точно на противоположной стороне доски, содержится по крайней мере одна косточ­ ка, игрок кладет свою косточку и все косточки, находя­ щиеся в лунке противника, в свой калах; следующим ходит его противник. В третьем случае, если никаких особых событий не происходит, следующий ход делает противник.

Эти правила хорошо иллюстрируются описанием пар­

тии,

представленным в табл. 2.2. Игрок р ходит

первым

и

в конечном итоге

проигрывает программе Р, разработан­

ной

Маккарти с

сотрудниками. Ход человека

был

La.

Это означает, что он взял шесть косточек в лунке a и положил одну косточку в свой калах и одну в каждую из лунок F, Е, D, С и В. Третий ход человека З.а, f означает, что он сперва сделал ход а (повторный ход), а затем ход /.

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

Таблица 2.2. Программа Джона Маккарти с сотр. побеждает человека в игре в калах

Номер

 

 

Позиция

 

 

 

 

хода

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

 

6

6

6

6

6

6

 

 

 

 

6

6

6

6

6

6

0

2

1

0

 

7

7

7

7

7

 

 

 

7

7

7

7

7

0

1

3

2

 

1 0

7

7

7

8

 

 

 

 

1

 

9

9

9

9

1

2

4

4

 

1

 

1

0

7

7

8

 

 

1

11

10

10

9

0

3

5

17

 

3

0

0

8

8

9

 

 

2

0

10

10

0

1 4

6

18

5

2

 

2

0

9

 

10

 

 

 

3

1

1 12 2

1

6

7

20

7

1 3

1

1 10

 

 

 

4

2

1 14 0

1

8

8

21

0

2

4

2

1

12

 

 

 

6

4

 

3

2

3

2

10

9

24

 

1 4

6

4

3

0

 

 

 

1

1

2

3

8

 

0

15

10

25

 

3

6

0

5

4

1

 

 

 

2

2

3

4

0

 

1

16

11

26

 

4

0

0

5

4

1

 

 

 

1

4

 

5

5

0

 

0

17

12

27

 

0

0

0

5

4

0

 

 

 

2

 

1

7

6

1

0

19

13

28

 

1

 

1

1 0

4

0

 

 

 

1

 

2

8

6

1 0

19

14

35

 

1 0

3

0

0

1

 

 

 

1

0

 

8

0

2

 

1

20

15

35

 

1

0

4

2

 

2

0

 

 

 

1

0

 

0

1

1

1

24

16

37

 

1

1

0

2

2

0

 

 

 

2

0

0

0

2

 

0

25

 

Ход

 

 

 

 

 

 

 

 

 

 

Ход

человека

 

 

Позиция

 

 

программы

 

Р

 

 

 

 

 

 

 

 

 

 

Р

а

 

 

 

0

6 7 7 7 7

7

 

А

 

 

 

 

 

6

6 6 6 6 0

 

1

f

 

 

 

10

7 7 7 7 8

 

В

 

 

 

 

 

0

8 8 8 8

1

2

a,f

 

 

 

2

10

7 7 7 8

 

А,С

 

 

 

 

0

 

10 9 9 9 0

 

3

b

 

 

 

4

2 2

18

8

9

 

В,С

 

 

 

2 11 10 100

1

4

a, d

 

17

4

1 1 9

9 10

D

 

 

 

2

0

0

11

 

1

1

6

a,

b,

d

18 5 2 2 0 9 10

 

В,Е

 

 

 

 

3

1 0

13 0

1

8

a, с

 

20

8 2 4 2

1 11

 

А

 

 

 

 

 

5

3 2

1 2

1 10

f,

с, d,

a

21

0 3 5 3 2

13

 

F

 

 

 

 

 

0 0

1 2 7 0

 

15

b

 

 

 

24

2 5 7 4 1

 

С

 

 

 

 

 

1

1

2 3 0

1 16

 

 

 

25

3 6 0 5 4 1

 

В

 

 

 

 

 

0

3 4 4 0 0

17

e

 

 

26

4 0 0

5 4 0

 

А

 

 

 

 

 

1 0 6 6

1 0 19

f

 

 

27

0 0 0 5 4 0

 

D

 

 

 

 

0 2 8 6

1 0

 

19

 

 

 

 

 

 

с

 

 

28

1 1 1 1 5 1

 

A,E,A,B,D

 

 

 

 

 

1 2 8 0

2

1 20

a, b, a, d

35

1 0 4

1 1 2

F

 

 

 

 

 

1 0 0

1 1 1 24

a, с

 

35

1 0 4 2 2 0

 

А,С

 

 

 

 

 

1 0

0 0 2 0 25

48

Г Л А ВА 2

кую-либо из программ,— найти последовательность

ходов,

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

нием) и процедура

направленного сокращения

крайних.

Маккарти с сотр. использовали свою программу,

чтобы

показать, что игрок, делающий первый ход, может

фор­

сировать выигрыш

в трех вариантах калаха, в которых

в каждой

лунке

находится соответственно

по

одной,

по две или

по три,

а не по шесть косточек.

 

 

Программа Джона Диксона и автора была улучшена

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

2.6.ПРОГРАММА, ИГРАЮЩАЯ В ШАХМАТЫ

Программа, играющая в шахматы, разработанная Ричардом Гринблаттом, Дональдом Истлейком I I I и Стефаном Крокером (1967) в Массачусетсом техноло­ гическом институте, использует альфа-бета-процедуру. В целях повышения эффективности процедура произ­ водит оценку ходов из текущей позиции, а не сами ре­ зультирующие позиции (преемники), как было бы при использовании метода неглубокого поиска на один уро­ вень; она использует эти результаты для вероятностного упорядочения ходов и для суживающегося я-наилучшего направленного сокращения. Критерии окончания тако­ вы: конец игры, минимальная глубина, процедура сужи­ вающегося я-наилучшего направленного сокращения и мертвая позиция. Программа следит за повторением по­ зиций на дереве игры, чтобы обнаружить возможность ничьей путем повторения ходов и избежать повторных поисков. Программа использует сведения из теории де-

П Р О Г Р А М М Ы . И Г Р А Ю Щ И Е В Ш А Ш К И , КАЛАХ И ШАХМАТЫ

4 9

бготов и различные

иные «шахматные знания», описанные

в статье Гринблатта и др.

 

 

К различным процедурам, улучшающим действие про­

граммы,

следует

отнести

альфа-бета-процедуру,

оцен­

ку ходов

из данной позиции

(для вероятностного

упоря­

дочения и процедуры суживающегося «-наилучшего на­ правленного сокращения), слежение за повторением по­ зиций, использование сведений по теории дебютов и дру­ гих знанийобигре в шахматы. Обычно программа делает свой ход за 1 мин. Хороший игрок (не говоря уже о зна­ токе или мастере), как правило, одерживает победу над этой и любой другой программой для игры в шахматы) Эта программа под именем Мак Хэк Сикс (Mac Hack Sixчислится среди почетных членов шахматной федерации США и Массачусетской шахматной ассоциации. Она принимает участие в турнирах, причем связь с ней осу­ ществляется по телетайпу, расположенному в месте проведения турнира, с использованием телефонных кабе­ лей. В турнире, состоявшемся в апреле 1967 г., программа завоевала первенство по классу D. В табл. 2.3 приведены две турнирные партии, сыгранные Мак Хэк Сиксом. В первой партии игрок, игравший белыми, имел оценку 2190; это означает, что он опытный игрок, по классу игры приближающийся к мастеру. Его первый ход пеш­ кой g2 — g3, т. е. он ходит пешкой, расположенной перед королевским конем, со 2-й клетки на 3-ю. Ответный ход

Мак Хэк Снкса — пешка е7 — е5. Белые играют

конем

Kg 1 — f3 и т.

д. Cg2 : Ь7 означает,

что слон

берет

ладью. 0 — 0

означает

рокировку в

сторону

короля,

0 — 0 — 0 —в сторону

ферзя.

 

 

Другие программы, играющие в шахматы. Программа Гринблатта и др. — наилучшая из всех действующих программ, краткие описания которых даются ниже. Процедура А. Н. Тьюринга (1951) была промоделирована вручную, но никогда в действительности не программиро­ валась для вычислительной машины. Она являлась мини­ максной процедурой «сначала вглубь». Критерий оконча­ ния основывался на идее мертвой позиции. Тьюринг называл позицию мертвой, если в ней немедленное взятие фигуры невозможно. В Лос-Аламосской программе (Кистеридр., 1957) была реализована минимаксная процедура

4—1677

Таблица 2.3. Две партии, сыгранные в турнире Мак Хэк Слксом1

 

 

Партия

№ 1

 

 

 

Белыми играет шахматист, аттестованный оценкой 2190;

 

 

 

Черными играет Мак Хэк Сикс

 

Номер

Белые

Ч.рные

Номер

Белые

Черные

хода

хода

 

 

 

 

1

g2-g3

e7—e5

29

Лгіі—d3

Ле5—e2

2

K g l - Г З

e5—e4

30

ЛгіЗ—d2

Ле2:с12

3

Kf3—сІ4

G'8—c4

31

<Pc3:d2

Кеб—е5

4

Kd4—ЬЗ

Cc5—b6

32

ЛП—dl

ФА7—с7

5

СП—g2

Kg8 - f 6

33

Cg2—d5

КрЬ7—Ь6

6

* с2—с4

d7—d6

34

Ь3 - Ь 4

Сс5—Ь6

7

к ы — 3

Cc8—e6

35

ct>d2—c2

Ке5—сб

8

d2—d3

e4:d3

36

Cd5—e6

Кеб—d4

9

Cd2:b7

Kb8 - d7

37

J\A\:AA

Cc5:d4

10

e2:d3

Ла8—b8

3S

<3>c2:f5 +

Kg6 - g7

11

Cb7-g2

0 - 0

39

ФГ5—g4 +

Kpg7~h6

12

0—0

Ce6—g4

40

Og4:d4 .

Фс7—e7

13

Odl—c2

ЛГ8—e8

41

Фс14—h4

Kpli6-g6

14

d3—d4

c7—c5

42

Ce6—f5 +

Kpg6—g7

15

Ccl—e3

c5:d4

43

Od4:h7 +

Kpg7-f8

16

Kb3:d4

Kd7—e5

44

ФЬ7—h8 +

Kpf8—17

17

h2—h3

Cg4—d7

45

ФЬ8—a8

Фе7—c7

18

Ь2—ЬЗ

Cb6—c5

46

Фа8—d5+

Kpf7—g7

19

Лаі—dl

ФА7— c7

47

Kpn2-g2

Фс7—e7

20

K p g l - h 2

Ke5—c6

48

h3—li4

Kpg7-h6

21

СеЗ—g5

Ле8—e5

49

g3-g4

KphC-g6

22

Cg5:f6

g7:f6

50

h4—h5

Фе7—e2

23

Kc3—e4

f6—f5

51

h5—h6

Kpg7—1"8

24

Ke4—f6+

Kpg8-g7

52

h6—h7

Фе2:12

25

Kf6:d7

Oc8:d7

53

Kpg2:f2

Kpf8—e7

26

Kd4—f3

ЛЬ8—e8

54

h7—И8Ф

a7—a6

27

Kf3:e5

Ле8:е5

55

ФАЬ—еб

Мат

28

Фс2—c3

f7—Г6

 

 

 

Соседние файлы в папке книги из ГПНТБ