🌌 פרק 6.1 • יסודות הלוגיקה בבינה מלאכותית

סוכנים מבוססי ידע, תחשיב הפסוקים ונביעה לוגית

כיצד סוכן אוטונומי בונה מודל פנימי של העולם, מתעדכן בתחושות חושיות (TELL), גוזר עובדות נסתרות (ASK), ומקבל החלטות מוכחות מתמטית בסביבות מוסתרות חלקית כגון עולם הוומפוס.

👋

ברוכים הבאים לעולם הלוגיקה

שלום חברים! בפרקים הקודמים חיפשנו פתרונות באמצעות אלגוריתמים כמו $A^*$ ו-CSP. אבל מה קורה כשהסוכן אינו יודע את כל מצב העולם מראש? בסביבה מוסתרת חלקית (Partially Observable), סוכן רפלקס פשוט או עץ החלטות קשיח יקרוס מיד. כאן נכנסת לתמונה הבינה המבוססת על ידע (Knowledge-Based Intelligence): הסוכן שומר בסיס ידע ($KB$) של טענות פורמליות, ומפעיל היסק לוגי (Inference) כדי לחשוף מה נכון בוודאות מבלי לנחש. בפרק זה נתחיל בתחשיב הפסוקים הפשוט והאלגנטי ונבין את המושג החשוב ביותר: נביעה לוגית ($KB \models \alpha$). בואו נצלול!

1. ארכיטקטורת סוכן מבוסס ידע (Knowledge-Based Agents)

הרכיב המרכזי בארכיטקטורה של סוכן לוגי הוא בסיס הידע (Knowledge Base - KB). ה-$KB$ הוא אוסף פסוקים (sentences) בשפה לוגית פורמלית, כאשר כל פסוק מייצג טענה כלשהי לגבי מצב העולם.

📥 פעולת TELL (הזנת ידע)

הסוכן מקבל תפיסה חושית (Percept) או לומד חוק טבע חדש, ומזין אותו ישירות לבסיס הידע: $\text{TELL}(KB, \text{sentence})$. בסיס הידע מתרחב ומתעדכן.

📤 פעולת ASK (שאילתת היסק)

לפני שהסוכן בוחר פעולה, הוא שואל את ה-$KB$: $\text{ASK}(KB, \alpha)$. מנוע ההיסק בודק האם השאילתה $\alpha$ (למשל: "האם המשבצת הבאה בטוחה?") נובעת בהכרח ממה שכבר נאמר לו קודם לכן.

🏹 סביבת הבנצ'מרק: "עולם הוומפוס" (The Wumpus World)

עולם הוומפוס הוא מערה המחולקת לרשת $4 \times 4$. הסוכן מתחיל תמיד במשבצת $[1,1]$ במטרה למצוא זהב ולצאת חי. במערה מסתתרת מפלצת הוומפוס ובורות עמוקים (Pits). הסוכן אינו רואה מעבר למשבצת שבה הוא עומד, אך מצויד בחיישנים עקיפים:

  • רוח (Breeze): מורגשת בכל משבצת הסמוכה ישירות (מעלה, מטה, ימין, שמאל) לבור.
  • סירחון (Stench): מורגש בכל משבצת הסמוכה ישירות לוומפוס.
  • נצנוץ (Glitter): נראה אך ורק במשבצת שבה מונח הזהב עצמו.

2. תחשיב הפסוקים: תחביר, סמנטיקה ומודלים

א. התחביר (Syntax)

מגדיר את המבנה הפורמלי של הפסוקים החוקיים בשפה:

  • פסוק אטומי (Atomic Sentence): סימבול לוגי בודד המייצג עובדה, כגון $P, Q, W_{1,3}, B_{2,1}$.
  • ליטרל (Literal): פסוק אטומי חיובי ($P$) או שלילה שלו ($\neg P$).
  • פסוק מורכב (Complex Sentence): נבנה באמצעות סוגריים ו-5 הקשרים הלוגיים המרכזיים.

ב. הסמנטיקה והמודלים (Semantics & Models)

הסמנטיקה מגדירה את ערך האמת של כל פסוק ביחס לעולם:

  • מודל (Model $m$): עולם מובנה פורמלית המהווה השמה של ערכי אמת ושקר (True/False) לכל אחד מהסימבולים.
  • מרחב המודלים: עבור $n$ סימבולים אטומיים בלתי תלויים, קיימים בדיוק $2^n$ מודלים אפשריים.
  • קבוצת המודלים $M(\alpha)$: קבוצת כל העולמות שבהם הפסוק $\alpha$ מקבל ערך אמת (מסופק).

טבלת האמת של חמשת הקשרים הלוגיים:

P Q ¬P P ∧ Q P ∨ Q P ⇒ Q P ⇔ Q
F F T F F T T
F T T F T T F
T F F F T F F
T T F T T T T

שימו לב להדגשה: גרירה ($P \Rightarrow Q$) היא שקרית אך ורק במקרה שבו התנאי $P$ אמיתי והתוצאה $Q$ שקרית! בכל שאר המקרים (כולל כאשר $P$ שקרי), הגרירה אמיתית בהגדרה.

3. נביעה לוגית (Entailment): לב ליבה של ההסקה

הגדרה מתמטית של נביעה לוגית: KB ⊨ α ⟺ M(KB) ⊆ M(α)

המשמעות: בסיס הידע $KB$ גורר לוגית את הפסוק $\alpha$ אם ורק אם בכל מודל שבו $KB$ כולו אמיתי, גם $\alpha$ אמיתי בהכרח. אם נצייר את מרחב המודלים כדיאגרמת ון, עיגול העולמות המספקים את ה-$KB$ מוכל לחלוטין בתוך עיגול העולמות המספקים את $\alpha$.

🛡️ נאותות (Soundness)

אלגוריתם היסק נקרא נאות אם הוא גוזר אך ורק פסוקים שנובעים באמת מבסיס הידע: אם $\text{Infers}(KB, \alpha)$ אזי $KB \models \alpha$. אלגוריתם נאות לעולם אינו מייצר שקרים מתוך אמת!

🎯 שלמות (Completeness)

אלגוריתם היסק נקרא שלם אם הוא מסוגל למצוא הוכחה לכל פסוק שנובע לוגית מבסיס הידע: אם $KB \models \alpha$, האלגוריתם מובטח להחזיר תשובה חיובית.

משפט הדדוקציה (Deduction Theorem):
KB ⊨ α ⟺ (KB ⇒ α) is Valid

נביעה לוגית שקולה לכך שמשפט הגרירה הוא טאוטולוגיה (Valid) – אמיתי בכל עולם אפשרי ביקום.

