1 - אוסף של איברים - לעיתים מסודרים לינארית 1) לכל a=b,a b 2) טרנזיטיביות: a>c b>c, a>b דוגמה: שלמים, ממשיים, אותיות. - רשום: {1,4}, {תכונה { X - חברות:

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות.
מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה
מתמטיקה בדידה תרגול 3.
Data Structures: Sorts, CS, TAU 1 שמושים ביישומים רבים יש n רשומות, לכל רשומה מפתח: K 1, …..,K n רוצים לסדר את הרשומות כך שהמפתחות לא בסדר יורד (יתכנו.
פעולות בסיסיות על קבוצות מושגים : - אוסף של איברים - לעיתים מסודרים לינארית 1 ) לכל a=b,a b 2 ) טרנזיטיביות : a>c b>c, a>b דוגמה : שלמים, ממשיים, אותיות.
פעולות מילון Insert, Delete, Search Binary Search Tree, AVL, 2-3 Tree, Skip List O(log n) האם יש מבנה עם סבוכיות (1)O? לא למפתח כלשהו.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
- אמיר רובינשטיין Union-Find 1. הגדרה: מבנה נתונים, אשר בהינתן אוסף איברים המחולקים לקבוצות זרות, מאפשר ביצוע הפעולות הבאות: Find(i) – החזר.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
משפט ההרכבה Composition Theorem תהי C מחלקה של פונקציות בוליניות תהי נגדיר סדרת פונקציות שניתנות לחישוב בזמן פולינומיאלי.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
תחשיב הפסוקים חלק ג'. צורות נורמליות א. DF – Disjunctive Form – סכום של מכפלות. דוגמא: (P  ~Q  R)  (R  P)  (R  ~Q  ~P) הגדרה: נוסחה השקולה לנוסחה.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Union-Find A data structure for maintaining a collection of disjoint sets Course: Data Structures Lecturer: Hanoch Levy January 2010.
תרגול 7 עצי B
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
Sorting II: הפרד ומשול. Last week: in-place sorting Bubble Sort – O(n 2 ) comparisons –O(n) best case comparisons, O(n 2 ) exchanges Selection Sort -
1 ייצוג באמצעות עצים שונים מתוחכם רק לקבוצות גדולות (תקורה בפעולות ובתכנות!!!) עצי חיפוש בינאריים BINARY SEARCH TREES תחום סדור (> < =) תחום איברים גדול.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
Ray 7 דוגמא אלגוריתם 1.קבל דוגמאות 2. פלט f a עבור הדוגמה a המינימלית החיובית ?
1 שמושים ביישומים רבים יש n רשומות, לכל רשומה מפתח: K 1,…..,K n רוצים לסדר את הרשומות כך שהמפתחות לא בסדר יורד (יתכנו כפולים) קריטריונים ליעילות: לא תמיד.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
גרפים - Graphs גרף G(V,E) מורכב מקבוצת צמתים V וקבוצת קשתות E.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
תזכורת : אלגברה ליניארית מסקנה קלט : וקטורים פלט : האם u תלוי ליניארית ב קלט : מערכת של n משואות לינאריות ב -m נעלמים. פלט : פתרון, או שאין כזה. אלגוריתם.
עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky,
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מיון (Sorting) קלט : מערך בן n מספרים. פלט : מערך ובו המספרים אותם מאוחסנים בסדר עולה
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 - גמישות בבינאריות גמישות בעומק - עץ חיפוש בינארי: ממוצע O(log n) גרוע ביותר (O(n - היינו רוצים לשמור את העץ מאוזן תמיד Data Structures, CS, TAU
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבנה מחשבים תרגול מספר 3. טענה על עצים משפט: בעץ שדרגת כל קודקודיו חסומה ב-3, מספר העלים ≤ מספר הקודקודים הפנימיים + 2. הוכחה: באינדוקציה על n, מספר הקודקודים.
1 מבוא למדעי המחשב הרצאה 21: Queue, Iterator & Iterable.
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
תרגול 8 Skip Lists Hash Tables. Skip Lists Definition: – A skip list is a probabilistic data structure where elements are kept sorted by key. – It allows.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Tirgul 12 Trees 1.
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
מבנה נתונים ואלגוריתמים
ערבול (Hashing) חומר קריאה לשיעור זה:
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
Data Structures, CS, TAU, Splay Tree
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
Presentation transcript:

1 - אוסף של איברים - לעיתים מסודרים לינארית 1) לכל a=b,a b 2) טרנזיטיביות: a>c b>c, a>b דוגמה: שלמים, ממשיים, אותיות. - רשום: {1,4}, {תכונה { X - חברות: x A, x A - קבוצה ריקה: - בד”כ אותיות קטנות = איברים, גדולות = קבוצות - x y חסר משמעות - תת קבוצה (מוכל): A B - קבוצת על: A B - הכלה ממש: A B - פעולות: A B, A B, A–B Data Structures, CS, TAU פעילויות בסיסיות על קבוצות - מושגים

2 UNION (A, B, C) INTERSECTION (A, B, C) DIFFERENCE (A, B, C) MERGE (A, B, C) = disjoint set UNION (לא מוגדר אם הקבוצות אינן זרות) MEMBER (x, A) MAKENULL (A) INSERT (x, A) DELETE (x,A) ASSIGN (A, B) MIN (A) EQUAL (A, B) FIND (X) Data Structures, CS, TAU מבני נתונים אבסטרקטיים לקבוצות

3 1. ווקטור ביטים (Cormen: Direct address Table) טוב לקבוצה צפופה Const N type SET = packed array[1…N] of boolean יתרונות: DELETE, MEMBER, INSERT = O(1) UNION, INTERSECTION, DIFF = O(N) N גודלה של הקבוצה האוניברסלית - עבור קבוצה כללית: נבצע MAPPING מאברי התחום ל- INTEGERS חסרונות: אם הקבוצה אינה צפופה Data Structures, CS, TAU ייצוגים של קבוצות

4 2) רשימה מקושרת - אין בעיות של גודל קבוצה - האיברים לא צריכים להיות תת קבוצה של קבוצה אוניברסלית סופית. - ביצוע איחוד, חיתוך, וחיסור: אם הרשימות אינן ממוינות - אם ממויינות: - למצוא N איברים: - אבל כולם ביחד: - למצוא איבר בודד: Data Structures, CS, TAU ייצוגים של קבוצות (המשך)

5 השיטה: ריצה משולבת על שתי הרשימות. כל פעם מקדמים את הקטן. חיתוך: איחוד:הכנס לאחוד וקדם שניהםקדם קטן והכנס לאחוד חיסור:קדם שניהםקדם קטן (הכנס) טיפול זנבות: צרף השמט צרף (השמט) סיבוכיות:O(N) - כי בכל פעולה מתקדמים באחד Data Structures, CS, TAU ייצוגים של קבוצות (המשך) הכנס לחיתוך וקדם שניהם זהים קדם הקטן אחרת

6 מבנה נתונים להחזקת קבוצות שבו רוצים INSERT, DELETE, MEMBER דוגמה: קלט מורכב מ - 1. (‘F’, שם) 2. (‘U’, שם) 3. (?, שם) 1. סמן ח”כ כ”טוב” 2. סמן ח”כ כ“רע” 3. האם “רע” או “טוב”? רוצים לשמור האינפורמציה ולענות על שאילתות מסוג 3 Data Structures, CS, TAU מילון

7 1) רשימה מקושרת 2) Bit Vector – מאוד יעיל אם התחום מוגבל וקטן 3) מערך - טוב רק אם אין הרבה דינמיות (שינוי מבנה) אם לא ממויין: INS = O(1) DEL = O(N) MEM = O(N) אם ממויין: INS = O(N) DEL = O(N) MEM = O(logN) Data Structures, CS, TAU יישום המילון

