تمرین سری ششم درس هوش مصنوعی مدرس :خانم دکتر سلیمانی ترم دوم سال تحصیلی 1394-95 دانشکده مهندسی کامپیوتر دانشگاه صنعتی شریف تئوری: .1با استفاده از الگوریتم ،DPLLمشخص کنید که عبارت زیر satisfiableهست یا خیر و اگر هست مقادیری که آن را satisfyمی کنند به دست آورید( :علامت | بیانگر orو علامت & بیانگر andو علامت ~ بیانگر نقیض هستند) (A|B|~C) & (A|~B|D) & ~D & (~C|D) & (B | ~E) & E .2جملات زیر را در نظر بگیرید: • کسی که بی منطق باشد دعوا می کند. • محمد دعوا نمی کند. • افراد هنگام عصبانیت ،بی منطق می شوند. الف) جملات بالا را به منطق مرتبه اول ترجمه کنید ،برای این کار از مسندهای زیر استفاده کنید: ) A(xبرای اینکه xمنطقی است. ) B(xبرای اینکه xدعوا می کند. ) C(xبرای اینکه xعصبانی است. ب) جملات به دست آمده در بخش قبل را به فرم clausalدر آورید. ج) با استفاده از resolutionثابت کنید که "محمد عصبانی نیست". .3در موارد زیر در صورت امکان unificationرا انجام دهید و اگر ممکن نیست علت امر را توضیح دهید. توجه کنید که unificationشما در حد امکان عمومی باشد ،یعنی به طور مثال اگر جایی میتوان متغیر Xقرار داد ،به جای آن مقداری ثابت نگذارید( .متغیرها با حرف بزرگ شروع میشوند). )a) Knows(a,X,Y) , Knows(a,b,Z )b) Function(X,f(X)), Function(Y,Y .4در یک شرکت سه نفر به نام های B ،Aو Cکار می کنند .می دانیم این سه نفر در شغل های مدیر، برنامه نویس و گرافیست مشغول به کار هستند ولی نمی دانیم هر کدام چه شغلی دارند .با استفاده از اطلاعات زیر و جملات معقول نظیر اینکه هر کس از این افراد یک شغل را دارد ،یک پایگاه دانش بسازید، سپس آن را به صورت clausalتبدیل کنید و با استفاده از resolutionبه دست آورید که چه کسی برنامه نویس است. • گرافیست ذوق هنری دارد. • حقوق Aاز Bکمتر است. • Aذوق هنری ندارد. • حقوق مدیر از همه بیشتر است. از predicateهای زیر برای ساخت پایگاه دانش خود استفاده کنید: • ) Art(xبرای اینکه xذوق هنری دارد. • ) Job(x,yکه یعنی شخص xشغل yرا دارد. • ) Upper(x,yکه یعنی حقوق شخص xاز yبیشتر است. برای راحتی از حرف Pبرای شغل برنامه نویس ،از حرف Mبراش شغل مدیر و از حرف Gبرای گرافیست استفاده کنید. .5جملات زیر را به فرم منطق مرتبه اول بنویسید: الف) کسی وجود ندارد که در دانشگاه درس بخواند و نوشتن بلد نباشد. ب) به ازای هر شخص ،فرد دیگری وجود دارد که هم قد او است. ج) فقط یک نفر وجود دارد که درس هوش مصنوعی را پاس می کند: ( .دی ) د) هیچ دانشآموزی درس تاریخ را نمی افتد ولی حداقل یک نفر درس جغرافی را می افتد. .6عبارات زیر را ثابت کنید و در صورت درست نبودن ،مثال نقض بزنید: )a) ∀x∃yP(x,y) → ∃xP(x,x )b) ∃x(P(x) → C) → (∀xP(x) → C عملی: برای هر مساله فایلی مجزا شامل کد خود به زبان پرولاگ آماده و تحویل نمایید. .7برنامهای بنویسید که عناصر تکرار شده در یک لیست را پیدا کند repeated/2 .را پیاده سازی کنید به طوری که آرگومان اول آن یک لیست (ورودی) باشد و در آرگومان دوم لیست جواب ساخته شود؛ به طوری که تنها اولین وقوع (از سمت چپ) از هر عنصری که بیش از یک بار در لیست آمده حفظ شود. مثال: -?repeated([a,b,a,c,c,d],X). = X[a,c]. .8به درختی ریشهدار ،که هر راس آن حداکثر دو فرزند (چپ و راست) دارد؛ درخت دودویی میگوییم .درخت تهی را با nilو درخت به ریشه Aبا زیردرختهای چپ و راست Lو Rرا با ) t(A,L,Rنشان میدهیم .به عنوان مثال به درخت شکل زیر و عبارت متناظر با آن توجه کنید. a b c e f d g )))t(a,t(b,t(d,nil,nil),t(e,nil,nil)),t(c,nil,t(f,t(g,nil,nil),nil الف) برنامه isTree/1را بنویسید که بررسی کند آرگومان داده شده متناظر با یک درخت دودویی است یا خیر. مثال: ?- isTree(t(a,t(b,nil,nil),nil)). True. ?- isTree(t(a,t(b,nil,nil))). False. ب) برنامه countTree/2را بنویسید که آرگومان اول آن عبارت درختی دودویی (ورودی) و آرگومان دوم آن (خروجی) تعداد رئوس موجود در درخت مربوطه را برگرداند. مثال: ?- countTree(t(a,t(b,nil,nil),nil),X). X = 2. ?- countTree(nil,X). X = 0. ج) برنامه dfs/2را بنویسید که آرگومان اول آن عبارت درختی دودویی (ورودی) است که یک یا چند تا از راسهای آن goalنام دارند و آرگومان دوم آن (خروجی) مسیری است که با استفاده از الگوریتم dfsاز ریشه تا اولین goalدر طول مراحل dfsبه آن میرسیم. مثال: ?- dfs(t(a,t(b,t(goal,nil,nil),t(e,nil,nil)),t(goal,nil,t(f,t(g,nil,nil),nil))),X). X = [a,b,goal]. د) همان برنامه بالا را این بار برای bfsبنویسید. مثال: ?- bfs(t(a,t(b,t(goal,nil,nil),t(e,nil,nil)),t(goal,nil,t(f,t(g,nil,nil),nil))),X). X = [a,goal]. .9یک جدول 𝑛 × 𝑛 داریم و میخواهیم با حرکات بالا و راست از خانه چپ پایین به راست بالا برویم ،مسیری که این امر را محقق سازد ،مطلوب مینامیم. الف) یک مسیر مجاز به مسیری مطلوب میگوییم که هیچگاه پایین قطر 𝑦 = 𝑥 از جدول نرود .برنامه isValid/2را بنویسید که آرگومان اول و دوم آن عدد طبیعی 𝑛 < 100و لیستی از ترمهای ’( ‘Uبالا) و ’( ‘Rراست) باشد و حاصل نتیجه بررسی مجاز بودن مسیر را ارائه دهد. مثال: ?- isValid(5,[‘U’,’R’,‘U’,’R’,‘U’,’R’,‘U’,’R’,‘U’,’R’,‘U’,’R’,‘U’,’R’]). True. ?- isValid(2,[‘U’,’R’,’R’,’U’]). False. ب) برنامه allValids/2را بنویسید که 𝑛 < 6را در آرگومان اول بگیرد و در آرگومان دوم؛ لیستی شامل همهی مسیرهای مجاز را به ترتیب الفبایی برگرداند .هر مسیر بصورت لیستی از ’ ‘Rو ’‘U؛ مشابه قسمت قبل درج شود. مثال: ?- allValids(2,L). L=[[‘U’,’U’,’R’,’R’],[‘U’,’R’,’U’,’R’]]. موفق باشید :دی
© Copyright 2025 Paperzz