Файл: системи штучного інтелекту.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 27.11.2019

Просмотров: 1757

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

I тобто дасть змогу умові відповзати складовій частині самої себе, тобто ма-Іиме МІСЦЄ рекурсивний ВИКЛИК. У цьому прикладі /(У) зрівнюється 3 7, Щ0 CTOfrb всередині/УХУ)), яке Тіеретворюється Ha f(f(f(Y))) і т. д. Пролог дозволить вам надрукувати і запустити таку програму, але навряд чи ви отримаєте відповідь. Згідноз правилами уніфікації такІ випадки не повинні траплятись. Ось чим відрізняєтьсяСистеми штучного інтелекту. Cypoee llM. поведінка Прологу. В деяких версіях З'ЯВИТЬСЯ попередження, що такого робити не можна, але оскільки такІ випадки трапляються рідко, то більшість розробників програми випускали цю можливість.

Програмування на Пролозі має декларативну основу: ми повідомля-ємо про істинні твердження (аксіоми) і просимо перевірити істинність Інших тверджень (теорем). Ідея того, що програмування має бути саме Таким, виникла давно і привела до розробки практичної можливості логічного програмування — створення мов логічного програмування. I Переваги логічного програмування полягаютьутому, що програми лег­ше прочитати, I вони не міститимуть описів того, як потрібно виконува-І и дії, скорішетам буде описано, як виглядатиме рішення. Тим більше, якщо програма схожа на інструкцію по досягненню мети, то в ній легше виявити дефекти. Ми будемо бачити, що робить програма, а не як вона цс робить.

  1. Основні Ідеї Прологу

Спочатку коротко підсумуємо викладені роздуми. Отже, програма на Пролозі може складатись з набору фактів разом з набором умов, яким має задовольняти розв'язок, і комп'ютер має сам вивести рішення з даних фактів. Такий підаЩ до програмування називається логічним програму-і ванням. Пролог опирається на формальну логіку так само, як FORTRAN,BASIC базуються на арифметиці та простій алгебрі. Для виконання завдань Пролог використовує техніку, розроблену для доведення теорем у логіці.

Пролог e дуже різнобічною мовою. Зауважимо, що Пролог можна застосовувати для програмування всіх видів алгоритмів, не тільки для тих, для яких він був спеціально створений. Використання Прологу не пов'язане з якимось одним класом алгоритмів, логікою програми чи форматом файлів. Тому Пролог не менш потужний, ніж Pascai,Ca6o C++, а у багатьох аспектах навіть потужніший. Доцільність його застосування, очевидно, має визначатися конкретною ситуацією.

Перші повідомлення про Пролог з'явились на початку 70-х років. Він належить до класу логічних мов програмування, основні ідеї розробки яких запропонували P. Ковальські 1 П. Хейс. Перший Інтерпретатор Прологу був розроблений у Марселі (Франція) під керівництвом А. Колмерое в 1973 p. Наступна версія, виконана Д.Уореном — Единбурзька реалізація Прологу на машині DEC-10 — перевела Пролог і разом з ним логічне програмування з площини теоретичних досліджень у площину практичного програмування, зробила його корисним інструментом для вирішення різних задач штучного інтелекту.


Для Прологу характерним є 1 той факт, що програміст повинен мислити в термінах цілей. Що під цим розуміється? На відміну від традиційних мов програмування, Пролог вимагає від програміста змінити форму мислення по написанню програм. Прологівська програма являє собою набір визначень ситуацій і формулювань задач замість того, щоб детально описувати варіанти рішень цих задач. Основою Прологу є обмежений, але на диво потужний і гнучкий набір програмних механізмів, який включає: зіставлення зразків, задання структур даних типу дерева та автоматичне повернення. Назва "Пролог" утворилась як скорочення від "програмування в термінах логіки". Отже, "Пролог" можна віднести до мов програмування, які будуються на описовому або декларативномупідході до програмування.

