
- •4.1. Знання і деякі підходи до їх подання
- •4.2. Вербально-дедуктивне визначення знань
- •4.3. Експертні системи
- •4.4. Дані та знання
- •4.5. Зв'язки між інформаційними одиницями
- •4.6. Проблема винятків
- •4.7. Властивості знань
- •4.8. Неоднорідність знань. Області і рівні знань
- •4.9. База знань як об'єднання простіших одиниць
- •4.10. Бінарні предикати і тріада
- •4.11. Проблема неточних і неповних знань
- •5Л. Визначення та класифікація семантичних мереж
- •5.2. Семантичні мережі в пам'ті людини
- •5.3. Трирівнева архітектура семантичних мереж
- •5.4. Асиміляція нових знань на основі семантичних мереж
- •5.5. Різні способи задання семантичних мереж
- •5.6. Логічне виведення на семантичних мережах
- •5.7. Процедурні і роздалені семантичні мережі
- •Фрейми та слоти: базові поняття
- •Конкретизація, ієрархія та наслідуваніїя фреймів
- •6.3. Поповнення первинних описів на основі фреймових моделей
- •0.10 * (Кількість_уроків - 1)), (Коли, _ ), (Хто,_),
- •0.10 * (Кількість_уроків - 1)), (Коли, вчора), (Хто, Петро),
- •6.4. Мережі подібностей і відмінностей
- •6.5. Фрейми та об'єктно-орієнтоване програмування
- •6.6. Поняття про мову uml
- •7Л. Логічні побудови та логічні моделі
- •7.2. Короткий вступ до числення предикатів
- •7.3. Фразова форма запису логічних формул
- •7.4. Аналіз і доведення теорем
- •7.5. Побудова теорії певної області знань
- •7.6. Від формальної логіки до логічного програмування
- •Будь-який терм зіставляється сам з собою. Наприклад, дві фрази
- •Різні константи не зіставляються одна з одною, тому фрази
- •Змінна може бути замінена константою або іншим термом. Так, фрази
- •7.7. Мова Пролог і логічне програмування
- •7.8. Основні ідеї Прологу
- •7.9. Як працює Пролог
- •8.1. Характеристика продукіцйиих моделей
- •8.2. Продукції та мережі виведення
- •8.3. Типова схема роботи експертної системи на базі продукцій
- •8.4. Пряме та зворотне виведення
- •8.5. Типові дисципліїш виконання продукцій
- •8.6. Основні стратегії вирішешія конфліктів у продукіцйііих системах
7.7. Мова Пролог і логічне програмування
Розглянемо відповідність між численням предикатів і Прологом [26]. Як ми вже бачили, деякі фрази виглядають точно так, як фрази Прологу, а інші дещо інакше. Зокрема, запитання Прологу:
1-А 1,Л2, ..., ..., ..., An означає точно те саме, що й неповна хорнівська фраза:
:-А\,А2, ..., ..., ..., An.
Система виведення Прологу базується на засобах аналізу хорнівських фраз. Конкретна стратегія, яку використовує ця мова, є формою аналізу постійного входу. Коли застосовується дана стратегія, вибір, що з чим аналізувати, проводиться за таким принципом.
Починаємо з цільового твердження та аналізуємо його разом з однією з аксіом. Отриману фразу знову аналізуємо з однією з аксіом і т. д. Ми завжди аналізуємо лише щойно отриману фразу разом з однією з первинних хорнівських фраз. У Пролозі щойно отриману фразу можна розглядати як послідовність цілей, що мають бути досягнуті. Все починається із запитання і закінчується (бажано) пустою фразою. На кожному кроці побудови виведення ми знаходимо фразу, початок якої збігається з однією з цілей, зв'язуємо потрібні змінні, обираємо мету, яка збігається, і додаємо зміст зв'язаної фрази до набору цілей, що мають бути досягнуті.
Наприклад, від:
:- мати (Іван, X), мати (X, У).
та
мати (U, У):-батько (U, V), жінка (V). переходимо до
:- батько (Іван, X), жінка (X), мати (X, У).
Насправді стратегія доведення у Пролозі ще більш обмежена, ніж просто аналіз лінійного входу. В цьому прикладі ми вирішили звести перший літерал у цільовому пункті, але могли вибрати й інший.
Варто також наголосити, як Пролог вишукує альтернативні фрази для досягнення тієї самої мети. В основному Пролог використовує стратегію пошуку "в глибину" частіше, ніж "в ширину". Тобто, він оперує лише з однією альтернативою одночасно, вважаючи цей вибір вірним, доки не буде доведено зворотне. Для кожної мети він вибирає фрази в затвердженій послідовності і звертається до наступних лише після доведення невірності попередніх. Альтернативною до цієї стратегії є стратегія пошуку "в ширину", до якої Пролог звертається пізніше. Вона має перевагу в тому, що забезпечує перебір усіх варіантів, у той час як пошук "в глибину" може легко зупинитись у глухому куті. З іншого боку пошук ив глибину" дозволяє перевіряти варіанти до кінця і є простішим в оперуванні, до того ж займає менше ресурсів комп'ютера.
І, нарешті, кілька слів про те, в яких випадках у Пролозі відповідність двох фраз може відрізнятись від класичного аналізу. Більшість варіантів Прологу дозволить вам досягнути такої мети: рівність (X, X). ? —рівність (f(Y), У), тобто дасть змогу умові відповідати складовій частині самої себе, тобто матиме місце рекурсивний виклик. У цьому прикладі /(У) зрівнюється з У, ЩО СТОЇТЬ всередині/(f (У)), яке перетворюється H2if(f(f (У))) і т. д. Пролог дозволить вам надрукувати і запустити таку програму, але навряд чи ви отримаєте відповідь. Згідно з правилами уніфікації такі випадки не повинні траплятись. Ось чим відрізняється поведінка Прологу. В деяких версіях з'явиться попередження, що такого робити не можна, але оскільки такі випадки трапляються рідко, то більшість розробників програми випускали цю можливість.
Програмування на Пролозі має декларативну основу: ми повідомляємо про істинні твердження (аксіоми) і просимо перевірити істинність інших тверджень (теорем). Ідея того, що програмування має бути саме таким, виникла давно і привела до розробки практичної можливості логічного програмування — створення мов логічного програмування. Переваги логічного програмування полягають у тому, що програми легше прочитати, і вони не міститимуть описів того, як потрібно виконувати дії, скоріше там буде описано, як виглядатиме рішення. Тим більше, якщо програма схожа на інструкцію по досягненню мети, то в ній легше виявити дефекти. Ми будемо бачити, що робить програма, а не як вона це робить.