8 יישום מערך ( - O(Nווקטור ביטים - O(1) אבל מוגבל בגודל. HASH - בממוצע זמן קבוע ואין מגבלת גודל כמו בווקטור הביטים. HASH פתוח (Chaining) : - נחזיק B סלים שבהם נאחסן את האיברים (Buckets) - גישה לכל סל ב O(1) -חפוש בסל לינארי. - Overflow ברשימות 0 1 B-1 פונקצית :Hash הכנסת איבר:1) חישוב h(x)o 2) הכנסתו ברשימה המתאימה עבור כל ערך h(x), x הוא ערך הפונקציה ונופל בתחום.0, 1, …B-1 Data Structures, CS, TAU HASH TABLE ליישום המילון

9 משתמשים רק בטבלה (בלי רשימותOverflow ) 0 1 B-1 Bucket Table אם h(x) גורמת התנגשות: מחשבים (rehash) h 2 (x) ואח”כ h 3 (x) דוגמה פשוטה : Linear Hashing H i (x) = (h(x)+i) mod B a b c d e f fcabdefcabde Data Structures, CS, TAU HASH סגור (Open Addressing)

10 - בדוק h1(x), h2(x)…o והשווה את האיבר הנמצא עם x - בדיקה עד שנמצא “ריק” (צריך ערך ל”ריק”) - אם השמטות אסורות בישום, אזי ריק x איננו. - אבל: אם השמטות מותרות: ריק איננו! דוגמה: Ins (a, 1), Ins (b, 1), Ins (c, 1) Del (b) Member (c) abcabc א) בחיפוש של איבר - לפסוח עליו ב) בהכנסה - ניתן להשתמש בו נצטרך לסמן “deleted” במקום שהושמט Data Structures, CS, TAU בדיקת חברות (MEMBER) ב-HASH סגור

