- מאפייני תכנות לוגיות
- אמת וניקיון הגיוני
- היגיון מסדר ראשון
- טופס סעיף
- בינה מלאכותית
- דוגמאות לתכנות לוגיות
- דוגמא 1
- דוגמא 2
- שאילתא
- פניות אחרות
- הפניות
תכנות ההיגיון הוא פרדיגמת תכנות שמשתמשת מעגלים לוגיים ולא רק פונקציות מתמטיות כדי לשלוט בעובדות נקבעו כללים.
במקום זרימת שליטה מובנית בקפידה המכתיבה מתי לבצע וכיצד להעריך שיחות פונקציה או הוראות אחרות, הכללים הלוגיים של התוכנית נכתבים כסעיפים או כקודמים לוגיים.
דוגמאות לתכנות לוגיות בפרולוג. מקור: מאת Kuldeepsheoran1 - צילום מסך, CC BY-SA 3.0, פקודות וויקימדיה
גישה זו, המשמשת לעתים קרובות בתכנות גנטית ואבולוציונית, בדרך כלל אומרת למודל איזו מטרה להשיג, ולא כיצד להשיג אותה.
כל כלל מכיל כותרת וגוף עם היגיון רשמי ולא פונקציה מתמטית ניתנת להפעלה. לדוגמה, "וזה נכון (כותרת): אם C1, C2 ו- C3 הם נכונים (body)." העובדות והתוצאות מבוטאות ללא גוף, כמו "וזה נכון".
עם זאת, עם כמה שפות תכנות כמו פרולוג, ניתן לכלול גם תכנות חיונית כדי לספר למודל כיצד לפתור בעיות מסוימות. לדוגמה, "כדי לפתור את Y, הוסף את C1, C2 ו- C3."
מאפייני תכנות לוגיות
תכנות לוגיקה שונה באופן מהותי משאר אסטרטגיות התכנות הקיימות. במקום לתת הוראות למחשב עם התוכנית, נוצרים קשרים בין אובייקטים. בדרך זו המחשב יכול לסבר קשרים אלו ובכך להגיע לפתרונות לוגיים.
בתוך תוכנית לוגית קיימות שתי קבוצות קוד עיקריות: עובדות וכללים. הכללים מיושמים על העובדות על מנת להשיג ידע על הסביבה.
אמת וניקיון הגיוני
ניתן לפענח תוכניות לוגיות באמצעות שני מושגים חשובים: אמת וניקוז לוגי. האמת עולה אם החישוב בתוכנית נכון או לא, תחת יישום סמלי התוכנית. ניכוי לוגי קובע אם סעיף לוגי הוא תוצאה של התוכנית.
הוראות אלה יתפרשו תמיד כמשפטים וסעיפים לוגיים, והתוצאה של ביצועה היא תוצאה הגיונית של החישובים שהיא מכילה.
היגיון מסדר ראשון
זה מעבר לוגיקה הצעתית. שקול אם אובייקטים הם אמת או שקרית מנקודת מבט עולמית חלקית, המכונה תחום. תכנות לוגיקה מבוססת על הכללה של היגיון מסדר ראשון.
היגיון זה מורכב מתחביר וסמנטיקה. תחביר הוא השפה הרשמית המשמשת לביטוי מושגים. מצד שני, הסמנטיקה של נוסחאות לוגיות מסדר ראשון מציינת כיצד לקבוע את הערך האמיתי של נוסחה כלשהי.
היגיון זה מבוסס על אלף-בית ושפה ממדרגה ראשונה, כמו גם על מערך של אקסיומות וכללי הסקה.
טופס סעיף
זוהי קבוצת משנה של לוגיקה מסדר ראשון. יש לה צורה מנורמלית בה אמירה מוגדרת על ידי קידומת או שרשרת אוניברסלית של כמויות אוניברסליות, וסט חופשי של כמתים בסעיף.
כאשר מבקשים שאילתה לתוכנית, ישקול גוף הסעיף שכותרתו עשויה להתייחד. זהה להחלת כלל הסקה בלוגיקה.
כצעד בהשלכה, נבחרים שני סעיפים שיש להם תכונה שאחד מכיל X מבדיל (מילולית חיובית) והשני מכיל צירוף ¬X (מילולי שלילי). פיצויים אלה ידועים כמשלימים.
משני הסעיפים הראשוניים הללו נבנה סעיף רזולוציוני חדש שמשתמש בכל המילוליות, פרט לאלה המשלימה.
בינה מלאכותית
תכנות לוגית היא מתודולוגיה שמשמשת כדי לגרום למחשבים להסיק, מכיוון שהיא מועילה לייצג ידע. ההיגיון משמש לייצוג הידע וההסיקות לטפל בו.
ההיגיון המשמש לייצוג ידע הוא טופס הסעיף. הוא משמש מכיוון שההיגיון מסדר ראשון מובן היטב ומסוגל לייצג את כל בעיות החישוב.
פרולוג היא שפת תכנות המבוססת על רעיונות של תכנות לוגית. הרעיון של פרולוג הוא לגרום לוגיקה להיראות כמו שפת תכנות.
דוגמאות לתכנות לוגיות
דוגמא 1
- עובדה: רובי הוא חתול.
- כלל: לכל החתולים יש שיניים.
- התייעצות: האם לרובי יש שיניים?
- מסקנה: כן.
ניתן להחיל על רובי את הכלל "לכל החתולים יש שיניים", מכיוון שיש עובדה שאומרת "רובי הוא חתול." דוגמה זו לא נכתבת עם שום תחביר לשפת תכנות אמיתית.
דוגמא 2
ניתן לראות דוגמא זו שנכתבה בפרולוג, מכיוון שהיא אחת משפות התכנות הפופולריות ביותר בלוגיקה:
- נשי (אליסה).
- גברי (בובי).
- גברי (קרלוס).
- נשי (דוריס).
- son_of (דוריס, קרלוס).
- son_of (קרלוס, בובי).
- בן_וף (דוריס, אליסה).
- Father_of (F, P): - זכר (F), son_of (P, F).
תוכנית זו הופכת לקשה לקריאה, מכיוון שפרולוג שונה באופן שונה משפות אחרות. כל רכיב קוד שדומה "נשי (אליסה)." זו עובדה.
כלל אחד הוא "אבי_ (F, P): - זכר (F), ילד_ של (P, F)". ניתן לקרוא את הסמל ": -" כ- "נכון אם". פירוש של אותיות גדולות ניתן להחיל משתנים על כל אובייקט, כך ש- F יכול לעמוד על קרלוס, דוריס, אליסה או בובי. ניתן לתרגם את הקוד הזה כ:
- אליסה היא אישה.
- בובי הוא גבר.
- קרלוס הוא גבר.
דוריס היא אישה.
דוריס היא בתו של קרלוס.
- קרלוס הוא בנו של בובי.
דוריס היא בתה של אליסה.
- «F הוא אביו של P» נכון אם F הוא גבר ואם P הוא בנו של פ.
שאילתא
נניח שאתה רוצה להתייעץ עם התוכנית למידע נוסף. אתה יכול לחפש בבקשה למצוא מי אבי בובי נמצא עם :? - אבא_ של (בובי, X). המערכת תציין את התשובה הבאה: X = קרלוס.
במקרה זה, עוברים מערכת יחסים שאחד מערכיה הוא משתנה. מה שפרולוג עשתה היה ליישם חפצים שונים על מערכת יחסים זו עד שאחד מהם היה מוצק מבחינה לוגית.
אביו היחיד של קרלוס הוא בובי, ובובי הוא זכר. זה סיפק את הכלל "אבא_ של (F, P): - גברי (F), son_of (P, F)." כאשר X שווה ל"קרלוס ", ההיגיון הוא קול.
פניות אחרות
ניתן לבצע שאילתות כלליות נוספות לפרולוג, שגורמות למערכת לייצר תוצאות מרובות:
-? - הורה_ של (הורה, ילד).
- אבא = בובי
ילד = קרלוס
- אבא = קרלוס
- ילד = דוריס
כפי שנראה, תכנות לוגיות אינן מחייבות לקבל את המידע כי אליסה או בובי הם אנשים על מנת להשיג ידע אודותיהם. למעשה, אין הכרח לציין שיש מושג שנקרא אדם.
ברוב שפות התכנות הלא-הגיוניות, עליך להגדיר מושגים אלה תחילה לפני שתוכל לכתוב תוכניות המעבדות מידע על אנשים.
הפניות
- Deep AI (2020). תכנות לוגיקה. נלקח מ: deepai.org.
- Wikiversity (2020). תיאוריה של שפות תכנות / תכנות לוגית. נלקח מ: en.wikiversity.org.
- אימפריאל קולג 'לונדון (2006). תכנות לוגיקה. נלקח מ: doc.ic.ac.uk.
- ג'יה-הואאי אתה (2020). מבוא לתכנות לוגיקה. אוניברסיטת אלברטה. נלקח מ: eng.ucy.ac.cy.
- C2 Wiki (2020). תכנות לוגיקה. נלקח מ: wiki.c2.com.