510 likes | 761 Views
תכנות לוגי פרולוג. מרצה : עמי ברלר חוג להוראת המחשבים מכללת "אחווה" 2003. מטרות הקורס. היכרות עם תורת היגיון - לוגיקה היכרות עם עקרונות של תכנות לוגי. היכרות עם שפת פרולוג, עקרונותיה ויתרונותיה. כתיבת יישומים מתחומים שונים. להציג נתונים בצורה מופשטת.
E N D
תכנות לוגיפרולוג מרצה : עמי ברלר חוג להוראת המחשבים מכללת "אחווה" 2003
מטרות הקורס • היכרות עם תורת היגיון - לוגיקה • היכרות עם עקרונות של תכנות לוגי. • היכרות עם שפת פרולוג, עקרונותיה ויתרונותיה. • כתיבת יישומים מתחומים שונים. • להציג נתונים בצורה מופשטת. • היכרות עם תוכנית הלימודים בפרולוג.
קצת היסטוריה • עקרונות המחשב כתפיסה, כפי הוא מוכר היום, התגבשו בשנות ה-40. • כיצד לבנות מחשב כיצד להשתמש במחשב. • התפתחות השפות. • שפה מבנה המחשב. • תכנות לוגי.
מבוא ללוגיקה( תורת ההיגיון ) • הגדרה ראשונה ( נתקן אותה אחר כך) : • היסק לוגי : אוסף של משפטים אשר אחד מהם הוא מסקנה והיתר הם הנחות. • דוגמאות : המים הם קרים וכחולים , לכן הם כחולים. המים הם קרים או כחולים, לכן הם כחולים. • לא תמיד נשמר הסדר בין המסקנה וההנחות. • דוגמא : הכל רטוב כי יורד גשם.
טענה היא משפט שהתשובה אליו היא אמת או שקר. • עכשיו נתקן את ההגדרה : היסק לוגי :אוסף של טענות שאחת מהן היא מסקנה והשאר הן הנחות. • היסק תקף : ההנחות גוררות את המסקנה והמסקנה נובעת מההנחות. • דוגמא : כל ציפורים שרים הזמיר הוא ציפור לכן הזמיר שר • בהיסק תקף לא יתכן מצב בו כל ההנחות אמיתיות יחד, והמסקנה שקרית. • בהיסק בטל יתכן מצב בו כל ההנחות אמיתיות יחד, והמסקנה שיקירת.
תכנות לוגי • מבוסס על תורת ההיגיון. • ההיגיון מספק שפה מדויקת.
מאפיינים של שפות לוגיות • הן משתמשות בלוגיקה להעברת מידע. • הן משתמשות בלוגיקה לייצוג בעיות במחשב. • הן משתמשות במנגנון ההיסק לוגי כדי לפתור בעיות
קשר האימוז . הטענות "אם ברונו חולם אז ברונו ישן" ו- "ברנו ישן אם ברונו חולם" הן שתי טענות מורכבות (זהות) המורכבות משתי טענות פשוטות וקשר האימוז ביניהם. כל טענות האימוז מורכבות מראש וגוף באופן הבא: גוף ראש ברונו ישן ברונו חולם הגוף מציין את ה- אם והראש מציין את ה- אז. טבלת האמת הבאה מציגה את הקשר בין הטענות הפשוטות "ברונו ישן" ו- "ברונו חולם", לבין הטענה המורכבת "ברונו ישן אם ברונו חולם".
הרעיון של תכנות לוגי תאור הבעיה מנגנון ההסקה תשובה שאילתא המשתמש
שימור האמת- היסק תקף או בטל • הנחות: משה יתקלח אם הוא הזיע משה הזיע אם הוא רץ משה רץ אם הוא התאמן משה התאמן • מסקנה משה יתקלח
הצרנה הנחות q p r q s r s מסקנה p מילון משה יתקלח - p משה הזיע - q משה רץ - r משה התאמן – s
r s r s "עץ הוכחה"
p q q p r r q s r s
הרעיון של תכנות לוגי תאור הבעיה מנגנון ההסקה תשובה שאילתא המשתמש
כללי היסק • כלל ההחזרה • כלל הוספת גימום • כלל מודוס פננס – Modus Ponens • כלל מודוס טולנס – Modus Tolens • כלל שרשרת • כלל הוספת איווי • כלל החלטה - Resolution
כלל ההחזרה p1∧ p3∧ …∧ pn=> pi
כלל הוספת גימוםAnd- introduction אם : ,…,p2 , p1,pn אז : p1∧ p2 ∧…∧ pn
כלל מודוס פננס Modus Ponens אם מתקיימים : p => q , p אז q
כלל מודוס טולנס Modus Tolens אם ∨ q , not qp אז p
כלל שרשרת אם p => q , q => t אז p => t
כלל הוספת איוויor-introduction אם כל pi אז p1 ∨ p2 ∨…∨ pn
כלל החלטהResolution אם p ∨ q , not q ∨ t אז p ∨ t
% תוכנית המשפחה התנכית % עובדות % המתאר אב(_אדם,_מישהו) % מתאר ש _אדם הוא אבא של _מישהו. אב( אברהם,יצחק). אב (אברהם,ישמעאל). אב(יצחק,יעקב). אב(יצחק,עשו). אב(יעקב,ראובן). אב(יעקב,שמעון).
% המתאר אם(_אדם,_מישהו) % מתאר ש _אדם הוא אימא של _מישהו. אם(שרה,יצחק). אם (הגר,ישמעאל). אם(רבקה,יעקב). אם(רבקה,עשו). אם(לאה,ראובן). אם(לאה,שמעון).
% המתאר זכר(_אדם) % מתאר ש _אדם הוא ממין זכר. זכר(אברהם). זכר(ישמעאל). זכר(יצחק). זכר(יעקב). זכר(עשו). זכר(ראובן). זכר(שמעון).
% המתאר נקבה(_אדם) % מתאר ש _אדם הוא ממין נקבה. נקבה(שרה). נקבה(הגר). נקבה(רבקה). נקבה(לאה).
% חוקים: % המתאר הורה(_אדם,_מישהו) % מתאר ש _אדם הוא הורה של _מישהו. הורה(_אדם,_מישהו) :- אב(_אדם,_מישהו). הורה(_אדם,_מישהו) :- אם(_אדם,_מישהו). % המתאר בן/בת (_מישהו,_אדם) % מתאר ש _מישהו הוא בנו/בתו של _אדם. בן( _מישהו,_אדם) :- הורה( _אדם,_מישהו) , זכר( _מישהו). בת(_מישהו,_אדם) :- הורה(_אדם,_מישהו), נקבה( _מישהו).
% המתאר אב(_אדם) % מתאר ש _אדם הוא אב. אב(_אדם) :- אב(_אדם,_מישהו). % המתאר אם(_אישה) % מתאר ש _אישה היא אימא אם(_ אישה) :- אם(_אישה,_מישהו).
% המתאר אח(_אח1,_אח2) % מתאר ש _אח1 ו _אח2 הם אחים. אח( _אח1,_אח2):- הורה( _הורה,_אח1), הורה( _הורה,_אח2), זכר( _אח1), _אח1 \= _אח2. % כאשר _אח1 הוא ממין נקבה (אחות). אחות( _אח1,_אח2):- הורה( _הורה,_אח1), הורה( _הורה,_אח2), נקבה( _אח1), _אח1 \= _אח2.
% המתאר אח_או_אחות(_אח1,_אח2) % מתאר ש _אח1 ו _אח2 הם אחים. אח_או_אחות(_אח1,_אח2) :- הורה(_הורה, _אח1), הורה(_הורה, _אח2). % המתאר בן-דוד(_בן-דוד1,_בן-דוד2) % מתאר ש_בו-דוד1 ו- _בן-דוד2 הם בני דודים. בן_דוד( _בן_דוד1, _בן_דוד2):- הורה(_הורה1,_בן_דוד1), הורה(_הורה2,_בן_דוד2), אח_או_אחות(_הורה1,_הורה2), _בן_דוד1 \= _בן_דוד2.