הוכחה על דרך השלילה (Refutation):
KB ⊨ α ⟺ (KB ∧ ¬α) is Unsatisfiable

כדי להוכיח ש-$\alpha$ נובע, נוסיף את שלילתו $\neg\alpha$ ל-$KB$ ונראה שקבוצת המודלים המשותפת היא ריקה (סתירה מוחלטת). זהו עקרון היסוד של רזולוציה!

4. חוקי השקילות הלוגית המרכזיים

שני פסוקים $\alpha$ ו-$\beta$ הם שקילים לוגית ($\alpha \equiv \beta$) אם ורק אם הם מקבלים בדיוק את אותו ערך אמת בכל המודלים ($M(\alpha) = M(\beta)$). חוקים אלו הם ארגז הכלים לאלגברה לוגית ולהמרת פסוקים לצורת CNF:

חילופיות (Commutativity) α ∧ β ≡ β ∧ α , α ∨ β ≡ β ∨ α
קיבוציות (Associativity) (α ∧ β) ∧ γ ≡ α ∧ (β ∧ γ)
שלילה כפולה (Double Negation) ¬(¬α) ≡ α
קונטראפוזיציה (Contraposition) α ⇒ β ≡ ¬β ⇒ ¬α
סילוק גרירה (Implication Elimination) α ⇒ β ≡ ¬α ∨ β
סילוק דו-גרירה (Biconditional) α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
חוקי דה-מורגן (De Morgan) ¬(α ∧ β) ≡ ¬α ∨ ¬β , ¬(α ∨ β) ≡ ¬α ∧ ¬β
חוק הפילוג (Distributivity) α ∧ (β ∨ γ) ≡ (α ∧ β) ∨ (α ∧ γ) , α ∨ (β ∧ γ) ≡ (α ∨ β) ∧ (α ∨ γ)

5. סימולציה אינטראקטיבית 6.1: מעבדת מרחב המודלים ועולם הוומפוס

⚡ פרק 6.2 • שיטות היסק וכללי גזירה

אלגוריתם הרזולוציה, המרה ל-CNF ושרשור בפסוקיות הורן

ממעבר על כל שורות טבלת האמת ועד לגזירה ישירה: הוכחה בשלילה באמצעות רזולוציה, וכיצד הגבלת הידע לפסוקיות הורן מאפשרת היסק מובטח בזמן ריצה לינארי.

👨‍🏫

לקפוץ מעל מחסום הסיבוכיות

בדיקת טבלאות אמת היא תהליך נאיבי שדורש $2^n$ שורות. בעולם האמיתי עם 100 משתנים, $2^{100}$ הוא מספר הגדול ממספר האטומים ביקום! לכן חוקרי AI פיתחו שתי דרכים מבריקות לעקוף את המחסום: אלגוריתם הרזולוציה שמבטל ליטרלים משלימים ומחפש סתירה ישירה, ופסוקיות הורן שמאפשרות שרשור קדימה ואחורה בזמן לינארי לחלוטין ($O(n)$). בואו נלמד כיצד להמיר כל נוסחה ל-CNF ואיך להפעיל את האלגוריתמים הללו שלב אחר שלב.

1. אלגוריתם הרזולוציה בתחשיב הפסוקים (PL-Resolution)

רזולוציה היא כלל היסק חזק ושלם (Refutation Complete). הכלל פועל על ידי מציאת זוג ליטרלים משלימים (Complementary Literals) בין שתי פסוקיות דיסיונקטיביות, קיזוזם ההדדי, ומיזוג שאר הליטרלים לפסוקית חדשה המכונה Resolvent:

חוק הרזולוציה הפורמלי:
\[\frac{l_1 \vee \dots \vee l_i \vee \dots \vee l_k, \quad m_1 \vee \dots \vee m_j \vee \dots \vee m_n}{(l_1 \vee \dots \vee l_{i-1} \vee l_{i+1} \vee \dots \vee l_k \vee m_1 \vee \dots \vee m_{j-1} \vee m_{j+1} \vee \dots \vee m_n)}\]

כאשר מתקיים $l_i \equiv \neg m_j$ (לדוגמה $P$ ו-$\neg P$). במקרה הפשוט של שני ליטרלים: \[\frac{A \vee B, \quad \neg A \vee C}{B \vee C} \quad \Longleftrightarrow \quad \frac{\neg A \Rightarrow B, \quad B \Rightarrow C}{\neg A \Rightarrow C}\]

🎯 הוכחה על דרך השלילה (Proof by Contradiction / Refutation)

כדי להוכיח שהשאילתה $\alpha$ נובעת מ-$KB$ ($KB \models \alpha$), אנו מזינים לאלגוריתם הרזולוציה את הקבוצה המורחבת $KB \wedge \neg\alpha$. האלגוריתם מבצע קיזוזים חוזרים ונשנים:

  • אם נוצרת הפסוקית הריקה ($\square$ / Empty Clause): נחשפה סתירה לוגית בלתי ניתנת ליישוב! המסקנה היא שההנחה $\neg\alpha$ בלתי אפשרית, ולכן $\alpha$ נובעת בהכרח ($KB \models \alpha$).
  • אם לא נוצרות פסוקיות חדשות והפסוקית הריקה לא הושגה: אין נביעה ($KB \not\models \alpha$).

2. ארבעת שלבי ההמרה לצורה נורמלית קוניונקטיבית (CNF Conversion)

אלגוריתם הרזולוציה דורש שכל הפסוקים יוזנו בצורת CNF (Conjunctive Normal Form): קוניונקציה ("וגם") של פסוקיות (Clauses), כאשר כל פסוקית היא דיסיונקציה ("או") של ליטרלים בלבד. להלן 4 שלבי ההמרה כפי שנלמדו בכיתה עבור הפסוק של משבצת הוומפוס $B_{1,1} \Leftrightarrow (P_{1,2} \vee P_{2,1})$:

שלב 1: סילוק דו-גרירה ($\Leftrightarrow$) α ⇔ β
(B₁‚₁ ⇒ (P₁‚₂ ∨ P₂‚₁)) ∧ ((P₁‚₂ ∨ P₂‚₁) ⇒ B₁‚₁)

החלפת $\alpha \Leftrightarrow \beta$ ב-$(\alpha \Rightarrow \beta) \wedge (\beta \Rightarrow \alpha)$.

שלב 2: סילוק גרירה ($\Rightarrow$) α ⇒ β
(¬B₁‚₁ ∨ P₁‚₂ ∨ P₂‚₁) ∧ (¬(P₁‚₂ ∨ P₂‚₁) ∨ B₁‚₁)

