A* and AO* Search Algorithm

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
תרגילי חזרה. General Things to Remember Be careful to identify if we’re talking about gains or costs (because the search cost is always negative) Check.
חיפוש בינה מלאכותית אבי רוזנפלד. סוכנים פותרי בעיות Reflex agents לא יכולים לתכנן קדימה כדי לחפש, יש צורך לייצר מודל לחפש בו !
פונקציונל פונקציה מספר פונקציונל דוגמאות לא פונקציונל פונקציונל.
All rights reservedL. Manevitz Lecture 31 Artificial Intelligence A/O* and Minimax L. Manevitz.
Presentation by Dudu Yanay and Elior Malul 1.  מה משותף לכל אלגוריתם המשתמש ב -Bucket Elimination: ◦ נתון מודל הסתברותי ורשת ביסיאנית מתאימה. ◦ נתונה.
Recitation #9. Q1 גרף מכוון מורכב מקבוצה של צמתים (nodes) ומקשתות מכוונות (arcs) המחברות ביניהם. כל קשת מכוונת יוצאת מצומת אחד ונכנסת לצומת אחר. ( בגרפים.
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
R. Bar-Yehuda © 1 קומבינטוריקה למדעי - המחשב – הרצאה #14 Graph theory – תורת הגרפים Chapter 1: PATHS IN GRAPHS – 1. מסלולים.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
משטר סטטי שערים לוגיים Wired Drives – © Dima Elenbogen 2009, Moshe Malka :29.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
בעיות חיפוש – informed search בינה מלאכותית יעל נצר.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
תזכורת: גרפים גרף (G=(V,E V|=n, |E|=m| מכוון \ לא מכוון דרגה של קדקד
Motion planning via potential fields תומר באום Based on ch. 4 in “Principles of robot motion” By Choset et al. ב"הב"ה.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה.
CS Introduction to AI Tutorial 6 AB Questions Tutorial 6 AB Questions.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
גרפים - Graphs גרף G(V,E) מורכב מקבוצת צמתים V וקבוצת קשתות E.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
מבנה מחשבים תרגול מספר 3. טענה על עצים משפט: בעץ שדרגת כל קודקודיו חסומה ב-3, מספר העלים ≤ מספר הקודקודים הפנימיים + 2. הוכחה: באינדוקציה על n, מספר הקודקודים.
Lecture 13 Maximal Accurate Forests From Distance Matrix.
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
2-4 tree k=2 Each node has 2,3,or 4 children. Delete delete(14,T)
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
Kashrut is a mitzvah in the Torah and has been passed on through generations. Kashrut is a chok. this means that we don’t know why we do it but we.
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
1 חלק XQuery :IV XML Query. 2 ביבליוגרפיה - DTD 3 ביבליוגרפיה – books.xml TCP/IP Illustrated Stevens W. Addison-Wesley Advanced Programming in.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
DOGMA: A Disk-Oriented Graph Matching Algorithm for RDF Databases
PPL Lecture 3 Slides by Yaron Gonen,
מבוא למדעי המחשב סיבוכיות.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
תרגול מס' 3: Data Hazards מבוסס על תרגול של מורן גביש
חיפוש לוקלי Local Search.
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
ממשקים - interfaces איך לאפשר "הורשה מרובה".
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
Data Structures, CS, TAU, Splay Tree
בעיות נוספות ב-NPC.
Marina Kogan Sadetsky –
תרגול 11 NP complete.
NG Interpolation: Divided Differences
חזרה חלקית על תרגול 12 גרף G=(V,E)
Engineering Programming A
מבוא לתכנות ב- Java תרגול 10 - רשימות מקושרות.
Presentation transcript:

A* and AO* Search Algorithm Hananel Hazan Based on Prof. Larry Manevitz’s slides

דמקה Draughts (or checkers) In the 1950s, Arthur Samuel created one of the first board game-playing programs of any kind in 2007 scientists at the University of Alberta[13] evolved their "Chinook" program up to the point where it is unbeatable. A brute force approach that took hundreds of computers working nearly 2 decades was used to solve the game,[14] showing that a game of draughts will always end in a stalemate if neither player makes a mistake.[15][16] https://en.wikipedia.org/wiki/Freeciv https://en.wikipedia.org/wiki/Draughts

RPG situation

RPG situation

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

RPG situation

What is A* Search Good For? אם קיים פתרון לבעיה, ופונקציה היוריסטית היא אופטימית, מובטח שהאלגוריתם ימצא אותה מכיוון שהאלגוריתם עובר על כל הדרכים האפשריות ומקבל הערכות לגבי המשך הדרך. האלגוריתם A* דומה לאלגוריתם Best – First החמדני בצורת החיפוש, הוא יותר טוב ממנו בגלל שA* לא חוזר על צמתים שהוא כבר ביקר בהם.

מבוא כדי להסביר את A* אנו צרכים להבין את : אלג Dijkstra's אלג Best-First search אלג Hill Climbing

Dijkstra's algorithm דוגמה להרצת אלגוריתם דייקסטרה מסמנים את הקודקוד הנוכחי. באיטרציה הראשונה זהו נקודת התחלה כקודקוד שביקרו בו. עבור כל קודקוד Y שהוא שכן של X וגם לא ביקרנו בו: Y מעודכן, כך שמרחקו יהיה שווה לערך המינימלי בין שני ערכים: מרחקו הנוכחי, ומשקל הקשת המחברת בין X לבין Y בתוספת המרחק בין S ל-X. בוחרים קודקוד X חדש בתור הקודקוד שמרחקו בשלב הזה מצומת המקור S הוא הקצר ביותר מבין כל הקודקודים בגרף שטרם ביקרנו בהם. האלגוריתם מסתיים כאשר ביקרנו בכל הקודקודים. https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

אלג Best-First search אלג Hill Climbing אנו נבחר לעבור לצומת הראשונה שהיא גבוה/נמוכה יותר מהנוכחית. אלגוריתם נכשל / מסתיים כאשר אין גבוה/נמוך יותר (הגענו למקסימום / מינימום מקומי) Best-First search אנו נעבור על כל הילדים של אותה צומת וניבחר את הגבוה/נמוך ביותר שמצאנו

A* vs (Best-First, Hill Climbing) A* לוקח בחשבון את המרחק שהאלגוריתם ביצע עד כה g(x). האלגוריתם קביל (מחזיר פתרון בעל מחיר מינימלי) בתנאי ש-h קבילה. הוכחת אי עצירה: האפשרות היחידה לאי עצירה היא מעגל, אולם זה לא יכול לקרות כי נגיע שוב לצומת וניתן לה לכאורה מחיר גבוה יותר ממה שכבר היה לה.

A* האלגי מחזיק 2 רשימות, רשימה פתוחה ורשימה סגורה. ברשימה הסגורה נמצאים הצמתים שהם מבוי סתום או שכבר ביקר בהם. ברשימה הפתוחה נמצאים צמתים שלא הגיע אליהם עם הערך ה ( F(x. רשימה פתוחה: הצמתים עם הערך F(x) הנמוך היותר מקבלים את העדיפות הגבוהה ביותר. בכל צעד האלג לוקח את הצומת הראשונה ברשימה הפתוחה שהיא בעלת הערך F(x) הנמוך ביותר ונותן ערך לכל הבנים של הצומת, הבנים מוכנסים לרשימה הפתוחה, והצומת נכנסת לרשימה הסגורה.

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

בעיה לדוגמא בוקר טוב עולם barrier Start Point Destination http://www.policyalmanac.org/games/aStarTutorial.htm barrier Start Point Destination

בעיה לדוגמא רשימת קניות - מה האפשרויות שלי? Open List רשימת קניות - מה האפשרויות שלי? רשימה מקושרת אשר ההורה הוא נקודת התחלה רשימת מלאי - מה לא צריך לבדוק ברשימה הזאת יהיו כל הנקודות שנמצאות בהישג יד אבל לא ברי השגה כמו קיר / מחסום / נקודת מוצא Close List Close List Open List

בעיה לדוגמא F = G + H שלב הבא הוא שלב הניקוד: יש לנו את נקודת ההתחלה ונקודת המטרה. מה שנותר לעשות זה לתת ציון לכל דרך אפשרית שנמצאת ברשימה הפתוחה. סה"כ עלות F = G + H  כמה עולה לצעוד מהנקודה ההתחלה לנקודת הנוכחית? כמה אתה מעריך שיעלה לצעוד מהנקודה החדשה לנקודת המטרה?

בעיה לדוגמא כל הריבוע שמסומן בירוק נכנס לרשימה הפתוחה. בוחרים את A בגלל שיש לו את הערך הקטן ביותר. B A C A Close List Open List

בעיה לדוגמא B C A Close List Open List כל המשבצות של הקיר נכנסים לרשימה הסגורה מכיוון שאי אפשר לעבור דרכם. B ו C נכנסים לרשימה הפתוחה כאפשרויות המשך. בוחרים אקראית מכיוון ששני הערכים שווים B Aa Ac A Ab Ab Aa C Ac B C A D Close List Open List

בעיה לדוגמא בחרנו את C ואנו נעריך את כל השכנים של C יש לנו שני מעומדים D ו F אבל אי אפשר להגיע לF ישירות בגלל הקיר אזי D נבחר (חוקים*) B C Aa D A Ac Ab F Ab B E C Ac Aa E G D F A G Close List Open List

בעיה לדוגמא אחרי שבחרנו את D והכנסנו את השכנים לרשימה בפתוחה נימצא שהכרך של F יותר קטן מהשאר (M L O) B Aa A Ab D F J K C B E C Ac Aa Ab Ac E G D F H| I A G Close List Open List M L O

בעיה לדוגמא עברנו לF ו גם פה אי אפשר לקצר ע"י מעבר ל J ולכן H נבחר D C B Aa H F A D J Ab J K C B E C Ac Aa Ab Ac E G D F H I A G Close List Open List M L O

בעיה לדוגמא הפעם ב H אנו יכולים לקצר ע"י מעבר לK שהוא הערך הנמוך יותר מפה הדרך למטרה היא צעד אחד ברור K B H Aa I F A J Ab D J K C B E C Ac Aa Ab Ac E G D F H I A G Close List Open List M L O

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

Unbiased A* מצב שבו פונקציית h מנחשת באופן "נאיבי" כל מצב שיוצג לה הוא טוב בשבילה

A* Heuristics זה מה שהינו רוצים להגיע פונקציה יוריסטית שמעריכה באופן רציף פונקציה יוריסטית שמעריכה באופן שהוא מוגזם overestimate זה מה שהינו רוצים להגיע

algorithm A* דוגמה להרצת אלגוריתם A* כאשר פונקציית היוריסטיקה מעריכה את המרחק למטרה כמוגזם מידי לכן האלג מפתח את צמתים שלא היה צריך ללכת אליהם בדומה ל best-first https://en.wikipedia.org/wiki/A*_search_algorithm

דוגמה לריצה של A* כאשר אלגוריתם A* רץ עם פונקציה יוריסטית שמעריכה נכון ובצורה אופטימית את המרחק למטרה

AO* (star) ??

What are difference between A and AO algorithm? The main difference between the A*(A star) and AO*(AO star) algorithms is that A* algorithm is a OR graph algorithm and AO* is a AND-OR graph algorithm. In OR graph algorithm it just find only one solution (i.e. either OR solution means this OR this OR this). But in the AND-OR graph algorithm it find more than one solution by ANDing two or more branches.

OR Connector AND Connector L. Manevitz Lecture 3 All rights reserved

הנחות עבודה Data Structure Graph Marked Connectors (down; unlike A*) Costs q() maintained on nodes SOLVED markings Note: We’ll discuss on acyclic graphs.

AND/OR Graph L. Manevitz Lecture 3 All rights reserved

Solution Subgraph L. Manevitz Lecture 3 All rights reserved

Solution Subgraph L. Manevitz Lecture 3 All rights reserved

Heuristic Values: estimated cost to solution set 2 4 1 4 1 2 L. Manevitz Lecture 3 All rights reserved

Basic Idea of A/O* First top-down graph growing picks out best available partial solution sub-graph from explicit graph. One leaf node of this graph is expanded Second, bottom-up cost-revising, connector-marking, SOLVE-labeling. L. Manevitz Lecture 3 All rights reserved

AO* Algorithm Create G = <s> ; q(s) = h (s) If s e TERM mark s SOLVED Until s labeled SOLVED do: Compute G’ partial solution subgraph of G by tracing down marked connectors in G from s. Select n in G’, n not in TERM, n a leaf. Expand n , place successors in G, for each successor not already in G let q(successor)=h (successor). Label SOLVED all successors in TERM. (If no successors, reset q(n) := infinity ). L. Manevitz Lecture 3 All rights reserved

AO* Algorithm cont. Let S := {n}. Until S = f do : Remove a node, m, from S which has no descendent in G also in S (minimal node). Revise cost for m, (check each connector from m) q(m)=min [c +q(n1)+…+q(nk)]. Mark chosen connector. If all successors their connectors are SOLVED then mark m SOLVED. If m SOLVED or changed q(m) then add to S all “preferred” parents of m. End. L. Manevitz Lecture 3 All rights reserved

Montone Restriction h(n) <= c + h(n1) + h(n2) + … h(nk) Where c is cost of connector between n and set of n1, … , nk. This guarantees that h(n) <= h*(n). L. Manevitz Lecture 3 All rights reserved

Cost (q(n) ) Values If n has no successors then q(n) = h (n) Otherwise working from bottom, q(n) = connector cost + sum of q(successors) Pick smallest of above; and mark direction. If that direction has all successors SOLVED then n is marked SOLVED. L. Manevitz Lecture 3 All rights reserved

AO* weighted Example (Refered From Artificial Intelligence TMH) http://artificialintelligence-notes.blogspot.co.il/2010/07/problem-reduction-with-ao-algorithm.html

Tracing the Algorithm 1 2 1 1 L. Manevitz Lecture 3 All rights reserved

Tracing the Algorithm 3 2 1 1 L. Manevitz Lecture 3 All rights reserved

Tracing the Algorithm 4 5 1 4 4 1 L. Manevitz Lecture 3 All rights reserved

Tracing the Algorithm 4 5 1 4 4 2 2 L. Manevitz Lecture 3 L. Manevitz Lecture 3 All rights reserved

Tracing the Algorithm 5 5 1 4 4 2 2 L. Manevitz Lecture 3 L. Manevitz Lecture 3 All rights reserved

Tracing the Algorithm 5 5 1 4 2 L. Manevitz Lecture 3 L. Manevitz Lecture 3 All rights reserved

Tracing the Algorithm 5 5 1 4 2 L. Manevitz Lecture 3 L. Manevitz Lecture 3 All rights reserved

שו"ת???