• Nenhum resultado encontrado

А. Л. Чернявский, Моделирование процесса решения сложных логических задач на вычислительных машинах (эвристическое программирование), Автомат. и теле- мех. , 1967, выпуск 1, 166–187

N/A
N/A
Protected

Academic year: 2024

Share "А. Л. Чернявский, Моделирование процесса решения сложных логических задач на вычислительных машинах (эвристическое программирование), Автомат. и теле- мех. , 1967, выпуск 1, 166–187"

Copied!
23
0
0

Texto

(1)

Math-Net.Ru

Общероссийский математический портал

А. Л. Чернявский, Моделирование процесса решения сложных логических задач на вычислительных машинах (эвристическое программирование), Автомат. и теле- мех. , 1967, выпуск 1, 166–187

Использование Общероссийского математического портала Math-Net.Ru подра- зумевает, что вы прочитали и согласны с пользовательским соглашением http://www.mathnet.ru/rus/agreement

Параметры загрузки:

IP: 178.128.90.69

7 ноября 2022 г., 00:23:49

(2)

УДК 681.39.056.06

МОДЕЛИРОВАНИЕ П Р О Ц Е С С А РЕШЕНИЯ СЛОЖНЫХ ЛОГИЧЕСКИХ З А Д А Ч НА ВЫЧИСЛИТЕЛЬНЫХ М А Ш И Н А Х (ЭВРИСТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ)

А. Л. ЧЕРНЯВСКИЙ (Москва)

Приводится обзор работ, содержащих описания программ для ре­

шения сложных логических задач на вычислительных машинах. Рас­

сматриваются специальные языки программирования, облегчающие со­

ставление и отладку таких программ.

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

тельных машинах представляют большой интерес, так как успех в этом направле­

нии позволил бы, с одной стороны, высказать гипотезы о характере процесса ре­

шения таких задач человеком, а с другой — автоматизировать весьма тонкие про­

цессы, требующие пока непосредственного участия человека. Это направление использования вычислительных машин получило в США название «искусственный разум» (artificial intelligence) [1, 2].

Решение сложной логической задачи представляет собой многошаговый про­

цесс, причем на каждом шаге возникает много альтернатив. Это множество альтер­

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

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

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

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

ходится применять методы, позволяющие из всех возможных путей на дереве от­

бирать только те, которые «с наибольшей вероятностью» ведут к цели. Такие ме­

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

ся на интуитивных соображениях и в силу этого не гарантируют получения ре­

шения в каждом частном случае.

В разделах I и II настоящего обзора рассматриваются работы, посвященные решению двух классов логических задач: математических и игровых. Интерес к этим задачам объясняется тем, что они достаточно сложны и вместе с тем и х легко формализовать, поэтому сам по себе п р о ц е с с построения дерева в принципе не тре­

бует сложных алгоритмов.

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

рая каждой позиции ставит в соответствие число-оценку).

Существует более прямой подход к моделированию мышления. Этот подход [3]

заключается в изучении хода рассуждений человека при решении некоторой зада­

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

В разделе III кратко рассмотрены работы, основанные на этом подходе.

Работы по «искусственному разуму» представляют собой, как правило, слож­

ные программы для вычислительных машин. Составление таких программ непосред- 166

(3)

ственно в кодах операций машины представляет большие трудности для програм­

миста. В разделе IV рассматриваются специальные языки программирования, зна­

чительно облегчающие составление и отладку программ такого рода.

I. Программы для доказательства теорем

Принцип построения дерева для доказательства теорем состоит в следующем.

Аксиомы и справедливые теоремы рассматриваются как истинные формулы неко­

торой формальной логической системы. Операции над этими формулами, в резуль­

тате которых снова получаются истинные формулы, называются правилами выво­

да. Примером может служить так называемое правило заключения: если А и A ZD В—- истинные формулы, то В — истинная формула. Таким образом, задача доказательства некоторой теоремы принимает следующий вид: задан набор истин­

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

Рассмотрим более подробно методику построения дерева доказательства на при­

мере нескольких программ.