החלפת $\alpha \Rightarrow \beta$ ב-$\neg\alpha \vee \beta$.

שלב 3: הכנסת שלילה פנימה (דה-מורגן) ¬(α ∨ β)
(¬B₁‚₁ ∨ P₁‚₂ ∨ P₂‚₁) ∧ ((¬P₁‚₂ ∧ ¬P₂‚₁) ∨ B₁‚₁)

החלפת $\neg(P_{1,2} \vee P_{2,1})$ ב-$(\neg P_{1,2} \wedge \neg P_{2,1})$ וביטול שלילה כפולה.

שלב 4: חוק הפילוג ושיטוח (Distributivity) ∨ over ∧
(¬B₁‚₁ ∨ P₁‚₂ ∨ P₂‚₁) ∧ (¬P₁‚₂ ∨ B₁‚₁) ∧ (¬P₂‚₁ ∨ B₁‚₁)

הפעלת פילוג מעל הדיסיונקציה: קיבלנו 3 פסוקיות CNF עצמאיות ומוכנות להזנה לרזולוציה!

3. חמש אסטרטגיות רזולוציה מתקדמות (Advanced Resolution Strategies)

אסטרטגיות רזולוציה מתקדמות & שאלות מבחן

הפעלת רזולוציה נאיבית מובילה לפיצוץ קומבינטורי של פסוקיות חדשות. כדי לנווט ביעילות במרחב החיפוש ולהגיע לפסוקית הריקה ($\square$) במינימום צעדים, פותחו 5 אסטרטגיות בקרה מובנות בעלות תכונות מתמטיות קריטיות:

🌊 1. חיפוש לרוחב / רוויה לפי רמות (Level Saturation) שלם (Complete)

מתחילים מקבוצת הפסוקיות ההתחלתית $S_0$. בכל שלב גוזרים את כל הרזולבנטות האפשריות מכל זוגות הפסוקיות ברמה הנוכחית ומצרפים אותן ל-$S_1, S_2, \dots$ לפני מעבר לרמה הבאה.

יתרון וחיסרון: • שלמות מובטחת: תמיד ימצא את ההוכחה הקצרה ביותר (מינימום עומק).
• פיצוץ קומבינטורי: מספר הפסוקיות גדל מעריכית עם העומק, וגורם לצריכת זיכרון וזמן עצומים.
🧹 2. הסרת ליטרלים טהורים (Pure Literal Elimination) Preprocessing

ליטרל נקרא טהור (Pure) אם הוא מופיע באותו מופע בלבד (רק חיובי, או רק שלילי) בכל הפסוקיות ב-$KB$, ואין לו ליטרל משלים נגדי באף פסוקית.

📌 משפט המפתח: אי-נכונות חיסור ליטרלים: ליטרל טהור אינו יכול להיווצר כתוצאה מצעד רזולוציה! רזולוציה רק מבטלת ליטרלים משלימים ומעתיקה ליטרלים קיימים. לכן, בדיקת ליטרלים טהורים מבוצעת פעם אחת בלבד בתחילת האלגוריתם. כל פסוקית שמכילה ליטרל טהור ניתנת לסיפוק מיידי (השמת ערך אמת המאפס אותה) ומוסרת מהמאגר!
🚫 3. הסרת טאוטולוגיות (Tautology Elimination) צמצום מרחב

פסוקית המכילה ליטרל ואת שלילתו בעת ובעונה אחת ($P \vee \neg P \vee \dots$) היא טאוטולוגיה, שכן ערך האמת שלה הוא תמיד $True$ בכל מודל אפשרי.

ההצדקה המתמטית: טאוטולוגיה אינה מטילה שום אילוץ על העולם ואינה יכולה לתרום ליצירת סתירה ($\square$). הסרתה המיידית מקבוצת הפסוקיות מונעת גזירות סרק ומצמצמת דרמטית את מספר הזוגות המועמדים לרזולוציה.
🎯 4. רזולוציית יחידה (Unit Resolution) שלם עבור הורן!

בכל צעד רזולוציה, לפחות אחת משתי הפסוקיות הנבחרות חייבת להיות פסוקית יחידה (Unit Clause) – כלומר פסוקית המורכבת מליטרל בודד (אורך 1).

📌 משפט השלמות של רזולוציית יחידה: • באופן כללי: אינה שלמה (Incomplete) עבור פסוקיות CNF כלליות (למשל, עבור $\{P \vee Q, \neg P \vee Q, P \vee \neg Q, \neg P \vee \neg Q\}$ אין אף פסוקית יחידה ולכן האלגוריתם ייתקע מיד).
• עבור פסוקיות הורן (Horn Clauses): רזולוציית יחידה שלמה תמיד ומוצאת סתירה בזמן פולינומיאלי/לינארי!
🛡️ 5. אסטרטגיית קבוצת התמיכה (Set of Support - SOS) האסטרטגיה המנצחת במבחנים

מחלקים את קבוצת הפסוקיות לשתי קבוצות זרות: קבוצת האקסיומות וההנחות ($A$) המייצגת את עובדות העולם, וקבוצת התמיכה ($B$) המתחילה משלילת השאילתה אותה אנו מבקשים להוכיח ($\neg Q$).

כלל הפעולה של SOS: בכל צעד רזולוציה, לפחות אחת משתי הפסוקיות המשתתפות חייבת להילקח מקבוצת התמיכה ($B$)! הרזולבנטה החדשה שנוצרת מתווספת מיד לקבוצת התמיכה $B$. חל איסור מוחלט לבצע רזולוציה בין שתי פסוקיות מ-$A$ בלבד.
משפט השלמות של SOS: אסטרטגיית SOS היא שלמה (Refutation Complete) אם ורק אם קבוצת האקסיומות $A$ בפני עצמה היא ספיקה (Satisfiable / עקבית). מכיוון שבסיסי ידע אמורפיים בעולם האמיתי אינם מכילים סתירה פנימית בפני עצמם, שלמות ה-SOS מובטחת במלואה!

4. פסוקיות הורן (Horn Clauses) והיסק בזמן לינארי

כאשר בסיס הידע מכיל פסוקים כלליים, הרזולוציה עלולה לקחת זמן אקספוננציאלי. אולם, מרבית הידע האנושי והמערכות המומחיות מנוסח ככללי תנאי ותוצאה (If-Then). מבנה מיוחד זה נקרא פסוקיות הורן:

פסוקית הגדרתית (Definite Clause):
¬A ∨ ¬B ∨ C ≡ (A ∧ B) ⇒ C

