яка або порожня, або складається з двох частин: голови і хвоста. Хвіст у свою чергу сам є списком.
В· Список розглядається в Пролозі як спеціальний окремий випадок двійкового дерева. Для підвищення наочності програм в Пролозі передбачаються спеціальні засоби для спискової нотації, що дозволяють представляти списки в вигляді:
[Елемент1, Елемент2, ...]
або
[Голова | Хвіст]
або
[Елемент1, Елемент2, ... | Решта]
37. Міркування, що використовують об'єктне уявлення. Паросполучення
Міркування, що використовують об'єктне уявлення.
Об'єктні подання були введені фактично з прагматичних причин. Ці уявлення часто пов'язані з цілком певними класами проблем. Об'єктно-орієнтовані мови (найвідоміший з них Смолток) характеризуються взаємопроникненням структур даних і процедур. Пов'язані з цими уявленнями закони виведення, взагалі кажучи, позбавлені формальної строгості правил виводу логіки предикатів. Концепція об'єктних уявлень більше прямувала турботою про ефективність обчислення, ніж прагненням до його повноті. Очевидно, можна було б розвинути для них системи висновків, еквівалентні використаним в логіці предикатів. Такий синтаксис був би вельми громіздкий, і його застосування позбавило б об'єктне представлення його прагматичних достоїнств. Замість того. Щоб спочивати на повному безлічі законів дедукції, різні використовувані в ШІ системи використовують скорочені версії класичних законів виводу. p align="justify"> паросполучення
Розглянемо таке визначення.
Два об'єктних подання паросочетательни тоді і тільки тоді, коли логічну формулу для першого можна уніфікувати з логічною формулою для другого. Слово В«уніфікуватиВ» означає тут, що існують підстановки для змінних роблять логічні формули ідентичними. p align="justify"> Якщо наша мета побудувати мову запитів (query language) для добування інформації з БД, то потрібно більш обмежене визначення паросполучення. Операція паросполучення взагалі не має бути симетричною в тому сенсі, що вона пов'язує висновок (об'єкт-мета) з гіпотезами (об'єктами-фактами). Об'єкт-мета В«паросочетаетсяВ» з об'єктом-фактом, якщо манлива об'єкт-мета логічна формула уніфікується з одним із співмножників об'єкта-факту, представленого кон'юнкція гіпотез і аксіом. p align="justify"> У термінах доведення теорем це означає, що операція паросполучення може здійснюватися тоді і тільки тоді, коли мету можна довести з гіпотез і аксіом.
Розглянемо фрейм-гіпотезу
Посилка_8
елем: (елем_із посилок)
відправник: Жак_2
одержувач: Марі_4
об'єкт: Кніга_22
Можна встановити паросполучення цього фрейму-факту з фреймом-метою
z (x)
елем: (елем_із посилок)
відправник: Жак_2
одержувач: х
об'єкт: у (х)
Фрейм-мета інтерпретується як питання: Кому Жак послав книгу? Паросполучення фрейму-цілі і фрейму-факту призводить до підстановці {(z, Посилка_8), (х, Марі_4), (у, Кніга_22)}, яку можна інтерпретувати як відповідь на запитання. br/>
38. Мова Prolog. Деякі операції над списками
Найбільш часто використовувані операції над списками аналогічні операціям над множинами.
В· перевірка, чи є деякий об'єкт елементом списку;
В· конкатенація (зчеплення) двох списків, що відповідає об'єднанню множин;
В· додавання деякого об'єкта в список або видалення деякого об'єкта з нього.
Належність до списку
Ми представимо відношення приналежності як
належить (Х, L)
де Х - об'єкт, а L - список. Мета належить (Х, L) істинна, якщо елемент Х зустрічається в L. Наприклад, вірно що
належить (b, [a, b, c])
і навпаки, не вірно, що
належить (b, [a, [b, c]])
але
належить ([b, c], [a, [b, c]])
істинно.
Складання програми для відносини приналежності може бути засноване на наступних міркуваннях:
1) Х є голова L, або