1. П р о г р а м м а Г е л е р н т е р а д л я д о к а з а т е л ь с т в а - т е о р е м п л а ­ н и м е т р и и [4—8]

Эта программа строит дерево следующим образом. Утверждение теоремы (обо­

значим его G0) становится корнем дерева. Посылки теоремы заносятся в список установленных формул. Из хранящейся в памяти машины библиотеки теорем (ко-

Рис. 1 Рис. 2

торая содержит ранее доказанные теоремы и аксиомы, имеющие вид A ZD В) извле­

каются теоремы, утверждения которых совпадают с утверждением доказываемой теоремы.

Посылки этих теорем становятся вершинами 1-го слоя дерева решения. Далее процесс повторяется: из каждой вершины i-то слоя образуются вершины (£ + 1)-го слоя. Вершины дерева будем называть подцелями. Пусть £г — подцель г-ro слоя.

Тогда все Gj такие, что / < i, называются подцелями более высокого порядка, чем Gi. Если на некотором шаге на дереве появляется подцель, формула которой со­

держится в списке установленных формул, то тем самым оказывается доказанным и исходное утверждение.

В действительности подцели представляют собой обычно конъюнкцию несколь­

ких членов. Например, подцель «ABCD — параллелограмм» записывается формулой АВ || CD Д AD \\ ВС. Каждая вновь появившаяся подцель такого вида (она называ­

ется составной) расщепляется на просты^ подцели, т. е. для доказательства каж­

дого конъюнктивного члена строится свое дерево. Процесс повторяется до т е х ц о р , пока не будут доказаны все конъюнктивные члены утверждения теоремы.

Примером может служить дерево, изображенное на рис. 1. Кружками обозна­

чены конъюнктивные члены подцелей. Теорема доказана, если кружки, помеченные крестиками, соответствуют формулам из списка установленных формул.

Построение дерева доказательства «с конца», т. е. от формулы, которую тре­

буется доказать, к установленным формулам, используется во всех программах для доказательства теорем. Такое построение позволяет применить ряд методов сокра­

щения числа рассматриваемых путей на дереве доказательства. Рассмотрим эти методы.

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

ния задачи (например, доказуема ли она). Однако часто существует интерпрета^

167

(4)

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

ны из дерева, начиная у ж е с 1-го слоя, тем самым резко сокращая число возмож­

ных путей доказательства.

В программе Гелернтера в качестве такой интерпретации используется чертеж.

Чертеж задается! машине в виде специальным образом упорядоченной совокуп­

ности наименований точек, их координат, отрезков и углов. Координаты подбира­

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

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

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

зательство. Метод интерпретации на чертеже оказался наиболее действенным мето­

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

1.2. Удаление избыточных подцелей. Ниже приводится ряд простых правил, вы­

текающих из структуры дерева доказательства, которые позволяют удалять с дере­

ва заведомо лишние подцели.

а. Говорят, что подцель Gi связывает подцель Gk, если i < и для доказатель­

ства Gi достаточно доказать Gk. Если среди подцелей одного и того ж е слоя, связан­

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

лей на дереве остается только одна (рис. 2, а). (На рис. 2 факт удаления подцели обозначается пунктирной линией. Буквами обозначены простые подцели и конъ­

юнктивные члены составных подцелей).

б. Если в разных слоях дерева доказательства появляются идентичные подцели такие, что одна из них связывает другую (рис. 2, б), или обе они связаны подцелью более высокого порядка (рис. 2, в), то из этих подцелей на дереве остается толькс та, порядок которой выше. Это предохраняет дерево доказательства от зацикливания и дает возможность не рассматривать заведомо более длинные доказательства.

в. Если на дереве доказательства появляется отрезок, связывающий идентичные подцели и не содержащий альтернативных путей (ABA на рис. 2, г ) , то все подце­

ли этого отрезка блокируются, т. е. их не разрешается использовать при построении дерева до тех пор, пока связывающая их подцель (F) не будет доказана по альтерна­

тивному пути дерева доказательства.

1.3. Метод «синтаксической симметрии». Этот метод полезен в том случае, когда формулы формальной системы обладают достаточно высокой степенью симметрии.

