67
Логічні алгоритми Логічні алгоритми та системи штучного інтелекту та системи штучного інтелекту

Lect 1 intro

Embed Size (px)

Citation preview

Логічні алгоритми Логічні алгоритми та системи штучного інтелектута системи штучного інтелекту

Предмет вивченняПредмет вивчення

ЛОГІЧНЕ ПРОГРАМУВАННЯмова програмування Prolog(Programming in logic)

СИСТЕМИ ШТУЧНОГО ІНТЕЛЕКТУ

генетичні алгоритми

методи нечіткої логіки

нейронні мережі

Зміст курсуЗміст курсу 8 семестр

Лекції – 26 годин (13 лекцій)Лабораторні роботи – 26 годин

В сесіюІспит

Два теоретичних питанняТестові завданняОдна практична задача (Prolog)Одна практична задача (Prolog)

… системаІ модуль

4 лабораторні роботи – 25 балівКонтрольна робота – 10 балівРазом – 35 балів

ІІ модуль4 лабораторні роботи – 35 балівРазом – 35 балів

Іспит – 30 балів

ДжерелаДжерела◦ Братко И. Алгоритмы искусственного интеллекта на языке Prolog. – М. : Вильямс , 2004. – 637 с.

◦ Шрайнер П.А. Основы программирования на языке Пролог : курс лекций : учебное пособие для вузов по специальностям информационных технологий. – М. : Интернет-Университет Информационных Технологий , 2005. – 172 с.

◦ Джонс м.Т. Программирование искусственного интеллекта в приложениях. – М.: ДМК Пресс, 2004.

◦ Осовский С. Нейронные сети для обработки информации / Пер. С польського И.Д. Рудинского.-М.: Финансы и статистика, 2002.- 344 с.: ил.

◦ Девятков В.В. Системы искусственного интеллекта: Учеб. Пособие для вузов. – М.: Изд –во МГУ им. Н.Э. Баумана, 2001. – 352 с., ил.

◦ Рассел, Стюарт, Норвиг, Питер. Искусственный интелект:современный поход, 2-е узд.: Пер. С англ.. – М.-: Издательский дом «Вильямс», 2006. – 1408 с.: ил.

◦ Адаменко А.Н., Кучуков А.М. Логическое программирование и Visual Prolog. – СПб.: БХВ-Петербург, 2003. – 992 С.

◦ Хайкин, Саймон Нейронные сети: полный курс, 2-е издание.: Пер. с англ.. – М.: Издательский дом «Вильямс», 2006. – 1104 с.: ил. – Папал. Тит. Англ.

◦ Рутковская Д., Пилинский м., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы: Пер. с польск. И.Д. Рудинского. – М.: Горячая линия – Телеком, 2006. – 452 с.: ил.

◦ Яхъева Г.Э. Нечеткие множества и нейронные сети: Учебное пособие/ Г.Э. Яхъева. – М.: Интернет – Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2006. – 316 с.: ил., табл.

◦ Лю Б. Теория и практика неопределенного программирования / Б. Лю; Пер. с англ.. – М.: БИНОМ. Лаборатория знаний, 2005. – 416 с.: ил.

ЗмістЗміст

Мови

A.I. Вступ

ОглядДодатки

Мови

ВступВступМета – можливість відтворити здатність людського мозку до дослідження, аналізу та висновків

• Наука проектування та створення інтелектуальних машин, особливо – програм штучного інтелектумашин, особливо – програм штучного інтелекту

Чи є межа розвитку інтелектуальних Чи є межа розвитку інтелектуальних машинмашин??

Інтелект:

“здатність до навчання та вирішення задач”

Штучний Інтелект:

◦ Штучний Інтелект (AI) інтелект пристроїв, ◦ Штучний Інтелект (AI) інтелект пристроїв, роботів та галузь науки, яка ставить за мету їх створення

можливість розв’язання задач

можливість раціонально діяти

можливість діяти як людина

Історія АІ

Класичні філософи

Programmable Digital Computers (1940)

1943-1956:

• McCulloch & Pitts: Boolean circuit model of • McCulloch & Pitts: Boolean circuit model of brain (Логічна схема моделі мозку)

• Dartmouth : поява визначення "Artificial Intelligence“