11 נתון: B סלים N איברים N/B = load factor - נניח: הכנסה של כל איבר פעם אחת - בממוצע יש בכל סל N/B איברים - לכן כל N/2 האיברים האחרונים דורשים כל-אחד פעולות (הכנסת איבר לרשימה ממויינת) וסה”כ כל N האיברים דורשים: - אזי אםN B סה”כ אם חפוש בשכיחות דומה: Data Structures, CS, TAU ביצועים של Hash פתוח (Chaining)

12 הנחות::SIMPLE UNIFORM HASHING (1 לכל מפתח יש אותה הסתברות ליפול בכל תא אחרי שהופעלה עליו פונקצית ה HASH- ללא תלות במפתחות אחרים. 2) פונקצית HASH מחושבת ב O(1) זמן.  בפונקציות HASH ההגדרה “לכל מפתח יש אותה הסתברות ליפול בכל תא" אינה במובן של מפתח (ערך) ספציפי, כי: עבור פונקציה נתונה מפתח נתון ייפול בדיוק בתא אחד! לכל התאים 0, 1, …B-1 כלומר: עבור מפתח אקראי ההסתברות ליפול בכל תא הינה  הגדרה שכן תופסת: Data Structures, CS, TAU ביצועים של Hash פתוח (Chaining) - המשך

13 1) אם : אז h(k) = k B מקיימת את הנחה (1) 2) אם k מספרים שלמים: h(k) = k mod B (עדיף לקחת B ראשוני) 3) אם k שלמים: h(k) = B (kA mod 1) החלק השבור של kA B ראשוני, 0<A<1 Knuth ממליץ: Data Structures, CS, TAU דוגמאות לפונקציות HASH

14 - משתמש “זדוני” יכול לבחור n מפתחות, כולם לתוך אותו סל. ממוצע זמן חיפוש - נכון עבור כל פונקצית Hash קבועה. - דרך מניעה יחידה: בחירת פונקציה באקראי לא תלויה במפתחות. - בגלל אקראיות האלגוריתם יתנהג שונה בכל ריצה (על אותו input ) input - מסויים אינו יכול “לסבול” באופן תמידי. - עבור כל input ההסתברות לבצועים גרועים קטנה (וזהה לקלטים אחרים דומים) Data Structures, CS, TAU UNIVERSAL HASHING

15 H - אוסף סופי של פונקציות Hash שממפות תחום U ל B סלים{0, 1,…B-1} H נקרא אוניברסלי אם: לכל x, y U מספר הפונקציות h Hכל ש h(x )=h(y) הינו B / |H| כלומר: אם פונקציה נבחרת אקראית מ- H אזי סיכוי ההתנגשות של x ו y הינו 1/B משפט אם h נבחרת מאוסף אוניברסלי של פונקציותhash ומשומשת להכניס N מפתחות לתוך טבלה בגודל N B,B, אזי תוחלת מס’ ההתנגשויות הקשורות במפתח x הינה קטנה מ 1. Data Structures, CS, TAU UNIVERSAL HASHING - המשך TAU vs misrad hapniim

16 הוכחה: יהי: =C yz אם z, y מתנגשים אחרת 0 1 לכן: E[C yz ] = 1 B )כי z, y מתנגשים בהסתברות 1 ) B יהי C x מס’ ההתנגשויות הכולל של X אזי: Data Structures, CS, TAU הוכחת המשפט תוחלת סכום = סכום תוחלות

17 - בחר B ראשוני. - פרק x ל r+1 בתים x=(x 0, x 1,…x r ) - דרישה: ערך כל byte קטן מ B- - יהי a={a 0, …a r } רצף של אברים נלקחים באקראי מהקבוצה {0, 1,…B-1} ונגדיר h a H : Data Structures, CS, TAU בחירת קבוצה אוניברסלית

