Файл: Технология разработки нерекурсивных правил Задание.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.12.2023

Просмотров: 33

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Технология разработки нерекурсивных правил

Задание: Шахматы. Варианты взятия фигуры ладьей по горизонтали.

Исходные данные: коды всех фигур, их цвет и координаты (поле 1-8 на A-H), код ходящей ладьи, её цвет и её исходные координаты (поле 1-8 на A-H).

Результат: код ходящей ладьи, ее цвет и её новые координаты (поле 1-8 на A-H), код взятой фигуры.

Интерпретация задачи

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



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



Формирование и тестирование исходных данных

Совокупность аргументов каждого элемента объединим в один терм пользовательской структуры с именем фигура. Опишем эту пользовательскую структуру в области предикатов с указанием типов всех её аргументов.

Опишем фигуры. Каждая из них характеризуется своим набором аргументов: наименованием, обозначением, цветом, координатой по горизонтали (1-8) и координатой по вертикали (1-8).

Например, факт 1 (рис.2) читается так, поле содержит фигуру с наименованием пешка, обозначением п1, цветом черный, координатой по горизонтали 6 и координатой по вертикали 6.

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

PREDICATES

nondeterm фигура (symbol, symbol, symbol, integer, integer)

CLAUSES

% фигуры

фигура (пешка, п1, черный, 6, 6). %факт 1

фигура (пешка, п2, черный, 4, 5). %факт 2


фигура (пешка, п3, белый, 8, 4). %факт 3

фигура (пешка, п4, белый, 3, 3). %факт 4

фигура (конь, кн1, черный, 1, 7). %факт 5

фигура (конь, кн2, белый, 2, 6). %факт 6

фигура (слон, с1, черный, 5, 7). %факт 7

фигура (слон, с2, белый, 6, 4). %факт 8

фигура (ладья, л1, белый, 8, 5). %факт 9

фигура (ладья, л2, черный, 3, 4). %факт 10

фигура (ладья, л3, белый, 4, 1). %факт 11

фигура (ферзь, ф1, черный, 4, 8). %факт 12

фигура (король, кр1, черный, 6, 8). %факт 13

фигура (король, кр2, белый, 5, 1). %факт 14

GOAL

фигура (пешка, п1, черный, 6, 6). %запрос 1

Сформируем различные виды запросов к программе:



Запросы

Формулировки запросов

1

фигура (пешка, п1, черный, 6, 6).

Содержится ли на поле фигура с наименованием пешка, обозначением п1, цветом черный, координатой по горизонтали 6 и координатой по вертикали 6?

2

фигура (конь, кн4, белый, 4, 2).

Содержится ли на поле фигура с наименованием конь, обозначением кн4, цветом белый, координатой по горизонтали 4 и координатой по вертикали 2?

3

фигура (слон, с1, черный, 5, 7), фигура (ферзь, ф2, белый, 4, 8).

Содержится ли на поле одновременно фигура с наименованием слон, обозначением с1, цветом черный, координатой по горизонтали 5 и координатой по вертикали 7 и фигура с наименованием ферзь, обозначением ф1, цветом белый, координатой по горизонтали 4 и координатой по вертикали 8?

4

фигура (пешка, п2, черный, 4, 5); фигура (конь, кн2, белый, 2, 6).

Содержится ли на поле фигура с наименованием пешка, обозначением п2, цветом черный, координатой по горизонтали 4 и координатой по вертикали 5? В случае отрицательного ответа на первую часть проверяется, есть ли в схеме элемент с наименованием конь, обозначением кн2, цветом белый, координатой по горизонтали 2 и координатой по вертикали 6?

5

фигура (слон, Обозначение, черный, 5, 7).

Какое обозначение имеет фигура с наименованием слон, цветом черный, координатой по горизонтали 5 и координатой по вертикали 7?

6

фигура (ладья, Обозначение, белый, _, _).

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

7

фигура (Наименование, Обозначение, Цвет, 1, 7).