Золоті роки 1956−1974

1986– Піднесення “machine learning”◦ Повернення популярності НМ (Neural

networks)◦ Більшість досягнень в напрямку розробки

machine learning алгоритмів та додатків

1995-- AI – це наукаmachine learning

1995-- AI – це наука◦ Інтеграція навчання, міркування, подання

знань◦ Методи AI використовуються в «зорі»

(баченні), лінгвістиці, інтелектуальному аналізі даних тощо.

2006: ПЗ розпізнавання образів доступне в камерах

2003-2007 робот за кермом: DARPA grand challenge

Feb 2011 надійшли запитання, на які може відповісти робот …

Чи можутьAI системипраяцювати так ефективно, як праяцювати так ефективно, як Мозок Людини?????

Наскільки складний наш мозок?◦ Нейрон◦ 10 12 нейронів в мозку◦ І набагато більше синапсів (10 14) сполучають ці

нейрони◦ Час циклу: 10 -3 секунди

Наскільки складними можна зробити комп‘ютери?◦ 108 CPU

комп‘ютери?◦ 108 чи більше транзисторів в CPU ◦ Суперкмп’ютер: сотні CPUs, 1012 bits RAM ◦ Час циклу : сягає 10 - 9 секунд

ВисновокТАК◦ Замало взаємозв'язків (проводів чи синапсів) ◦ Швидші

AIAI ----додаткидодатки::

“Природня мова”Експертні системиПроектування роботів

Машинне навчанняМашинне навчання Ігрові задачі

Дружні Дружні напрямкинапрямкиAI:AI:AI:AI:

…це широке поле з такою кількістю «грядок».

“Природня мова”“Природня мова”

Розробка та створення ПЗ для аналізу, розуміння та генерування мови, природньо зрозумілої людині

Режими зв'язку Режими зв'язку

Текст

Діалог

Розпізнавання мовиРозпізнавання мови

Процес перетворення звукового сигналу з мікрофону чи телефону в множину слів.множину слів.

70-100 слів/хв з точністю до 90%

Машинний (компМашинний (комп’’ютерний зір)ютерний зір)

Здатність машини до вилучення інформації з образу для вирішення необхіднї задачі

отримання зображення

обробка зображення

аналіз зображення

розуміння зображення

Інтелектуальний роботІнтелектуальний робот

Радше імітація здібності людини до отримання інформації та прийняття рішень з прийняття рішень з метою адаптації до певних умов і змін своїх дії.

Експертні системиЕкспертні системи

ПЗ для прийняття рішень .

Автоматизоване міркування та доведення теорем.доведення теорем.

Експертні системи пошуку та усунення несправностей.

Експертні системи фондового ринку.

В чому різниця В чому різниця ????????????????

Artificial Intelligence

НЕ творчий

Natural Intelligence

ТворчийНЕ творчий

Точний

Узгоджений

Багатозадачний

Творчий

Може помилятися

Не узгоджений

Некерований

МовиМови

Дослідники АІ розробили кілька спеціалізованих мов програмування для штучного інтелекту, зокрема IPL, Lisp, Prolog, штучного інтелекту, зокрема IPL, Lisp, Prolog, STRIPS, Planner, POP-11 тощо.

КласифікаціяКласифікація

Мовипрограмування

АлгоритмічніДекларативні

Алгоритмічні(процедурні) мови(Fortran, Pascal,

C, …)

Декларативні(неалгоритмічні)

мови

Мовилогічного

програмування(Prolog, …)

Мовифункціонального

програмування(Lisp, …)

Логічне програмуванняЛогічне програмування

Алгоритм розв’язку

задачі

Логічна специфікація

розв’язку задачі

розв’язку задачі

Термінологія логічного програмування запозичена з логіки.

Логіка пізнає принципи людського мислення.

ПорівнянняПорівняння

LISP

Функціональне

PROLOG

Функціональне програмування

Загальна ціль

Пропонує широкий спектр завдань, простіший у використанніНе вимагає підтримки Прологу

Логічне програмування

Специфічне використання

Легша у вивченні

Підтримка різнонаправлених міркувань

Створення мовиСтворення мови PrologProlog 1879 - Фержен публікує роботу «Концептуальна

