Cтраница 4
Трассировать цель означает: предоставить пользователю информацию, относящуюся к достижению этой цели в процессе ее обработки пролог-системой. [46]
![]() |
Архитектура ТСРЯ-системы. Цифра 2 над стрелкой обозначает связывание во время выполнения. [47] |
В сильно связанных системах TCPR ( tightly coupled systems) взаимодействие между Прологом и СУБД управляется процессом вывода Пролог-системы. Сильное связывание называют также динамическим, поскольку связывание осуществляется при выполнении цели. [48]
Простейший способ организовать поиск в И / ИЛИ-графах средствами Пролога - это использовать переборный механизм, заложенный в самой пролог-системе. Оказывается, что это очень просто сделать, потому что процедурный смысл Пролога это и есть не что иное, как поиск в И / ИЛИ-графе. [49]
![]() |
Представление объектов с в виде деревьев. [50] |
Если одно и то же имя появляется в программе в двух различных смыслах, как в вышеупомянутом примере с точкой, то пролог-система будет различать их по числу аргументов и интерпретировать это имя как два функтора: один - двухаргументный; второй - трех. [51]
Один из недостатков нашей процедуры отвгтпольз, который хорошо виден из приведенного выше диалога, - это появление на выходе системы имен, генерируемых пролог-системой, что выглядит довольно неуклюже. Символы, подобные 17, следовало бы заменить на более осмысленные слова. [52]
Каким образом решать эту задачу, как прочесывать базу данных, в которой записаны все известные отношения отец и родитель, - это уже забота самой пролог-системы. Программист только сообщает системе то, что ему известно, и задает вопросы. Его в большей степени интересуют знания и в меньшей - алгоритмы, при помощи которых из этих знаний извлекается нужная информация. [53]
На рис. 2.1 приведена классификация объектов данных Пролога. Пролог-система распознает тип объекта по его синтаксической форме в тексте программы. [54]
В большинстве Пролог-систем пользователь может сделать это вводом знака; после первого ответа. Если альтернативные ответы существуют, Пролог выдаст другие значения переменных. Если альтернатив нет, ответом будет нет - как и для цели, попытка согласовать которую неудачна. [55]
Не следует понимать этот ответ как мэри не человек. Что в действительности пролог-система хочет сказать своим да, так это то, что программе не хватает информации для доказательства утверждения Мэри - человек. Это происходит потому, что при обработке цели not система не пытается доказать истинность этой цели впрямую. Вместо этого она пытается доказать противоположное утверждение, и если такое противоположное утверждение доказать не удается, система считает, что цель not - успешна. Такое рассуждение основано на так называемом предположении о замкнутости мира. В соответствии с этим постулатом мир замкнут в том смысле, что все в нем существующее либо указано в программе, либо может быть из нее выведено. И наоборот - если что-либо не содержится в программе ( или не может быть из нее выведено), то оно не истинно и, следовательно, истинно его отрицание. [56]
Прогон откомпилированной программы обычно имеет большую эффективность, чем интерпретация. Поэтому, если пролог-система содержит как интерпретатор, так и компилятор, следует пользоваться компилятором, если время выполнения критично. [57]