Можна виокремити два рівні характеристики прологівської програми: декларативний і процедурний. Перший з них визначає, яким повинен бути результат роботи програми, за допомогою відношень. Другий — як цей результат був отриманий I як/ з відношень реально оброблялись. Прологчгистеми значну частину процедурних деталей виконують самостійно, без втручання програміста. Останній, таким чином, може більше уваги прцд/ляти декларативному аспекту програми, не відволікаючись на органі- зацію процесу обчислень, якщо його не хвилює питання ефективності цих обчислень.

Спочатку Пролог належав до теоретичних мов програмування I в основному використовувався як Інструментарій у наукових дослідженнях. На це впливало і те, що довгий час учені Із США не сприймали його переваг для вирішення задач штучного /нгелекту.Дж. Mалпас пояснює цей факттим, що, по-перше, серед учених США сильними залишались лісповські традиції (мова Лісп створена в Массачусетському технологічному інституті) I, по-друге, — попереднє знайомство з мовою логічного типу Мікропленнер було невдалим. Остання реалізовувалася дуже неефективно. Та зі створенням швидких Інтерпретаторів і компіляторів Пролог посів почесне місце не тільки серед


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

Резюмуючи сказане, можна відмітити такі переваги Прологу:

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

Використання єдиної мови специфікацій (числення предикатів) для опису вимог до програм I опису самої програми на Пролозі дозволяє поєднувати процес написання програми з її верифікацією.

  • Застосування відношення як базового поняття мови дає змогу зручно працювати з реляцІйними базами даних.

  • Паралельний принцип організації обчислень дозволяє просто I природно реалізовувати Пролог-програму на паралельному комплексі. Пролог підтримує обчислення, якІ базуються на пошуку через зворотний ланцюжок міркувань. Це забезпечує ефективність використання Прологу при побудові експертних систем.


Пролог може зберігати за допомогою "логічних змінних" проміжні результати обчислень для подальшого використання. Це дозволяє природно вирішувати проблему органІзацґїлогічного виведення.

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

  • Складність розуміння процесу виконання програми на Пролозі, пов'язаної з "невидимим" порядком побудови виведення результату програмою,

  • Погані засоби для вияву екстралогІчних властивостей (оператори динамічного приєднання I вилучення тверджень).

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

  • Недостатні засоби пЩтримки модульного принципу програмування.

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