פסוקית CNF המכילה בדיוק ליטרל חיובי אחד (המכונה ה"ראש" או המסקנה), ושאר הליטרלים שליליים (ה"גוף" או ההנחות).

פסוקית הורן (Horn Clause):
¬A ∨ ¬B ≡ (A ∧ B) ⇒ False

פסוקית CNF המכילה לכל היותר ליטרל חיובי אחד (מאפשרת גם 0 ליטרלים חיוביים, המייצגים אילוץ שלילה או סתירה).

השוואה מעמיקה: שרשור קדימה (FC) מול שרשור לאחור (BC)

מאפיין השוואה שרשור קדימה (Forward Chaining - FC) שרשור לאחור (Backward Chaining - BC)
מוטיבציה מרכזית מונחה-נתונים (Data-driven) מונחה-מטרה (Goal-driven)
נקודת ההתחלה מתחיל מן העובדות הידועות ב-$KB$ וממשיך הלאה. מתחיל מהשאילתה המבוקשת $q$ ומחפש מאיפה להוכיח.
סיבוכיות זמן ריצה O(n) - לינארי ביחס לגודל ה-KB הרבה פחות מ-O(n) - רק ענפים רלוונטיים
מנגנון מניעת חישוב מיותר מערך מונים count[c] שמנוכה ב-1 לכל עובדה. סורק אך ורק כללים שבראשם מופיעה מטרת המשנה.
הקבלה קוגניטיבית עיבוד תחושתי לא-מודע (זיהוי קול, ראייה ממוחשבת). פתרון בעיות מודע (תכנון מסלול, הוכחת משפט).

5. סימולציה אינטראקטיבית 6.2: מעבדת הרזולוציה ומפלי השרשור

⚔️ פרק 6.3 • פותרי בעיית הספיקות (SAT Solvers)

אלגוריתמים מתקדמים לבדיקת מודלים: DPLL מול WalkSAT

הכרעת ספיקות במרחבי ענק: כיצד אלגוריתם DPLL מנצל הפצת יחידה וסימבולים טהורים לחיפוש עץ שלם, וכיצד WalkSAT פורץ את גבולות המיליונים באמצעות חיפוש מקומי הוריסטי.

🥋

קרב הענקים של מדעי המחשב

בעיית הספיקות הבוליאנית (SAT Problem) היא הבעיה ה-NP-שלמה הראשונה שהוכחה בהיסטוריה (משפט קוק-לוין). ובכל זאת, מערכות תעשייתיות כמו אימות שבבי מעבדים באינטל ומערכות תכנון משימות בנאס"א פותרות פסוקים בעלי מיליוני משתנים מדי יום! כיצד זה ייתכן? בזכות שני אלגוריתמים גאוניים: DPLL – שמבצע חיפוש עץ שלם אך גוזם 99.9% ממנו בעזרת "הפצת יחידה", ו-WalkSAT – שמטפס על גבעת הפתרונות בעזרת מינימום סתירות ואקראיות מבוקרת. בואו נבין את הקרב ביניהם לעומק!

1. אלגוריתם DPLL: חיפוש עץ לעומק עם שלוש יוריסטיקות מנצחות

אלגוריתם DPLL (Davis-Putnam-Logemann-Loveland) מקבל כקלט פסוק בצורת CNF ומבצע חיפוש עץ רקורסיבי לעומק (DFS) עם נסיגה לאחור (Backtracking). הוא משפר את בדיקת טבלאות האמת באופן דרמטי באמצעות שלושה מנגנונים:

🛑 1. סיום מוקדם (Early Termination)

פסוקית היא אמיתית ברגע שלפחות ליטרל אחד בה נקבע כ-True. מנגד, הפסוק כולו נכשל מיד ברגע שפסוקית בודדת הפכה לשקרית לחלוטין. אין צורך להמשיך להציב בשאר המשתנים – נסוגים מיד לאחור (Backtrack)!

✨ 2. סימבול טהור (Pure Symbol)

סימבול נקרא "טהור" אם הוא מופיע באותו סימן בדיוק (רק חיובי $P$ או רק שלילה $\neg P$) בכל הפסוקיות שטרם סופקו. קובעים לו מיד ערך שמספק אותו. זוהי השמה בטוחה שאינה דורשת פיצול ענפים!

🎯 3. פסוקית יחידה (Unit Clause)

פסוקית שבה כל הליטרלים למעט אחד כבר הוצבו כ-False. כדי למנוע את הכשלת המערכת, חובה דטרמיניסטית להציב לליטרל הנותר True. פעולה זו גוררת שרשרת השמות כפויה המכונה Unit Propagation.

Pseudo-code: DPLL Algorithm
function DPLL-SATISFIABLE?(s) returns true or false
  clauses ← set of clauses in CNF representation of s
  symbols ← list of proposition symbols in s
  return DPLL(clauses, symbols, {})

function DPLL(clauses, symbols, model) returns true or false
  if every clause in clauses is true in model then return true
  if some clause in clauses is false in model then return false
  
  P, val ← FIND-PURE-SYMBOL(symbols, clauses, model)
  if P is non-null then return DPLL(clauses, symbols - P, model ∪ {P: val})
  
  P, val ← FIND-UNIT-CLAUSE(clauses, model)
  if P is non-null then return DPLL(clauses, symbols - P, model ∪ {P: val})
  
  P ← FIRST(symbols); rest ← REST(symbols)
  return DPLL(clauses, rest, model ∪ {P: true}) or 
         DPLL(clauses, rest, model ∪ {P: false})

2. אלגוריתם WalkSAT: חיפוש מקומי הוריסטי מבוסס Min-Conflicts

בניגוד ל-DPLL שהוא אלגוריתם חיפוש מלא ושלם, WalkSAT הוא אלגוריתם חיפוש מקומי (בדומה לטיפוס גבעות ולהתקררות מדומה). הוא מתחיל מהשמה אקראית לחלוטין, ובכל צעד מנסה לשפר את המודל על ידי היפוך (Flip) ערכו של משתנה בודד.

🎲 מנגנון הבחירה ההסתברותי של WalkSAT (פרמטר p)

בכל איטרציה, האלגוריתם בוחר באקראי פסוקית אחת שאינה מסופקת במודל הנוכחי, ומחליט איזה משתנה מתוכה להפוך:

בהסתברות p (צעד אקראי - Random Walk):
בוחר משתנה באקראי מתוך הפסוקית הלא-מסופקת והופך את ערכו. מאפשר לברוח ממקסימום מקומי (Local Maxima)!
בהסתברות 1-p (צעד חמדני - Min-Conflicts):
בוחר להפוך את המשתנה שיביא למזעור מספר הפסוקיות השבורות בכלל המערכת.