Пусть посылки теоремы заданы формулами #4, Я2, . . . , Нт. Обозначим через л # * формулу, которая получается из # * перестановкой наименований точек. Перестанов­

ка я называется синтаксической симметрией, если она не меняет множества посы­

лок, т. е. >

Л # 1 Л Л ; #2 Л • • • Л = # 1 Д #2 Л . • • АНт (см. пример в Приложении 1).

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

Указанный метод заключаете^ в том, что синтаксически сопряженные подцели рассматриваются как идентичные и удаляются из дерева доказательства в соответ^

ствии с правилами п. 1.2 подобно тому, как поступает математик, заменяя доказа­

тельство некоторого утверждения словами: «доказательство аналогично». Алгоритм, позволяющий найти все синтаксические симметрии данной теоремы, подробно опи­

сан в [7, 8].

1.4. Очередность при доказательстве подцелей. Благодаря тому что доказательст­

ва теорем планиметрии имеют небольшую длину (порядка 10 шагов), методы 1.1—

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

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

В первом случае программа заносит в список установленных формул подцели, свя­

зывающие доказанную подцель, и приступает к доказательству следующей недока­

занной подцели. Во втором случае программа поднимается по «неудачной» ветви де­

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

168

(5)

Во втором варианте программы Гелернтера («расширенная программа») для вы­

бора очередной подцели при движении вдоль ветви дерева доказательства использу­

ется понятие «расстояния» между различными формулами. Программа подсчитывает

«расстояние» между формулами каждой подцели и формулами предпосылок и выби­

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

Серия экспериментов, проведенная для сравнения эффективности расширенной программы и основной программы, показала, что расширенная программа может до­

казывать более сложные теоремы. Те ж е задачи, которые решаются обеими программа­

ми, расширенная программа решает приблизительно в 3 раза быстрее и при этом вырабатывается около 2/3 общего числа подцелей, вырабатываемых основной про­

граммой. Средняя глубина дерева решения 7—9 слоев (что составляет 2/3 средней глубины, полученной при работе основной программы) *.

В Приложении 1 приведен пример, иллюстрирующий ход доказательства простой теоремы и некоторые детали программы, которые здесь не рассматривались.

В программе Гелернтера каждый шаг доказательства представляет собой одно­

кратное применение правила заключения. Такой простой способ построения дерева доказательства оказался достаточно эффективным благодаря тому, что формулы пла­

ниметрии имеют простой вид. Для доказательства теорем других разделов математи­

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

дет неоправданно большим. В работах [9—11] предложены программы, использующие более сложные методы построения дерева, позволяющие уменьшить дерево за счет усложнения процесса образования новых подцелей.

2. П р о г р а м м а «Л о г и к - т е о р е т и к» 1[9, 10]

Программа «Логик-теоретик» работала со следующим вариантом исчисления вьь сказываний **:

Аксиомы:

(PVP) =эр, р=> (? V P ) ,