мова», викладає основи загальної теорії відношень.

1965 - Дж. Е.Робінсон «Машинно-орієнтована логіка, заснована на принципі резолюції».

1968 – Лавленд «Автоматичне доведення теорем 1968 – Лавленд «Автоматичне доведення теорем шляхом усунення моделей».

1971 - Ковальські і Куенер «Лінійний відбір за допомогою функції резолюції» - принципи логіки предикатів.

1973 - Кольмерор в Марселі створив перший Пролог-інтерпретатор на Фортрані.

Створення мовиСтворення мови PrologProlog 1977 - Уоррен і Перейра, Единбург, інтерпрететор /

компілятор Прологу для ЕОМ DEC-10, перша реалізація «машини Уоррена» як прототипу наступних Пролог-реалізацій.

1981 - інститут ICOT, Японія, проект ЕОМ п'ятого покоління.покоління.

1982 - Том Остербі (Відділ Інформатики Данського Технічного Університету) розробив Пролог-інтерпретатор для комп'ютера VAX.

1984 - Джон Гофман, Лео Йенсен і Фінн Гронський (Відділ Інф-ки Дат.Тех.Ун-т) розробили Пролог-компілятор для IBM PC.

1993 - під кер. Лео Йенсена розробляється Visual Prolog.

Сучасний станСучасний стан

Visual Prolog 7.4

Розробкою мови займається фірма PDCProlog Development CenterProlog Development Center

◦ http://www.pdc.dk

Версії Prolog’а

◦ Turbo Prolog

◦ PDC Prolog

◦ Visual Prolog

Теоретичні дослідження Теоретичні дослідження в сфері формалізації мисленняв сфері формалізації мислення

Традиційна логіка

Формальна логікаФормальна логіка

Логіка висловлювань

Логіка предикатів

Традиційна логіка та її закониТрадиційна логіка та її закони

Завдання виявити критерій істинності суджень у полеміці.

Аристотель ввів поняття судження.

Під судженням розуміється закінчена Під судженням розуміється закінчена думка, що висловлена у формі простого речення природної мови.

Традиційна логіка та її закониТрадиційна логіка та її закони

Аристотелем виведені три закони традиційної логіки:

1. Тотожність: А є А. Суть: деяка річ завжди рівна самій собі. Судження означає тільки саме себе.

2. Суперечливість: А не є не А. Суть: річ не може одночасно володіти і не володіти деякою одночасно володіти і не володіти деякою властивістю; ніяке судження не є одночасно і істинним і хибним.

3. Виключення середнього: А не є одночасно і А, і не А. Суть: речі або притаманна, або ні деяка властивість. Судження може бути або істинним, або хибним.

Форми суджень у традиційній логіціФорми суджень у традиційній логіці

Кожне судження за Арістотелем повинно мати 4 елементи:

Квантор Суб'єкт Зв'язка Предикат

У традиційній логіці Арістотеля допускаються чотири форми суджень, кожна з яких характеризує можливе відношення між класом суб'єктів S і класом предикатів Р:

Усі S є Р.

Ніяке S не є Р.

Деякі з S є Р. Деякі з S є Р.

Деякі з S не є Р.

Тут «Усі», «Ніяке» - квантори спільності (універсальні квантори);

«Деякі з» - квантор існування (екзистенційний квантор);

«є» і «не є» - зв'язки.

Всіживі

істотиє смертними

Квантор S PЗв’язка

Приклад виведення в дедуктивної системі АристотеляПриклад виведення в дедуктивної системі Аристотеля

Всіживі

істотиє смертними

Квантор S PЗв’язка

Всі люди є живі істоти

Передумови:

узгодження

Процес такого умовиводу називається процесом виведення нових знань на основі наявних (на основі передумов).

Великий недолік - логіка справедлива тільки для суджень; будь-яку проблему необхідно представляти у вигляді сукупності суджень однієї з чотирьох допустимих форм.

Квантор S PЗв’язка

Всі люди є смертними

Квантор S PЗв’язка

Заключний висновок:

Дедуктивний висновок для Дедуктивний висновок для висловлюваньвисловлювань

Логічні закони для формування висловлювань:

1) Modus Ponendo Ponens:

Якщо з Р слідує Q і Р істинне, то й Q - істинне, де Р і Q –висловлювання.

