Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Конец_игры( Поз) :-мат( Поз)




Сосед_гор(X: Y, X1: Y):- % Сусідні клітки по горизонталі сосед_чсл(X, X1).

Сосед_верт(X: Y, X: Y1):- % Сусідні клітки по вертикалі сосед_чсл(Y, Y1).

Сосед_диаг(X: Y, X1: Y1):- % Сусідні клітки по діагоналі сосед_чсл(X, X1), сосед_чсл(Y, Y1).

Тепер доречно поставити деякі запитання.

По-перше, чи є наша програма-порадник коректною в тому розумінні, що вона ставить мат при будь-якому варіанті захисту з боку супротивника й при будь-якій початковій позиції, у якій на дошці король і тура проти короля? У статті Bratko (1978) наведений формальний доказ того, що таблиця порад дійсно є коректною в зазначеному смислі.

Інше можливе питання: чи є програма оптимальною, тобто чи вірно, що вона ставить мат за мінімальне число ходів? Неважко показати на прикладах, що гру нашої програми в цьому змісті не можна назвати оптимальною. Відомо, що оптимальний варіант у цім закінченні (той, що припускає оптимальну гру по обидва боки) має довжину не більш 16 ходів.

Хоча наша таблиця порад і далека від цього оптимуму, було показано, що число ходів напевно не перевищує 50. Це важливий результат у зв'язку з тим, що в шахах існує "правило 50-ти ходів": в ендшпілях типу "король і тура проти короля" супротивник, що має перевагу, повинен поставити мат не більш, ніж за 50 ходів; інакше може бути оголошена нічия.

 

% Бібліотека предикатів для закінчення "король і тура проти короля". Позиція представлена стуктурой:

 

% ЧейХод..Бх: Бу..Лх: Лу..Чх: Чу..Глуб
% ЧейХод - з чиєї сторони хід у цій позиції ('б' чи 'ч')
% Бх, Бу - координати білого короля
% Лх, Лу – координати білої тури
% Чх, Чу – координати чорного короля
% Глуб - глибина, на якій знаходиться ця позиція в дереві
% пошуку

 

% Відношення вибору елементів позиції

 

чей_ход(ЧейХод.._, ЧейХод).
бк(_..БК.._, БК). % Білий король
бл(_.._..БЛ.._, БЛ). % Біла тура
чк(_.._.._..ЧК.._, ЧК). % Чорний король
глуб(_.._.._.._..Глуб, Глуб).

восст_глуб(ЧХ..Б..Л..Ч..Г, ЧХ..Б..Л..Ч..0).
% Формується копія позиції, глубина встановлюється в 0

 

% Деякі відношення між клітками дошки

 

сосед_чсл(N, N1):- % Сусіднє число "в межах дошки"
(N1 is N + 1;
N1 is N - 1),
внутри( N1).

внутри(N):-
N > 0, N < 9.

сосед(S, S1):-
% Сусідні клітки (перевага - діагоналі)
сосед_диаг(S, S1);
сосед_гор( S, S1);
сосед_верт( S, S1).

% Предикати, що обмежують ходи
% Спеціалізовані генератори ходів виду:
% ход(Ограничение, Поз, Ход, Поз1)

ход(глубина < Макс, Поз, Ход, Поз1):-
глуб(Поз, Г), Г < Макс,!.

ход(глубина = Г, Поз, Ход, Поз1):-
глуб(Поз, Г),!.

ход(сначала диаг, б..Б..Л..Ч..Г, Б-Б1, ч..Б1..Л..Ч..Г1):-
Г1 is Г + l, сосед(Б, Б1),
% "сосед" породжує спочатку діагональні ходи
not сосед(Б1, Ч), % Не потрапити під шах
Б1 \== Л. % Не зіштовхнутись із турой

ход(ход ладьей, б..Б..Лх: Лу..Ч..Г, Лх: Лу-Л,
ч..Б..Л..Ч..Г1):-
Г1 is Г + 1,
коорд(I), % Число між 1 і 8
(Л = Лх: I; Л = I: Лу),
% По горизонталі або по вертикалі
Л \== Лх: Лу, % Обов’язково рухатись
not мешает(Лх: Лу, Б, Л). % Заважає

білий король

ход(ход_шах, Поз, Л-Лх: Лу, Поз1):-
бл(Поз, Л),
чк(Поз, Чх: Чу),
(Лх = Чх; Лу = Чу),
% Тура і чорний король на одній лінії
ход(ход_ладьей, Поз, Л-Лх: Лу, Поз1).

ход(разреш, б..П, М, П1):-
(Огр = сначала_диаг; Огр = ход ладьей),
ход(Огр, б..П, М, П1).




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


Дата добавления: 2014-01-04; Просмотров: 326; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.