3. טבלת השוואה ישירה: DPLL מול WalkSAT

מאפיין אלגוריתמי DPLL WalkSAT
אסטרטגיית חיפוש חיפוש עץ לעומק עם נסיגה (Backtracking Search) חיפוש מקומי הוריסטי (Local Search / Hill-Climbing)
תכונת השלמות (Completeness) שלם (Complete) – תמיד יכריע ספיקות או יוכיח חוסר ספיקות אינו שלם (Incomplete) – עלול להיכשל גם כשיש פתרון
תכונת הנאותות (Soundness) נאות (Sound) נאות (Sound) – אם מצא מודל, המודל חוקי בוודאות
צריכת זיכרון O(n) - לינארי בעומק העץ O(n + m) - שמירת ההשמה ומספר הפסוקיות
שימוש אופטימלי בתעשייה אימות חומרה (Verification) שבו חובה לדעת אם קיימת סתירה תכנון ושיבוץ בעיות ענק (Scheduling) הידועות כספיקות

4. סימולציה אינטראקטיבית 6.3: מעבדת DPLL ו-WalkSAT

🌐 פרק 6.4 • שפות ייצוג ידע עשירות

לוגיקה מסדר ראשון (First-Order Logic): אונטולוגיה וכמתים

מדוע תחשיב הפסוקים קורס מול מורכבות העולם האמיתי, כיצד אובייקטים, יחסים ופונקציות מרכיבים שפת ידע עוצמתית, ומדוע סדר הכמתים משנה את המציאות מקצה לקצה.

🔭

המעבר לפילוסופיה של אובייקטים

תארו לעצמכם שהייתם רוצים לומר: "כל הסטודנטים בקורס בינה מלאכותית הם אנשים חכמים". בתחשיב הפסוקים, הייתם צריכים לכתוב פסוק נפרד עבור כל סטודנט בכיתה: $S_1 \Rightarrow H_1$, $S_2 \Rightarrow H_2$ וכן הלאה למיליארדי אנשים! זהו חוסר כוח ביטוי (Expressive Power) משווע. לוגיקה מסדר ראשון (FOL) פותרת זאת על ידי חיקוי החשיבה האנושית: ישנם עצמים, ישנן תכונות ויחסים, וישנם כמתים ($\forall, \exists$) שמאפשרים לקבוע טענות גלובליות בשורה אחת. בואו נלמד כיצד להשתמש בהם בצורה מדויקת וללא טעויות נפוצות!

1. האונטולוגיה של לוגיקה מסדר ראשון (FOL)

בעוד שתחשיב הפסוקים מניח עולם שטוח המורכב מעובדות בוליאניות פשוטות, FOL מאמצת אונטולוגיה עשירה המורכבת משלושה יסודות מרכזיים:

🧱 אובייקטים (Objects / Constants)

ישויות פיזיות או מופשטות בעולם: $\text{KingJohn}, \text{Richard}, 2, \text{NUS}$. מיוצגים בתחביר על ידי שמות קבועים.

🔗 יחסים ופרדיקטים (Relations / Predicates)

תכונות של עצמים או קשרים ביניהם המחזירים אמת או שקר: $\text{Brother}(\text{John}, \text{Richard})$, $\text{King}(\text{John})$, $\text{OnHead}(\text{Crown}_1, \text{John})$.

⚙️ פונקציות (Functions)

מיפוי מאובייקט לאובייקט יחיד אחר בעולם (אינן מחזירות אמת/שקר!): $\text{LeftLegOf}(\text{John})$, $\text{Father}(\text{Richard})$, $\sqrt{9} \to 3$.

📐 מושג המודל ב-FOL: תחום ופונקציית פירוש (Interpretation)

מודל ב-FOL אינו עוד רשימה של ערכי True/False, אלא מבנה מתמטי תורת-קבוצתי:

  • התחום (Domain): קבוצת העצמים הממשיים הקיימים בעולם.
  • פונקציית הפירוש (Interpretation): קושרת כל קבוע לאובייקט ספציפי בתחום, כל פרדיקט לקבוצת $n$-יות של אובייקטים שעבורם היחס מתקיים, וכל פונקציה להתאמה בין איברי התחום.

2. כמתים (Quantifiers) ושתי מלכודות המבחן הקלאסיות

∀ כמת כולל (Universal Quantifier)

"לכל x"

מצהיר כי הטענה נכונה עבור כל אובייקט בתחום של המודל.

הכתיבה הנכונה: ∀x At(x, NUS) ⇒ Smart(x)
⚠️ מלכודת נפוצה: שימוש ב-∧ עם ∀
∀x At(x, NUS) ∧ Smart(x)

משמעות המשפט השגוי: "כל דבר ביקום נמצא ב-NUS וכל דבר ביקום חכם" (כולל סלעים, שולחנות וכוכבים!). לכן כמת כולל דורש תמיד גרירה ($\Rightarrow$).

∃ כמת קיומי (Existential Quantifier)

"קיים x"

מצהיר כי קיים לפחות אובייקט אחד בתחום המקיים את התנאי.

הכתיבה הנכונה: ∃x At(x, NUS) ∧ Smart(x)
⚠️ מלכודת נפוצה: שימוש ב-⇒ עם ∃
∃x At(x, NUS) ⇒ Smart(x)

משמעות המשפט השגוי: הפסוק יהפוך לאמת ריקה (Vacuously True) ברגע שקיים עצם כלשהו שאינו ב-NUS (כי גרירה עם שקר ברישא מחזירה אמת!). לכן כמת קיומי דורש תמיד וגם ($\wedge$).

3. סדר כמתים מקוננים ודואליות הכמתים (חוקי דה-מורגן)

סדר כמתים שונים משנה באופן קריטי!

∀x ∃y Loves(x, y)
"לכל אדם בעולם יש מישהו שהוא אוהב" (ה-y תלוי ב-x, קשרים מבוזרים).
∃y ∀x Loves(x, y)
"קיים אדם ספציפי אחד שכולם בעולם אוהבים אותו" (ה-y אבסולוטי לכולם!).

דואליות הכמתים (חוקי דה-מורגן לכמתים):

כל כמת ניתן לביטוי באמצעות שלילתו של הכמת האחר:

∀x P(x) ≡ ¬∃x ¬P(x)
∃x P(x) ≡ ¬∀x ¬P(x)
לומר "כולם אוהבים גלידה" שקול לחלוטין לומר "לא קיים אדם שאינו אוהב גלידה".