2) Modus Tollendo Tollens:

Якщо з Р слідує Q і Q хибне, тоді й Р хибне.

3) Modus Ponendo Tollens:

Якщо і Р, і Q не можуть бути одночасно істинними і Р істинне, тоді Q - хибне (що виключає «або»).

4) Modus Tollendo Ponens:

Якщо або Р, або Q істинне і Р не істинно, то істинне Q (включає «або» або диз'юнктивний силогізм).

Виникнення і розвиток формальної логікиВиникнення і розвиток формальної логіки

Приклад:

читає (Анна, книгу).

читає

предикат

Анна

Петро

Іван

книгу

журнал

газету

Ферже:предикат (список аргументів).

При цьому під аргументами розуміють ті слова, які можуть змінюватися в деяких межах, не змінюючи змісту висловлювання в цілому, а під предикатом - та частина висловлювання, зміна якої призводить до зміни змісту висловлювання.

Метою Ферже було створення загальної теорії відношень. Після Ферже загальна теорія відношень отримала назву логіки предикатів.

Логіка висловлюваньЛогіка висловлюваньУ логіці висловлювань з атомарних висловлювань за допомогою

логічних з’єднань можуть бути побудовані логічні формули.

Атомарним називається висловлювання, яке може мати логічне значення і не може бути розділене на компоненти. Атомарні висловлювання позначаються пропозиціональними змінними, що приймають значення ІСТИНА (T) і ХИБНЕ (F).

Логічні з'єднання (зв'язки):

Логічні з'єднання (зв'язки):

примітивні (¬, ∨, &);

непримітівні (імплікація →, еквівалентність ↔).

Зміст непримітівних з'єднань виводиться через зміст примітивних:

p → q = ~ p ∨ q; p ↔ q = (p & q) ∨ (¬ p & ¬ q).

Тут еквіваленція p ↔ q - нове висловлювання, яке вважається істінним тоді і тільки тоді, коли p і q або одночасно істинні, або одночасно хибні.

Приклад побудови теорії в логіці Приклад побудови теорії в логіці висловлюваньвисловлюваньОпишемо ставлення Петра до англійської мови. Опис природньою мовою:

(1) Якщо Петро цікавиться англійською мовою, то або він запишеться на факультатив, або він ледачий.

(2) Якщо Петро самостійно вивчає англійську мову, то він цікавиться англійською мовою.

(3) Петро самостійно вивчає англійську мову.

(4) Петро не ледачий.

Виділяємо атомарні висловлювання: Позначення: Лог. зв'язки:

Петро запишеться на факультатив. A D → A ∨ B

Петро ледачий. B C → D

Петро самостійно вивчає мову. C C

Петро цікавиться англійською мовою. D ¬ B

Логіка предикатівЛогіка предикатівУ логіці предикатів ми маємо справу з атомарними формулами,

логічними зв‘язками та ППФ.

У логіці предикатів атомарна формула складається з символічного позначення предиката і термів, які виступають в ролі аргументів цього предиката:

предикат (список термів).

У загальному випадку позначення предиката - це ім'я відношення, що існує між аргументами: існує між аргументами:

p (t1, t2, ..., tn).

Під термом розуміють або константу, або змінну, або виклик (використання) функції.

У логіці предикатів прийняті наступні позначення:

a, b, c - константи,

f, g, h - функції,

x, y, z - змінні,

P, Q, R – предикати.

Функції та відношення в логіці предикатівФункції та відношення в логіці предикатів

Приклад 1.

Область знань - арифметика,

область інтерпретації – множина натуральних чисел.

Функція «множення»: МНОЖ (3,2) → 6.

Число 6 називається значенням даного використання функції «множення».

Приклад 2.

Область знань - родинні стосунки між деякою особою на ім'я Іван і деякими іншими людьми, з якими він спілкувався на сімейній вечері.

Область інтерпретації – множина людей: Іван, Петро - двоюрідний брат Івана, Михайло - двоюрідний брат Івана, Марія - подруга Михайла:

{Іван, Петро, Михайло, Марія}.

Оскільки нас цікавлять тільки родинні зв'язки, то той факт, що хтось є подругою людини з заданої області інтерпретації повинен бути описаний за допомогою функції:

