1. 9. Фразы хорна как средство представления знаний Решение задач

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

Программирование

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

1) необходимо проанализировать структуру прикладной области и представить эту структуру в виде логической спецификации данной области;

2) следует написать программу, реализующую структуру, которая описана в логической спецификации.

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

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

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

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

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

Ковальски кратко описывает этот вид алгоритмов решения задач следующим "уравнением" [56]:

Алгоритм = Логика + Управление

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

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

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие