1 / 50

אלגוריתמים נבחרים בתורת הגרפים

אלגוריתמים נבחרים בתורת הגרפים. יסודות מתמטיים וייצוג גרפים במחשב. יסודות מתמטיים. תורת הקבוצות סדרי גודל של פונקציות. מושגים בתורת הקבוצות. קבוצה היא אוסף של איברים. המושג קבוצה מאפשר להתייחס אל אוסף איברים כאל עצם אחד. סימון לקבוצה: V, E V = {v 1 , v 2 , v 6 } S 1 = {a, b, c}

arista
Download Presentation

אלגוריתמים נבחרים בתורת הגרפים

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. אלגוריתמים נבחרים בתורת הגרפים יסודות מתמטיים וייצוג גרפים במחשב

  2. יסודות מתמטיים • תורת הקבוצות • סדרי גודל של פונקציות

  3. מושגים בתורת הקבוצות • קבוצה היא אוסף של איברים. • המושג קבוצה מאפשר להתייחס אל אוסף איברים כאל עצם אחד. • סימון לקבוצה: • V, E • V = {v1, v2, v6} • S1 = {a, b, c} • S2 = {x | a is an integer power of 2} • S3 = {1, 2, 3, …}

  4. מושגים בתורת הקבוצות • תת-קבוצה:A תת-קבוצה של B אם כל איברי קבוצה A הם גם איברי קבוצה B. סימון: AB • סימון נוסף לתת-קבוצה, עם אפשרות לשוויון:  • שייכות ואי-שייכות איבר לקבוצה: • S1 = {a, b, c}; a  S1 ; • V = {v1, v2, v6}; v1V; v4V • {v1, v2}  V ; {v1}  V ; {v1} V • קבוצה ריקה:φ- קבוצה ללא איברים, תת קבוצה של כל קבוצה.

  5. מושגים בתורת הקבוצות • הבדל בין קבוצה לסדרה • סדרה היא אוסף סדור; בקבוצה אין משמעות לסדר האיברים. • בקבוצה אין חזרה על איברים, בסדרה יכולה להיות חזרה. • מספר האיברים בקבוצה • קבוצה סופית (finite) • אם S סופית, מספר איברי S: = n|S| • קבוצה לא סופית (infinite)

  6. מושגים בתורת הקבוצות • מהו מספר תת הקבוצות של קבוצה סופית בת n איברים? • כמה תת-קבוצות בגודל k יש לקבוצה סופית בת n איברים?

  7. מושגים בתורת הקבוצות • מהו מספר תת הקבוצות של קבוצה סופית בת n איברים? • כמה תת-קבוצות בגודל k יש לקבוצה סופית בת n איברים? • מסקנה:

  8. מושגים בתורת הקבוצות • פעולות על קבוצות: • איחוד A U B • חיתוך A ∩ B • חיסור A\B

  9. מושגים בתורת הקבוצות • יחס בינארי: קבוצה של זוגות סדורים שהיא תת-קבוצה של SxS(cross product) • S x T = {(x, y) | x S, y T} • דוגמאות: • קטן מ.... R, x<y}{(x, y) : x  R , y • הורה של ... (x, y) ביחס אם x הוא הורה של y • אב קדמון של ... (x, y) ביחס אם x הוא אב קדמון של y • איברי הזוג הסדור אינם שייכים בהכרח לאותה קבוצה: {(x, y}: x S, y T}

  10. תכונות של יחסים יהי R יחס בינארי המוגדר על-איברי S(R תת-קבוצה של SxS) R reflexive: for all x  S, (x, x)  R R symmetric: if (x, y)  R then (y, x)  R R antisymmetric: if (x, y)  R then (y, x)  R R transitive: if (x, y)  R and (y, z)  R then (x, z)  R

  11. מושגים בתורת הקבוצות • יחס שקילות: יחס שהוא רפלקסיבי, סימטרי וטרנזיטיבי. • האם היחסים הבאים הם יחסי שקילות? • "קטן מ" • "שווה ל" • "קטן או שווה ל" • יחסי שקילות חשובים היות והם מהווים partition של קבוצות: • מחלקים קבוצות למחלקות שקילות. • חלוקה לקבוצות זרות שאיחודן שווה לקבוצה המקורית.

  12. דוגמא לשימוש ביחסים בתורת הגרפים • א. אמתו את הטענה שבגרף בלתי מכוון, היחס "ניתן להגעה מ..."הוא יחס שקילות המוגדר על קודקודי הגרף. • כלומר, (v, u) ביחס אם קיים מסלול מ- u ל- v. ב. בנו גרף שהיחס "ניתן להגעה מ..."מחלק את קדקודיו לשלוש מחלקות שקילות. • אילו משלוש התכונות של יחס שקילות מקיים היחס "ניתן להגעה מ..." על קדקודיו של גרף מכוון?

  13. כמתים • לכל • קיים

  14. פונקציות • סימון שכיח בקורס W:

  15. ניתוח אלגוריתמים ובעיות • באמצעות אילו קריטריונים ניתן להעריך את יעילותם של אלגוריתמים? • נכונות • כמות העבודה המתבצעת • יחסית לאורך הקלט • Worst case עבור קלט באורך n (נותן חסם עליון לקלטים באורך n) • פשטות, בהירות • כמות זיכרון

  16. ניתוח אלגוריתמים ובעיות האלגוריתם bubble sort: • אתר המדגים את האלגוריתם. • אתר נוסף • מהו זמן הריצה של האלגוריתם כפונקציה של אורך הקלט? • כיצד ניתן לשפר את האלגוריתם כך שעבור קלטים "ממויינים" זמן הריצה יהיה קצר יותר?

  17. ניתוח אלגוריתמים ובעיות :bubble sort • עבור קלט באורךn זמן הריצה הוא O(n2), כלומר, סדר גודל של n2. • במקרים בהם הקלט כמעט ממוין, ובכל מעבר על הקלט בודקים האם התבצעו החלפות, סדר הגודל של האלגוריתם הוא לינארי. • אז מהי סיבוכיות האלגוריתם? יחסית למקרה הגרוע ביותר.

  18. ניתוח אלגוריתמים ובעיות נתמקד בניתוח סיבוכיות זמן ריצה עבור קלט באורך n נחקור מהי סיבוכיות זמן הריצה במקרה הגרוע ביותר. • סדר הגודל של זמן הריצה: האופן שבו גדל זמן הריצה של האלגוריתם עם גידול גודל הקלט. • אלגוריתמים עם מעבד אחד (אין מקביליות).

  19. גידול של פונקציות • הבחנה 1: איזו פונקציה טובה יותר: 2n או 4n? • תלוי מהן הפעולות המבוצעות (מכמה פעולות כל אחת מהן מורכבת). • כפל בקבוע לא משנה (אותה סיבוכיות זמן ריצה). • הבחנה 2: איזו פונקציה טובה יותר: n3/2 או 5n2? • עבור ערכים קטנים, n3/2 טובה יותר, אבל עבור ערכים גדולים יותר, 5n2 טובה יותר. • מתעלמים מערכי הפונקציות עבור n-ים קטנים. • הקבוע הכפלי שוב אינו משמעותי היות ועבור n-ים גדולים שיעור הגידול של n3 גדול באופן משמעותי משיעור הגידול של n2.

  20. גידול של פונקציות • חשבו את ערכי הפונקציות הבאות n, 3n, n2, n5, nn, 2n עבור ה- n-ים הבאים: 5, 10, 100, 1000 • מה קורה כאשר n גדל מאוד? • למה חשוב לדעת סדר גודל של פונקציה? • אילו מהפונקציות הנ"ל מהוות זמן ריצה סביר?

  21. גידול של פונקציות בדיון להלן: • דנים בפונקציות שתחום ההגדרה שלהן הוא קבוצת המספרים הטבעיים {1, 2, …}. • הגורם המשמעותי הוא סדר הגודל של הפונקציה (of functionsorder)

  22. סדרי גודל של פונקציות (או, תטא, אומגה) Ω(g): functions that grow at least as fast as g Θ(g): functions that grow at the same rate as g Ο(g): functions that grow no faster than g

  23. סדרי גודל של פונקציות (או, תטא, אומגה) • נתונה g(n) = n3 +0.5n. עבור כל אחת מהקבוצות הבאות ציינו לפחות שלושה איברים השייכים להן. Ω(g): functions that grow at least as fast as g Θ(g): functions that grow at the same rate as g Ο(g): functions that grow no faster than g

  24. Ο(g): functions that grow no faster than g תהיינה g ו- f פונקציות מהשלמים הלא-שליליים לממשיים החיוביים.f є O(g) אם קיים c>0 קבוע מסוים ומספר לא שלילי שלם n0, כך שלכל n ≥ n0 מתקיים: f(n) ≤ c * g (n). • החל מ- n מסוים f חסומה מלמעלה ע"י כפולה חיובית של g. • f(n) קטנה מ- g(n) כאשר מתעלמים מערכים קטנים וכפולות קבועות של הפונקציות. • למרות ש- O(g) היא קבוצה נהוג לומר f שווה ל-O של g(במקום: f שייכת לקבוצה O של g).

  25. דוגמאות דוגמא 1:g(n) = n2 f(n) = 100n f(n) = O(g(n)) כי למשל החל מ- n>100 : f(n) < 1 * g(n) דוגמא 2:t(n) = 3n3 + 2n2 t(n) =O(n3) נבחר n0=1 ו- c=5.

  26. Ο(g): functions that grow no faster than g • יכול להיות ש- f(n) נמצאת ב- O(g(n)) גם אם f(n) גדולה מ- g(n). • f(n) נמצאת ב- O(g(n)) אם היא חסומה מלמעלה ע"י כפולה חיובית של g. • הקשר בין f(n) ו- g(n) אינו מושפע מערכי הפונקציות עבור n-ים קטנים.

  27. Resource: Base, S. and Van Gelder, A. (2000). Computer Algorithms, Addison-Wesley.

  28. דוגמאות (המשך) • נתון: f(n) = n3/2 , g(n) = 37n2+120n+17. • האם g O(f) או f O(g)? • g  O(f) כי עבור n≥78 , g(n) < 1*f(n)

  29. דוגמאות (המשך) • נתון: f(n) = n2 , g(n) = n logn. • האם g O(f) או f O(g)?

  30. דרך נוספת להחלטה על סדרי גודל • פונקציה f O(g)אם (אם הגבול קיים ושונה מ- ∞ , כולל המקרה שבו הגבול שווה 0). נתונות הפונקציות: t(n) = n5/2 r(n) = 37n4+120n+17. החליטו מי מהפונקציות נמצאת ב- O של השנייה והוכיחו את טענתכם ע"י גבולות.

  31. סיכום ביניים • בקביעת סדרי גודל של פונקציות "מתעלמים" מ: • גורמים כפליים קבועים • ערכי הפונקציות עבור n-ים קטנים • 2 דרכים להראות קשר בין סדרי גודל: • מציאת קבועים • חישוב גבולות

  32. Θ(g): functions that grow at the same rate as g • בהינתן פונקציה g(n), אנו מסמנים ב- Θ(g(n)) את קבוצת הפונקציות: Θ(g(n)) = {f(n): exist positive constants c1, c2 and n0 such that for all n≥n0: 0≤ c1 * g(n) ≤ f(n) ≤ c2 * g(n)} • פונקציה f(n) שייכת לקבוצת הפונקציותΘ(g(n)) אם עבור n גדול דיו קיימים קבועים חיוביים c1, c2 כך שניתן "לכלוא" את f(n) בין c1*g(n) ו- c2*g(n). • Θ(g(n)) היא קבוצת הפונקציות שהן מאותו סדר גודל של g.

  33. דוגמא Θ(g(n)) • צורת הרישום: שוויון במקום שייכות לקבוצת פונקציות. • יש למצוא קבועים חיוביים c1, c2, n0 כך שלכל n≥n0 יתקיים:

  34. דוגמא Θ(g(n)) (המשך) • צ"ל שקיימים קבועים חיוביים c1, c2, n0 כך שלכלn≥n0 יתקיים: • נחלק ב- ונקבל • אי-השוויון הימני יתקיים לכל n≥1 עבור 1/2 ≥c2. • אי-השוויון השמאלי יתקיים לכל n≥7 עבור 1/14 ≥c1. • הבחירה c1 = 1/14, c2 = 1/2, n0 = 7 מאמתת את הטענה.

  35. Θ(g): functions that grow at the same rate as g הערות: • ניתן לבחור גם קבועים אחרים, אולם העובדה החשובה היא שאכן קיימת בחירה מתאימה. • ערכיהם של הקבועים תלויים בפונקציה ; עבור פונקציה אחרת השייכת ל- יתכן וידרשו קבועים אחרים. • באופן מעשי ניתן להתעלם מן האיברים מסדר נמוך של פונקציה חיובית בעת קביעת חסמים, מכיוון שאיברים אלו אינם משמעותיים כאשר n גדל. האיבר מהסדר הגבוה ביותר קובע את התנהגות הפונקציה גם אם המקדם שלו הוא שבר קטן ביותר.

  36. דרך נוספת להחלטה על סדרי גודל • פונקציה f Θ(g)אם עבור קבוע c המקיים: ∞ < c < 0.

  37. Ω(g): functions that grow at least as fast as g • תהי g פונקציה מהשלמים הלא-שליליים לממשיים החיוביים. תהי f פונקציה מהשלמים הלא-שליליים לממשיים החיוביים. Ω (g)єf אם קיים c>0 קבוע ומספר לא שלילי שלם n0כך ש: f(n) ≥ c * g (n) לכל n ≥ n0.

  38. דרך נוספת להחלטה על סדרי גודל • פונקציה f Ω(g)אם כולל המקרה שבו הגבול הוא ∞. אינטואיציה: f(n) "גדולה מ" g(n) כאשר מתעלמים מערכי הפונקציות עבור n-ים קטנים ומכפולות קבועות של הפונקציות.

  39. Ω (g): functions that grow at least as fast as g • יכול להיות ש- f(n) נמצאת ב- Ω(g(n)) גם אם f(n) קטנה מ- g(n). f Ω(g)כל עוד f(n) חסומה מלמטה ע"י כפולה חיובית של g. • דוגמא:, g=20n3f=5n3 ו- f Ω(g)

  40. דוגמא • נתון: f(n) = n3/2 , g(n) = 37n2+120n+17. • האם g Ω(f) או f Ω(g)? • f Ω(g) : • מציאת קבועים: עבור n≥78 , f(n) > 1 * g(n). • חישוב גבולות:הגבול המחושב שווה ל- ∞.

  41. תכונות של או, תטא, אומגה • טענה:אם f O(g) ו- g O(h) אז f O(h) . כלומר, O הוא יחס טרנזיטיבי. • הוכחה: יהיו c1 ו- n1 קבועים כך ש f(n) ≤ c1*g(n) לכל n≥n1. יהיו c2 ו- n2 קבועים כך ש g(n) ≤ c2*h(n) לכל n≥n2. נקבל כי לכל≥ max {n1, n2} nc1*c2 (h(n))≤f(n) ולכן f O(h) .

  42. תכונות של או, תטא, אומגה • טענה:אם f O(g) ו- g O(h) אז f O(h) . כלומר, O הוא יחס טרנזיטיבי. • טענות דומות והוכחות דומות ניתן להציג ביחס ל- Θ ו-Ω .

  43. תכונות של או, תטא, אומגה • g(n)  O(f(n)) if and only if f(n)  Ω(g(n) • f(n)  Θ(g(n)) if and only if g(n)  Θ(f(n)) • בסעיפים הבאים הביטוי max מתייחס לפונקציה הגדולה יותר בגבול לאינסוף. • O(f(n) + g(n)) = O(max {f(n), g(n)}) • e.g., O(n3+n2) = O(n3) • Ω(f(n) + g(n)) = Ω(max {f(n), g(n)}) • Θ(f(n) + g(n)) = Θ(max {f(n), g(n)})

  44. תכונות של או, תטא, אומגה • בדרך כלל נשתמש ב- O כי מעניין אותנו למצוא חסם עליון עבור הרצת אלגוריתם במקרה הגרוע ביותר.

  45. ייצוג גרפים במחשב

  46. מטריצתשכנויות(adjacency matrix) גרף פשוט: גרף ללאקשתות מקבילות. די בציון שתי קצות קשת להגדיר קשת. גרף שבו |v|=n ניתן לייצג באמצעות מטריצה nxn. • Aij = 1 if there is an edge connecting vi and vj • Aij = 0 if there is no edge connecting vi and vj • Aij = 1 implies Aji = 1 (מטריצה סימטרית)

  47. מטריצתשכנויות (adjacency matrix) • דרגת קודקוד i מחושבת ע"י ספירת מספר ה- 1-ים בשורה ה- i. • 1 על האלכסון סופרים פעמיים. • במקרה של גרף מכוון: • מחליטים על מיקום ראש הקשת. • כל מטריצה אפשרית (לאו דווקא סימטרית). • דרגת יציאה/כניסה נספרת ע"י מספר 1-ים על שורה/עמודה (על-פי מה שהוחלט) • ייצוג גרף ע"י מטריצת שכנויות אינו יעיל במקרה של גרף דליל (מספר הצלעות בו קטן יחסית ל- n2 - מספר הצלעות האפשריות).

  48. רשימתפגיעות(incidence list) • ייצוג טוב גם במקרה של גרף דליל; מאפשר גם צלעות מקבילות. • הייצוג מורכב משתי רשימות: • רשימת פגיעות: לכל קודקוד (מקום במערך או איבר ברשימה), משייכים רשימה של כל הקשתות שפוגעות בו. • רשימה קשתות: קשתות וצמתי הקצה שלהן (אם הגרף מכוון, ברשימה ישמר גם המידע מהו קודקוד היציאה ומהו קודקוד הכניסה.) • בניית מסלול: קודקוד יציאה, הקשת הראשונה המחוברת אליו, בטבלה מוצאים את הקצה השני של הקשת, הולכים אל קודקוד זה ברשימת הפגיעות, וכן הלאה.

  49. רשימתפגיעות(incidence list) • ייצגו את הגרף הבא ע"י רשימת פגיעות: v1 e2 e1 v2 v4 e3 e6 e5 e4 v3

  50. רשימתפגיעות(incidence list) • |v| = n, |E|=m • מקום:הרשימה:n+2m, הטבלה:3m סה"כ: O(n+m)= O(n+5m). • ייצוג יעיל במקרה שהגרף דליל. אחרת, אם m יתקרב ל- n2 נגיע למקום כמו מטריצת שכנויות. • במקרים שבהם גרפים הם "דלילים": היחס (|E|+|V|) / |V|2שואף ל- 0 ככל שהגרפים גדלים ולכן עדיפה רשימת פגיעות.

More Related