подруга ("Михайло") → "Марія«.

Приклад побудови теорії для предметної області Приклад побудови теорії для предметної області «Сімейна вечеря»«Сімейна вечеря»

Вибір позначень для представлення елементів області інтерпретації.

Константи: а - Петро, b - Іван, c - Михайло.

Функції: f («Михайло») = «Марія».

У висновку для відносини «двоюрідний брат» вводимо предикат

P: P (X, Y) - X є двоюрідним братом Y.

P (a, b) – істина P (a, f(c)) – хибне

P (a, c) – хибне P (f(c), a) – хибне

P (b, a) – істина P (b, f(c)) – хибне

P (b, c) – істина P (f(c), b) – хибне

P (c, a) – хибне P (c, f(c)) – хибне

P (c, b) – істина P (f(c), c) – хибне

Фразова форма записуФразова форма запису

Фразова форма логіки предикатів - це спосіб запису формул, при якому вживаються тільки зв‘язки &, ∨ і ¬.

Літерал - це позитивна чи негативна атомарна формула.

Фраза - множина літералів, з'єднаних символом ∨. Негативні літерали розміщуються вкінці кожної фрази, а позитивні -напочатку. Схематичний вигляд фрази:

∨ ∨ ∨ ∨ ∨ ∨ ∨

P1 ∨ P2 ∨ ... ∨ Pn ∨ N1 ∨ N2 ∨ ... ∨ Nn

Тут P1 ... Pn - позитивні літерали, а N1 ... Nn - негативні літерали.

Фразу можна розглядати як узагальнення поняття імплікації. Дійсно, якщо A і B - атомарні формули, то A - → B може бути записана як ¬A ∨ B. Оскільки ¬A - негативно, а B - позитивно, то фразова форма матиме вигляд: B ∨ ¬A.

Фрази Хорна та резолюціїФрази Хорна та резолюції

Фраза Хорна (хорнівскій диз'юнкт) - це фраза, що містить тільки один позитивний літерал.

Правило резолюції подібне до диз'юнктивного силогізму (Modus Tollendo Ponens).

Дві фрази можуть бути резольвовані одна з одною, якщо одна з них містить позитивний літерал, а інша -якщо одна з них містить позитивний літерал, а інша -відповідний негативний літерал з одним і тим же позначенням предиката і однаковою кількістю аргументів, причому аргументи обох літералів можуть бути уніфіковані (тобто узгоджені) один з одним.

Характерні особливості Характерні особливості PrologProlog--уу

Для представлення знань використовуються фрази Хорна;

Програма описує логічну модель предметної області у вигляді фактів щодо властивостей предметної області і відношень між цими властивостями + правила виведення нових властивостей і відношень з уже заданих;

Використання терма як єдиної структури даних;

Відсутність операторів присвоювання, розгалужень, безумовних переходів та покажчиків.

Для пояснення змісту програми застосовуються три семантичні моделі: декларативна, процедурна моделі та модель у вигляді абстрактної машини.

Синтаксис предикатів численняСинтаксис предикатів числення

Представлення фактів та правил

English Pred calculus

Prolog

and ,

Or ;

Only if :-

not not

ФактиФакти, , ПравилаПравила і Запитиі Запити

База знань фактів – терми, які супроводжуються повною зупинкою.

◦ parent(ayah, saya). %ayah is my parent

◦ parent(mak, saya).

◦ female(mak). %mak is a female

◦ male(ayah).

– Правила – утворюють нове знання

◦ mother(X,Y) :-

parent(X,Y) , female(X).

%X is mother of Y if X is parent of Y and X is female

Запит – теж сформовані терми , які супроводжуються повною зупинкою

◦ goal

parent(X,saya). %who is my parent

ФактиФактиФакт - це запис такого відношення, значення якого істинно.

Форма запису факту:

імя_предиката (аргумент {, аргумент}).

При цьому:

1) Всі імена предикатів і аргументів повинні починатися з рядкової латинської літери.

2) Перерахування аргументів - через кому.2) Перерахування аргументів - через кому.

3) Кожен факт повинен закінчуватися крапкою.

4) Кількість аргументів і вид відношень (напрямки відношень) визначаються програмістом і не змінюються при виконанні програми. приклад:

