מבני נתונים (234218) 1

Σχετικά έγγραφα
תורת הגרפים - סימונים

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

מתמטיקה בדידה תרגול מס' 13

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

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות.

חורף תש''ע פתרון בחינה סופית מועד א'

השאלות..h(k) = k mod m

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

Hash Tables (המשך) ערבול (Hashing)

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

אלגוריתמים בתורת הגרפים חלק ראשון

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

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

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

Logic and Set Theory for Comp. Sci.

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

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

ל הזכויות שמורות לדפנה וסטרייך

מבני נתונים עצים שיעור 7

סדרות - תרגילים הכנה לבגרות 5 יח"ל

מבני נתונים ויעילות אלגוריתמים

תרגול פעולות מומצאות 3

מבני נתונים ויעילות אלגוריתמים

Nir Adar גירסה 1.00 עמוד 1

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

Nir Adar

מבני נתונים מבחן מועד א' סמסטר אביב תשס"ו

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

. {e M: x e} מתקיים = 1 x X Y

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

אלגוריתמים / תרגיל #1

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

השאלות ידי מצביעים לילדים.

עץץץץ AVL. עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1, 0, או 1-. הגדרה: במילים אחרות: לכל צומת x בעץ,

מתמטיקה בדידה תרגול מס' 5

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

גבול ורציפות של פונקציה סקלרית שאלות נוספות

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה

logn) = nlog. log(2n

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

מבני נתונים מבחן מועד א' סמסטר חורף תשס"ו

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n,

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

פרק 8: עצים. .(Tree) במשפטים הגדרה: גרף ללא מעגלים נקרא יער. דוגמה 8.1: תרגילים: הקודקודים 2 ו- 6 בדוגמה הוא ).

gcd 24,15 = 3 3 =

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

רשימת משפטים והגדרות

מבני נתונים ואלגוריתמים תרגול #11

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

Algorithms on Strings, Trees, and Sequences, Dan Gustfield Chapter 5, 7.3, 7.4, 7.17

גרפים אלגוריתמים בתורת הגרפים הרצאה 1 גיא פלג 15 במרץ 2012 הגדרה: מגן דוגמאות: זוגות לא סדורים כיוון שבקבוצה סדר לא חשוב.

תרגיל 13 משפטי רול ולגראנז הערות

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין,

3-9 - a < x < a, a < x < a

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

רשימת בעיות בסיבוכיות

x a x n D f (iii) x n a ,Cauchy

פתרון תרגיל 4 יסודות מבני נתונים סמסטר א' תשע"ה שאלה 1:

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

שיטות אנליזה לניתוח זמנים משוערך Amortized Time Analysis

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

אלגברה ליניארית (1) - תרגיל 6

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

תורת המספרים 1 פירוק לגורמים ראשוניים סיכום הגדרות טענות ומשפטים אביב הגדרות 1.2 טענות

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

הגדרה: מצבים k -בני-הפרדה

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

c ארזים 15 במרץ 2017

תורישק :תורישקה תייעבב בוש ןייענ?t- t ל s- s מ לולסמ שי םאה 2

מיון. 1 מיון ערימה (Heapsort) חלק I 1.1 הגדרת ערימה 0.1 הגדרה של המושג מיון מסקנה: הערך הכי גבוה בערימה נמצא בשורש העץ!

{ : Halts on every input}

אלגוריתמים 1, סמסטר אביב 2017

תרגול מס' 6 פתרון מערכת משוואות ליניארית

מבני נתונים ואלגוריתמים תרגול #8-9

שאלה 1 V AB פתרון AB 30 R3 20 R

תורת הקבוצות תרגיל בית 2 פתרונות

Transcript:

מבני נתונים (234218) 1 חומר עזר לבחינה 13 בספטמבר 2016 שימו לב: מותר לצטט טענות המופיעות בדף זה ללא הוכחה. כל טענה אחרת, שאינה מופיעה באופן מפורש, יש לנמק באופן מלא. נימוקים מהצורה "בדומה לטענה שבחומר העזר" לא יתקבלו. 1 קומבינטוריקה ואלגברה בסיסית. n i=1 a i = (a1+an) n 2 משפט 1.1 [סכום סדרה חשבונית] תהא a 1,..., a n סדרה חשבונית עם הפרש.d אזי. n i=1 a i = a 1 qn 1 q 1 משפט 1.2 [סכום סדרה הנדסית] תהא a,1..., a n סדרה הנדסית עם מנה q. אזי. ( ) n k n! k!(n k)! הגדרה 1.3 בהנתן n N ו { n,k {0,..., נגדיר. n ( n ) k=0 k k = n2 n 1, n ( n k=0 k) משפט 1.4 לכל n N מתקיים: = 2 n. ( ) ( n k = n n k) משפט 1.5 לכל n N ולכל n} k {0,..., מתקיים:. ( ) ( n k + n ) ( k+1 = n+1 k+1) משפט 1.6 [זהות פסקל] לכל n N ולכל 1} n k {0,..., מתקיים:.(x + y) n = n k=0 ( n k) משפט 1.7 [הבינום של ניוטון] לכל x, y ולכל n N מתקיים x k y n k 2 חסמי סיבוכיות אסימפטוטיים תהיינה + R f, g : N פונקציות חיוביות ממש, ונניח / N.0 סימון אינטואיציה הגדרה הגדרה שקולה f (n) c g (n) מתקיים n כך שלכל n 0 n 0 וקיים > 0 c קיים > 0 f (n) = O (g (n)) f (n) c g (n) מתקיים n כך שלכל n 0 n 0 וקיים > 0 c קיים > 0 f (n) = Ω (g (n)) f (n) = Ω (g (n)) וגם f (n) = O (g (n)) f (n) = Θ (g (n)) f(n) lim n g(n) = 0 f (n) c g (n) מתקיים n כך שלכל n 0 n 0 קיים > 0 c לכל > 0 < f (n) = o (g (n)) g(n) lim n f(n) = 0 f (n) c g (n) מתקיים n כך שלכל n 0 n 0 קיים > 0 c לכל > 0 > f (n) = ω (g (n)) משפט n) 2.1.log (n!) = Θ (n log משפט 2.2 לכל > 0 ε קבוע מתקיים: ) ε.log n = o (n.h n = Θ (log n) ובפרט,ln (n + 1) H n ln n הסכום ההרמוני. אזי מתקיים + 1 H n n i=1 1 i משפט 2.3 יהא 2.1 חסמים אסימפטוטיים עבור פונקציות רקורסיביות משפט 2.4 [משפט המאסטר] יהיו 1 a b > 1, קבועים, ותהא.f : N R נגדיר את הפונקציה הרקורסיבית הבאה: (n).t (n) = at ( n /b) + f אזי מתקיים:.1 אם a ε) f (n) = O ( n log b עבור > 0 ε קבוע כלשהו, אז a).t (n) = Θ ( n log b.2 אם a),f (n) = Θ ( n log b אז ) n.t (n) = Θ ( n log b a log.3 אם a+ε) f (n) = Ω ( n log b עבור > 0 ε קבוע כלשהו, וגם קיימים < 1 c ו 0 > 0 n כל שלכל n n 0 מתקיים (n),af ( n /b) cf אז (n)).t (n) = Θ (f 1

2.2 סיבוכיות משוערכת הגדרה 2.5 תהא F קבוצת פעולות על מבנה נתונים. נאמר שהקבוצה F רצה בסיבוכיות משוערכת ((n) O g) אם כל סדרה בת m פעולות מ F רצה בזמן ((n) O m) g במקרה הגרוע. 2.2.1 שיטות למציאת חסמים משוערכים עבור סדרה של m פעולות, נסמן את זמן הריצה של הפעולה i m 1 ב t. i הצגנו שלוש שיטות למציאת חסמי זמן ריצה של הסדרה,. m כלומר למציאת חסמים על 1=i t i. m.1 שיטת הצבירה: נוכיח באופן ישיר (על פי ההגדרה) שמתקיים (n)) i=1 t i = O (m g 2. שיטת החיובים: סך זמן הריצה יחסם על ידי כמות כסף שתוענק למבנה הנתונים. בעת ביצוע הפעולה i, המבנה יחזיק "בנק" אשר יתעדכן בעת ביצוע הפעולה ה i ב ( a), i t i כלומר נפקיד בבנק a i שקלים ונמשוך ממנו t i שקלים. נבחין כי אם בסיום סדרת m, ולכן סך הכסף שהוענק למבנה מהווה חסם על זמן הריצה של סדרת הפעולות. i=1 t i m הפעולות הבנק חיובי, אז 1=i a i 3. שיטת הפוטנציאל: נגדיר פונקצית פוטנציאל על מבנה הנתונים, שתסומן באות φ. נגדיר φ i להיות הפוטנציאל של המבנה לאחר i. m i=1 a i m פעולות ) 0 φ הוא הפוטנציאל ההתחלתי). כעת, נגדיר i 1.a i t i + φ i φ נקבל כי אם,φ m φ 0 אז i=1 t i 3 מבני נתונים בסיסיים הגדרה 3.1 שמורה (אינווריאנטה/ Invariant ) של מבנה נתונים היא תכונה המקיימת: לכל פעולה P שניתן לבצע על המבנה, אם השמורה התקיימה לפני ביצוע הפעולה P, אז השמורה תתקיים לאחר ביצוע הפעולה P. 3.1 מערכים משפט 3.2 ניתן לאתחל את כל התאים של מערך לערך קבוע בזמן (1) O במקרה הגרוע. 3.1.1 מערכים דינמיים נסמן ב m את גודל המערך וב n את מספר האיברים בו. נדרוש שיתקיים (n) m. = Θ כלל שינוי הגודל. 1. כאשר המערך מלא (m n), = נקצה מערך חדש בגודל 2m ונעתיק אליו את איברי המערך המקורי. 2. כאשר המערך רבע מלא (m ), n = 1 4 נקצה מערך חדש בגודל 1 2 m ונעתיק אליו את איברי המערך המקורי. טענה. סיבוכיות הזמן המשוערכת של פעולות על מערכים דינמיים היא (1) O. איור 3.1: מערכים דינמיים 3.2 מילון מילון הוא מבנה נתונים התומך בפעולות.Init, Find, Insert, Delete ניתן לממש מילון באמצעות שלל מבני נתונים, ביניהם: עצי חיפוש, עצי,AVL עצי +B, טבלאות ערבול ועוד. 4 עצים בינאריים 4.1 הגדרות כלליות 1. עלה הוא צומת בעל דרגה 0. צומת בעץ יקרא פנימי אם אינו עלה. 2. מרחק בין זוג צמתים בעץ בינארי הוא מספר הקשתות במסלול (הפשוט היחיד) שמחבר בין הצמתים. 3. עומק של צומת הוא מרחקו מהשורש. גובה העץ הוא העומק המקסימלי של צומת בעץ. 4. תת עץ של צומת v הוא אוסף כל הצמתים x כך שהמסלול מ x לשורש עובר דרך v. 5. גובה של צומת v הוא גובה תת העץ שלו. 6. עץ בינארי יקרא מאוזן אם הוא מקיים (n h, = Θ (log כאשר h הוא גובה העץ ו n הוא מספר האיברים בעץ. 2

גובה עץ בינארי. עבור כל עץ בינארי בן n צמתים מתקיים: 1 n,log n h כאשר h הוא גובה העץ. נוסף על כך, גובהו הממוצע של עץ בינארי, כאשר הממוצע מחושב על פני כל העצים בני n צמתים, הוא (n O. (log שמורת החיפוש. עץ בינארי מקיים את שמורת החיפוש אם לכל צומת עם מפתח x, כל הצמתים בתת העץ הימני של x הם בעלי מפתחות גדולים יותר, וכל הצמתים בתת העץ השמאלי של x הם בעלי מפתחות קטנים יותר. 4.1.1 עצים מלאים, שלמים וכמעט שלמים 1. עץ בינארי מלא הוא עץ בו לכל צומת פנימי דרגה 2. 2. עץ בינארי שלם הוא עץ בינארי מלא שבו כל העלים באותו העומק. 3. עץ בינארי כמעט שלם הוא עץ שלם ש(אולי) הוסרו ממנו עלים מהרמה התחתונה, החל מהעלה הימני ביותר. (א) נמספר את צמתי העץ השלם לפי סדר השורות, משמאל לימין, כמתואר בציור. נקרא למספרים האלה אינדקסים. (ב) עץ כמעט שלם בעל n צמתים וגובה h מקיים h+1 1.2 h n 2 (ג) לכל צומת i בעץ, אינדקס בנו השמאלי (אם קיים) הוא 2i ואינדקס בנו הימני הוא + 1 2i. בפרט, צומת הוא עלה אמ"מ 2i. > n (ד) מספר העלים הוא 2/ n ומספר הצמתים הפנימיים הוא 2/ n. איור 4.1: עץ כמעט שלם עם 12 צמתים משפט 4.1 קיים אלגוריתם לבנית עץ כמעט שלם ריק בן n צמתים בזמן (n) O. 4.2 עצי AVL לכל צומת v בעץ בינארי נגדיר: v. הוא גובה תת העץ השמאלי של h L (v) 1. v. הוא גובה תת העץ הימני של h R (v) 2..BF (v) h L (v) h R (v) כאשר,(Balance Factor) הוא מקדם האיזון BF (v).3 שמורת האיזון של.AVL נאמר שעץ בינארי מקיים את שמורת האיזון של AV L אם לכל צומת v בעץ מתקיים 1 (v). BF הגדרה 4.2 נאמר על עץ בינארי שהוא עץ AV L אם הוא מקיים את שמורת החיפוש ואת שמורת האיזון של.AVL 4.2.1 גובה של עצי AVL ועצי פיבונאצ'י F} i } i N המוגדרת באופן הרקורסיבי הבא: הגדרה 4.3 עצי פיבונאצ'י הם סדרת עצים בינאריים F 0 1. הוא עץ המורכב מצומת יחיד. F 1 2. הוא עץ המורכב מזוג צמתים, אחד מהם הוא שורש העץ והשני הוא בנו השמאלי. 3. לכל 2 i, העץ F i הוא העץ המתקבל מחיבור זוג העצים 1 i F ו 2 i F לשורש משותף. 3

משפט 4.4 לעץ פיבונאצ'י F i גובה i. משפט 4.5 יהא T עץ AVL בעל גובה h. אזי מספר הצמתים ב T הוא לפחות כמספר הצמתים בעץ הפיבונאצ'י F. h משפט 4.6 מספר הצמתים בעץ F i הוא 3+i 1 n, כאשר n k הוא מספר פיבונאצ'י ה k. משפט 4.7 מספר הפיבונאצ'י ה k נתון על ידי הנוסחה.n k = Θ ( φ i) ובפרט מתקיים,φ = 1+ 5 2, φ = 1 5 2,n k = φi φ i כאשר 5 מסקנה 4.8 עצי AVL הם עצים מאוזנים, כלומר לכל עץ AVL בן n צמתים גובה (n O. (log 4.2.2 גלגולים בעת הכנסה של איברים לעץ,AVL או הוצאה של איברים ממנו, מקדם האיזון של חלק מהצמתים בעץ עלול לחרוג מהתחום [1,1 ]. הצמתים היחידים ש(אולי) הופר בהם מקדם האיזון, והפך להיות 2 או 2, הם הצמתים לאורך מסלול ההכנסה/הוצאה. במקרה זה, נבצע גלגולים על מנת לתקן את גורמי האיזון. הגדרנו גלגולי בסיס (גלגול לימין וגלגול לשמאל), ומהם בנינו ארבעה סוגי גלגולים RL).(LL, RR, LR, איור 4.2: גלגולי בסיס 4.3 עצי B+ הגדרה 4.9 עץ +B מדרגה m הוא עץ המקיים את התכונות הבאות: 1. כל הערכים נמצאים בעלים, וכל העלים באותה רמה.. מספר הבנים של השורש מקיים c m.2 m 2. לכל צומת פנימי, פרט (אולי) לשורש, יש c בנים, כאשר c m 2.3 לצומת פנימי בעל c בנים יש 1 c אינדקסים, c 1,k 1,..., k כך שמתקיים: (א) כל הערכים שנמצאים בתת העץ השמאלי ביותר של הצומת קטנים (ממש) מ k. 1 (ב) לכל 1 c i 2, כל הערכים שנמצאים בתת העץ ה i של הצומת קטנים (ממש) מ k i וגדולים או שווים 1 i k. (ג) כל הערכים שנמצאים בתת העץ הימני ביותר של הצומת גדולים או שווים ל 1 c k. 4.3.1 תיקונים לאחר הכנסה לאחר הכנסת איבר לעץ, יתכן שדרגתו של צומת מסוים היא + 1 m. במקרה זה, נבצע תיקוני "פיצול" באופן רקורסיבי. 4

4.3.2 תיקונים לאחר הוצאה. m לאחר הוצאת איבר מהעץ, יתכן שדרגתו של צומת מסוים היא 2 1 רקורסיבי. במקרה זה, נבצע תיקוני "הלוואה מאח" או "איחוד" באופן איור :4.3 עץ B+ מדרגה = 5 m 4.4 עצי דרגות הגדרה 4.10 אינדקס (rank) של איבר בקבוצת איברים הוא מיקומו בסדרה הממוינת. 4.4.1 הפעולה Rank(x) נתון עץ חיפוש בינארי, בו כל צומת מחזיק (בנוסף למפתח) שדה נוסף w השומר את מספר הצמתים בתת העץ שלו. נניח ש 0 = (null) w. הפעולה מחזירה את אינדקס האיבר x בקבוצת המפתחות השמורה בעץ..1 אתחל משתנה עזר 0.r 2. חפש את x בעץ, כאשר במהלך החיפוש: (א) בכל פעם שפונים ימינה מצומת,v בצע + 1 (v.left).r r + w (ב) בכל פעם שפונים שמאלה מצומת v, לא משנים את ערך r..3 כשמגיעים לצומת,x נבצע + 1 (x.left),r r + w ונחזיר את.r 4.4.2 הפעולה Select(k) נתון עץ חיפוש בינארי, בו כל צומת מחזיק (בנוסף למפתח) שדה נוסף w השומר את מספר הצמתים בתת העץ שלו. נניח ש 0 = (null) w. הפעולה מחזירה את האיבר x בעל האינדקס k בקבוצת המפתחות השמורה בעץ. 1. נסמן ב v את הצומת הנוכחי בחיפוש, כאשר v מאותחל להיות שורש העץ..2 אם 1 k,w (v.left) = החזר את.v 3. אם 1 k w, (v.left) > חפש רקורסיבית בתת העץ השמאלי של v את האיבר בעל אינדקס k..4 אם 1 k,w (v.left) < חפש רקורסיבית בתת העץ הימני של v את האיבר בעל אינדקס 1 (v.left).k w 4.4.3 מידע נוסף בצמתי העץ כאשר מגדירים עץ דרגות בעל מידע נוסף שאינו מספר האיברים בתת העץ או סכום האיברים בתת העץ, יש להגדיר במפורש: 1. מהו המידע הנוסף שנשמר בכל צומת. 2. כיצד משתמשים במידע הנוסף בצמתים כדי לפתור את הבעיה הנתונה. 3. כיצד מתחזקים את המידע הנוסף (לאחר הכנסה/הוצאה). 4.5 סיכום מימוש מילון כעץ מבנה עץ חיפוש בינארי עץ AVL עצי B+ ובפרט עצי 2 3 כאשר h הוא גובה העץ, ו n הוא מספר האיברים בעץ. סיבוכיות זמן עבור Find, Insert, Delete (h) O במקרה הגרוע, (n O(log בממוצע על הקלט n) O (log במקרה הגרוע n) O (log במקרה הגרוע 5

5 רשימות דילוגים (רנדומיות) הגדרה 5.1 רשימת דילוגים (רנדומית) היא מבנה שמוגדר שכבה על גבי שכבה באופן הבא: 1. כל הערכים נמצאים בשכבה התחתונה ביותר. 2. כל שכבה מיוצגת על ידי רשימה ממוינת, כאשר האיבר הראשון בה הוא צומת דמה (dummy) בעל מפתח והאיבר האחרון בה הוא צומת דמה בעל מפתח +. 3. השכבות ממוספרות מלמטה למעלה, כלומר: שכבה 0 היא השכבה התחתונה ביותר, שכבה 1 היא השכבה הבאה מעליה, וכן הלאה. 4. כל האיברים בשכבה ה 1 + i מופיעים בשכבה ה i. 5. כל איבר מהשכבה ה i מופיע בשכבה ה 1 + i בהסתברות. 1 2/ 6. אם איבר מופיע בשכבה + 1 i, אז יש לו מצביע לאותו איבר בשכבה ה i. 7. גובה רשימת הדילוגים הוא האינדקס של השכבה העליונה במבנה. איור 5.1: רשימת דילוגים 5.1 מימוש מילון על ידי רשימת דילוגים רנדומית 5.1.1 חיפוש איבר x 1. התחל מהשכבה הגבוהה ביותר, i = h (כאשר h הוא גובה רשימת הדילוגים). 2. כל עוד לא הגעת לאיבר (בשכבה התחתונה ביותר), (א) התקדם בשכבה ה i עד הצומת y הראשון המקיים: x y וגם x, < z כאשר z הוא האיבר העוקב ל y בשכבה ה i. (ב) אם הגעת לרמה התחתונה ביותר, בדוק אם y. = x i. אם כן, החזר אותו..ii אחרת, החזר ש x אינו במבנה. (ג) אחרת, קיים ל y מצביע לצומת ברמה 1 i, ובצע: i. ברמה 1 y רד לצומת המוצבע על ידי i..i i 1.ii 5.1.2 הכנסת איבר x 1. חפש את x. אם x נמצא, סיים. 2. שמור מצביע לצומת הימני ביותר בכל שכבה במסלול החיפוש. 3. הוסף צומת חדש בשכבה התחתונה ביותר וקבע את המפתח שלו להיות x. 4. לפי סדר הרמות מלמטה למעלה, בצע: (א) הטל מטבע (הוגן, בעל הסתברות 1 2/ לכל תוצאה). (ב) אם תוצאת הטלת המטבע היא 0, x. הוסף צומת חדש מעל השכבה הנוכחית, וקבע את המפתח בו להיות i..ii אם בשכבה העליונה ביותר הוגרל 0, הוסף שכבה חדשה. בשכבה זו, הוסף את הצומת x וסיים. (ג) אם תוצאת הטלת המטבע היא 1, סיים. 6

5.1.3 הוצאת איבר 1. מצא את האיבר בעל המפתח x. 2. הוצא איבר זה מכל הרמות בהן הוא מופיע. 5.1.4 סיבוכיות זמן ומקום של מימוש מילון על ידי רשימת דילוגים רנדומית 1. סיבוכיות הזמן של כל אחת מהפעולות היא כגובה רשימת הדילוגים, כלומר (h) O. 2. סיבוכיות המקום הממוצעת (כאשר הממוצע מחושב על פני הטלות המטבע האפשריות של האלגוריתם) של רשימת הדילוגים הוא (n) O וגובהה הממוצע n).o (log 6 טבלאות ערבול נתון עולם של איברים U. טבלת ערבול היא מבנה נתונים שמתחזק קבוצה K של ערכים מתוך U, כאשר ידוע U K. נסמן ב n את מספר האיברים בטבלה.α n m וב m את גודל הטבלה, ונגדיר הגדרה. פונקצית ערבול היא פונקציה 1} m.h : U {0,..., נדרוש כי h תהיה פונקציה על המפזרת באופן אחיד וניתנת לחישוב ב ( 1 ) O. בחירת פונקצית ערבול 6.1 ערבול באמצעות פונקציה קבועה מראש 6.1.1 נבחר את פונקצית הערבול מראש. אופן השימוש. איור 6.1: טבלת ערבול,O ( n כלומר (α),o ולכן m) ניתוח סיבוכיות. משום ש h מפזרת באופן אחיד, נקבל כי בממוצע על הקלט מספר האיברים בכל תא הוא סיבוכיות הזמן של הפעולות היא (α) O בממוצע על הקלט. 6.1.2 ערבול אוניברסלי. H m הגדרה 6.1 קבוצה H של פונקציות ערבול תקרא קבוצה אוניברסלית אם לכל,x y U שונים, מספר הפונקציות h H המקיימות (y) h (x) = h הוא (בדיוק) אופן השימוש. בעת אתחול המבנה, נגריל באופן אקראי h H ונשתמש בה לכל אורך הריצה. ניתוח סיבוכיות. כאשר נשתמש בערבול אוניברסלי, נקבל כי כל שני איברים מתנגשים בהסתברות ) ( O בממוצע הסתברותי, כלומר (α) O בממוצע הסתברותי. n m, 1 m ולכן סיבוכיות הזמן של הפעולות היא 6.2 פתרונות להתנגשויות 6.2.1 שרשור Chain Hashing כל תא בטבלה ישמור רשימה מקושרת (או לחלופין עץ מאוזן) של כל האיברים שהוכנסו לתא זה. במקרה זה כל תא יכול לשמור יותר מאיבר אחד. 6.2.2 פונקצית צעד Double Hashing במקרה זה כל תא שומר בדיוק איבר אחד, ובפרט נדרוש n. m נגדיר שתי פונקציות ערבול:,h. r זוג הפונקציות הנ"ל מגדירות סדרה אינסופית של פונקציות ערבול: k 0 h k (x) = (h (x) + k r (x)) mod m הרעיון הכללי. ננסה את התא ה ( x ) h. k אם לא הצלחנו, ננסה את התא (x) h. 1+k 7

מחיקה. נצטרך להגדיר סימון "פנוי להכנסה אך תפוס לצורך חיפוש/מחיקה". כדי למנוע הצטברות של סימונים כנ"ל, שתשפיע על סיבוכיות זמן הריצה של הפעולות, נבצע פעולות Rehash אחת ל ( m ) Ω פעולות. פעולה זו כוללת העתקת כל האיברים לטבלה זמנית בצד, ניקוי הטבלה המקורית והכנסת כל האיברים לטבלה מחדש. ביצוע פעולה זו אחת ל ( m ) Ω פעולות מבטיח סיבוכיות זמן (α) O באופן משוערך. בחירת,h. r יש לבחור את הזוג,h r כך שהפונקציות h k יהיו על ויפזרו באופן אחיד. משום כך, יש לבחור את r כך שלכל x U יתקיים:.gcd (r (x), m) וגם = 1 r (x) 0 6.3 קביעת גודל הטבלה על מנת לקבל (1) Θ α, = נדרוש (n) m. = Θ משום כך, אם ידוע חסם (הדוק) על מספר האיברים, נקצה טבלה (סטטית) בגודל המתאים, ואחרת נשתמש בטבלה הממומשת על ידי מערך דינמי. 6.4 סיכום מימוש מילון כטבלת ערבול 6.4.1 סיבוכיות של הכנסה או הסרה מטבלת ערבול תוך שימוש ב Hashing Chain ערבול "רגיל" ערבול אוניברסלי (α) O בממוצע על הקלט באופן משוערך (α) O בממוצע הסתברותי באופן משוערך דינמית (α) O בממוצע על הקלט (α) O בממוצע הסתברותי סטטית 6.4.2 סיבוכיות של חיפוש בטבלת ערבול תוך שימוש ב Hashing Chain ערבול "רגיל" ערבול אוניברסלי (α) O בממוצע על הקלט (α) O בממוצע הסתברותי דינמית (α) O בממוצע על הקלט (α) O בממוצע הסתברותי סטטית 6.4.3 סיבוכיות של הכנסה, הסרה או חיפוש מטבלת ערבול תוך שימוש ב Hashing Double דינמית סטטית ערבול עם Double Hashing (1) O בממוצע על הקלט באופן משוערך (1) O בממוצע על הקלט באופן משוערך 7 קבוצות זרות (Union-Find) מטרת המבנה היא לתחזק חלוקה של עולם נתון {n,...,1} לקבוצות זרות. לאיברים ניתן מזהים...,j,i ולקבוצות ניתן מזהים...,q,p. הגדרה 7.1 מבנה הנתונים UF הוא מבנה התומך בפעולות הבאות: 1. (n) Init אתחל את המבנה עם העולם {n,...,1} כאשר כל איבר נמצא בקבוצה בגודל 1 (סינגלטון). i. החזר את שם הקבוצה לה שייך האיבר Find (i) 2. 3. (q Union,p) אחד את שתי הקבוצות המזוהות על ידי p ו q והחזר את שם הקבוצה החדשה. לאחר פעולה זו, הקבוצות,p q נהרסות ובמקומן נבנית הקבוצה p. q 7.1 מימוש UF לכל קבוצה ניצור עץ הפוך מכל איברי הקבוצה. שורש כל עץ הפוך יצביע לרשומה שתכיל את מזהה הקבוצה. בנוסף נחזיק שני מערכים, מערך איברים ומערך קבוצות. איור 7.1: המבנה UF 8

הערה. סיבוכיות הזמן של מימוש זה (בלי איחוד לפי גודל ובלי כיווץ מסלולים) היא (1) O עבור איחוד ו ( n ) O עבור חיפוש. משפט 7.2 אם מבצעים איחוד לפי גודל, בו תמיד מפנים את שורש הקבוצה הקטנה לשורש הקבוצה הגדולה, נקבל שגובה כל עץ הפוך הוא log n במקרה הגרוע. מסקנה 7.3 סיבוכיות הזמן של מימוש זה (עם איחוד לפי גודל ובלי כיווץ מסלולים) היא (1) O עבור איחוד ו ( n O (log עבור חיפוש. נוסף על כך, על מנת לממש איחוד לפי גודל, יש לשמור במזהה הקבוצה את מספר האיברים בה. משפט 7.4 אם מבצעים גם כיווץ מסלולים, בנוסף על איחוד לפי גודל, נקבל שסיבוכיות הזמן המשוערכת של הפעולות Find, Union היא.O (log n) מסקנה 7.5 סיבוכיות הזמן של מימוש זה (עם איחוד לפי גודל ועם כיווץ מסלולים) היא (n O (log עבור שתי הפעולות באופן משוערך. נבחין כי במקרה הגרוע סיבוכיות הזמן של Find היא (n O. (log 7.2 המבנה Master-Close נתון אילו יוחסין (קבוע מראש) המיוצג כעץ הפוך מכוון. בתחילת הריצה, כל הצמתים מסומנים כ"פעילים". מבנה הנתונים תומך בשתי הפעולות הבאות בסיבוכיות זמן (n O (log משוערך: 1. (x) Close בהנתן מצביע לצומת x באילן היוחסין, יש לסמן אותו כ"כבוי", אלא אם הוא שורש אילן היוחסין. 2. (x) Master בהנתן מצביע לצומת x באילן היוחסין, מחזיר את האב הקדמון הקרוב ביותר של x באילן היוחסין שמסומן כ"פעיל". אם x פעיל, אז.Master (x) = x 7.3 סיבוכיות מימוש UF אופן המימוש סיבוכיות Find סיבוכיות Union O (n) (1) O מערכים O (1) (n) O רשימות O (log (n משוערך (1) O רשימות + מערכים עם איחוד לפי גודל O (1) (h) O עצים הפוכים O (1) (n O (log עצים הפוכים עם איחוד לפי גודל (n O (log משוערך עצים הפוכים עם איחוד לפי גודל וכיווץ מסלולים 8 ערימות הגדרה 8.1 ערימת מינימום היא מבנה נתונים התומך בפעולות הבאות:.arr איברי הקלט שניתנים במערך n בנה ערימה מתוך MakeHeap (arr) 1. 2. (x) Insert הכנס איבר x לערימה. 3. (x DecKey,p) בהנתן מצביע לצומת בערימה p, הקטן את המפתח שלו לערך x. אם ערכו הנוכחי של המפתח קטן מ x, אל תבצע דבר. 4. () FindMin החזר את האיבר המינימלי בערימה. 5. () DelMin מחק את האיבר המינימלי בערימה. 8.1 מימוש ערימה כעץ כמעט שלם נשמור את האיברים בעץ כמעט שלם (שיכול להיות ממומש על ידי מערך או על ידי עץ דינמי), כאשר נדאג שתתקיים השמורה הבאה: 9

שמורת הערימה. כל בן גדול מאביו. איור 8.1: ערימה כעץ כמעט שלם על מנת לתחזק את שמורת הערימה על עץ כמעט שלם תוך ביצוע פעולות עליה, נגדיר שתי פעולות עזר, SiftUp ו SiftDown. 8.1.1 הפעולות SiftUp ו SiftDown הפעולה.SiftDown בנו המינימלי. האלגוריתם מקבל כקלט מצביע לאיבר עם מפתח x, ומבצע: כל עוד x אינו עלה וגדול מאחד מבניו, החלף בינו לבין הפעולה.SiftUp האלגוריתם מקבל כקלט מצביע לאיבר עם מפתח x, ומבצע: כל עוד x קטן מאביו, החלף בין x לאביו. איור 8.2: הפעולות SiftUp ו SiftDown סיבוכיות זמן O (n) O (log n) O (log n) O (1) O (log n) 8.2 סיבוכיות מימוש ערימה כעץ כמעט שלם פעולה MakeHeap Insert DecKey FindMin DelMin הערה. ניתן להגדיר ולממש באופן סימטרי ערימת מקסימום. 9 מיונים משפט 9.1 כל אלגוריתם מבוסס השוואות המקבל n איברים כלליים וממיינם רץ בסיבוכיות זמן (n Ω n) log במקרה הגרוע ובמקרה הממוצע. 10

הערה 9.2 ראינו מספר אלגוריתמים שממיינים מערך בן n מספרים בזמן (n O n) log במקרה הגרוע, ביניהם merge sort, heap sort ועוד. 9.0.1 אלגוריתם Sort).Counting Sort (Bucket האלגוריתם מקבל סדרה של n איברים מהתחום [k,1] וממיין אותם באופן יציב בסיבוכיות זמן (k O n) + ובסיבוכיות זכרון נוסף (k) O. 9.0.2 אלגוריתם.Radix Sort האלגוריתם מקבל סדרה של n מספרים בעלי d ספרות (כל אחד) המיוצגים בבסיס b וממיין אותם בסיבוכיות זמן ((b O d) n) + ובסיבוכיות זכרון נוסף (b) O. תזכורת. אם x מיוצג בבסיס b על ידי d ספרות, אז x נתון על ידי וקטור ) 0 x = x) 1 d,..., x באורך d שכל אחת מכניסותיו מכילה מספר 1 d x. = לדוגמה, אם x הוא המספר 3425 ביצוג עשרוני, אז הוא מיוצג על ידי הוקטור מהתחום 1} b,...,{0, כך מתקיים: i=0 x ib i.x = 3 i=0 x i10 i = 3 10 3 + 4 10 2 + 2 10 1 + 5 כאשר מתקיים 10 0 x = (3, 4, 2, 5) הערה. מספר הספרות של x ביצוג בבסיס b הוא x. log b 10 מציאת האיבר ה i בגודלו במערך הפעולה Partition 10.0.1 מקבלת מערך A באורך n ומספר x כלשהו, ומפרידה בסיבוכיות זמן (n) O את המערך A לשני מערכים: מערך המכיל את קבוצת האיברים במערך שגדולים או שווים ל x. A x 1. מערך המכיל את קבוצת האיברים במערך שקטנים מ x. A x> 2. הפעולה Select 10.0.2 מערך A באורך,n אינדקס i המקיים i n.1 קלט. פלט. האיבר ה i בגודלו מבין האיברים ב A, בסיבוכיות זמן (n) O במקרה הגרוע. האלגוריתם. 1. חלק את A לחמישיות. 2. מצא חציון של כל חמישיה, והכנס את כל החציונים למערך B. נסמן את גודל המערך B ב k. למציאת החציון של החציונים. נסמן את הערך המוחזר ב x. Select (,B k 2 ) 3. הפעל את.4 בצע x),partition (A, וקבל את שני המערכים:.A <x,a x 5. נסמן ב s את גודל המערך A. x>.6 אם 1 i,s = החזר את.x.7 אם 1 i,s > החזר את הערך המתקבל מביצוע i).select (A <x,.8 אם 1 i,s < החזר את הערך המתקבל מביצוע s).select (A x, i 11 מחרוזות 11.1 מילון המחרוזות Trie הגדרה 11.1 נתון א"ב סופי וקבוע Σ, ונתון תו / Σ $. מחרוזת מעל Σ היא סדרה סופית של תוים מ Σ שנגמרת ב $ ($ משמש בתפקיד.(null terminator נניח שמוגדר יחס סדר לקסיקוגרפי על האותיות, למשל עבור הא"ב האנגלי מתקיים a. < b < c < < z נוסף על כך, נניח ש $ קטן לקסיקוגרפית מכל אות ב Σ. הגדרה Trie 11.2 הוא מילון מחרוזות, כלומר מבנה נתונים התומך בפעולות: 11

1. () Init אתחל מבנה ריק. 2. (s) Insert הכנס מחרוזת s למילון. 3. (s) Remove הוצא את המחרוזת s מהמילון. 4. (s) Find החזר "כן" אם ורק אם המחרוזת s נמצאת במילון. 11.1.1 מימוש Trie על ידי עץ נחזיק עץ בו לכל צומת פנימי יש לכל היותר + 1 Σ בנים. כל צומת ישמור את הקשתות לבניו במערך בגודל + 1 Σ. כל קשת תסומן בתו המתאים לה (לפי הכניסה במערך). משפט 11.3 כל מחרוזת שהוכנסה לעץ מובילה לעלה אחר ב Trie, ולהיפך, כלומר כל עלה מתאים למחרוזת אחרת שהוכנסה למבנה. משפט 11.4 סיור Preorder ב Trie, בו עוברים על הקשתות של כל צומת לפי סדר לקסיקורגפי, מגיע לעלה שמתאים למחרוזת s 1 לפני שהוא מגיע לעלה שמתאים למחרוזת s 2 אם"ם s 1 < s 2 בסדר לקסיקוגרפי. איור :11.1 Trie שמכיל את המחרוזות coca, cola, t, tea 11.2 סיבוכיות מימוש מילון מחרוזות כ Trie פעולה סיבוכיות זמן O (1) O ( s ) Init Find, Insert, Remove 11.3 עצי סיומות Trees) (Sux הגדרה 11.5 עץ סיומות של מחרוזת s הוא Trie שאליו הוכנסו כל הסיומות של המחרוזת s (עם תו הסיום $). ניתן לבצע שני שלבי דחיסה על עץ סיומות, שבהם מבצעים: 1. נסלק מהעץ צמתים בעלי בן יחיד ונחליף שרשרת קשתות בקשת בודדת שתכיל את תת המחרוזת המתאימה. 2. במקום לכתוב על כל קשת את תת המחרוזת שאמורה להיות כתובה עליה, נשמור שני מצביעים לתחילת תת המחרוזת הנ"ל ולסופה. לאחר שני שלבי הדחיסה האלה, סיבוכיות המקום של עץ הסיומות הדחוס היא ( s ) O. משפט [1995 11.6 [Ukkonen, קיים אלגוריתם לבנית עץ סיומות דחוס של מחרוזת s בסיבוכיות זמן ( s ) O. משפט 11.7 מחרוזת r היא תת מחרוזת של מחרוזת s אם"ם r היא רישא של סיפא של s. 12

עץ סיומות לא דחוס עץ סיומות דחוס איור 11.2: עצי סיומות של banana 11.3.1 עץ סיומות מוכלל עץ סיומות מוכלל של קבוצת מחרוזות } k S = s} 1,..., s הוא Trie המכיל את כל הסיומות של כל המחרוזות מ S. באופן דומה להגדרת עץ סיומות דחוס (עבור מחרוזת אחת), ניתן להגדיר עץ סיומות מוכלל דחוס. משפט 11.8 ניתן לבנות עץ סיומות ( דחוס מוכלל של קבוצת מחרוזות } k S = s} 1,..., s מעל א"ב בגודל קבוע על ידי אלגוריתם הקופסה k ).O השחורה בסיבוכיות זמן i 1=i s איור :11.3 עצי סיומות מוכלל של המחרוזות } 2 {xabxa$ 1, ba$ 12 גרפים 12.1 דרכי יצוג של גרפים 12.1.1 תזכורת הגדרות ומשפטים בתורת הגרפים הגדרה 12.1 1. גרף (לא) מכוון (E G =,V) הוא מבנה המורכב מקבוצת צמתים V וקבוצת קשתות (לא) מכוונות E. 2. בהנתן גרף מכוון G, גרף התשתית של G הוא הגרף הלא מכוון המתקבל מ G על ידי "מחיקת" כיווני הקשתות. 3. בהנתן גרף לא מכוון (E G =,V) וצומת v, V הדרגה של v מוגדרת להיות מספר הקשתות שנוגעות ב v, ומסומנת (v) d. 4. בהנתן גרף מכוון (E G =,V) וצומת v, V דרגת הכניסה של v מוגדרת להיות מספר הקשתות הנכנסות ל v, ומסומנת (v) d. in באופן דומה, דרגת היציאה של v מוגדרת להיות מספר הקשתות היוצאות מ v, ומסומנת (v) d. out נוסף על כך, נגדיר את הדרגה של d. (v) d in (v) + d out (v) נכנסות אליו או יוצאות ממנו, ונסמנה כלומר להיות מספר הקשתות שנוגעות ב v, v 13

5. גרף פשוט הינו גרף ללא לולאות עצמיות וללא קשתות מקבילות. 6. גרף ממושקל צמתים הוא גרף בו מוגדרת פונקצית משקל על הצמתים w. : V R 7. גרף ממושקל קשתות הוא גרף בו מוגדרת פונקצית משקל על הקשתות w. : E R 8. גרף לא מכוון יקרא קשיר אם קיים מסלול בין כל זוג צמתים בגרף. הגדרה שקולה: גרף לא מכוון יקרא קשיר אם קיים צומת ממנו יש מסלול לכל צומת אחר בגרף. 9. גרף מכוון יקרא קשיר היטב אם קיים מסלול (מכוון) בין כל זוג צמתים בגרף..10 גרף ) E G = (V, הוא תת גרף של E) G = (V, אם V V וגם.E E.11 בהנתן גרף E) G = (V, וקבוצת צמתים,V V תת הגרף המושרה על ידי V הוא תת הגרף ) E G = (V, בו E E היא קבוצת כל הקשתות ששני קצותיהן ב V. 12. בהנתן גרף (E G, =,V) רכיב קשירות הוא קבוצה מקסימלית של צמתים V V המשרה גרף קשיר. 13. גרף לא מכוון הוא יער אם הוא חסר מעגלים. 14. גרף לא מכוון הוא עץ אם הוא יער קשיר..15 עץ ) E T = (V, הוא עץ פורש של גרף E) G = (V, אם הוא תת גרף של G וגם.V = V 16. בהנתן גרף מכוון (E G, =,V) צומת v V הוא שורש אם קיים מסלול מ v לכל צומת בגרף. 17. בהנתן גרף מכוון (E G, =,V) צומת v V הוא מקור אם דרגת הכניסה שלו היא 0. 18. בהנתן גרף מכוון (E G, =,V) צומת v V הוא בור אם דרגת היציאה שלו היא 0. סימון. בהנתן גרף E),G = (V, נסמן V.m E,n.0 m ( n 2) משפט 12.2 גרף מכוון שאין בו קשתות מקבילות מקיים m n 2 0. גרף לא מכוון שאין בו קשתות מקבילות מקיים + n. v V משפט 12.3 לכל גרף E),G = (V, מכוון או לא מכוון, מתקיים E d (v) = 2 משפט G 12.4 הוא עץ G חסר מעגלים וכל הוספה של קשת תיצור מעגל ב G G קשיר וכל הסרה של קשת תפגע בקשירות G לכל זוג צמתים ב G קיים מסלול פשוט יחיד המחבר ביניהם. 12.1.2 רשימת סמיכויות באמצעות רשימת סמיכויות נוכל לייצג גרף שצמתיו ממוספרים {n,...,1}. המבנה מוגדר על ידי מערך A בגודל n של רשימות. בגרף מכוון, הרשימה [i] A שומרת את כל הקשתות היוצאות מצומת i. בגרף לא מכוון, הרשימה [i] A שומרת את כל הקשתות הנוגעות בצומת i. 12.1.3 מטריצת סמיכויות באמצעות מטריצת סמיכויות נוכל לייצג גרף שצמתיו ממוספרים {n,...,1}. המבנה מוגדר על ידי מטריצה A בגודל n n כך שבכניסה ה ( j,i) מופיע 1 אם הקשת (j,i) בגרף, ואחרת 0. נבחין כי בגרף לא מכוון, המטריצה A היא סימטרית. 12.2 סיבוכיות מימוש גרף מטריצת סמיכויות רשימת סמיכויות O (d (i)) O (1) Find (i, j) בדיקת קיום הקשת (j,i) O (d (i)) O (1) Insert (i, j), Delete (i, j) הוספת/הסרת הקשת (j,i) Neighbors (i) O (d (i)) O (n) מעבר על כל שכני הצומת i סיבוכיות מקום 2) O (n + m) O ( n 14

12.3 מימוש אלגוריתמים בסיסיים בגרפים 12.3.1 אלגוריתם למיון טופולוגי הגדרה 12.5 בהנתן גרף מכוון E),G = (V, מיון טופולוגי של G הוא פונקציה חח"ע ועל n} N : V {1,..., המקיימת את התכונה הבאה: אם (u, v) E אז (v).n (u) < N משפט 12.6 בהנתן גרף G, קיים ל G מיון טופולוגי אם ורק אם G חסר מעגלים (מכוונים). רעיון האלגוריתם. 1. כל עוד קיים מקור בגרף, (א) מצא מקור v. (ב) הגדר ל v את המספור הקטן ביותר בתחום {n,...,1} שעוד לא ניתן לאף צומת. (ג) מחק את v מהגרף, וכן את כל הקשתות היוצאות ממנו. הערה 12.7 בהרצאה הצגתם מימוש של האלגוריתם בסיבוכיות זמן (m O n) + כאשר G נתון ברשימת סמיכויות. 12.3.2 אלגוריתם Prim למציאת עץ פורש מינימום הגדרה 12.8 בהנתן גרף (E G =,V) עם פונקציה משקל על הקשתות + R w, : E עץ פורש מינימום של G הוא עץ פורש של G שסכום משקלי קשתותיו מינימלי. הערה 12.9 בהרצאה הצגתם אלגוריתם למציאת עץ פורש בגרף G שרץ בסיבוכיות זמן (n O, m) log כאשר G נתון ברשימת סמיכויות. נוסף על כך, קיים מימוש של האלגוריתם בסיבוכיות זמן (n O. m) + n log 12.3.3 אלגוריתם BFS המטרה. בהנתן גרף לא מכוון (E G =,V) וצומת i, V מצא את רכיב הקשירות של i. האלגוריתם. עבור G הנתון כרשימת סמיכויות, 1. אתחל מצביע p לתחילת רשימת השכנים של הצומת i. 2. סמן את הצומת i..3 כל עוד,p null (א) אם הצומת u המוצבע על ידי p עוד לא סומן, i. לסוף הרשימה של צומת u שרשר את רשימת השכנים של i. u. סמן את.ii (ב) קדם את p צעד אחד קדימה ברשימה. 4. בסיום האלגוריתם, כל הצמתים שסומנו נמצאים ברכיב הקשירות של i. סיבוכיות הזמן של האלגוריתם הנ"ל היא (m) O. הערה 12.10 על ידי שינוי קטן של האלגוריתם המוצג לעיל, ניתן לקבל את כל רכיבי הקשירות בגרף בזמן (m O. n) + 12.3.4 אלגוריתם למציאת המסלול הארוך ביותר בגרף המטרה. בהנתן גרף מכוון (E G, =,V) יש לחשב את אורך המסלול הארוך ביותר בגרף, אם קיים כזה. טענה 12.11 אם קיים מעגל ב G, אז אורך המסלול הארוך ביותר ב G אינו חסום. 15

האלגוריתם. 1. מצא מיון טופולוגי N על G. (א) אם לא קיים מיון טופולוגי, החזר "אורך המסלול לא חסום"..2 עבור i = n עד = 1,i (א) נסמן ב v את הצומת שעבורו N. (v) = i (ב) אם v הוא בור, הגדר = 0 (v) L. (ג) אחרת, נסמן ב { {u 1,..., u k את בניו של,v ונגדיר (u).l (v) = 1 + max u {u1,...,u k } L.3 החזר את (v).max v V L סיבוכיות הזמן של האלגוריתם לעיל הוא (m O n) + כאשר G מיוצג ברשימת סמיכויות. 16