18 האוסף H הוא אוסף אוניברסלי של פונקציות Hash הוכחה: - ניקח שני מפתחות שונים כלשהם x y - בלי הגבלת הכלליות נניח x 0 y 0 - נסתכל על בחירה שרירותית שלa 1, a 2,…a r טענה: עבור הבחירה הנ”ל ישנו בדיוק a 0 בודד המקיים h(x)=h(y) הוכחה: כדי שיתקיים h(x)=h(y) חייב להתקיים: אבל B הוא ראשוני ולכן יש יחידי הפותר את המשוואה a 0 w=z וזה נכון כי אם a 0 ’w=z, a 0 w=z אז (a 0 -a 0 ’)w=B בניגוד לראשוניות של B 0 a 0 B Data Structures, CS, TAU משפט

19 - לכן יש בדיוק ערכים של {a 0, …a r } שעבורם x ו y מתנגשים לכל (x,y) - היות ומס’ הערכים של a={a 0, …a n } הוא בדיוק x ו-y מתנגשים בדיוק בהסתברות: H אוניברסלית Data Structures, CS, TAU המשך ההוכחה

20 B - סלים N - איברים (כרגע בטבלה) אם התנגשנו סיכוי התנגשות שניה גבוה (כבר נפלנו באזור “מועד”) Hash לינארי: נניח: פונקצית rehash שולחת בצורה אקראית. “אמונה”: זה הטוב ביותר Data Structures, CS, TAU הערכת ביצועים Hash סגור (OPEN ADDRESSING)

21 הסתברות לפחות להתנגשות אחת: הסתברות לפחות לשתי התנגשויות: הסתברות לפחות ל i התנגשויות: עבור N, B גדולים: אבל: ממוצע: הצלחה Data Structures, CS, TAU הערכת ביצועים - המשך

22 חשבון מסובך ייתן אם נדייק ונחליף ב: כמה עולה להכניס האיברים:1, 2,…M בממוצע: Data Structures, CS, TAU הערכת ביצועים - המשך

23 למלא את הטבלה יקח: logB בממוצע לאיבר כלומר: - מילוי הטבלה – פונקציה B - כל שבר שונה מ- 1 – לא תלויים ב- B אבל למלא 90% (M=0.9B) : 10/9 ln10 בדיקת חברות - לאיבר שלא קיים - כמו הכנסה - לאיבר שקיים - כמו הממוצע עד כה קיים: לא קיים: Data Structures, CS, TAU הערכת ביצועים - המשך

24 הערה: אם M אחוז (  ) של B – אזי יעילות הכנסה היא: לא תלוי ב-B!!! כלומר: למלא 90% מ 1000 למלא 90% מ שווה!! אבל למלא הכל lnB סיבה: השבריר האחרון של המילוי שבו אורך השרשרות פרופורציונלי למספר הסלים – קובע. Data Structures, CS, TAU הערכת ביצועים - המשך

25 1) לינארי: h i (x) = h(x) + i (mod B) בעייתי כי גורם התקבצות. h i (x) = h(x) + C i (mod B) 2) גרוע מאוד מכיוון שיחזור על עצמו !!! אם B מתחלק ב C (או גורם משותף) דוגמא : C=20 B=50 C i = 20, 40, 10, 30, 50, לכן: צריך ש B ו C בלי גורם משותף. אבל - תופעת ההתקבצות לא נפתרת. סיבה: התקבצות נובעת מכך ש h i מחושבת כפונקציה של המקום בטבלה ולא של מס’ ההתנגשויות (i) – כל מי שנופל על אותו תא מקבל את אותה [h i !!] Data Structures, CS, TAU פתרון התנגשויות Rehash

26 3) יותר טוב:h i (x) = h(x) + d i (mod B) כש d i הינו פרמוטציה של 1, 2, … B-1 דוגמא : B=5d 1 =4, d 2 =1, d 3 =2, d 4 =3 - מונע שכל מי שנופל על h(x) יפול באותה השרשרת. ( כמובן לא מונע שבעלי h(x) זהה יפלו על שרשרת זהה! ) הערה: סתם פרמוטציה אינה טובה. לדוגמא: d 1 =1, d 2 =2, d 3 =3, d 4 =4 Data Structures, CS, TAU פתרון התנגשויות Rehash - המשך

