Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Point (X,Y)





□ oint<X1,Y>


poitttfX.Y]

Рис. 2.8. Пример вертикального а гори зон-шального отрезков прямой

С этой программой может быть проведен следующий диалог:

?- vertical (seg{ point {1,1J( point! 1,2) j). yes

?- vertical (seg; point11,1), point!2,Y>)). no

;- horizontal(seg(point(1,1), point (2,Y})), Y - 1

На первый вопрос был получен ответ "yes", поскольку цель вопроса согласуется с одним из фактов программы. Для ответа на второй вопрос не удалось найти какого-либо согласования. При ответе на третий вопрос переменной Y было присвоено зна­чение 1 в результате согласования с фактом о горизонтальных отрезках.

Примером более общего вопроса к этой программе может служить вопрос о том, существуют ли какие-либо вертикальные отрезки, которые начинаются в точке {2,3)?

?- vertical! seg(point(2,3),Р)>. P = point(2,Y}

Этот ответ означает, что таковыми являются любые отрезки прямой, оканчиваю­щиеся в любой точке [2, Y), иными словами, оканчивающиеся в любом месте на вертикальной прямой х = 2. Следует отметить, что фактически ответ системы Prolog может оказаться не таким изящным, как показано выше, но (в зависимости от ис­пользуемой реализации Prolog1) ■может выглядеть примерно так: Р = point <2,_136)

Тем не менее это различие является чисто внешним. В данном случае 136 пред­ставляет собой переменную, которая не была конкретизирована, но 13б — действи­тельное имя переменной, которое было сформировано системой во время выполне­ния. Системе приходится формировать новые имена, чтобы обеспечить возможность переименовать пользовательские переменные в программе. Такая необходимость воз­никает по двум причинам: во-первых, в связи с тем, что одно и то же имя в разных предложениях обозначает различные переменные, и, во-вторых, из-за того, что при последовательных применениях одного и того же предложения каждый раз исполь­зуется его "копия" с новым набором переменных.


Глава 2, Синтаксис и значение программ Prolog



Еще одним интересным вопросом к этой программе может служить вопрос о том, существуют ли отрезки, которые являются одновременно вертикальными и горизон­тальными.

?- vertical! S), horizontal (S).

s = segl point(X,Y), point(x,Y})

В этом положительном ответе системы Prolog на заданный вопрос фактически сказано, что любой отрезок, вырожденный в точку, имеет свойство быть вертикаль­ным и горизонтальным одновременно. И в этом случае ответ был выработан просто в результате согласования. Как и в предыдущем случае, вместо имен переменных X и Y в ответе могут появиться некоторые имена, сформированные внутри программы.

Упражнения

2.3. Будут ли следующие операции согласования завершаться успешно или не­
удачно? Если они завершатся успешно, то каковы будут результаты конкрети­
зации переменных?

а) point(А, В) = point С 1, 2).

б) pain (А, в) = point (X, Y, 2).

в) plus! 2, 2) = 4.

г) +(2, D) = ■»(Е, 2).

д) triangle(point(>lr0), Р2, РЗ) = triangle(PI, point(1,0),

point (0,Y)).

В последнем примере результат конкретизации определяет семейство тре­угольников. Какое описание применимо к этому семейству?

2.4. Исдольэуя способ представления отрезков прямых, описанный в данном разде­ле, составьте терм, который представляет любой вертикальный отрезок на прямой линии, заданной уравнением х = 5.

2.5. Предположим, что прямоугольник представлен термом rectangle! PI, P2, РЗ, Р4), где переменными Р обозначены вершины прямоугольника, заданные в определенном порядке. Определите отношение

regular (R)

которое является истинным, если R — прямоугольник с вертикальными и го­ризонтальными сторонами.





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


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 552 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

2254 - | 2139 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.