بررسی و مقایسه زبان های هوش مصنوعی

Download Report

Transcript بررسی و مقایسه زبان های هوش مصنوعی

‫بررسی و مقایسه زبان های هوش‬
‫مصنوعی‬
‫مقدمه‬
‫قسمت ‪1‬‬
‫دالیل مطالعه زبان های برنامه‬
‫نویسی مختلف‬
‫• افزایش توانایی در ساخت و توسعه الگوریتم‬
‫ها‬
‫• افزایش لغت شناسی در مورد ساختار برنامه‬
‫ها‬
‫• انتخاب بهترین زبان برنامه نویسی‬
‫• ارتقاء روش های استفاده از زبان های موجود‬
‫• یادیگری آسانتر زبان های جدید‬
‫معیار های یک زبان خوب‬
‫• وضوح ‪ ،‬سادگی ‪ ،‬یک پارچگی‬
‫• تعامد‬
‫• طبیعی بودن برای کاربر‬
‫• پشتیبانی از تجرد‬
‫• قابلیت حمل برنامه‬
‫• محیط برنامه نویسی‬
‫معیار های یک زبان خوب‬
‫• هزینه استفاده‬
‫‪‬اجرا‬
‫‪‬ترجمه‬
‫‪‬ایجاد و آزمایش‬
‫‪ ‬نگهداری و پشتیبانی‬
‫• سادگی بررسی درستی برنامه‬
‫‪‬رسمی‬
‫‪‬غیر رسمی‬
‫انواع زبان های برنامه نویسی‬
‫• ساخت یافته‬
LISP , PASCAL , BASIC , C 
‫• شئ گرا‬
C++ , SIMULA , JAVA
‫• متنی‬
JAVA Script , TCL
‫• منطقی‬
PROLOG
‫مدل های برنامه نویسی‬
‫• دستوری‬
‫• تابعی‬
‫• قانونمند‬
‫• شئ گرا‬
‫سیر تکاملی زبان ها‬
‫دوره‬
‫کاربرد‬
‫تجاری‬
‫‪1960‬‬
‫علمی‬
‫امروزه‬
‫سیستمی‬
‫هوش مصنوعی‬
‫تجاری‬
‫سیستمی‬
‫علمی‬
‫هوش مصنوعی‬
‫انتشارات‬
‫زبان مورد استفاده‬
‫‪COBOL‬‬
‫‪FORTRAN , BASIC ,‬‬
‫‪ALGOL , APL‬‬
‫‪Assembly‬‬
‫‪LISP , SNOBOL‬‬
‫‪C++ , Java , 4GL‬‬
‫‪Java , C , C++ , BASIC‬‬
‫‪C , C++ , Java‬‬
‫‪LISP , PROLOG‬‬
‫‪TEX , Postscript‬‬
‫روش های اجرای برنامه‬
‫‪ .1‬ترجمه (کامپایل)‬
‫‪ .2‬تفسیر‬
‫‪ .3‬ترکیب ترجمه و تفسیر‬
‫روش های اجرای برنامه‬
‫‪.1‬‬
‫دستورات به زبان ماشین ترجمه شده و در هر‬
‫زمان قابل اجرا است‪.‬‬
‫‪.2‬‬
‫دستورات خط به خط تفسیر و در همان لحظه‬
‫اجرا می شود‪.‬‬
‫‪.3‬‬
‫ابتدا ترجمه مختصری برروی دستورات انجام‬
‫وسایل مورد نیاز‬
‫• کامپایلر‬
‫• اسمبلر‬
‫• لودر (بارکننده)‬
‫• لینکر (متصل کننده)‬
‫• پیش پردازنده‬
‫محیط میزبان و محیط عملیاتی‬
‫• محیط میزبان ‪:‬‬
‫محیطی که برنامه در آن ایجاد‪ ،‬تست و‬
‫اشکال زدایی می شود‪.‬‬
‫• محیط عملیاتی ‪:‬‬
‫محیطی که برنامه در آن اجرا می شود‪.‬‬
‫برنامه ما‬
‫محیط‬
‫عملیاتی‬
‫محیط‬
‫میزبان‬
‫هوش مصنوعی‬
‫قسمت ‪2‬‬
‫هوش مصنوعی‬
‫• سیستمی که می تواند واکنش هایی مشابه‬
‫رفتار هوشمندانه انسانی را داشته‬
‫باشد‪.‬‬
‫• روشی در جهت هوشمند کردن کامپیوتر ‪.‬‬
‫هوش مصنوعی‬
‫• اولین باری که واژه هوش مصنوعی به‬
‫کار رفت ‪:‬‬
‫جان مکارتی در سال ‪1956‬‬
‫“ دانش و مهندسی ساخت ماشین های هوشمند‬
‫“‬
‫هوش مصنوعی‬
‫• اولین باری که جهان با هوش مصنوعی‬
‫آشنا شد ‪:‬‬
‫آلن تورینگ در سال ‪1950‬‬
‫مقاله ای در رابطه با تست تورینگ‬
‫تست تورینگ‬
‫زبان های هوش مصنوعی‬
‫• ‪LISP‬‬
‫• ‪PROLOG‬‬
‫بررسی‬
‫قسمت ‪3‬‬
‫سازنده‬
‫‪LISP‬‬
‫‪PROLOG‬‬
‫سال طراحی‬
‫‪1950‬‬
‫‪1970-1972‬‬
‫طراح‬
‫جان مک کارتی‬
‫آلن فیلیپ راسل ‪ /‬آلن کلمرار‬
‫سازنده‬
‫محیط اجرایی‬
PROLOG
LISP
SWI-PROLOG
Common LISP
‫نوع زبان‬
‫‪LISP‬‬
‫‪PROLOG‬‬
‫توصیفی‬
‫توصیفی ‪ /‬منطقی‬
‫انواع برنامه نویسی‬
‫• توصیفی ‪:‬‬
‫برنامه نویس فقط برروی توصیف یا تعریف منطق حلل‬
‫مسئله تاکید دارد‪ .‬چگلونگی انجلام مراحلل بلرای‬
‫رسیدن به‬
‫پاسخ بر عهده زبان است‪.‬‬
‫• منطقی ‪:‬‬
‫برنامه نویس برروی خصوصیات حل مسلئله تاکیلد‬
‫ساختمان داده‬
‫‪LISP‬‬
‫‪PROLOG‬‬
‫لیست پیونده‬
‫لیست پیوندی (صف)‬
‫اجزای سازنده‬
‫‪LISP‬‬
‫‪S-expression‬‬
‫(تمام اجزا)‬
‫‪PROLOG‬‬
‫‪Fact‬‬
‫گزاره خبری‬
‫‪Rule‬‬
‫گزاره شرطی‬
‫عملگر ها‬
‫‪LISP‬‬
‫‪PROLOG‬‬
‫به صورت ‪prefix‬‬
‫به صورت ‪infix‬‬
‫محاسباتی‬
‫منطقی‬
‫پاسخ به مسائل‬
‫‪LISP‬‬
‫توصیفی‬
‫‪PROLOG‬‬
‫توصیفی‬
‫رویه ای‬
if ‫دستور‬
PROLOG
‫به شکل‬
:-
LISP
COND ‫تابع‬
If
‫انواع داده‬
‫‪LISP‬‬
‫‪PROLOG‬‬
‫‪S-expression‬‬
‫‪Term‬‬
‫اتم‬
‫لیست‬
‫ساده‬
‫متغیر‬
‫ثابت‬
‫ساخت یافته‬
‫‪atom‬‬
‫‪number‬‬
‫خصوصیات‬
‫‪LISP‬‬
‫‪PROLOG‬‬
‫دارای توابع و محاسبات‬
‫دارای درخواست و قواعد و روابط‬
‫در این زبان یک داده خود به عنوان یک‬
‫برنامه محسوب می شود‬
‫دارای لیست های مختلفی است‬
‫دارای یک ‪ interpreter‬برای مقداریابی‬
‫و اجرا است‬
‫دارای ‪ backtracking‬در زمان اجرا‬
‫است‬
‫در کاربرد های ‪ NLP‬استفاده می شود‬
‫دارای عملکرد تطبیق یا ‪ matching‬است‬
‫‪Head‬‬
‫‪Tail‬‬
‫‪ : NLP‬پردازش زبان طبیعی (مثل دریافت‬
‫و تغییر صدا یا درک معنایی کلمات)‬
‫خصوصیات‬
‫‪LISP‬‬
‫‪PROLOG‬‬
‫بزرگی و کوچکی حروف تفاوت‬
‫ندارد‪ enter ،‬زدن هم تفاوتی‬
‫ندارد‪ ،‬اما گاهی اوقات باید در‬
‫‪ space‬زدن دقت کرد‬
‫بزرگی و کوچکی خیلی مهم است‬
‫(‪ X‬و ‪ Y‬باید بزرگ نوشته شود)‬
‫‪ enter‬و ‪ space‬هم مهم است و‬
‫اجرای برنامه را تغییر می دهد‪.‬‬
‫آموزش‬
‫قسمت ‪4‬‬
‫‪LISP‬‬
‫‪s-expression‬‬
‫مانند ‪:‬‬
‫)اتم( ‪atom‬‬
‫‪0-9‬‬
‫‪A-Z‬‬
‫هر اتم می تواند رشته ای‬
‫از کارکترها باشد‬
‫‪a-z‬‬
‫<>"‪%$@#%)(+‬‬
‫)لیست( ‪list‬‬
‫اعضایش می تواند هم یک اتم‬
‫باشد و هم یک لیست دیگر‬
‫( مجموعه ای از اتم ها)‬
‫)( ‪nill‬‬
‫مانند ‪:‬‬
‫‪321‬‬
‫‪I am student‬‬
‫یک لیست خالی که هم‬
‫می تواند یک اتم باشد و هم‬
‫یک لیست‬
‫‪LISP‬‬
‫• در زبان ‪ LISP‬عبارات به صورت ‪ prefix‬نوشته‬
‫می شوند ‪:‬‬
‫‪Prefix‬‬
‫‪+23‬‬
‫‪Infix‬‬
‫=‬
‫‪2+3‬‬
‫‪LISP‬‬
‫• تمام عبارات باید در ‪ LISP‬مقداریابی شود‬
‫اگر عدد باشد‪،‬‬
‫همان عدد را بر‬
‫می گرداند‬
‫مانند ‪:‬‬
‫اگر ‪symbol‬‬
‫باشد‪ ،‬حاصل‬
‫مقداری است که به‬
‫آن نسبت داده اید‬
‫مانند ‪:‬‬
‫اگر ‪a = 4‬‬
‫تا بتوان آنرا محاسبه کرد ‪:‬‬
‫مقداریابی‬
‫)اتم( ‪atom‬‬
‫‪>>> 1.2‬‬
‫‪1.2‬‬
‫) ‪>>> ( + 1 2 3 a‬‬
‫‪10‬‬
‫مانند ‪:‬‬
‫)لیست( ‪list‬‬
‫اولین عضوش را به‬
‫عنوان تابع می گیرد و‬
‫سعی می کند روی بقیه‬
‫اعضا اعمال کند‬
‫) ‪>>> ( 1 2 3 4‬‬
‫‪ERROR‬‬
‫زیرا در این برنامه عدد ‪ 1‬را به عنوان تابع انتخاب‬
‫می کند و روی بقیه اعداد (آرگومان ها) اعمال می کند ‪ ،‬اما‬
‫‪ 1‬که کاری نمی کند زیرا تعریف شده نیست پس ‪ERROR‬‬
‫می دهد‪.‬‬
‫‪LISP‬‬
‫• ‪: Interpreter‬‬
‫برنامه ای که توسط سازندگان ساخته شد‬
‫تا عبارات را یک به یک بررسی کند و در‬
‫صورت درستی به آن اجازه محاسبه شدن را‬
‫بدهد‪.‬‬
‫برای این برنامه توابع و الگوریتم یا‬
‫عبارت محاسباتی تفاوتی نمیکند‪ ،‬فقط‬
‫‪LISP‬‬
‫• روش نوشتن و اجرای برنامه ‪:‬‬
‫نوشتن‬
‫عبارت‬
‫جواب‬
‫‪LISP‬‬
‫• ‪: Atom table‬‬
‫دو کارکتر که دارای یک آدرس در حافظه‬
‫باشند ‪.‬‬
‫«همان ‪ symbol table‬در زبان های برنامه‬
‫نویسی دیگر»‬
‫‪LISP‬‬
‫• توابع ‪:‬‬
‫توابع در ‪ LISP‬همه کارها را انجام می‬
‫دهند‪ ،‬هر یک از توابع مسئول انجام یک‬
‫وظیفه خاص است‪.‬‬
‫‪LISP‬‬
‫نام تابع‬
‫کاربرد‬
‫‘ – ‪LIST‬‬
‫برگرداندن آرگومان های یک لیست یا اتم‬
‫‪LENGTH‬‬
‫شمارش تعداد عضو ها‬
‫‪(Eval‬مخالف ‪)LIST‬‬
‫خنثی کننده ‪LIST‬‬
‫)‪>>> eval ‘( + 1 2‬‬
‫‪3‬‬
‫‪Print‬‬
‫چاپ‬
‫‪>>>print ‘salam‬‬
‫‪salam‬‬
‫‪CAR‬‬
‫نگه داشتن آرگومان اول و حذف بقیه‬
‫)‪>>>car ‘(1 2 3‬‬
‫‪1‬‬
‫‪CDR‬‬
‫حذف عضو اول و نگه داشتن بقیه‬
‫)‪>>>cdr ‘(1 2 3‬‬
‫)‪(2 3‬‬
‫‪CONS‬‬
‫یک ‪ symbol‬یا یک ‪ s-expression‬و یک ‪ list‬می گیرد‪ ،‬و یک ‪list‬‬
‫برمی گرداند که عضــــــــــــــو اول آن ‪)s-expression ( symbol‬‬
‫است و عضو دوم آن اعضای ‪ list‬است‬
‫‪ATOM‬‬
‫یک آرگومان گرفته و مقدار منطقی آنرا بر میگرداند و نشان می دهد که‬
‫آرگومان یک اتم‪ atom‬است(‪ )T‬یا نه(‪)nil‬‬
‫‪EQ‬‬
‫این تابع دو آرگومان گرفته و می گوید آیا دو آرگومان مربوط به یک نقطه‬
‫از حافظه هست یا نه‬
‫‪COND‬‬
‫تابع عملیات شرطی‬
‫• جدول توابع ‪:‬‬
‫مثال‬
‫)‪>>>LIST (1 2 3 4‬‬
‫)‪(1 2 3 4‬‬
‫‪>>> ‘X‬‬
‫‪X‬‬
‫)‪>>> length (1 2 3 a‬‬
‫‪4‬‬
‫)‪>>>cons 1 ‘(a b 3‬‬
‫‪1ab3‬‬
‫‪>>> atom ‘a‬‬
‫‪T‬‬
‫)‪>>> atom ‘(1 2‬‬
‫‪nill‬‬
‫‪>>> eq ‘x ‘x‬‬
‫‪T‬‬
‫اگر ‪ T = EQ ‘x ‘c‬باشد‬
‫)‪>>> cond (( eq x ‘c) ‘cc‬‬
‫‪(T‬‬
‫)‪‘nn‬‬
‫)‬
‫‪cc‬‬
‫‪LISP‬‬
‫• مثال هایی با توجه به توابع ‪:‬‬
‫‪LISP‬‬
‫• مثال هایی با توجه به توابع ‪:‬‬
‫‪LISP‬‬
‫اگر پایگاه داده ربات ما این آرگومان ها باشد که به ترتیب ( نام خانوادگی – نام – شماره دانشجویی ) است و حاال داریم ‪:‬‬
‫))‪((800111 Ali Mohseni) (800112 Reza Nazari) (800113 Maryam Karimi‬‬
‫نام خانوادگی نفر دوم لیست چیست ؟‬
LISP
: ‫• ساخت توابع‬
define ‫ روش‬.1
defun ‫ روش‬.2
‫‪LISP‬‬
‫‪ .1‬روش ‪: define‬‬
‫می خواهیم برنامهه ای بنویسهیم کهه دو تهابع بهه نهام ههای ‪ mns‬و ‪ pls‬کهه اولهی‬
‫باشد ‪>>> (define‬‬
‫برای جمع آرگومان ها و دومی برای تفاضل آن ها( ‘‬
‫مثال ‪:‬‬
‫)‪>>> (pls 2 5‬‬
‫‪7‬‬
‫)‪>>> (mns (pls 3 6) (mns 6 9‬‬
‫‪12‬‬
‫‪(pls (lambda (a‬‬
‫))‪b) (+ a b‬‬
‫‪(mns (lambda(a‬‬
‫))‪b) (- a b‬‬
‫)‬
‫روش‬
‫المبدا‬
‫روش‬
‫المبدا‬
‫‪LISP‬‬
‫‪ .2‬روش ‪: defun‬‬
‫مثال قبل اما‬
‫به روشی جدید ‪:‬‬
‫‪PROLOG‬‬
‫• برنامه های این زبان از گزاره های‬
‫خبری (‪ )fact‬و گزاره های شرطی (‪)rule‬‬
‫تشکیل شده است‪.‬‬
‫• ‪ =fact‬داده ها ی مسئله‬
‫( در ‪ notepad‬نوشته می شود)‬
‫• ‪ =rule‬قوائدی برای حل مسئله‬
‫• ‪ rule‬ها ‪ fact‬ها را به هم مرتبط می‬
‫‪PROLOG‬‬
‫• برای نوشتن ‪:‬‬
‫قواعد‬
‫اگر سواد داشته باشید و بتوانید‬
‫از این وسایل به درستی استفاده‬
‫کنید می توانید بنویسید‬
‫داده ها‬
PROLOG
ann
: ‫• مثال قوائد و داده ها‬
jim
liz
tom
john
pit
jery
‫‪PROLOG‬‬
‫• روابط فامیلی ‪:‬‬
‫‪parent(X, Y).‬‬
‫‪X‬‬
‫والد (پدر‪/‬مادر) ‪ Y‬است‪.‬‬
‫‪PROLOG‬‬
‫• روابط فامیلی ‪:‬‬
‫‪PROLOG‬‬
‫• سؤال روابط فامیلی ‪:‬‬
‫‪ ann .1‬والد کیست ؟‬
‫‪ .2‬آیا ‪ tom‬والد ‪ liz‬است؟‬
PROLOG
1
2
‫‪PROLOG‬‬
‫• سؤال روابط فامیلی با جنسیت ‪:‬‬
‫)‪ = male(X‬مرد بودن‬
‫)‪ = Female(X‬زن بودن‬
‫‪PROLOG‬‬
‫• دستورات شرطی به صورت (‬
‫‪:-‬‬
‫) نوشته‬
‫می شود‪.‬‬
‫• ‪ Prolog‬نسبت به حروف حساس است‪ .‬تمام‬
‫کلمات مهم با حروف کوچک نوشته می‬
‫شوند‪.‬‬
‫‪PROLOG‬‬
‫• چند رابطه ‪:‬‬
‫‪PROLOG‬‬
‫• چند سؤال از روابط و پاسخ های ‪ prolog‬با توجه به داده‬
‫های ما ‪:‬‬
‫مادر ‪ john‬کیست؟‬
‫(تعریف نشده در داده ها)‬
‫‪ Ann‬مادر کیست ؟‬
‫‪ John‬عموی ‪ jery‬است؟‬
‫‪PROLOG‬‬
‫• انواع داده ها در ‪: prolog‬‬
‫‪Atom‬‬
‫ثابت‬
‫‪constant‬‬
‫‪number‬‬
‫ساده‬
‫(‪)simple data type‬‬
‫داده‬
‫متغیر‬
‫‪Variable‬‬
‫ساخت یافته‬
‫(‪)structureal data type‬‬
‫ترکیبی از تمام انواع داده ها ‪:‬‬
‫)‪data(A,10001,box,(1235,Ali,all‬‬
‫رشته ای از حروف و ارقام که با‬
‫حرف بزرگ نمایش می دهند ‪:‬‬
‫!‪Ali24‬‬
‫رشته ای از حروف و ارقام که با‬
‫حرف کوچک نمایش می دهند ‪:‬‬
‫‪a1#‬‬
‫رشته ای از اعداد رند شده ‪:‬‬
‫‪1.9 = 2‬‬
‫‪1.2 = 1‬‬
‫‪PROLOG‬‬
‫• عمل تطبیق (‪: )matching‬‬
‫• وقتی دو داده ساخت یافته نظیر به نظیر‬
‫عباراتش یکسان باشد‪.‬‬
‫‪atom‬‬
‫متغیر‪(123 , A , f ) = (raha ,‬‬
‫)‪8000254 , Alex‬‬
‫‪number‬‬
‫‪PROLOG‬‬
‫• پاسخ توصیفی و رویه ای(منطقی) ‪:‬‬
‫روش توصیفی‬
‫روش منطقی‬
‫)‪Red(X‬‬
‫)‪Big(X‬‬
‫‪‬‬
‫)‪Big(cat‬‬
‫‪‬‬
‫)‪Big(hen‬‬
‫)‪Red(hen‬‬
‫)‪Big(hen‬‬
‫‪hen‬‬
‫کدام ‪ FACT‬هم بزرگ‬
‫است و هم قرمز‬
‫‪PROLOG‬‬
‫• لیست‬
‫در ‪: prolog‬‬
‫مجموعه ای از انواع داده ها که به‬
‫روشی خاص در یک لیست قرار می گیرند‪.‬‬
‫• به کمک لیست ها می توان روابط خاصی‬
‫را ساخت‪.‬‬
‫‪head‬‬
‫‪tail‬‬
‫) ‪( A , 80001 , (1,a,A), g‬‬
‫‪PROLOG‬‬
‫• ‪: Backtracking‬‬
‫هنگامی که در یک گزاره از برنامه‬
‫رابطه ای استفاده می شود‪ ،‬پس از‬
‫بررسی آن (حتی در صورت درست بودن‬
‫جواب) دوباره به محل همان گزاره در‬
‫رابطه باز می گردد و اجرای برنامه از‬
‫‪PROLOG‬‬
‫• جدول عبارات و عملگرهای محاسباتی‪:‬‬
‫‪+‬‬
‫‬‫*‬
‫‪/‬‬
‫عملگر محاسباتی‬
‫اپراتورهای‬
‫محاسباتی و منطقی‬
‫>‬
‫<‬
‫=>‬
‫<=‬
‫=‪=:‬‬
‫تساوی بودن‬
‫را چک میکند‪.‬‬
‫‪( IS‬مساوی)‬
‫‪?_ x is 3+2‬‬
‫‪x=5‬‬
‫‪?_ 3+2 = 5‬‬
‫‪False‬‬
‫=‪=/‬‬
‫مخالف بودن را‬
‫چک می کند‬
‫‪,‬‬
‫‪AND‬‬
‫;‬
‫‪OR‬‬