27 - טבלה מלאה בעיה רה-ארגון כשמבנה הנתונים מתמלא (חוקי אצבע): טבלה פתוחה: אם N 2B כדאי להכפיל הגודל ולהעתיק. טבלה סגורה: אם N > 0.9B במקרה של DELETIONS כשכמות המקומות הפנויים קטן [0.1B] Data Structures, CS, TAU רה-ארגון

28 (CORMEN CH7, pp140) קבוצות עם הפעולות: INSERT DELETEMIN דוגמה: תור שבו נכנסות פעולות לפי סדר, אבל יוצאות לא ב FIFO אלא לפי עדיפות. “דוגמה מהחיים”: ג’ובים במחשב (עם עדיפויות שונות) נהול חבילות בנתבים יישומים: 1) רשימה מקושרת לא מסודרת הכנסה O(1): שליפה O(N): 2) רשימה מקושרת מסודרת שליפה O(1): הכנסה O(N): (N/2) פעולות Data Structures, CS, TAU תורי עדיפויות PRIORITY QUEUES

29 עץ בינארי, מאוזן ככל האפשר (רק ברמה התחתונה חסרים). אבא קטן מבניו דוגמה: שימו לב: אין קשר בין צומת לדודיו !!! Data Structures, CS, TAU עץ מוסדר חלקית HEAP

30 1. הוסף הערך החדש ב”סוף העץ”. 2. עדכן מבנה העץ ע”י הצפת הערך החדש כלפי מעלה (השווה אותו עם אביו עד שהעץ “מיושב”) טענה אינדוקטיבית: בכל רגע כל צומת (פרט למוכנס) גדול מכל אבותיו הקדמונים. Data Structures, CS, TAU ביצוע INSERT

31 1. החזר את ערך השורש. 2. החלף השורש עם העלה האחרון והשמט עלה אחרון. 3. "השקע” את השורש כלפי מטה עד שהעץ יהיה “נורמלי”. בהשקעה - החלף עם הבן הקטן ביותר. Data Structures, CS, TAU ביצוע DELETEMIN

32 עץ כמעט מלא נוח ליישם במערך שבו i הוא אב של 2i ושל 2i+1 ביישום זה: - (שורש)MIN נמצא ב- A[1] - עלה אחרון נמצא ב- A[Last] - אינפורמציה משפחתית ע”י הכפלה/חלוקה ב- 2. סבוכיות הפעולות: עץ בינארי - עומקו מס’ הצמתים הינו לכן סיבוכיות של INSERT, DELETEMIN היא: Data Structures, CS, TAU יישום העץ

33 מיון איברים - הכנס N איברים - בצע DELETEMIN של N איברים O(NlogN) תור עדיפויות דינאמי. Data Structures, CS, TAU שימושים

34 (Many to Many Relationships & Multilists) דוגמה ליחס רב-רב ערכי: אברהם יצחק יעקב יוסף שרה רבקה רחל לאה xxxxxxxx xxxxxxxx xxxxxx CS101 CS102 CS103 CS104 מיפוי בין סטודנטים והקורסים בהם הם משתתפים. רוצים לדעת בד”כ: לכל קורס - רשימת סטודנטים לכל סטודנט - רשימת קורסים Data Structures, CS, TAU יחסים רב-ערכיים ורבי רשימות

35 ישום: 1. האינפורמציה כמטריצה בינארית. 2. מיפוי משמות למטריצה טבלת (Hash) בעיה : דלילות המטריצה. דוגמה: 500 קורסים, 10,000 תלמידים. CS101 CS102 CS אברהם יצחק יעקב HASH Data Structures, CS, TAU יישום במערך בינארי

36 יישום דומה: מטריצה דלילה. אפשרות ב’: החזר מצביע מכל רשומת הרשמה לקורס המתאים ולסטודנט המתאים. סבוכיות: למציאת כל הקורסים של סטודנט הלוקח k קורסים נצטרך לרוץ על-פני k רשימות. אפשרות א’: השתמש באחרון של כל רשימה כדי לפנות חזרה לאבי הרשימה. לשם מציאת האנפורמציה הדרושה: CS101 אברהם CS102CS103 יצחק יעקב רשימת סטודנטים רשימת קורסים Data Structures, CS, TAU פתרון באמצעות Multilist

37 במקרים רבים: נוח לבצע חלק מהפעולות במבנה אחד וחלק באחר. לעיתים: שמירת כמה מבנים תייעל ביצועים. Data Structures, CS, TAU מבני נתוני כפולים להגברת היעילות