Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Solution






Для разбора этого простого примера в первую очередь построим целевое дерево процесса поиска. Целевое дерево процесса поиска строится по следующим правилам:

1. Подцели должны быть согласованны по порядку сверху вниз.

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

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

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

 

 

Рис. 5. Пример насогласованного целевого дерева

 

 

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

 

 

 
 

 


Рис. 6. Пример согласованного целевого дерева

 

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

 

Построим алгоритм работы данной программы (рисунок 7).

Поскольку _ свободная переменная, то она может быть унифицирована с любым другим аргументом. Title в заголовке long_novel так же не связан. Целевое утверждение соответствует заголовку правила, и унификация выполняется.

Visual Prolog пытается согласовать подцели с правилом. В первую очередь Visual Prolog обращается к первой подцели в теле правила written_by (_, Title). Поскольку авторство книги является несущественным (на месте аргумента title анонимная переменная). Отношение written_by (_, Title) становится текущей подцелью, и Visual Prolog ищет решение для этого обращения. _унифицирована с любым аргументом

Title связана с pugahtev

 

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

T=pugahtev

T=mziri

2. Visual Prolog ищет соответствие с обращением book и Pages> 350. После выполнения сравнения значение переменной T=mziri.

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


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.005 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал