בנושא לוגיקה פרופוזיציונית, ראינו כיצד לייצג הצהרות באמצעות לוגיקה פרופוזיציונית. אבל למרבה הצער, בלוגיקה פרופוזיציונית, אנחנו יכולים לייצג רק את העובדות, שהן נכונות או שגויות. PL אינו מספיק כדי לייצג את המשפטים המורכבים או הצהרות השפה הטבעית. להיגיון ההצעה יש כוח ביטוי מוגבל מאוד. שקול את המשפט הבא, שאיננו יכולים לייצג באמצעות לוגיקה PL.
מדריך לשפת תכנות ג'אווה
כדי לייצג את ההצהרות לעיל, לוגיקה PL אינה מספיקה, ולכן דרשנו לוגיקה חזקה יותר, כגון לוגיקה מסדר ראשון.
הגיון מסדר ראשון:
- לוגיקה מסדר ראשון היא דרך נוספת לייצוג ידע בבינה מלאכותית. זוהי הרחבה ללוגיקה פרופוזיציונית.
- FOL מספיק אקספרסיבי כדי לייצג את הצהרות השפה הטבעית בצורה תמציתית.
- לוגיקה מסדר ראשון ידועה גם בשם לוגיקה פרדיקט או לוגיקה פרדיקט מסדר ראשון . לוגיקה מסדר ראשון היא שפה רבת עוצמה המפתחת מידע על האובייקטים בצורה קלה יותר ויכולה לבטא גם את היחסים בין אותם אובייקטים.
- לוגיקה מסדר ראשון (כמו שפה טבעית) לא רק מניחה שהעולם מכיל עובדות כמו היגיון פרופוזיציוני, אלא גם מניחה את הדברים הבאים בעולם:
חפצים: A, B, אנשים, מספרים, צבעים, מלחמות, תיאוריות, ריבועים, בורות, וומפוס, ......
תחביר של לוגיקה מסדר ראשון:
התחביר של FOL קובע איזה אוסף של סמלים הוא ביטוי לוגי בלוגיקה מסדר ראשון. האלמנטים התחביריים הבסיסיים של לוגיקה מסדר ראשון הם סמלים. אנו כותבים הצהרות בסימון קצר ב-FOL.
אלמנטים בסיסיים של לוגיקה מסדר ראשון:
להלן המרכיבים הבסיסיים של תחביר FOL:
קָבוּעַ | 1, 2, A, ג'ון, מומבאי, חתול,.... |
משתנים | x, y, z, a, b,.... |
פרדיקטים | אח, אבא, >,.... |
פוּנקצִיָה | sqrt, LeftLegOf, .... |
חיבורים | ∧, ∨, ¬, ⇒, ⇔ |
שוויון | == |
מכמת | ∀, ∃ |
משפטים אטומיים:
- משפטים אטומיים הם המשפטים הבסיסיים ביותר של לוגיקה מסדר ראשון. משפטים אלו נוצרים מסמל פרדיקט ואחריו סוגריים עם רצף של מונחים.
- אנחנו יכולים לייצג משפטים אטומיים בתור ביטוי (מונח1, מונח2, ......, מונח n) .
דוגמה: Ravi ו-Ajay הם אחים: => Brothers(Ravi, Ajay).
צ'ינקי הוא חתול: => חתול (צ'ינקי) .
משפטים מורכבים:
- משפטים מורכבים נעשים על ידי שילוב משפטים אטומיים באמצעות חיבורים.
ניתן לחלק הצהרות לוגיות מסדר ראשון לשני חלקים:
שקול את ההצהרה: 'x הוא מספר שלם'. , הוא מורכב משני חלקים, החלק הראשון x הוא נושא ההצהרה והחלק השני 'הוא מספר שלם', ידוע בתור פרדיקט.
מכמתים בלוגיקה מסדר ראשון:
- מכמת הוא אלמנט שפה שיוצר כימות, וכימות מפרט את כמות הדגימה ביקום השיח.
- אלו הם הסמלים המאפשרים לקבוע או לזהות את הטווח וההיקף של המשתנה בביטוי הלוגי. ישנם שני סוגים של מכמתים:
מכמת אוניברסלי, (לכולם, לכולם, הכל)
מכמת אוניברסלי:
מכמת אוניברסלי הוא סמל לייצוג לוגי, המציין שהמשפט בטווח שלו נכון לכל דבר או לכל מופע של דבר מסוים.
הכמת האוניברסלי מיוצג על ידי סמל ∀, הדומה ל-A הפוך.
הערה: בכימות אוניברסלי אנו משתמשים בהשלכה '→'.
אם x הוא משתנה, אז ∀x נקרא כך:
java הוסף למערך
דוגמא:
כל אדם שותה קפה.
תן למשתנה x שמתייחס לחתול כדי שכל x יוכלו להיות מיוצגים ב-UOD כמו להלן:
∀x man(x) → לשתות (x, קפה).
זה ייקרא כך: יש את כל x כאשר x הוא גבר ששותה קפה.
מכמת קיומי:
מכמים קיומיים הם סוג של מכמתים, המבטאים שהמשפט שבתחומו נכון עבור מופע אחד לפחות של משהו.
הוא מסומן על ידי האופרטור הלוגי ∃, הדומה ל-E הפוך. כאשר הוא משמש עם משתנה פרדיקט אז הוא נקרא ככמת קיומי.
הערה: ב-Quantifier קיומי אנו תמיד משתמשים ב-AND או בסמל צירוף (∧).
אם x הוא משתנה, אזי הכמת הקיומי יהיה ∃x או ∃(x). וזה ייקרא כך:
דוגמא:
יש בנים שהם אינטליגנטים.
∃x: בנים(x) ∧ אינטליגנט(x)
json ב-json לדוגמה
זה ייקרא כך: יש כמה x שבהם x הוא ילד אינטליגנטי.
נקודות לזכור:
- המחבר העיקרי עבור מכמת אוניברסלי ∀ הוא השלכה → .
- החיבור העיקרי לכימות קיומי ∃ זה ו ∧ .
מאפיינים של מכמתים:
- בכימת אוניברסלי, ∀x∀y דומה ל∀y∀x.
- ב-Quantifier קיומי, ∃x∃y דומה ל-∃y∃x.
- ∃x∀y אינו דומה ל∀y∃x.
כמה דוגמאות ל-FOL באמצעות מכמת:
1. כל הציפורים עפות.
בשאלה זו הפרדיקט הוא ' לעוף (ציפור) .'
ומכיוון שיש את כל הציפורים שעפות אז זה יוצג כדלקמן.
∀x ציפור(x) →זבוב(x) .
2. כל אדם מכבד את ההורה שלו.
בשאלה זו, הפרדיקט הוא ' respect(x, y),' כאשר x=אדם, ו-y=הורה .
מכיוון שיש כל אדם כך ישתמש ב- ∀, והוא יוצג באופן הבא:
∀x man(x) → מכבד (x, הורה) .
פקודת החזרה של java
3. יש בנים שמשחקים קריקט.
בשאלה זו, הפרדיקט הוא ' play(x, y) ,' שבו x= בנים, ו-y= משחק. מכיוון שיש כמה בנים אז נשתמש ∃, והוא יוצג כ :
∃x בנים(x) → משחק(x, קריקט) .
4. לא כל התלמידים אוהבים גם מתמטיקה וגם מדעים.
בשאלה זו, הפרדיקט הוא ' like(x, y),' כאשר x= תלמיד, ו-y= נושא .
מכיוון שלא כל התלמידים, אז נשתמש ∀ עם שלילה, אז הייצוג הבא לכך:
¬∀ (x) [ student(x) → like(x, Mathematics) ∧ like(x, Science)].
5. רק תלמיד אחד נכשל במתמטיקה.
בשאלה זו, הפרדיקט הוא ' נכשל(x, y),' כאשר x=תלמיד ו-y=נושא .
מכיוון שיש רק תלמיד אחד שנכשל במתמטיקה, אז נשתמש בייצוג הבא לשם כך:
∃(x) [ תלמיד(x) → נכשל (x, מתמטיקה) ∧∀ (y) [¬(x==y) ∧ תלמיד(y) → ¬כשל (x, מתמטיקה)] .
משתנים חופשיים ומחויבים:
המכמים מקיימים אינטראקציה עם משתנים המופיעים בצורה מתאימה. ישנם שני סוגים של משתנים בלוגיקה מסדר ראשון המובאים להלן:
משתנה חינם: אומרים שמשתנה הוא משתנה חופשי בנוסחה אם הוא מתרחש מחוץ לתחום המכמת.
דוגמה: ∀x ∃(y)[P (x, y, z)], כאשר z הוא משתנה חופשי.
משתנה מאוגד: אומרים שמשתנה הוא משתנה כבול בנוסחה אם הוא מופיע בטווח של הכמת.
דוגמה: ∀x [A (x) B( y)], כאן x ו-y הם המשתנים המחוברים.