(pVq)^(qVp), bV(qVr)]zD[qV(pVr)l

( p b ? ) D [ ( r V p ) D ( r V f l ) ] . Правила вывода.

Г. Правило подстановки. Если А теорема (т. е. истинная формула), то, з а м е ­ няя в ней любую букву всюду, где она входит, произвольной формулой, снова полу­

чаем теорему.

2°. Правило замены связок. Связку =>, где бы она ни встречалась, можно заменить связкой V (и наоборот) согласно тождеству

р гэ q Е = р V q (черта сверху означает отрицание).

3°. Правило заключения. Если А и AID В — теоремы, то В — также теорема.

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

ных на правилах вывода.

Г. Метод подстановки. Каждую вновь возникшую на дереве подцель программа пытается доказать за один шаг методом подстановки. Доказываемая подцель срав­

нивается по очереди с аксиомами и теоремами из списка установленных формул.

При каждом сравнении ищутся такие подстановки или замены связок, после кото­

рых преобразованная подцель совпадает с установленной формулой.

* Помимо достаточно универсальных методов, указанных в пп. 1.1—1.4, програм­

ма Гелернтера содержит много деталей, связанных со спецификой планиметрии. На­

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

нительное построение, соединяя на чертеже две ранее не соединенные точки и продол­

ж а я полученный отрезок до пересечения с другими отрезками. После этого повторяет­

ся процедура доказательства.

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

Для генерации новых подцелей служат следующие 2 метода.

169?

(6)

2°. Метод заключения. Если доказываемое выражение есть В, программа просмат­

ривает аксиомы и теоремы вида AZDC такие, что С совпадает с В или С можно пре­

образовать в В методом подстановки. Если это удается, А становится новой подцелью.

3°. Методы цепеобразования. Если доказываемое выражение имеет вид A ZD В, ищутся аксиомы или теоремы, которые методом подстановки можно преобразовать к виду A ZD С (метод прямого цепеобразования) или С ZD В (метод обратного цепе­

образования). Если такая аксиома или теорема найдена, то выражение С ZD В (соот­

ветственно A ZD С) становится новой подцелью.

Указанные методы применяются в следующем порядке.

Г . Переходя к доказательству очередной подцели, программа пытается доказать ее методом подстановки.

2°. Если метод подстановки не дает доказательства, пробуется метод заключения.

Каждое успешное применение метода заключения порождает новую подцель более низкого порядка. Затем делается попытка доказать эту подцель с помощью метода подстановки. Если это не удается сделать, программа возвращается к подцели, к ко­

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

3°. Если применение всех методов к очередной подцели не дает доказательства, программа переходит к доказательству следующей подцели того ж е слоя (т. е. пере­

ходит к правилу 1°). После того как рассмотрены все подцели £-го слоя, программа переходит к подцелям (i + 1)-го слоя.

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

перимент), либо до тех пор, пока не станет ясно, что ни один из методов не приводит к образованию новых подцелей.

Пример доказательства, полученного программой «Логик-теоретик», приводится в Приложении 2.

В программе «Логик-теоретик» ограничение ветвления дерева доказательства происходит за счет того, что правила вывода применяются в жестко заданной по­

следовательности. Так как эта последовательность выбрана достаточно произвольно, то существуют теоремы, которые^ программа принципиально не может доказать. Так, при доказательстве теоремы р Vp на некотором шаге все подцели становятся ложны­

ми. Из 52 теорем, предъявленных программе для доказательства, таких теорем ока­

залось 2. При доказательстве каждой теоремы программе сообщались все предыду­

щие теоремы. Программа «Логик-теоретик» доказала 38 теорем. Из этих теорем 17 были доказаны за 1 шаг (однократным применением подстановки), 19 теорем — за 2 шага и 2 теоремы — за 3 шага. Двенадцать теорем программа не доказала из-за ограничений по времени или по памяти.

3. П р о г р а м м а д л я д о к а з а т е л ь с т в а т е о р е м т е о р и и г р у п п [И]

Рассмотренные выше программы оперируют с достаточно простыми формальны­

м и системами. Для доказательства теорем из иных разделов математики требуется более сложный формальный язык, включающий, в частности, кванторы. В [11] пред­

ложена методика построения дерева для доказательства теорем теории групп. Фор­

мальная система, в которой проводится доказательство, представляет собой узкое исчисление предикатов с равенством, дополненное тремя индивидуальными функция­

ми ху, а г1 и е, которые интерпретируются как групповая операция, операция взятия обратного элемента и единичный элемент. Приведем пример. Теорема «Пересечение R двух подмножеств Р и Q группы Г, замкнутых относительно операции взятия об­

ратного элемента, также замкнуто относительно этой операции» записывается сле­

дующей формулой:

(VxtPxi ZDPxr1) A (Vx2Qx2 => Qx2~l) A ( V z s i ^ s ^

= ^ A N D i v ^ D & i , - 1 ) , (1) где предикат вида Ux означает высказывание «х принадлежит U».

Программа включает 3 алгоритма: алгоритм расщепления цели АРЦ, алгоритм поиска вхождения АПВ и алгоритм обработки равенств. Первые два алгоритма слу­

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

мов, по замыслу авторов, должна имитировать действия человека при доказательстве теорем.