4. סימולציה אינטראקטיבית 6.4: מעבדת האונטולוגיה והכמתים

🧩 פרק 6.5 • הוכחת משפטים אוטומטית (Automated Theorem Proving)

היסק מתקדם ב-FOL: האחדה (MGU), סקולמיזציה ורזולוציה מלאה

כיצד אלגוריתם ההאחדה מגשר על פער המשתנים, משפט ארברנד וחידת חצי-הכריעות, 6 שלבי ההמרה ל-CNF, ועץ ההוכחה המפורסם של Criminal(West).

🧙‍♂️

השיא האלגוריתמי של הקורס

הגענו לפסגת הלוגיקה בבינה מלאכותית! כאן נפגשים כל החוטים: כיצד מחשב יכול להוכיח משפטים מתמטיים מורכבים מבלי "להציב את כל האפשרויות בעולם"? הסוד טמון בהאחדה (Unification): התאמה חכמה כמו מנעול ומפתח בין שתי נוסחאות המכילות משתנים. נלמד מהי פונקציית סקולם, מדוע אסור לשכוח את ה-Occurs Check, ואיך להרכיב עץ רזולוציה שלם שמפיל את הטענות בזו אחר זו עד לפסוקית הריקה $\square$. בואו נתחיל!

1. כללי הצבה, משפט ארברנד ובעיית חצי-הכריעות (Semi-Decidability)

הצבה לכמת כולל (Universal Instantiation - UI)
\[\frac{\forall v \; \alpha}{\text{SUBST}(\{v/g\}, \alpha)}\]

מאפשר להחליף את המשתנה $v$ בכל מונח קרקעי $g$ (קבוע מוכר). למשל, מתוך $\forall x \text{ King}(x) \Rightarrow \text{Evil}(x)$, בהצבה $\{x/\text{John}\}$ נקבל: $\text{King}(\text{John}) \Rightarrow \text{Evil}(\text{John})$.

הצבה לכמת קיומי (Existential Instantiation - EI)
\[\frac{\exists v \; \alpha}{\text{SUBST}(\{v/k\}, \alpha)}\]

מחליפים את $v$ בקבוע סקולם חדש ($k$) שאינו מופיע באף מקום אחר ב-$KB$ (זהות דמה זמנית). מבוצע פעם אחת בלבד.

