Неизвестно - Prolog

Здесь есть возможность читать онлайн «Неизвестно - Prolog» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Prolog: краткое содержание, описание и аннотация

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

Prolog — читать онлайн бесплатно полную книгу (весь текст) целиком

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

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Таким образом, таблица советов это программа в высшей степени непроцедурного характера. Интерпретатор языка AL0 принимает на входе некоторую позицию, а затем, "исполняя" таблицу советов, строит форсированное дерево, определяющее стратегию игры в этой позиции.

Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

15. 6. Программа на языке AL0 для игры в шахматном эндшпиле

При реализации какой-либо игровой программы на языке AL0 ее можно для удобства разбить на три модуля:

(1) интерпретатор языка AL0,

(2) таблица советов на языке AL0,

(3) библиотека предикатов, используемых в таблице советов (в том числе

предикаты, задающие правила игры).

Эта структура соответствует обычной структуре системы, основанной на знаниях:

Интерпретатор AL0 выполняет функцию машины логического вывода.

Таблица советов вместе с библиотекой предикатов образует базу знаний.

15. 6. 1. Миниатюрный интерпретатор языка AL0

Реализация на Прологе миниатюрного, не зависящего от конкретной игры интерпретатора языка AL0 показана на рис. 15.6. Эта программа осуществляет также взаимодействие с пользователем во время игры. Центральная задача этой программы - использовать знания, записанные в таблице советов, то есть интерпретировать программу на языке советов AL0 с целью построения форсированных деревьев и их "исполнения" в процессе игры. Базовый алгоритм порождения форсированных деревьев аналогичен поиску с предпочтением в И / ИЛИ-графах гл. 13, при этом форсированное дерево соответствует решающему И / ИЛИ-дереву. Этот алгоритм также напоминает алгоритм построения решающего дерева ответа на вопрос пользователя, применявшийся в оболочке экспертной системы (гл. 14).

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

% Миниатюрный интерпретатор языка AL0

%

% Эта программа играет, начиная с заданной позиции,

% используя знания, записанные на языке AL0

:- ор( 200, xfy, :).

:- ор( 220, xfy, ..).

:- ор( 185, fx, если).

:- ор( 190, xfx, то).

:- ор( 180, xfy, или).

:- ор( 160, xfy, и).

:- ор( 140, fx, не).

игра( Поз) :- % Играть, начиная с Поз

игра( Поз, nil).

% Начать с пустого форсированного дерева

игра( Поз, ФорсДер) :-

отобр( Поз),

( конец_игры( Поз), % Конец игры?

write( 'Конец игры'), nl, !;

сделать_ход( Поз, ФорсДер, Поз1, ФорсДер1), !,

игра( Поз1, ФорсДер1) ).

% Игрок ходит в соответствии с форсированным деревом

сделать_ход( Поз, Ход .. ФДер1, Поз1, ФДер1) :-

чей_ход( Поз, б), % Программа играет белыми

разрход( Поз, Ход, Поз1),

показать_ход( Ход).

% Прием хода противника

сделать_ход( Поз, ФДер, Поз1, ФДер1) :-

чей_ход( Поз, ч),

write( 'Ваш ход:'),

read( Ход),

( разрход( Поз, Ход, Поз1),

поддер( ФДер, Ход, ФДер1), !;

% Вниз по форс. дереву

write( 'Неразрешенный ход'), nl,

сделать_ход( Поз, ФДер, Поз1, ФДер1) ).

% Если текущее форсированное дерево пусто, построить новое

сделать_ход( Поз, nil, Поз1, ФДер1) :-

чей_ход( Поз, б),

восст_глуб( Поз, Поз0),

% Поз0 = Поз с глубиной 0

стратегия( Поз0, ФДер), !,

% Новое форсированное дерево

сделать_ход( Поз0, ФДер, Поз1, ФДер1).

% Выбрать форсированное поддерево, соответствующее Ход' у

поддер( ФДеревья, Ход, Фдер) :-

принадлежит( Ход . . Фдер, ФДеревья), !.

поддер( _, _, nil).

стратегия( Поз, ФорсДер) :-

% Найти форс. дерево для Поз

Прав : если Условие то СписСов,

% Обращение к таблице советов

удовл( Условие, Поз, _ ), !,

% Сопоставить Поз с предварительным условием

принадлежит( ИмяСовета, СписСов),

% По очереди попробовать элем. советы

nl, write( 'Пробую'), write( ИмяСовета),

выполн_совет( ИмяСовета, Поз, ФорсДер), !.

выполн_совет( ИмяСовета, Поз, Фдер) :-

совет( ИмяСовета, Совет),

% Найти элементарный совет

выполн( Совет, Поз, Поз, ФДер).

% "выполн" требует две позиции для сравнивающих предикатов

выполн( Совет, Поз, КорнПоз, ФДер) :-

поддержка( Совет, ЦП),

удовл( ЦП, Поз, КорнПоз),

% Сопоставить Поз с целью-поддержкой

выполн1( Совет, Поз, КорнПоз, ФДер).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Prolog»

Представляем Вашему вниманию похожие книги на «Prolog» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Prolog»

Обсуждение, отзывы о книге «Prolog» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x