1. Алгоритм расщепления цели осуществляет следующие преобразования.

Если формула цели имеет вид RxUlx), естественно искать такое i, что U(t).

В соответствии с этим АРЦ отбрасывает приставку и получает подцель U(t),

где t _ новая свободная переменная. Эта переменная помечается индексом неизвест­

ная. Нужное значение t находится впоследствии с помощью алгоритма обработки равенств (см. н и ж е ) .

Если формула цели имеет вид yxU(x), человек обычно рассуждает так: зафик­

сируем произвольное t и докажем, что U(t). В соответствии с этим АРЦ отбрасывает приставку ух и получает подцель U(t). При этом новая свободная переменная t по­

мечается индексом фиксированная.

170

(7)

Если цель имеет вид A ZD В, АРЦ получает подцель В, добавляя А к списку уста­

новленных формул. Для доказательства подцелей вида А Д В, так же как и в [4], отдельно доказывается каждый конъюнктивный член.

2. Подцель называется элементарной, если ее формула не содержит кванторов и логических связок, кроме отрицания. Для доказательства элементарной подцели программа генерирует новые подцели, используя алгоритм поиска вхождения АПВ.

АПВ находит посылки из списка установленных формул, в которые входит предикат­

ный символ данной элементарной подцели. Новая подцель образуется по принципу:

«что нужно доказать, чтобы из данной посылки следовала подцель, которую требует­

ся доказать?» • • , Пример. Пусть Pti — доказываемая подцель и пусть посылка, содержащая вхож­

дение Р, имеет вид

Yz^yYxQ{xh)zDRt2f\{Ptzy Q{zy)), (2) Новая подцель, полученная в результате работы АПВ, будет

2) / \ Q(ziyi) Ah = ti. (3) где zi: Xi — свободные переменные типа неизвестная, yi — свободная переменная ти­

па константа.

В самом деле, если удастся подобрать такие Zi и xi% что (3) справедливо при лю­

бом то так как для этих Zi и #i (2) также справедливо, доказательство первых двух конъюнктивных членов (3) дает доказательство формулы Pt3, доказательство равенства означает справедливость Pti.

3. Если очередная подцель, подлежащая доказательству, содержит равенство, де­

лается попытка доказать ее с помощью алгоритма обработки равенств. Получаемые равенства могут быть либо тождествами, либо уравнениями (т. е. тождествами вида jp(#i, #2, . . . , жп) = е, в которых некоторые жг- имеют индекс неизвестная). В первом случае доказательство проводится подстановками с использованием тождеств, имею­

щихся в списке установленных формул. Решение уравнений осуществляется путем направленного перебора всех возможных решений.

Корнем дерева доказательства становится формула, которую требуется доказать.

Очередная ветвь дерева строится следующим образом.

1°. Если формула, полученная на предыдущем шаге, не элементарна, применяем АРЦ и возвращаемся к 1° (т. е. применяем АРЦ к вновь полученной формуле).

2°. Если формула элементарна и не содержит равенства, применяем АПВ и воз­

вращаемся к 1°.

3°. Если формула содержит равенство, применяем алгоритм обработки равенств.

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

а) АПВ может использовать другую посылку при поиске вхождения;

б) если для доказательства подцели использовалось значение неизвестной, полу­

ченное в результате решения некоторого уравнения, быть может, следует использо­

вать другое решение этого уравнения; • в) если формула подцели имеет вид A ZD В, следует попытаться доказать В ZD А

(т. е. вести доказательство от противного).

Для того чтобы предотвратить слишком глубокое продвижение вдоль какой-ни­

будь одной ветви дерева доказательства, программа заканчивает продвижение, как только число ответвлений от данной ветви превысит заданный порог. В остальном порядок построения дерева такой же, как и в [4].

В Приложении 3 приведен пример, иллюстрирующий ход доказательства теоре­

мы (1). Каких-либо экспериментальных результатов в [ И ] не приводится.