🌌 משפט ארברנד (Herbrand's Theorem), משפט צ'רץ'-טיורינג ואי-כריעות למחצה (Semi-Decidability)

יסודות החישוביות בלוגיקה

כאשר בסיס הידע ב-FOL מכיל פונקציות (למשל $\text{Father}(x)$ או $s(x)$), יקום המונחים (Herbrand Universe) הופך לאינסופי בן-מנייה: $\{\text{John}, \text{Father}(\text{John}), \text{Father}(\text{Father}(\text{John})), \dots\}$. כיצד מחשב סופי יכול להוכיח נביעה לוגית מעל יקום אינסופי?

משפט ארברנד (Jacques Herbrand, 1930):

אם קבוצת פסוקיות ב-FOL אינה ספיקה (כלומר מכילה סתירה), אזי קיימת תת-קבוצה סופית של מונחי קרקע (Ground Terms) מתוך יקום ארברנד שהשמתם בפסוקיות יוצרת סתירה בתחשיב הפסוקים!

משפט צ'רץ'-טיורינג (Church-Turing, 1936):

לוגיקה מסדר ראשון היא חצי-כריעה (Semi-Decidable) בלבד (ואינה כריעה באופן מלא - Undecidable). הוכחת המשפט מתבססת על רדוקציה מלאה מבעיית העצירה של טיורינג (Halting Problem) לבעיית הנביעה הלוגית ב-FOL.

ענף לוגי סטטוס כריעות התנהגות כאשר $KB \models \alpha$ התנהגות כאשר $KB \not\models \alpha$
תחשיב הפסוקים (PL) כריע לחלוטין (Decidable) מוצא הוכחה ועוצר (סופי, $2^n$ שורות) קובע אי-נביעה ועוצר בהכרח
FOL מונו-אדי (Monadic FOL - ללא פונקציות) כריע (Decidable) מוצא הוכחה ועוצר קובע אי-נביעה ועוצר (מרחב מודלים חסום)
FOL כללי (כולל יחסים וסמלי פונקציות) חצי-כריע בלבד (Semi-Decidable) מובטח למצוא הוכחה ולעצור! (שלמות גדל) עלול לרוץ לנצח בלולאה אינסופית!
משמעות מעשית בבינה מלאכותית: אם שאילתה נכונה לוגית, מנוע הרזולוציה יגיע בסופו של דבר לסתירה $\square$. אך אם השאילתה שגויה או שאינה נובעת מ-$KB$, האלגוריתם עלול להמשיך להרחיב מונחי פונקציות עמוקים יותר ויותר מבלי לדעת לעולם האם "ההוכחה מעבר לפינה" או שאין הוכחה כלל.

2. אלגוריתם ההאחדה (Unification) ומבחן ה-Occurs Check

במקום לפרוס את כל ההצבות האפשריות, אלגוריתם ההאחדה מוצא הצבה $\theta$ (Substitution) שהופכת שני ביטויים שונים לזהים לחלוטין: $\text{Unify}(\alpha, \beta) = \theta \iff \text{SUBST}(\theta, \alpha) = \text{SUBST}(\theta, \beta)$. האלגוריתם מחזיר תמיד את המאחד הכללי ביותר (MGU - Most General Unifier), ששומר על משתנים חופשיים ככל הניתן.

💻 הפסאודוקוד הפורמלי של אלגוריתם ההאחדה (UNIFY Algorithm)

Russell & Norvig / Nir Adar
// Recursive Unification Algorithm returning MGU substitution θ or failure function UNIFY(x, y, θ = {}) returns substitution or failure: if θ == failure: return failure else if x == y: return θ else if is_variable(x): return UNIFY_VAR(x, y, θ) else if is_variable(y): return UNIFY_VAR(y, x, θ) else if is_compound(x) and is_compound(y): if x.operator != y.operator or length(x.args) != length(y.args): return failure return UNIFY(x.args, y.args, UNIFY(x.operator, y.operator, θ)) else if is_list(x) and is_list(y): return UNIFY(rest(x), rest(y), UNIFY(first(x), first(y), θ)) else: return failure function UNIFY_VAR(var, x, θ) returns substitution: if {var / val} in θ: return UNIFY(val, x, θ) else if {x / val} in θ: return UNIFY(var, val, θ) else if OCCURS_CHECK(var, x): // CRITICAL CHECK: prevents circular x = f(x) return failure else: return θ ∪ {var / x}
⚠️ בקרת מופעים (Occurs Check): מדוע אסור לוותר עליה?

הפונקציה OCCURS_CHECK(var, x) סורקת את הביטוי $x$ ובודקת האם המשתנה $var$ מוכל בתוכו. אם ננסה לאחד את המשתנה $x$ עם הביטוי $f(x)$, ללא Occurs Check תיווצר ההצבה $\{x / f(x)\}$. הצבה זו מובילה למבנה אינסופי מעגלי בלתי אפשרי: $x = f(f(f(\dots)))$!

דילמת היעילות מול נאותות (Soundness): בדיקת Occurs Check דורשת זמן $O(n)$ ביחס לאורך הביטוי בכל צעד השמה, מה שמעלה את סיבוכיות ההאחדה לריבועית $O(n^2)$. מסיבה זו, חלק ממערכות Prolog הקלאסיות דילגו על הבדיקה לטובת מהירות – אולם הדבר גורם לפגיעה בנאותות (Soundness) ועלול לגרום למערכת "להוכיח" טענות שגויות לחלוטין!
ביטוי ראשון (p) ביטוי שני (q) תוצאת ההאחדה (θ) הסבר
Knows(John, x) Knows(John, Jane) { x / Jane } הצבה ישירה של קבוע למשתנה.
Knows(John, x) Knows(y, OJ) { y / John, x / OJ } הצבה צולבת של שני משתנים לשני קבועים.
Knows(John, x) Knows(y, Mother(y)) { y / John, x / Mother(John) } הצבת פונקציה מקוננת לאחר שיערוך y.
Knows(John, x) Knows(x, OJ) FAIL (קריסה) המשתנה x לא יכול להיות גם John וגם OJ.
P(x) P(Father(x)) FAIL (Occurs Check) המשתנה x מופיע בתוך הביטוי שאליו הוא מוצב!

⚡ מודוס פוננס המורחב (Generalized Modus Ponens - GMP)

מאפשר להסיק מסקנה ישירה בלוגיקה מסדר ראשון במכה אחת: \[\frac{p_1', p_2', \dots, p_n', \quad (p_1 \wedge p_2 \wedge \dots \wedge p_n \Rightarrow q)}{\text{SUBST}(\theta, q)} \quad \text{where } \text{Unify}(p_i', p_i) = \theta \text{ for all } i\]

3. ששת שלבי ההמרה ל-CNF בלוגיקה מסדר ראשון (FOL CNF Conversion)

ב-FOL, ההמרה ל-CNF מורכבת יותר ודורשת טיפול ייחודי בכמתים ובשמות משתנים:

1. סילוק דו-גרירה וגרירה
החלפת $\alpha \Rightarrow \beta$ ב-$\neg\alpha \vee \beta$.
2. הכנסת שלילה פנימה
שימוש בחוקי דה-מורגן לכמתים: $\neg\forall x P \equiv \exists x \neg P$.
3. בידול שמות משתנים (Standardize Apart)
החלפת שמות כפולים ($x, y \to x_1, y_2$) כדי למנוע התנגשויות איחוד.
4. סקולמיזציה מורכבת (Skolemization)
סילוק $\exists$: אם הכמת הקיומי נמצא בתוך טווח השפעה של $\forall x$, מחליפים בפונקציית סקולם תלויה: $F(x)$!
5. השמטת כמתים כוללים
הנחה גלובלית שכל משתנה שנותר חופשי מכומת כולית.
6. חוק הפילוג ושיטוח
פירוק קוניונקציות לקבלת רשימת פסוקיות CNF שטוחות.

4. הוכחת רזולוציה מלאה: פרשת "Criminal(West)"

זוהי דוגמת הדגל הקלאסית בספרות הבינה המלאכותית (Russell & Norvig). נתונה השאילתה: להוכיח כי האמריקאי קולונל ווסט שמכר טילים למדינת Nono העוינת הוא פושע ($\text{Criminal}(\text{West})$).

חוקי בסיס הידע ב-CNF:
C1: ¬American(x) ∨ ¬Weapon(y) ∨ ¬Sells(x,y,z) ∨ ¬Hostile(z) ∨ Criminal(x)
C2: American(West)
C3: Missile(M₁)
C4: ¬Missile(x) ∨ Weapon(x)
C5: Sells(West, M₁, Nono)
C6: ¬Enemy(x, America) ∨ Hostile(x)
C7: Enemy(Nono, America)
שלילת השאילתה: ¬Criminal(West)
שרשרת עץ הרזולוציה עד לסתירה:
  1. רזולוציה בין $\neg\text{Criminal}(\text{West})$ לחוק $C_1$ $\to$ הצבה $\{x/\text{West}\}$ ומחיקת $\text{Criminal}$.
  2. רזולוציה מול העובדה $C_2$ ($\text{American}(\text{West})$) $\to$ מחיקת $\neg\text{American}$.
  3. רזולוציה מול $C_4$ ו-$C_3$ (טיל $M_1$ הוא נשק) $\to$ הצבה $\{y/M_1\}$ ומחיקת $\neg\text{Weapon}$.
  4. רזולוציה מול $C_5$ (מכירה ל-Nono) $\to$ הצבה $\{z/\text{Nono}\}$ ומחיקת $\neg\text{Sells}$. נותר: $\neg\text{Hostile}(\text{Nono})$.
  5. רזולוציה מול $C_6$ ו-$C_7$ ($Nono$ היא אויב לכן עוינת) $\to$ מחיקת $\neg\text{Hostile}$ וגזירת הפסוקית הריקה $\square$!
🎯 הוכח בהצלחה שווסט הוא פושע! ההוכחה הושלמה במלואה.

🧭 אסטרטגיות רזולוציה מתקדמות (Resolution Strategies)

קבוצת התמיכה (Set of Support)

מחייבת שכל צעד ישלב לפחות פסוקית אחת שניגזרה משלילת השאילתה. מונעת התפזרות להוכחת עובדות לא קשורות ושומרת על שלמות!

רזולוציה ביחידה (Unit Resolution)

מחייבת שאחת הפסוקיות תהיה בעלת ליטרל יחיד. מקטינה גודל פסוקיות אך אינה שלמה ל-FOL מלא.

הכלה (Subsumption)

מוחקת פסוקיות חלשות שמוכלות כבר על ידי פסוקיות כלליות יותר (למשל מחיקת $P(a) \vee Q(b)$ אם קיים $P(x)$).

5. סימולציה אינטראקטיבית 6.5: מעבדת ההאחדה ועץ הרזולוציה

📖 פרק 6.6 • סיכום מנהלים, ארגז כלים וגשר

צ'יט-שיט מאסטר: מפת הדרכים הלוגית וגשר לפרק 7

סיכום מקיף של כל שיטות הייצוג וההיסק, מטריצת השוואה כוללת של כל אלגוריתמי הפרק, עשרת כללי הברזל למבחן, והכנה לחקר תכנון וסוכני פעולה בזמן (Planning).

🎓

לקשור את כל הקצוות יחד

השלמתם בהצלחה את פרק 6 – אחד הפרקים המאתגרים והיפים ביותר בקורס! ביחידה זו ריכזתי עבורכם את מטריצת האלגוריתמים המלאה, את עשרת כללי הברזל שיצילו אתכם מכל מלכודת בבחינה, וכרטיסיות של כל החוקים. שמרו דף זה פתוח כשתפתרו תרגילים ושאלות העמקה!

1. מטריצת ההשוואה הכוללת: כל אלגוריתמי ההיסק של פרק 6

אלגוריתם שפת קלט סיבוכיות זמן (גרוע) סיבוכיות מקום שלמות (Complete) נאותות (Sound) שימוש מרכזי
סריקת טבלאות אמת (TT) פסוקים כלליים O(2ⁿ) O(n) כן ✓ כן ✓ הבנה תיאורטית בסיסית בלבד
אלגוריתם DPLL CNF בוליאני O(2ⁿ) (בפועל מהיר בהרבה) O(n) כן ✓ כן ✓ אימות חומרה (Verification)
אלגוריתם WalkSAT CNF בוליאני O(MaxFlips) O(n + m) לא ✕ כן ✓ בעיות ענק שידוע כי הן ספיקות
שרשור קדימה (FC) פסוקיות הורן O(n) - לינארי! O(n) כן (להורן) כן ✓ עיבוד נתונים תחושתי מתמשך
שרשור לאחור (BC) פסוקיות הורן < O(n) (תלוי יעד) O(עומק עץ) כן (להורן) כן ✓ מנועי פרולוג (Prolog) ושאילתות יעד
רזולוציה מלאה (PL/FOL) CNF / FOL-CNF חצי-כריע ב-FOL תלוי עץ כן (Refutation) כן ✓ מנועי הוכחת משפטים אוטומטיים (ATP)

2. עשרת כללי הברזל למבחן בבינה מלאכותית

1. נביעה אינה גרירה

$\models$ הוא יחס סמנטי (Meta-relation) בין עולמות: $KB \models \alpha$. לעומתו $\Rightarrow$ הוא קשר לוגי פנימי בתוך פסוק. הקשר ביניהם: $KB \models \alpha \iff (KB \Rightarrow \alpha)$ הוא טאוטולוגיה.

2. סילוק גרירה ושלילה כפולה

החלפה אוטומטית שחייבת לזרום לכם בעיניים: $\alpha \Rightarrow \beta \equiv \neg\alpha \vee \beta$. זכרו ש-$\neg(\neg\alpha) \equiv \alpha$.

3. כמת כולל רק עם גרירה!

$\forall x \text{ P}(x) \Rightarrow \text{Q}(x)$ ולא עם $\wedge$! שימוש ב-$\wedge$ יכפה שכל דבר ביקום (כולל סלעים) מקיים את הטענה.

4. כמת קיומי רק עם "וגם"!

$\exists x \text{ P}(x) \wedge \text{Q}(x)$ ולא עם $\Rightarrow$! שימוש בגרירה הופך את הפסוק לאמיתי ריקית ברגע שקיים עצם כלשהו שאינו מקיים את הרישא.

5. סקולמיזציה של $\exists$ תחת $\forall$ דורשת פונקציה

מתוך $\forall x \exists y \text{ Loves}(x,y)$, אסור להציב קבוע $C_1$! חובה להציב פונקציית סקולם $F(x)$, שכן ה-$y$ תלוי ב-$x$.

6. גזירת הפסוקית הריקה $\square$ היא ניצחון

ברזולוציה הוכחנו סתירה! המשמעות היא ששלילת השאילתה אינה ספיקה, ולכן השאילתה תקפה ונובעת מה-$KB$.

7. שרשור בפסוקיות הורן הוא לינארי $O(n)$

זכרו את מנגנון המונה `count[c]` של PL-FC-Entails שמתנכה ומונע סריקה חוזרת של כללים.

8. מבחן ה-Occurs Check

באלגוריתם ההאחדה, אסור להציב משתנה במונח המכיל את עצמו ($x / f(x)$). הדבר יגרום ללולאה אינסופית.

9. WalkSAT נאות אך אינו שלם

אם הוא החזיר מודל – המודל אמיתי בהכרח. אך אם נעצר ללא פתרון, לא ניתן לדעת האם הפסוק בלתי ספיק או שפשוט לא חיפשנו מספיק.

10. לוגיקה מסדר ראשון היא חצי-כריעה (Semi-Decidable)

לפי משפט ארברנד: הוכחה תמיד תימצא בזמן סופי אם היא קיימת. אך אם אין נביעה, האלגוריתם עלול לרוץ לנצח.

🌉

הגשר הפדגוגי לפרק 7: מתחשיב פסוקים לתכנון פעולות (Planning)

לאורך פרק 6 ראינו כיצד סוכן מייצג את מצב העולם הסטטי בעזרת לוגיקה. אולם בעולם האמיתי, סוכן חייב לבצע פעולות המשנות את המצב לאורך זמן! אם ננסה לייצג כל פעולה בלוגיקה רגילה, ניתקל ב"בעיית המסגרת" (Frame Problem): איך מצהירים שמה שלא השתנה – נשאר כפי שהיה מבלי לכתוב מיליוני פסוקי שימור? בפרק 7 נלמד על שפות תכנון קלאסיות כמו STRIPS ו-PDDL, נבין כיצד פעולות מוגדרות על ידי תנאים מוקדמים (Preconditions) ותוצאות (Effects), ונראה כיצד אלגוריתמי חיפוש ותכנון גרפים (GraphPlan) יוצרים תוכניות פעולה מורכבות שמגיעות למטרות עתידיות. נתראה בפרק 7!

לפרק הבא: פרק 7 ←
📚

בחרו בלשונית הרצויה לצפייה בשאלות פתוחות להעמקה או שאלות אמריקאיות אינטראקטיביות

קורס 20551: מבוא לבינה מלאכותית | פרק 6: לוגיקה וסוכנים לוגיים לסגירה: לחצו מחוץ לחלון, על ה-✕ או על מקש Esc