факт: who_likes_what (ivan, programming)

не еквівалентний факту:

who_likes_what (programming, ivan),

оскільки має місце зміна напряму відношення: «Іван захоплюється програмуванням»

Запис фактів в пролозіЗапис фактів в пролозі

В Пролозі тип відношень описується в розділі predicates:

who_likes_what (symbol, symbol)

При описі фактів і правил у розділі clauses програми на Пролозі однойменні предикати повинні бути згруповані:

clausesclauses

who_likes_what (ivan, programming).

who_likes_what (ivan, reading).

who_likes_what (mary, reading).

У термінології Прологу будь-яка сукупність фактів (і правил) називається базою даних.

Prolog Prolog команди команди .... фактифакти

Open Swi-Prolog window

File-New-Type the facts and rules with full stops at the end

Add facts to database

parent(ayah,saya).

parent(mak,saya).

female(mak).

male(ayah).

Save- close file -backtoSwiprolog-File-Consult-choose file-open <enter>

ПравилаПравила

Під правилами в Пролозі розуміються найбільш загальні твердження про об'єкти і відношення між ними.

Пролог-правило має вигляд фразової форми:

висновок :- ум1, ум2, ..., умN.

Приклад правила:

common_interests (X, Y): -

who_likes_what (X, Z), who_likes_what (Y, Z), X <> Y.

To add more facts and rules, eg.

File- Edit –Choose File – type new rule to indicate relation mother

mother(X,Y) :- parent(Y,X) , female(X).

Prolog команди … правила

mother(X,Y) :- parent(Y,X) , female(X).

SaveSave--Close fileClose file

ЗапитиЗапити

Запис питань в Пролозі схожа з записом фактів і відрізняється місцем розташування. Для формулювання запитань у програмі на Пролозі існує розділ goal.

Звернення до Прологу з питанням ініціалізує процедуру пошуку в базі даних, раніше введеної в систему. Пролог пошуку в базі даних, раніше введеної в систему. Пролог переглядає БД в пошуках предиката, що може співставлятися з питанням.

Предикати вважаються такими, що співпадають, якщо вони збігаються посимвольно і їх відповідні аргументи попарно збігаються. Якщо предикат-питання збігається з предикатом одного з фактів / правил в БД, то питання узгоджується з БД.

При цьому відповіддю на питання буде або Yes, або No.

Використання змінних в запитахВикористання змінних в запитахПід змінною в Пролозі розуміють будь-яке ім'я, яке починається з

прописної латинської літери. Приклади: Who, What, Ivan.

Змінна називається конкретизованою, якщо існує об'єкт, який вона позначає. Якщо не відомо, що саме позначає змінна, то вважається, що змінна не конкретизована.

У запитах змінні використовуються для того, щоб знайти деякий об'єкт.

Приклад: who_likes_what (ivan, X)Приклад: who_likes_what (ivan, X)

відповіддю буде:

X = programming

X = reading 2 Solutions

Yes

Якщо позначений змінною об'єкт не має значення в даному контексті, то використовується анонімна змінна ( _ ).

Складні запитиСкладні запитиПриклад. Вияснимо, чи мають Іван і Марія спільні інтереси.

goal

who_likes_what (ivan, X), who_likes_what (mary, X).

Спочатку узгодимо who_likes_what (ivan, X). Змінна X конкретизується:

X = programming.

Тепер намагаємося узгодити

who_likes_what (mary, programming). who_likes_what (mary, programming).

Даний факт відсутній в БД. Тому Пролог автоматично розконкретизує змінну X. Потім Пролог намагається узгодити твердження:

who_likes_what (ivan, reading), who_likes_what (mary, reading).

Обидва факти, що входять у вираз, присутні в БД. Інших альтернатив для who_likes_what (ivan, X) немає і в якості результату буде видано:

X = reading, 1 solution, Yes.

Показаний процес отримав назву пошуку з поверненням.

Type at the command line for query. Use symbol ; to list next parent

Prolog Prolog командикоманди....запитизапити..

goal parent(X,saya),parent(X,saya),female(ayah),male(X).

Перша програмаПерша програма

ФактиГоробець – це птах.

Горобець – батько пташеняти.