Какие наименование, обозначение и цвет имеет фигура, находящаяся в клетке с координатой по горизонтали 1 и координатой по вертикали 7?

8

фигура (_, Обозначение1, _, 3, _), фигура (_, Обозначение2, _, 3, _), Обозначение1 < Обозначение2.

Какие обозначения имеет пара фигур поля с координатами по горизонтали равными 3? Наименования, цвета и координаты по вертикали – произвольны. Обозначение 1 меньше обозначения2 (по кодировке), перестановки не допускаются.



По количеству целей запросы делят на простые запросы, состоящие из одной цели (запросы 1, 2, 5, 6, 7) и запросы составные, которые содержат две цели или более (запросы 3, 4, 8).

По наличию в целях именованных переменных классифицируют запросы, на не содержащие именованные переменные - могут иметь решения или истина, или ложь (запросы 1-4), и запросы с именованными переменными - указываются конкретизации именованных переменных (запросы 5-8).

Результаты выполнения запросов к программе:



Запросы

Формулировки запросов

1

yes

факт 1.

2

no

факты 1-14.

3

no

факты 1-14.

4

yes

факт 2.

5

Обозначение=с1

1 Solution

факт 7.

6

Обозначение=л1

Обозначение=л3

2 Solution

факты 9 и 11.

7

Наименование=конь, Обозначение= кн1, Цвет=черный

1 Solution

факт 5.

8

Обозначение1= л2, Обозначение2=п4

1 Solution

факты 10 и 4.

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

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

Шаг 1-й. Сопоставим цель с фактом 1.

Цель содержит структуру с именем фигура. Первый факт также содержит структуру. Сопоставляем их по правилу сопоставления структур. Сопоставляем имена структур (функторы) по правилу сопоставления констант. Имена у структур тождественны, поэтому результат сопоставления имен – истина.

Проверяем арность структур, то есть количество аргументов у каждой из них. Число аргументов у структур – 5. Результат проверки по арности – истина.

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

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

Запрос 6 является простым запросом с именованной переменной в качестве аргумента структуры.

Шаг 1-й. Сопоставляем цель с фактом 1.

Сопоставляем структуру цели со структурой утверждения по правилу сопоставления структур. Имена структур тождественны (фигурафигура).

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

Шаг 2-й. Сопоставляем цель с фактом 2. Получили результат – ложь (по аналогии с шагом 1). Тот же самый результат будет для фактов 3-8 (шаги 3-8).

Шаг 9-й. Сопоставим цель с фактом 9.

Сопоставляем структуру цели со структурой утверждения по правилу сопоставления структур. Имена структур тождественны (фигурафигура).

Арности сопоставляемых структур равны. Первый аргумент структуры цели тождественен первому аргументу структуры утверждения (ладьяладья).

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

Третий аргумент структуры цели тождественен третьему аргументу структуры утверждения (белыйбелый).

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

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

Шаг 10-й. Сопоставляем цель с фактом 10.

Имена структур цели и утверждения тождественны. Арности сопоставляемых структур равны. Первый аргумент структуры цели тождественен первому аргументу структуры утверждения. Второй аргумент структуры цели с именем Обозначение сопоставляем с соответствующим аргументом утверждения. Результат сопоставления – истина, при этом происходит конкретизация переменной Обозначение. Четвертый аргумент структуры цели не тождественен первому аргументу структуры утверждения (белыйчерный). Получили результат – ложь. Прекращаем дальнейшее сравнение. Переменная Обозначение переходит в неконкретизированное состояние, продолжается перебор утверждений и сопоставления.

Шаг 11-й. Сопоставляем цель с фактом 11. Процедура сопоставления аналогична процедуре на шаге 10, за исключением конкретизации переменной Обозначение. На 11-м шаге переменная получает значение равное л3.

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

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

Определения очередности разработки правил

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

Разработка логической модели правила

Сформируем логическую модель атаки ладьей л1 фигуры п2.