Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Язык Пролог Печать

Дескриптивные языки: ничего, кроме фактов

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

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

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

Методический поиск решения

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

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