- •Визначити сутність біонічного та програмно-прагматичного напрямків дослідження в галузі штучного інтелекту.
- •У чому принципова різниця методів пізнання – дедукції та індукції?
- •Поняття виводу в численні предикатів. Правило modes ponens.
- •Що таке непрямі методу доказу?
- •Поняття виводу методом резолюцій. Правило резолюції.
- •Пояснить призначення предикатів управління перебором ! та fail.
- •Пояснить механізм роботи Прологу – співставлення з ціллю, зв’язування та звільнення змінних, відкат.
- •Пояснить поняття функтору в Пролозі. Наведіть приклади.
- •Поясніть метод розв’язування завдань рекурсивним способом.
- •Яке призначення секції Прологу – Predicates. Наведіть приклади.
- •Яке призначення секції Прологу – Clauses. Наведіть приклади.
- •Яке призначення секції Прологу – Domains. Наведіть приклади.
- •Опис та операції зі списками в Пролозі.
- •Яка ознака змінних в Пролозі? Що таке анонімні змінні, вільні та зв’язані змінні?
- •Які правила опису фактів та правил в Пролозі?
- •Пояснить сутність семантичної сеті (графа), як моделі знань.
Яке призначення секції Прологу – Domains. Наведіть приклади.
Домени дозволяють задавати різні імена різних видів даних, які, у противному випадку, будуть виглядати абсолютно однаково. У програмах Visual Prolog об'єкти у відносинах (аргументи предикатів) належать доменам, причому це можуть бути як стандартні, так і описані користувачем спеціальні домени. Розділ domains служить двом корисним цілям. По-перше, можна задати доменам осмислені імена, навіть якщо внутрішньо ці домени аналогічні вже наявним стандартним. По-друге, оголошення спеціальних доменів використовується для опису структур даних, відсутніх у стандартних доменах.
Іноді дуже корисно описати новий домен - особливо, коли ви хочете прояснити окремі частини розділу predicates. Оголошення власних доменів, завдяки присвоюванню осмислених імен типами аргументів, допомагає документувати описувані вами предикати.
Опис та операції зі списками в Пролозі.
Список это множество элементов одного типа (одного домена). Списки принято записывать в виде последовательности элементов, разделенных знаком запятая и заключенных в квадратные скобки:
[1,3,5], [a,b,e,f], [jem,apple,jin]. Список может содержать произвольное количество элементов, и их количество может изменяться в процессе работы программы. Поэтому списки относятся к динамическим структурам. Частными случаями списка являются список, состоящий из одного элемента - [х] и пустой список - [].
Для списков базовыми операциями являются:
- выделение головы списка car([1,3,5])=1,
- выделение хвоста списка cdr([1,3,5])=[3,5],
- добавление элемента в голову списка cons(1, [3,5])=[1,3,5].
Эти три операции подчиняются следующей аксиоме:
cons(car(L), cdr(L))=L
В языке Prolog описание списка осуществляется в секции domains. Признаком списка является наличие символа * после описания типа элемента.
Примеры
domains
list=integer* список целых чисел [3,5]
l_char=char* список символов [a, f, h, d]
l_col=color* списоккрасок [red, green, yellow]
color=symbol
Все три базовые операции со списками в языке Prolog обозначаются одним символом – вертикальная черта ( | ): L=[Head | Tail].
В зависимости от ситуации, программы сопоставления и унификации самостоятельно выполняют операции разделения списка на голову Head и хвост Tail или добавления элемента Head к списку Tail.
Яка ознака змінних в Пролозі? Що таке анонімні змінні, вільні та зв’язані змінні?
likes (bill, What).
Необхідно відзначити, що другий об'єкт - What-починається з великої літери, тоді як перший об'єкт - bill - ні. Це відбувається тому, що bill - фіксований, постійний об'єкт - відома величина, a What - змінна.
Змінні завжди починаються з великої літери або знака підкреслення!
Змінні Прологу дозволяють записувати загальні факти та правила, а також задавати загальні питання.
Поки змінна не отримає свого значення, вона називається вільною, а після отримання - зв’язаною. Але вона залишається зв’язаною тільки на час, який необхідний для одержання одного розв’зку на запит, потім Пролог звільнює її, повертає і шукає альтернативні розв’ язки.
Анонімні змінні використовуються у випадку, коли потрібна часткова інформація із запиту. За допомогою анонімних змінних ігноруються не потрібні значення.
Анонімна змінна може бути використана на місці будь-якої змінної. Відмінність полягає в тому, що анонімна ніколи не отримає значення.
Наприклад, якщо вам потрібна інформація тільки про батьків, тоді можна використати запит
Goal:parent(Who, _),
де символ _ позначає анонімну змінну.