ערימת מינימום - Heap הגדרה: מבנה נתונים שמוגדרות עליו הפעולות הבאות:

Slides:



Advertisements
Liknende presentasjoner
Ekstern skolevurdering Skolens navn •Sett inn bilde av skolen her (Tips: høyreklikk på bildet og sorter det bak teksten)
Advertisements

MadeBYMe Historien om strikkemagasinet som ville ut i verden
Jødiske røtter… Kongenes konge.
Bakgrunn. Funksjoner. Nøkkelfunksjoner. Application Manager. View Controller. Validation. Dialog Manager. Clay. Tiger extensions.
Laplace Differensialligninger Strategi
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon
INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug.
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Gigantbestilling 222 nye fly –
FRIKSJON G Institutt for maskin- og marinfag.
Kap 09 Tre.
Hallgrim2LF : Hva Hva skal metoden traverser gjøre?  Ta inn et rom som parameter  Returnere antall møter i dette rommet og i alle rom innenfor. Public.
INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)
Compiler/fortolker struktur Mellem- kode Kode- generering Kode- optimering Lexikalsk- analyse Syntax- analyse Semantik- analyse if viggo == 3 then....
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Datastruktur & Algoritmik1 Datastruktur & Algoritmik 3 REKURRENSER.
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Skeive heaper (Skew) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer.
(Dynamic) Domain Name System dan Virtual Hosting.
הרצאה 1 - הקדמה הטֶקְסְטוּרָה תְּפִיסָת Texture Perception.
| | חדשנות שיטתית במסגרת תוכנית ניצוץ | |
עצי חיפוש - מימוש למבנה הנתונים "מילון"
ביולוגיה – חשמל ? גלווני ECG EEG EMG.
שיטות רקורסיביות למציאת וקטור הפתרונות
רשימת דילוגים – skip list
- סריג של שלמים (ממימד (d. בחלק הזה נסתכל על נקודות בסריג השייכות ל בעלות קורדינטות שלמות. מושגים יסודיים.
התא הפוסט-סינפטי - קלט תעלות פאסיביות תעלות תלויות ליגנד.
HUSK EKSAMENSTILMELDING Frist: 15. februar. Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
נוירון פיראמידאלי (בקורטקס)
© SYSTEM- OG DRIFTSSEKSJONEN, USIT UNIVERSITETET I OSLO UREG2000 Brukeradministrasjon ved Universitetet i Oslo.
Januartilbud på Cabby 800 +F3F Utstillingsvogn 2012 JANUAR-TILBUD CABBY 800 F3F Ordinær Pris Godt Utstyrt levert Bodø Uten Innbytte Kr. 459.
Referanser Institutt for statsvitenskap. Agenda Hvorfor referanser? Nettsider og informasjon Referanser i Word Oppgaver.
Kommunesammenslåing og Frogn En undersøkelse blant Frogn Næringsråds medlemmer Mai 2016.
Fargen på det grå feltet endres ved å høyreklikke på sliden og skifte bakgrunnsfarge på sliden. Alle fargene i paletten kan brukes, se eksempler Fargen.
Hvilken farge ser vi? Hvitt lys har alle farger En sort flate absorberer alt lys En sort flate reflekterer ikke noe lys.
FØRDE 2017 Landsskytterstevnet
Dette er undertittelen
N.
INF2220 – høsten 2016, 9. nov. Sortering del I (kap. 7.) Arne Maus,
CANON 400D קורס זריז.
מיזם טורבינות רוח במרחב מועצת מגידו
ניהול סיכונים 3-B-1, 3-B-2, 3-B-6
חיסונים לתלמידי מקצועות הבריאות
חזרה למפמ"ר חומרים מאפייני החומר: מסה/ נפח/ מצבי צבירה
Табела величина табеле је одређена бројем колона и редова
فصل هفتم شاخص گذاری.
שמירת המגוון הביולוגי הרצאה מס. 10 במסגרת המכינה הקדם צבאית במעין ברוך
המשוואות השולטות בתהליכים הדינמיים
המכללה האקדמית עמק יזרעאל אורנים – המכללה האקדמית לחינוך
זרקור על תופעות בולטות בשוק המט"ח בישראל
استاد راهنما دکتر مجید رستمی آموزش EXPERT CHOICE ارائه: احمد آقاجانی
Ә.Тәжібаев “Сырдария ” өлеңі ашық сабақ 7-сынып
תקשורת תקבילית מעגל תהודה RLC.
זרקור על תופעות בולטות בשוק המט"ח בישראל
טל בר-מעוז, תיכון הראשונים הרצליה
Forelesning nr. 2 Kapittel 3: Å generalisere fra en stikkprøve
Titteloppsett Undertittel.
Drivstofforbruk og CO2-utslipp
Lørdag - 1.økt (3km - G14/G13/J14/J13)
Жоба «Сын тұрғысынан ойлау технологиясы арқылы оқушылардың
Қарсылықты бағыныңқы сабақтас
Екпетал мектеп – балабақшасы Ана тілі 2 класс Өткізген: Г
Ашық сабақ Тақырыбы: Отан туралы М.Мақатаев
Бейшева Ментай Идрисовна
Информатиканың тест сұрақтары
Behind the scene Anders Hattestad ,
“Сыни тұрғыдан ойлауға оқыту” модулі сабақтар топтамасында орындаған: бастауыш сынып мұғалімі:Алимбаева Алмаш Иренгалиевна санаты ІІ.
Коучинг тақырыбы: “Оқыту мен оқудағы жаңа әдіс-тәсілдер”
Utskrift av presentasjonen:

amirrub@cs - אמיר רובינשטיין ערימת מינימום - Heap הגדרה: מבנה נתונים שמוגדרות עליו הפעולות הבאות: Make_heap – בניית ערימה מ- n איברים מהקלט. Insert(x) – הכנסת איבר x לערימה. Find_min – מציאת המינימום. Del_min – הוצאת המינימום מהערימה. 2. שימושים: תור עדיפויות, מיון ערימה (heap sort)... 3. מימושים: א. עץ חיפוש מאוזן עם מצביע למינימום שמתעדכן בהכנסה/הוצאה. ב. עץ כמעט שלם מימוש ע"י מערך מימוש ע"י עץ amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין 3. מימושים: א. עץ חיפוש מאוזן עם מצביע למינימום שמתעדכן בהכנסה/הוצאה. ב. עץ כמעט שלם מימוש ע"י מערך מימוש ע"י עץ א. מימוש ערימה כעץ חיפוש מאוזן Make_heap – הכנס לעץ את כל n האיברים O(nlogn) Insert(x) – הכנס את x לעץ, אם צריך עדכן את המינימום. O(logn) Find_min – החזר את הערך המוצבע ע"י המצביע למינימום. O(1) Del_min – הוצא את המינימום מהעץ ומצא מינימום חדש. O(logn) מימוש ערימה כעץ כמעט שלם משפר את סיבוכיות Make_heap ל- O(n). amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין עץ כמעט שלם עץ שלם – עץ בינארי בו לכל צומת פנימי בדיוק שני בנים, וכל העלים בעץ באותה רמה. עץ כמעט שלם – עץ שלם שבו חסרים (אולי) צמתים אחרונים. נמספר את הצמתים משמאל לימין ומלמעלה למטה. נקרא למספרים אלו אינדקסים. amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין תכונות של עץ כמעט שלם אם מספר הצמתים בעץ הוא n, וגובהו של העץ הוא h, מתקיים: מכאן . מספר העלים בעץ הינו , ומספר הצמתים הפנימיים . אינדקס השורש תמיד 1. עבור צומת i – אינדקס בנו השמאלי הוא 2i ובנו הימני 2i+1. לכן צומת הוא בן שמאלי אם"ם יש לו אינדקס זוגי. עבור צומת i – האינדקס של אביו הוא . העלה האחרון הוא בעל אינדקס n. צומת חדש שיוכנס יקבל את האינדקס n+1. צומת i הוא עלה אם"ם 2i > n. amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין ב. מימוש ערימה כעץ כמעט שלם מימוש במערך בעץ בינארי תכונת הערימה (מינימום) – כל בן גדול מאביו. תכונות מימוש במערך (אם ידוע חסם על מספר האיברים בערימה). - אינדקסים של הצמתים ישמשו כאינדקסים של כניסות המערך. - ניתן להגיע מבן לאב ולהפך ב- O(1). - מקום פנוי בערימה להוספת איברים נמצא תמיד בסוף המערך. - נשמור גם את מספר האיברים שיש בערימה (תאים מנוצלים במערך). Make_heap – נכניס את n האיברים למערך. נעבור על כל הצמתים הפנימיים מהאחרון עד לשורש (כלומר מהאינדקס עד ל- 0) ונבצע Sift_Down לכל צומת. Insert(x) – איבר חדש יוכנס במקום הפנוי הראשון של המערך, ולאחר מכן יש לבצע Sift_Up לאורך המסלול החל מהצומת החדש עד לשורש. Del_min – נחליף את הערכים בין השורש לעלה האחרון. נמחק את העלה ונבצע Sift_Down החל מהשורש. Find_min – יש להחזיר את ערכו של השורש (אינדקס 0). 2 3 4 6 12 10 17 5 8 O(n) logn logn O(1) amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין Make heap amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין Insert amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין Del_min amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין ב. מימוש ערימה כעץ כמעט שלם מימוש במערך בעץ בינארי עץ בינארי נחזיק גם מצביע לעלה האחרון בעץ. - מאפשר מציאת המקום להכנסה ב- O(logn). מהם השינויים במימוש הפעולות מהמימוש ע"י מערך? Make_heap –נעבור על הצמתים הפנימיים בסדר postorder (כדי שבנים יטופלו לפני הוריהם). Insert(x) – המקום הפנוי להכנסה יימצא ע"י המצביע לעלה האחרון ב- O(logn): נעלה ממנו עד לצומת ממנו אפשר לרדת ימינה, ואז כל הדרך שמאלה. Del_min – נחליף את הערכים בין השורש לעלה האחרון באמצעות המצביע. 2 11 7 9 34 amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין שאלה: נתון עץ כמעט שלם הממומש ע"י עץ דינאמי. איך מוצאים צומת בעץ בעל אינדקס i ? פתרון: נסתכל על הייצוג הבינארי של האינדקס שאנו מחפשים i. למשל: 9=1001. נצעד מהשורש במורד העץ באופן הבא: לכל ביט בייצוג הבינארי החל מהביט השני עבור 0 נרד שמאלה, עבור 1 נרד ימינה. amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין לסיכום: עץ כמעט שלם (כמערך או עץ) עץ חיפוש מאוזן O(n) O(nlogn) Make_heap O(logn) Insert(x) O(1) Find_min Del_min amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין תרגיל 1: נתונה רשימה מקושרת של מספרים ממשיים וידוע גם ערך החציון. יש לממש את הפעולות הבאות: init – אתחול מבנה הנתונים ב- O(m), m מספר האיברים ברשימה. insert(x) – הוסף את x למבנה ב- O(logn), n מספר האיברים במבנה. find_mid – החזר את ערך החציון ב- O(1). del_mid – הוצא את החציון מהמבנה ב- O(logn). פתרון: ערימת מינימום ערימת מקסימום של האיברים הגדולים של האיברים הקטנים L S 9 5 3 2 11 12 18 20 34 amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין פתרון: ערימת מינימום ערימת מקסימום של האיברים הגדולים של האיברים הקטנים l=|L| s=|S| Init – ערך החציון ידוע לכן נחלק ב- O(m) את האיברים לשתי קבוצות: קטנים וגדולים/שווים מהחציון. לאחר מכן נריץ make_heap מכל קבוצה. O(m)+2O(m/2)=O(m). חfind_mid - החזר את ערך השורש הערימה הימנית L, O(1). insert(x) – אם x קטן מהחציון, נכניס אותו ל- S, אחרת ל- L. נעדכן את גדלי הערמות. אם |S|=|L|+1 נעביר את השורש של S ל- L. אם |S|=|L| -2 נעביר את השורש של L ל- S. הdel_mid – הוצא את השורש של L. אם |S|=|L|+1 נעביר את השורש של S ל- L. שתי הפעולות האחרונות במקרה הגרוע: . 9 5 3 2 11 12 18 20 34 amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין תרגיל 2: תאר מבנה נתונים המאפשר ביצוע הפעולות הבאות בסיבוכיות הנדרשת: init – אתחול מבנה הנתונים – O(n). insert(x) – הוסף את x למבנה – O(logn). find_min – החזר את המינימום – O(1). find_max – החזר את המקסימום – O(1). del_min – הוצא את המינימום מהמבנה – O(logn). del_max – הוצא את המקסימום מהמבנה – O(logn). פתרון: נשמור את האיברים בשתי ערמות בו זמנית: ערימת מינימום וערימת מקסימום. בין כל שני איברים "תאומים" בשתי הערימות יהיו מצביעים הדדיים. 8 6 4 3 1 5 1 5 3 8 4 6 amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין 8 6 4 3 1 5 1 5 3 8 4 6 del_min: נמחק את השורש של ערימה המינימום ואת הצומת ה"תאום" מערימת המקסימום. אבחנה: הצומת התאום של שורש ערימה אחת הוא עלה בערימה השניה. כיצד מוחקים עלה מערימה? מחליפים בינו לבין העלה האחרון מוחקים את העלה האחרון מבצעים Sift_Up מהמקום המקורי של הצומת שנמחק. amirrub@cs - אמיר רובינשטיין

amirrub@cs - אמיר רובינשטיין תרגיל 2: פתרון שני: נשמור את האיברים בערימת מינימום. בכל צומת יהיה שדה נוסף max, שישמור את הערך המקסימלי בתת העץ של הצומת (כולל הצומת עצמו). init – בצע Make_Heap ואח"כ סיור Postorder לחישוב שדות ה- max. O(n). insert(x) – הכנס את x לערימה ועדכן את שדות max במסלול מלמטה עד לשורש. O(logn). find_min – החזר את ערך השורש. O(1). find_max – החזר את ערך max של השורש. O(1). del_min – הוצא את השורש. עדכן את שדות max לאורך 2 מסלולים: המסלול מהעלה האחרון (זה שנמחק) עד לשורש, והמסלול של ה- Sift_Down מהשורש למטה. O(logn). del_max – נמצא את צומת המקסימום כך: מהשורש נרד כל פעם לבן המקסימלי עד שנגיע לעלה. כעת נמחק צומת זה ע"י החלפתו עם העלה האחרון, ו- Sift_Up. נעדכן שדות ה- max לאורך 2 מסלולים. O(logn). 8 1 8 6 3 5 8 4 6 8 4 6 amirrub@cs - אמיר רובינשטיין