Правило висновкуДехто є птахом за умови, що у

Запит

◦ птах (Z)

Всі можливі рішення:

Дехто є птахом за умови, що у нього є батько - птах.

Програмаптах (горобець).

птах (X):– батько(Y, X),птах(Y).

батько(горобець, пташеня).

рішення:

◦ Z = горобець

◦ Z = пташеня

Перша програмаПерша програма

PREDICATESbird (symbol)parent (symbol, symbol)

CLAUSESbird (sparrow).bird (sparrow).bird (X) :- parent (Y, X), bird (Y).parent (sparrow, nestling).

Goal: bird (Z)Z = sparrow Z = nestling

Перша програмаПерша програма

PREDICATESbird (symbol)parent (symbol, symbol)

CLAUSESbird («горобець»).Факт

Фактbird («горобець»).bird (X):– parent (Y, X), bird (Y).parent («горобець», «пташеня»).

Goal: bird (Z)Z = «горобець»Z = «пташеня»

Факт

Правило висновку

Зовнішня ціль

Узгодження цільових твердженьУзгодження цільових тверджень

Для доведення цільових тверджень Пролог використовує відомі твердження.

Якщо підціль являє собою факт, то узгодження закінчується, як тільки факт буде знайдений в базі. Якщо підціль є правилом, то задача зводиться до кон'юнкції предикатів-підцілей.

При узгодженні Пролог керується такими правилами: При узгодженні Пролог керується такими правилами:

Константа рівна тільки сама собі;

Змінна може бути конкретизована будь-яким об'єктом Прологу;

Структури співпадають, якщо збігаються їх функтори, стан і кількість аргументів.

Для кожної підцілі Пролог генерує свій маркер. Якщо цільове твердження не доведено, збуджується процесс повернення.

Розгляд цільових тверджень при Розгляд цільових тверджень при використанні механізму поверненнявикористанні механізму повернення

Якщо цільове твердження не доведено, здійснюється повернення за «ланцюжком доказів» у місце вибору твердження для узгодження заново відповідних цільових тверджень.

При цьому Пролог намагається знайти альтернативне твердження, що відповідає даній цілі.

Спочатку відбувається розконкретизація всіх змінних, що були Спочатку відбувається розконкретизація всіх змінних, що були конкретизовані в ході доведення даного цільового твердження.

Потім поновлюється пошук у базі даних, починаючи з поміченого маркером місця. Якщо буде знайдено інше твердження, яке відповідає цільовому, Пролог помістить в це місце маркер, пошук у базі даних продовжиться, починаючи з поміченого місця.

Приклад узгодження цільового твердженняПриклад узгодження цільового твердження

Факт не виявлено, M і F розконкрети-

зовуються

Успішне узгодження

Поняття «зчеплених змінних»Поняття «зчеплених змінних»У ряді випадків узгодження цільових тверджень деяка, спочатку

неконкретизована, змінна X може бути автоматично конкретизована значенням іншої змінної Y. В таких випадках говорять, що змінні X і Y стають зчепленими.

Приклад відношення «рідна сестра»:

sister (X, Y): -

woman (X), parent (X, Mother, Father), parent (Y, Mother, Father).woman (X), parent (X, Mother, Father), parent (Y, Mother, Father).

Узгодження цільового твердження sister («Марія», Y) призведе в одному з можливих випадків успішного доведення до конкретізаціі Y значенням «Марія».

Для запобігання породження небажаних рішень як наслідок зчеплення змінних, в тіло правила слід вводити додаткові твердження для контролю взаємних співвідношень значень змінних в заголовку правила:

sister (X, Y): -

not (X = Y), woman (X), parent (X, Mother, Father), parent (Y, Mother, Father).

ВправаВправаFamily relationshipsFamily relationships1) Предикати

male/1, female/1, parent_of/2

для представлення Prolog бази знань

father(Father,Child) mother(Mother,Child)

2) Сформулюйте правила:

father(Father,Child) mother(Mother,Child) grandparent(Grandparent,Child) sister(Sister,Person) grandchild(Grandchild,Child)

father_of(X, Y) :- male(X), parent(X, Y).

grandparent(X, Z) :- parent(X, Y), parent(Y, Z).

Any Questions

ThanksThanks