Presentation is loading. Please wait.

Presentation is loading. Please wait.

A* and AO* Search Algorithm

Similar presentations


Presentation on theme: "A* and AO* Search Algorithm"— Presentation transcript:

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

2 דמקה 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]

3 RPG situation

4 RPG situation

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

6 RPG situation

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

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

9 Dijkstra's algorithm דוגמה להרצת אלגוריתם דייקסטרה
מסמנים את הקודקוד הנוכחי. באיטרציה הראשונה זהו נקודת התחלה כקודקוד שביקרו בו. עבור כל קודקוד Y שהוא שכן של X וגם לא ביקרנו בו: Y מעודכן, כך שמרחקו יהיה שווה לערך המינימלי בין שני ערכים: מרחקו הנוכחי, ומשקל הקשת המחברת בין X לבין Y בתוספת המרחק בין S ל-X. בוחרים קודקוד X חדש בתור הקודקוד שמרחקו בשלב הזה מצומת המקור S הוא הקצר ביותר מבין כל הקודקודים בגרף שטרם ביקרנו בהם. האלגוריתם מסתיים כאשר ביקרנו בכל הקודקודים.

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

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

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

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

14 בעיה לדוגמא בוקר טוב עולם barrier Start Point Destination
barrier Start Point Destination

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

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

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

18 בעיה לדוגמא 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

19 בעיה לדוגמא בחרנו את 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

20 בעיה לדוגמא אחרי שבחרנו את 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

21 בעיה לדוגמא עברנו ל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

22 בעיה לדוגמא הפעם ב 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

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

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

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

26 algorithm A* דוגמה להרצת אלגוריתם A* כאשר פונקציית היוריסטיקה מעריכה את המרחק למטרה כמוגזם מידי לכן האלג מפתח את צמתים שלא היה צריך ללכת אליהם בדומה ל best-first

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

28 AO* (star) ??

29 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.

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

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

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

33 Solution Subgraph L. Manevitz Lecture 3 All rights reserved

34 Solution Subgraph L. Manevitz Lecture 3 All rights reserved

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

36 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

37 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

38 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

39 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

40 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

41 AO* weighted Example (Refered From Artificial Intelligence TMH)

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

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

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

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

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

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

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

49 שו"ת???


Download ppt "A* and AO* Search Algorithm"

Similar presentations


Ads by Google