4. Д р у г и е п р о г р а м м ы д л я р е ш е н и я м а т е м а т и ч е с к и х з а д а ч Из работ, посвященных решению математических задач, отметим еще [12], где предложена программа, берущая неопределенные интегралы. Программе задается набор возможных подстановок типа z = иа, z = tg и / 2 и т. п. Если подынтегральную функцию рассматривать как подцель, то каждая подстановка дает новую подцель.

В список установленных формул помещаются табличные интегралы. Программа име­

ет две особенности.

1°. Все подынтегральные функции разбиваются на несколько типов. Для каждого типа используется свой набор возможных подстановок. Такое разбиение осуществля­

ется на основе обычно используемых эвристических рекомендаций: в каких случаях целесообразно применять ту или иную подстановку. Отдельно выделяется тип функ­

ций, которые целесообразно интегрировать по частям.

2°. Вводится оценка сложности подынтегрального выражения. На каждом шаге из всех подцелей дерева программа выбирает для доказательства наименее сложную подцель.

В [12] приведено несколько примеров, иллюстрирующих работу программы.

В работах, рассматриваемых в настоящем разделе, построение доказательств яв­

ляется не самоцелью, а скорее средством для того, чтобы попытаться представить себе процесс доказательства теоремы человеком. Опубликован ряд работ (см., напри-

171

(8)

мер, [13—15]), направленных лишь на получение доказательств. Так, в [13] предложен вариант исчисления высказываний, позволяющий с помощью простого алгоритма д о ­ казать все теоремы (в том числе те, которые не смог доказать «Логик-теоретик»).

В других работах приводятся алгоритмы доказательства теорем некоторых разделок исчисления предикатов путем сведения их к перебору большого числа подстановок.

II. Игровые программы

Трудности, возникающие при решении игровых задач, связаны прежде всего с тем, что дерево решения имеет большую глубину. Для более или менее сложных игр среднее число ходов в партии порядка нескольких десятков. Даже если допустить, что на каждом шаге выбор очередного хода производится лишь из небольшого числа наиболее «разумных» ходов, построить дерево игры до конца оказывается невозмож­

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

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

В большинстве программ оценочная функция представляет собой линейный поли­

ном [16—22]. Каждый член этого полинома характеризует некоторое свойство пози­

ции. Например, если шахматным фигурам поставить в соответствие числа, характе­

ризующие их относительную ценность

» (1 — за пешку, 2 — з а коня или слона, и т. д . ) , то, вычитая из суммарной ценно- , сти своих фигур суммарную ценность ф и ­ гур противника, получим число, характе­

ризующее материальный перевес. Так как разные свойства позиции имеют разное

значение с точки зрения исхода партии, I каждый член входит в оценочный полином

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

значение оценочной функции.

Специфическая особенность игровых задач — наличие противника. Поэтому пра­

вильно оценить тот или иной х о д можно, лишь рассматривая возможные ответы про­

тивника. При этом естественно предположить, что противник будет отвечать наилуч­

шим образом (полученная в результате оценка называется минимаксной). На рис. 3 показана процедура получения минимаксной оценки при анализе продолжений (1 — ход белых, 2 — ход черных). Значения оценочной функции подсчитываются для пози­

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

(считается, что противник будет стремиться минимизировать оценку, в то время как задача машины — максимизировать е е ) . Весьма существенным являете^ вопрос о том, на каком месте оборвать исследование варианта. Например, если в шахматной программе задаться фиксированной глубиной просмотра, может оказаться, что про­

грамма будет оценивать материальный перевес, не дожидаясь окончания начавшегося размена. Это приведет к грубым ошибкам. Тьюринг [19] предложил продолжать каж­

дый вариант до так называемой «мертвой» позиции, т. е. позиции, в которой на сле­

дующем ходе невозможно взятие фигуры. В программе Нью'эла, Шоу и Саймона [23]

концом варианта считается позиция, «мертвая» в отношении не только материально­

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

Рассмотрим способы повышения эффективности метода оценочной функции.

1. Увеличение глубины рассматриваемых продолжений. Очевидно, что если за­

даться некоторой оценочной функцией, программа будет играть тем лучше, чем боль­

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

