גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות
גרף מכוון Directed Graph a b c f g ed h חוג עצמי מעגל מספר הקשתות היוצאות מ - v מספר הקשתות הנכנסות ל - v v מקור צמתים מסלול
גרף לא מכוון Graph a b c f g ed h מספר הקשתות של - v צמתים חוג עצמי קשתות
a b c f g e d h abcdefgh a b c d e f g h יצוג גרף במטריצת סמיכיות Adjacency Matrix סבוכיות מקום
a b c f g e d h יצוג גרף ברשימות סמיכיות Adjacency lists a b c d e f g h fe a g f g h bc h סבוכיות מקום
רשימות סמיכיות מטריצת סמיכיות סבוכיות מקום חיפוש קשת בדיקת שכנים
מיון טופולוגי a b c f g e d h קלט: גרף מכוון פלט: מספור של הצמתים כך שאם y x אזי
משפט: קיים מספור כזה אם"ם אין בגרף מעגל הוכחה: v1v1 v2v2 v3v3 vnvn v1v1 v2v2 v3v3 vnvn מקור באנדוקציה סתירה סמן מקור ב- 1 וסלק אותו ואת כל הקשתות היוצאות ממנו. נניח שקיים מעגל בגרף
1. אתחול : k = כל עוד קיימים מקורות בצע : מצא מקור v תן ל -v מספר k. קדם את k באחד. סלק את v מהגרף ( וכן את הקשתות היוצאות ממנו ). 3. אם k==n+1 אז המספור הושלם, 4. אחרת בגרף יש מעגל מכוון. אלגוריתם למיון טופולוגי
a b c f g e d h k = 1 מקור 1
a b c f g e d h k = מקור
a b c f g e d h k = 3 מקור 1 2 3
a b c f g e d h k = 4 מקור
a b c f g e d h k = 5 מקור
a b c f g e d h k = 6 מקור
a b c f g e d h k = 7 מקור
a b c f g e d h k = 8 מקור
a b c f g e d h k =
1. אתחול : k = כל עוד קיימים מקורות בצע : מצא מקור v תן ל -v מספר k. קדם את k באחד. סלק את v מהגרף ( וכן את הקשתות היוצאות ממנו ). 3. אם k==n+1 אז המספור הושלם, 4. אחרת בגרף יש מעגל מכוון. אלגוריתם למיון טופולוגי
מבנה נתונים לאלגוריתם למיון טופולוגי מצא מקורFind-Source סלק צומתDelete-Vertex האלגורים משתמש n פעמים בפונקציות הנ"ל חסם תחתון טרויאלי האם אפשר לפתור את הבעיה ב- ?
רשימות סמיכיות מטריצת סמיכיות מצא מקורסלק צומת ס"כ ל-n פעמים בדוק עמודה שכולה אפס אפס את השורה של הצומת
האם אפשר לפתור את הבעיה ב- ? כן!
a b c f g e d h a b c d e f g h fe a g g h c f h a b c d e f g h מחסנית\תור in-degree
a b c f g e d h a b c d e f g h fe a g g h c f h a b c d e f g h מחסנית\תור
a b c f g e d h a b c d e f g h fe a g g h c f h a b c d e f g h in-degree b d מחסנית\תור
a b c f g e d h מקור 1 a b c d e f g h fe a g g h c f h a b c d e f g h in-degree b d מחסנית\תור 1
a b c f g e d h 1 2 מקור a b c d e f g h fe a g g h c f h d מחסנית\תור a b c d e f g h in-degree e
a b c f g e d h מקור a b c d e f g h in-degree e מחסנית\תור a b c d e f g h fe a g g h c f h 0 g 1
a b c f g e d h מקור a b c d e f g h in-degree g a b c d e f g h fe a g g h c f h מחסנית\תור 0 c
a b c f g e d h מקור a b c d e f g h in-degree c c מחסנית\תור d 2 fe a g g h c f h 0 a 0 f a b c d e f g h
a b c f g e d h מקור a b c d e f g h in-degree c a f מחסנית\תור 5 fe a g g h c f h a b c d e f g h
a b c f g e d h מקור a b c d e f g h in-degree c f מחסנית\תור 55 fe a g g h c f h 0 h a b c d e f g h
a b c f g e d h מקור a b c d e f g h in-degree c 0 h h מחסנית\תור 555 fe a g g h c f h a b c d e f g h
a b c f g e d h fe a g g h c f h a b c d e f g h in-degree c 0 h מחסנית\תור a b c d e f g h
a b c f g e d h fe a g g h c f h a b c d e f g h in-degree c 0 h מחסנית\תור למצא מקור לתקן דרגה של השכנים להכניס צומת במחסנית ס"כ