بخشی از پاورپوینت
اسلاید 1 :
زبان برنامه نویسی هوش مصنوعی پرولوگ
اسلاید 2 :
اولین سیستم Prolog در سال ۱۹۷۲ توسط آلن فیلیپراسل و آلن کلمرار در مارسی فرانسه ساخته شده و آنها پیاده سازان اولین مترجم Prolog بودند.
پرولوگ یک زبان برنامهنویسی منطقی چند منظوره مبتنی بر مفاهیم هوش مصنوعی و زبانشناسی محاسباتی است. این زبان بر پایه منطق ریاضی بنا نهاده شده است. به همین خاطر این زبان را به عنوان زبان کاملاً منطقی میشناسند و حتی به آن پرلوگ خالص نیز اطلاق میشود.
در پرولوگ منطق برنامه از لحاظ روابط بیان میشود و اجرای آنها بیشتر از طریق پرسوجوها، حول این روابط است.
منطق گرا بودن این زبان، آن را برای به کارگیری در بانکهای اطلاعاتی، ریاضیات نمادین، زبان تجزیه و برنامههای دیگر سودمند نموده است.
مقدمه ای بر پرولوگ
اسلاید 3 :
پرولوگ یک زبان برنامهنویسی برای حل مسائل غیر عددی است. برای مثال برای نمایش اینکهMohammad ، پدر Ali است از رابطهای به شکل مقابل که رابطهٔ parent است استفاده میشود:
parent(mohammad, ali)
چگونگی تعریف روابط
یکی از مسائلی که در مراحل ابتدایی آموزش پرولوگ مطرح میشود، مساله شجرهنامهٔ خانوادگی است.
این شجرهنامه را به زبان پرولوگ توصیف مینماییم. برای این کار برای این کار سه محمول پایه یعنی male, female وparent، را اختیار میکنیم و با یک سری Fact درخت را نمایش میدهیم.
اسلاید 5 :
پس از ساختن پایگاه دانش میتوان یک سری پرسوجو انجام داد:
اسلاید 6 :
اکنون می خواهیم سوالاتی هوشمندانهتر از پرولوگ بپرسیم، از قبیل اینکه :
چه کسی است ؟ X مادر
است؟ X خواهر Y آیا
برای پرسیدن چنین سوالاتی بایستی تعریف مادر، خواهر و یا از این دست را به پرولوگ بدهیم.
یک راه بدیهی این است که برای تمامی افراد موجود در شجره نامه این رابطه را تعریف کنیم، که منطقی به نظرنمیرسد. بنابراین از یک گزارهٔ منطقی استفاده میکنیم.
کلاز متناظر در پرولوگ به این صورت خواهد بود:
mother(X,Y) :parent(X, Y),female(X).
اسلاید 7 :
این نشاندهندهٔ نوع دوم ساختارهایی است که در پایگاه دانش به زبان پرولوگ میتواند وجود داشته باشد.
به قسمت سمت چپ :- اصطلاحاً Head، و به قسمت سمت راستBody میگویند.
mother(X,Y) :parent(X, Y),female(X).
اسلاید 8 :
نکات
در پرولوگ آزادی کامل انتخاب ساختار وجود دارد.
در پرولوگ کاربر به راحتی میتواند از سیستم پرولوگ درمورد روابط تعریف شده در برنامه سوال کند.
هر برنامهٔ پرولوگ از چندین عبارت تشکیل شده ازست که با یک نقطه به پایان میرسند.
پاسخهای سوالات بسته به اینکه آیا هدف موردنظر قابل دسترسی است یا خیر، مثبت یا منفی باشد.
اگر سوالی چندین جواب داشته باشد، پرولوگ به درخواست کاربر میتواند تمامی آنها را نمایش دهد.
آرگومانهای روابط میتوانند اشیای ثابت یا اشیای متغیر باشند.
-اشیای ثابت مثل tom, jim, pat
-اشیای متغیر مثل X, Y
در پرولوگ به اشیای نوع اول اتم و به اشیای نوع دوم متغیر گفته میشود.
اسلاید 9 :
نکات
در محاسبات یک متغیر میتواند با یک شی جایگزین شود که در این حالت میگوییم که متغیر مقدار گرفته است
کلاوزهای پرولوگ به سه نوع تقسیم میشوند:
واقعیتها
قواعد
سوالات
واقعیتها در واقع عباراتی همیشه صحیح هستند.
قواعد عباراتی هستند که بسته به شروط خاصی میتوانند صحیح باشند.
قواعد پرولوگ از دو قسمت Headو Body، تشکیل شده است. قسمت بدنهٔ قواعد از لیست اهداف تشکیل شده است که با کاما از هم جدا شدهاند. کاما به معنای اتصال است.
برای اضافه کردن توضیحات در پرولوگ در یک خط به قرار گرفتن ٪ در ابتدا و برای درج چندین خط توضیحات، توضیحات ما بین /*Comments*/ قرار میگیرد.
اسلاید 10 :
-در این مثال شش Fact داریم که در درخت با شش کلاز نمایش داده شده است.
-هر کدام از این کلازها یک نمونه از رابطهٔ parent را نشان میدهند.
این کلازها از نوع »واقعیت«هستند.
-یکی از راههای کلی برای تعریف یک رابطه در پرولوگ تعریف کلازهای از واقعیت یعنی نمونههای آن رابطه است.
اسلاید 11 :
در پرولوگ برای پرسیدن سوال از کلازهای نوع سوالی استفاده میکنیم. مثلاً برای سوال از رابطهٔ اسلاید قبل به عنوان نمونه میتوان این سوال را مطرح کرد که:
?-parent (tom, bob).
آیا tom پدر bob است؟
Yes
?-parent(X, jim)
X=pat
جواب:
جواب:
اسلاید 12 :
گاهی ممکن است یک سوال بیشتر از یک جواب داشته باشد.
برای مثال فرزندان bob چه کسانی هستند؟
?-parent(bob ,X)
جواب اول:
X=Ann
پرولوگ در جواب هر سوال فقط یک جواب را نشان میدهد، اگر جوابهای دیگری را نیز بخواهیم با زدن ؛ به جوابهای دیگر میپردازیم و برای توقف جوابها از Return استفاده میکنیم.
جواب دوم:
X=pat
اسلاید 13 :
در پرولوگ میتوان سوال دومجهولی نیز داشت که در این صورت تمام Factها چاپ خواهد شد.
?-parent(X,Y).
X=pamY=bob;
X=tom
Y=bob;
X=tomY=liz;
…
سوالات مرکب:
?-parent(Y, jim), parent(X, Y).
X=bobY=pat
جواب:
اسلاید 14 :
تعریف رابطهها به وسیلهٔ قواعد
مثالهایی که زدیم از جهاتی قابل گسترش هستند.
مثلاً میتوان عکس رابطهٔ parent را به صورت Offspring با واقعیتها بیان کرد.
parent(tom, bob).
Offspring(bob, tom).
قاعده:
Offspring(Y, X):-parent(X, Y)
برای تمامی Xها و Yها، Yفرزند Xاست اگر XوالدYباشد
اسلاید 15 :
قوانین بازگشتی
میخواهیم در یک Family Tree، رابطهٔ جد تعریف نماییم. رابطهٔ جد را میتوان بر اساس رابطهٔ والد تعریف کرد.
Predecessor(X,Z):-parent(X,Z).
برای دسترسی به جدهای مرتبهٔ بالاتر:
Predecessor(X,Z):-parent(X,Y), parent(Y,Z).
Predecessor(X,Z):-parent(X,Y), parent(Y,U), parent(U,Z).
و به همین ترتیب با اضافه کردن parent در قسمت Body به جد بالاتر دسترسی پیدا میکنیم.ایراد این روش محدودیت آن تا مرتبهٔ محدودی است.
اسلاید 16 :
برای رفع محدودیت میتوان از یک روش فرموله کردن استفاده کرد که هیچ محدودیت عمقی را شامل نمیشود.
Predecessor(X,Z):-parent(X,Z).
Predecessor(X,Z):-parent(X,Y), Predecessor(Y,Z).
برای تمام Xها وZها، XجدZاست اگر X، والد Zباشد یا یک Yوجود داشته باشد که:
Xوالد Yباشد.
Yوالد Zباشد.
اسلاید 17 :
انواع شی در پرولوگ
اسلاید 18 :
اتمها، متغیرها و اعداد
اسلاید 19 :
اتمها
اسلاید 20 :
اعداد
متغیرها