дой позиции равно приблизительно 30. Следовательно, если рассматривать все эти ходы, то для увеличения глубины просмотра всего на один х о д (включая ответ про­

тивника) потребуется повысить скорость счета в 3 02 = 900 раз.

В то ж е время известно, что шахматист просматривает лишь ^очень неболь­

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

* В свою очередь скорость счета может быть увеличена либо путем усовершенст­

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

172

(9)

рекомендаций, предлагаемых шахматной теорией, представляет собой весьма труд­

ную задачу (см., например, [24, 25]). Из игровых программ, следующих этому на­

правлению, наиболее интересна программа Ньюэла, Шоу и Саймона [23].

Эта программа представляет собой набор независимо работающих программ, каж­

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

дой цели, состоит из трех подпрограмм: 1) подпрограмма, определяющая уместность цели в данной позиции, 2) генератор ходов, направленных на достижение данной це­

ли, 3) генератор продолжений.

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

ности; б) генераторы ходов, соответствующие отобранным целям, предлагают вариан­

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

ные позиции оцениваются, и для выбора хода используется обычная минимаксная процедура.

В отличие от большинства известных программ в [23] оценка позиции представля­

ет собой не линейный полином, а вектор, каждый компонент которого является оцен­

кой с точки зрения одной из отобранных целей. При сравнении оценок в ходе мини­

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

чае равенства сравниваются компоненты, соответствующие следующей по порядку важности цели, и т. д.

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

витие фигур, структура пешек, безопасность короля, серьезные угрозы и гамбиты.

В [23] приводится партия, сыгранная программой, имеющей 3 цели: материальное преимущество, контроль центра и развитие фигур. Несмотря на отсутствие других важных целей, программа в начальной стадии партии играла довольно разумно.

В Приложении 4 приводится подробное описание части программы, связанной с целью «контроль центра».

2. Автоматическая корректировка оценочной функции. Второй способ повышения эффективности метода оценочной функции — совершенствование самой функции.

Если бы удалось построить оценочную функцию, которой лучший ход доставляет мак­

симальное значение, то вообще отпала бы необходимость рассматривать продолже­

ния. Существование такой функции сомнительно, особенно для сложных игр типа шахмат. Однако для более простых игр можно попытаться найти некоторое прибли­

жение к такой «оптимальной» функции.

В [20, 21] предложен метод автоматической выработки оценочной функции, осно­

ванный на следующей идее. Будем рассматривать значение оценочной функции на текущей позиции как предсказание на несколько ходов вперед. Тогда разность б м е ж д у оценкой, фактически полученной через несколько ходов, и предсказанной можно использовать для корректировки оценочной функции. Если бы удалось до­

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

Рассмотрим реализацию этой идеи в шашечной программе Сэмюэля [20].

Оценочная функция представляет собой линейный полином. Поскольку априори неизвестно, какие свойства позиции наиболее важны и с каким весом следует брать соответствующий член оценочного полинома, программе задается некоторый избыточ­

ный набор членов, так что можно предположить, что в этом наборе прямо или кос­

венно учитываются все существенные свойства позиции. Программа в процессе обу­

чения находит для них веса и отбирает наиболее существенные члены (существен­

ность каждого члена определяется абсолютной величиной его веса). Определение не­

скольких членов оценочного полинома дается в Приложении 5.

В [20] экспериментально исследовались два алгоритма) определения весов.

Первый алгоритм. Корректировка весов в процессе двусторонней игры. В этом варианте программа играет «сама с собой». Работу программы можно представить как игру между двумя программами — Альфа и Бета. Программа Бета использует один и тот ж е оценочный полином на протяжении всей партии. Программа Альфа после каждого хода корректирует веса своего оценочного полинома. Если Альфа вы­

игрывает партию, ее оценочный полином передается Бете, и игра продолжается.

Если же Альфа проигрывает подряд несколько партий, считается, что достигнут ло­

кальный экстремум в пространстве весов и производится сильное изменение оценоч­

ного полинома (наибольший вес полагается равным нулю).

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

личить, а веса отрицательных уменьшить. Если б < 0, делается противоположная операция. В этом случае можно предположить, что либо прежняя оценка была завы-

Referências

Documentos relacionados