תורת הגרפים - סימונים.n = V,m = E בהינתן גרף,G = V,E נסמן: בתוך סימוני ה O,o,Ω,ω,Θ נרשה לעצמנו אף להיפטר מהערך המוחלט.. E V,O V + E כלומר, O V + E נכתוב במקום אם כי בכל מקרה אחר נכתוב או קשת של גרף לא מכוון תסומן:.uv, u,v, u v v u קשת של גרף מכוון תסומן:.uv, u,v, u v y w x V = u, v, w, x, y E = v, v, u, v, v, x, u, x, u, y.v = n. 1,2,,k קבוצת המספרים - k לפעמים נניח בלי הגבלת הכלליות ש בהינתן U, V נסמן ב G U את הגרף שקבוצת צמתיו היא U וקשתותיו הן כל קשתות G ששני צמתי הקצה שלה שייכים ל U. G U = U,E U, E U = E U U יונתן יניב 1
שיטות לייצוג גרפים 1. מטריצת שכנויות n n מסדר A G ניתן לתאר גרף G = V = n,e על ידי מטריצה המוגדרת באופן הבא: A G u, v = 1 uv E 0 uv E חסרונות:.)m = o n 2 ייצוג בזבזני במקום עבור גרפים דלילים (.)Θ n (,v V פעולות בסיסיות, כמו מעבר על כל השכנים של צומת לוקח זמן רב יתרונות: ייצוג פשוט מאוד..G תכונות אלגבריות של המטריצה A G טומנות בחובן מידע רב על הגרף.k שאורכן v u A G k u,v הוא מספר המסלולים למשל, לכל 0,k )שאינם בהכרח פשוטים( ל מ 2
שיטות לייצוג גרפים 2. רשימת סמיכויות רשימת הסמיכויות מורכבת ממערך של צמתי הגרף. התא המתאים לצומת v במערך מכיל את רשימת כל הקשתות אשר נוגעות בצומת v. בנוסף, המבנה מכיל רשימת קשתות. לכל קשת e E נשמור את שני צמתי הקצה שלה..Θ d v יתרונות: סיבוכיות הזיכרון היא,Θ n + m בניגוד ל Θ n 2 פעולות רבות על הגרף ניתנות לביצוע יעיל יותר, עבור מטריצת שכנויות. למשל מעבר על השכנים לוקח 3
וריאציות קלות על מבני הנתונים לעיתים נניח שכקלט נתון לנו גרף המיוצג על ידי מבנה נתונים שהוא וריאציה על מטריצת שכנויות או רשימת סמיכויות. נרצה, אם למשל, קשתות נכנסות והן של קשתות נוכל להניח שבגרף מכוון מכל תא במערך הצמתים אלא יוצאות, דווקא שתי רשימות - קשתות יוצאות. יוצאת לא רשימה אחת הן של אחת של קשתות נכנסות ואחת של הנחה אחרת לדוגמה היא שהדרגה של כל צומת רשומה בתא המתאים לצומת במערך הצמתים. ברוב המקרים שנראה בקורס, המידע הנוסף שאת קיומו אנו מניחים, ניתן לחישוב בזמן לינארי בגודל מבנה הנתונים נטול המידע. סיבה נוספת היא שאנו, כאמור, שמים דגש על רמת הפשטה גבוהה יותר בקורס. 4
דוגמא ראשונה לאלגוריתם וניתוחו מיון טופולוגי הגדרה: יהא Gגרף = V,E מכוון. מיון טופולוגי של G הוא סידור לינארי של V, כך שאם uv E אז u נמצא לפני v בסידור. פורמלית, מיון טופולוגי הוא פונקציה חח"ע L: V V כך ש uv E גורר.L u < L v לדוגמא, באיור נתון גרף ומתחתיו אותו הגרף כך שהצמתים מסודרים משמאל לימין לפי טופולוגי. אכן, כל הקשתות הולכות משמאל לימין. סדר מיון 5
גרף חסר מעגלים (DAG) Directed Acyclic Graph הגדרה: יהא Gגרף = V,E מכוון. יקרא (DAG) Directed Acyclic Graph אם אין בו מעגלים מכוונים. G נבחין כי אם יש בגרף G מעגל מכוון, למה? אין לגרף מיון טופולוגי. נציע אלגוריתם לחישוב מיון טופולוגי ב DAG נתון. בכך נוכיח כי לכל DAG קיים מיון טופולוגי. 6
אלגוריתם: 7
נכונות: 8
ניתוח סיבוכיות: 9
אלגוריתם משופר: 10
ניתוח סיבוכיות לאלגוריתם המשופר: 11
סיבוכיות ואורך קלט בכל הבעיות עליהן נלמד בקורס, יתרה מזו, נתעניין באלגוריתמים שהסיבוכיות שלהן היא ברוב המקרים קיים אלגוריתם טריוויאלי בסיבוכיות זמן אלגוריתמים אלו לא יעניינו אותנו בקורס. אקספוננציאלית. פולינומיאלית. זמן הריצה הוא פולינומי באורך הקלט. מהו אורך הקלט? דוגמא: כפל מטריצות נתונות זוג מטריצות A,B מסדר.n n אנו נדרשים לחשב את.AB אלגוריתם פשוט הוא חישוב ערך כניסה אחר כניסה של :AB לכל,i,j n חישוב כניסה AB i,j = A i,k B k,j k n AB i,j עולה,O n ולכן סה"כ חישוב AB לוקח.O n 3 אבל, אורך הקלט הוא m, = n 2 לכן לא נכון לומר שסיבוכיות הזמן היא כאורך הקלט בשלישית! הערה: כיום ידוע אלגוריתם לכפל מטריצות שזמן ריצתו O. n 2.376 12
סיבוכיות ואורך קלט דוגמא: בדיקת ראשוניות בהינתן מספר n, יש לקבוע האם הוא ראשוני..n אלגוריתם פשוט: נעבור על כל המספרים בין עד n ונבדוק האם הם מחלקים את 2.O 1 כמה זמן עולה פעולת החלוקה? במהלך הקורס נניח שכל פעולה אריתמטית עולה לכן, סיבוכיות הזמן של האלגוריתם הוא אבל, אורך הקלט הוא.O n.m = Ω log 2 n ולכן, סיבוכיות הזמן של האלגוריתם היא m. O n = O 2 2 הערה: בשנת 2002 התגלה אלגוריתם פולינומי לבדיקת ראשוניות. 13
סיבוכיות ואורך קלט אורך הקלט של בהינתן גרף גרף G = V,E כקלט לאלגוריתם, אם הגרף נתון על ידי מטריצת שכנויות, שכניסותיה הן ביטים, ולכן יש צורך ב V 2 אם, אורך הקלט תלוי כמובן בייצוג הגרף. אורך הקלט הוא ביטים. לעומת זאת, הגרף נתון כרשימת סמיכויות, אורך הקלט הוא Θ, V 2 שכן הקלט מורכב ממטריצה.Θ V + E קביעה זו אינה מדויקת, כדי לייצג גרף על V צמתים, אנו צריכים לדעת להבדיל בין הצמתים. לתת לכל צומת סימון שונה נצטרך log 2 V ביטים לכל צומת. לכן, מכיוון שכל קשת צורכת Ω log V מקום, סיבוכיות המקום היא למעשה Ω. V + E log V לשם פשטות, נניח כי סיבוכיות המקום של ייצוג כרשימת סמיכויות היא Ω. E + V כלומר,.log x 14 במהלך הקורס נדאג שהאלגוריתמים שלנו יהיו פולינומים באורך הקלט. כלומר, אם נתון מספר x בקלט, סיבוכיות הזמן צריכה להיות פולינומית ב אם זה לא המצב, נאמר שהאלגוריתם פסאודו-פולינומי.