Чому Prolog хороший для програмування AI? [зачинено]


25

Я досліджую мови програмування, які використовуються для програмування AI. Я знаю, що LISP викладають як мову програмування AI в моєму університеті, але Prolog це рідко. Мені подобається Prolog, але я не програміст AI, тому не думаю, що я кваліфікований, щоб судити про себе, чому Prolog кращий за LISP / Scheme. Мені було цікаво, чи мають програмісти якийсь внесок у цю тему.

Як ви могли стверджувати, що Prolog буде кориснішим для програмування AI?

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

Чи є ще щось, що можна сказати для Prolog в AI?


1
Написати компілятор / інтерпретатор Prolog в Lisp не так багато. Пол Грехем має приклад в On Lisp .
Ларрі Коулман

Один із моїх однокласників теж мені це казав. Мені було цікаво, що символічна маніпуляція LISP дозволить мені створити Prolog. Дякую за приємну сторону!
2rs2ts

4
@Larry Coleman: Написати в Лиспі наївний компілятор / перекладач Prolog не так вже й багато. Зробити ефективним і повнофункціональним є нетривіальним для будь-якої мови.
ДАЙТЕ МОЕ правильне ДУМКА

Відповіді:


19

З передмови до Прологічного програмування для штучного інтелекту :

Prolog - мова програмування, орієнтована на невеликий набір основних механізмів, включаючи відповідність шаблонів, структурування даних на основі дерева та автоматичне зворотнє відстеження. Цей невеликий набір становить напрочуд потужну та гнучку рамку програмування. Пролог особливо добре підходить для проблем, що стосуються об'єктів - зокрема, структурованих об'єктів - та відносин між ними. Наприклад, це легка вправа в Prolog для вираження просторових зв’язків між об'єктами, наприклад, синя сфера знаходиться за зеленою. Неважко також викласти більш загальне правило: якщо об’єкт X ближче до спостерігача, ніж об’єкт Y, а Y ближче до Z, то X повинен бути ближче, ніж Z. Пролог тепер може міркувати про просторові зв’язки та їх узгодженість з дотримання загального правила. Такі функції роблять Prolog потужною мовою для штучного інтелекту (AI) та нечислового програмування взагалі. Є відомі приклади символічних обчислень, реалізація яких в інших стандартних мовах зайняла десятки сторінок неперетравного коду. Коли ті самі алгоритми були реалізовані в Prolog, результатом стала кристально чиста програма, яка легко вміщувалася на одній сторінці.

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


Моїм незначним доповненням тут було б те, що Prolog дозволяє оголошувати факти , а потім правила, засновані на цих фактах. Тоді ваші правила можуть бути використані Prolog для міркування та відповіді на інші запити шляхом логічного виведення відповідей. Наприклад, якщо факт стверджує, що А є родоначальником В, а інший факт говорить про те, що В є родоначальником С, тоді Пролог може зробити висновок, що А повинен бути родоначальником С, без того, щоб вам писати алгоритм, щоб перевірити його.
code_dredd

25

Я ознайомився з курсом AI в моєму студенті, який використовував Prolog для того, щоб ми впровадили експертну систему.

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

Наприклад, ви можете уявити собі експертну систему, яка підкаже вам, чи варто брати парасольку, коли виходите чи ні; ви дасте йому набір даних (будь то похмуро, чи дощив напередодні, в який сезон, і т. д.), і експертна система буде проходити правила, щоб дати вам відповідь (якщо хмарно і дощило напередодні, тоді слід взяти парасольку).

Природа Prolog робить дуже простим впроваджувати правила та факти (у Prolog все є правилом чи фактом), а потім "запитувати базу даних" (отримати відповідь на своє запитання), навіть якщо у вас є тисячі цих правил та фактів .

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


У своєму дослідженні я прочитав, що Prolog робить експертні системи легкими у впровадженні. Дякуємо, що підтримали це з деякими поясненнями :)
2rs2ts

16

Різниця дещо схожа на використання SQL для запитів до бази даних, а не для написання програми в скажімо, C. У SQL ви говорите, що хочете, але вам не потрібно (безпосередньо) вказувати алгоритм, який використовується для його отримання.

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

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

Для запиту Prolog, реалізованого в C, потрібен буде (принаймні) пошук зворотного відстеження, використовуючи техніку Union-find. І це, знову ж таки, наївне рішення.

Певний вид програмування AI передбачає багато типів пошуку, який здійснює Prolog. Не дивно, що спочатку програмування AI виконувались у Ліспі чи якійсь іншій мові, але Prolog був написаний спеціально для виконання цієї роботи.

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


3

Я взяв 2 модулі Prolog в університеті і дуже сподобався розвиватися в мові.

Це особливо добре для експертних систем, я написав медичний діагноз симтом.

То, як мені було пояснено, це те, що Лісп, як правило, використовується в деяких країнах, а Пролог - в інших.

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

Якщо ви розробляєте додаток для вирішення правил і фактів, щоб отримати відповіді, Prolog дуже хороший і, природно, підтримує зворотний трек.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.