Пролог має багато спільного з Ліспом [267]— мовою, яку традиційно застосовують у дослідженнях зі штучного інтелекту. Обидві мови роблять досить простим виконання складних обчислень над складними даними. Крім того, вони досить потужні, щоб елегантно запрограмувати складні алгоритми. I Пролог, (Лісп використовують динамічне виділення пам'яті, тому нема потреби декларувати змінні передтим, як їх застосовувати. Ці мови також дозволяють програмам перевіряти та модифікувати самих себе, тому програма може "вчитись" на тІй інформації, яку вона отримує піл час своєї роботи.Головна рІзниця полягає в тому, що Пролог має процедуру, яка здатна до "міркування" — машину логічного виведення, вбудовану в нього, тоді як Лісп цього не має. Тому програми, які виконують якісь логічні роздуми, легше писати на Пролозі, ніж на Ліспі. Якщо вбудована машина логічного виведення не підходить для конкретної задачі, програміст дуже часто може використовувати частину цього механізму, переписавши все інше. В Ліспі, навпаки, якщо потрібна машина логічного виведення, програміст сам маєїї забезпечити.

Чи Пролог об'єктно-орІєнтований? Не зовсім. Пролог — Інше, нове I різнопланове вирішення проблеми, яку об'єктно-орієнтовані мови повиннІ були розв'язати. Пролог дозволяє говорити про властивості та зв'язки прямо, замість того, щоб добиратисьдо них через механізм наслідування.

9. Як працює Пролог

Потужність Прологу безпосередньо пов'язана з використанням інтерпретації логіки за допомогою процедур, тобто представленні знань за допомогою визначення процедур, після чого міркування стає простим процесом виклику необхідної процедури. Щоб зрозуміти, яким чином це відбувається, розглянемо такІ два набори інформації:

(1)Для будь-якогоХ, якщо X в Чернігівській області, тоді X в Україні (2) Остер в ЧернІгІвськІй_ області

Такі набори називають базою знань. Будемо називати елемент (1) правилом, оскільки він дає нам можливість логічно вивести з однієї порції інформації іншу, а елемент (2) фактом, оскільки він не залежить від іншої інформації. Вверніть увагу, що правило містить "якщо", а факт — нІ. Факти I правила — два типи речень. Факт не обов'язково має бути істиною з реального життя. Якщо ви скажете, що місто Остер є на Полтавщині, Пролог вам повірить.

Припустимо, ми хочемо знати, чи знаходиться місто Остер в Україні. Зрозуміло, що (1) і (2) можна зв'язати і відповісти на це запитання. Але як це зробити на комп'ютері? Треба виразити (1) і (2) як визначення процедур:

  1. Щоб довести, що X в Україні, треба довести, що X в Чернігівській області.

і

  1. Щоб довести, що Остер в Чернігівській області, нмого не треба робити.

Поставимо запитання у вигляді такої команди:

Довести, що Остер в Україні.

Це викликає процедуру (Ґ), яка, в свою чергу, викликає процедуру (2'). Остання повертає відповідь "так".


Сиогемн штучшого іпсжпу. Gjpoea НЛ1

Пролог ми власні позначення для представлення знань. Наша проста база знань може бртм представлена у ПролозІ таким чином:

а унраїм( W-- в_чврмІг1всьнІЙ_о6ласті (А) а_чарнМасьиій_області (ocrep) тут а.украМ та а_чвриІгівськІЙ_області — предикати, якІ визначають окремі особливості. Предикат може маги будь^ку фіксовану кількість аргументів (параметрів). Одномісний предикат показус властивість одного поняття, тоді як двомісні описукггь взаємоза'яаокмІждвома поняттями.

Кільнкть аргументів, якІ має предикат, називається арністю (вІд таких термінів як унарнІсть, бінарнІсть, тернарнІсть та інших подібних). Два різних предикати можуть мати однакоауназву, якщо вони різноїарності, але бажано намагатись уникати такої практики оскільки вона призводить до непорозумінь.

На сьогоднішній день є багато різних реалізацій Прологу. Прикладом можуть служити Турбо Пролог, Мікро Пролог, Arity Prolog і ALS Prolog на IBM PC та Quintus Prolog на робочих станціях Sun, SWI Prolog, LPA Prolog, Cogent (Amzl) Prolog та Expert Systems Llmltedb Public Domain Prolog-2.

Протягом багатьох років стандартом дечракто для Прологу була мова, описана Нлоксіном (Clocksln) та МеллІшом (Mellish) в їх популярному підручнику "Програмування на ПролозГ ("Programming In Prolog"^ Це, практично, мова, яку вживав ще на DEC-10 Уорен та його колеги наприкінці 70-х років, яку часто називають единбурзькою, або Edinburg Prolog, або DEC-10 Prolog. Більшість комерційних версій Прологу розробляються так, щоб бути сумісними з цією версією.

У 1995 p. Міжнародна організація стандартизації (ISO) опублікувала міжнародний стандарт для мови Пролог (Scowen 1995). ISO Пролог дещо схожий на Edlnburg Prolog, алездещо розширеними можливостями.

Нагадаємо також, що такІ версії, як Turbo Prolog (PDC Prolog), Colmerauer's Prolog-l| та Prolog III, Turbo Prolog мають можливість декларувати типи даних. Як результат - програми можуть виконуватись швидше, але це дуже заважає їм перевіряти та модифікувати себе. ColmeraueYs Prolog-ll та Prolog-lll — мови обмеженого логічного програмування, тобто вони дозволяють накладати обмеження на значення змінних перед тим, як присвоювати їм якІсь значення. Це робить доступним використання ноюї техніки.

ТЕМА: ПРОДУКШЙНІ МОДЕЛІ

  1. Характеристика продуїщійних моделей

ПродукцШною називається модель знань, в якій база знань складається із сукупносгілродукцІй, тобто правил "Якщо А, тоді В".