ערמות בינומיות ופיבונצ'י

Slides:



Advertisements
Similar presentations
Binomial Heaps. Heap Under most circumstances you would use a “normal” binary heap Except some algorithms that may use heaps might require a “Union” operation.
Advertisements

Fibonacci Heaps Especially desirable when the number of calls to Extract-Min & Delete is small (note that all other operations run in O(1) This arises.
Fibonacci Heap BH&FH. Why BH&FH -- 程式目的 MinPQ Mergeable MinPQ MaxPQ DEPQ Min-LeftistMin-Skew Min-B-Heap Min-F-Heap Min Heap DeapMinMax Symmetric Max Data.
Priority Queues  MakeQueuecreate new empty queue  Insert(Q,k,p)insert key k with priority p  Delete(Q,k)delete key k (given a pointer)  DeleteMin(Q)delete.
AVL Trees1 Part-F2 AVL Trees v z. AVL Trees2 AVL Tree Definition (§ 9.2) AVL trees are balanced. An AVL Tree is a binary search tree such that.
Advanced Data structure
Rank-Pairing Heaps Robert Tarjan, Princeton University & HP Labs Joint work with Bernhard Haeupler and Siddhartha Sen, ESA
Analysis Of Fibonacci Heaps. MaxDegree Let N i = min # of nodes in any min (sub)tree whose root has i children. N 0 = 1. N 1 =
Binomial Heaps. Min Binomial Heap Collection of min trees
Dijkstra/Prim 1 make-heap |V| insert |V| delete-min |E| decrease-key Priority Queues make-heap Operation insert find-min delete-min union decrease-key.
Instructors: C. Y. Tang and J. S. Roger Jang All the material are integrated from the textbook "Fundamentals of Data Structures in C" and some supplement.
Fibonacci Heaps. Single Source All Destinations Shortest Paths
Binomial Heaps Jyh-Shing Roger Jang ( 張智星 ) CSIE Dept, National Taiwan University.
Princeton University COS 423 Theory of Algorithms Spring 2002 Kevin Wayne Fibonacci Heaps These lecture slides are adapted from CLRS, Chapter 20.
UMass Lowell Computer Science Analysis of Algorithms Prof. Karen Daniels Fall, 2001 Lecture 11 Tuesday, 12/4/01 Advanced Data Structures Chapters.
Princeton University COS 423 Theory of Algorithms Spring 2002 Kevin Wayne Binary and Binomial Heaps These lecture slides are adapted from CLRS, Chapters.
ANALYSIS OF SOFT HEAP Varun Mishra April 16,2009.
1 Binomial heaps, Fibonacci heaps, and applications.
Lecture X Fibonacci Heaps
Change Keys in heaps Fibonacci heap Zhao Xiaobin.
1 Binomial Tree Binomial tree. n Recursive definition: B k-1 B0B0 BkBk B0B0 B1B1 B2B2 B3B3 B4B4.
Binomial Tree B k-1 B0B0 BkBk B0B0 B1B1 B2B2 B3B3 B4B4 Adapted from: Kevin Wayne B k : a binomial tree B k-1 with the addition of a left child with another.
Data StructuresData Structures Priority Queue. Recall Queues FIFO:First-In, First-Out Some contexts where this seems right? Some contexts where some things.
CMSC 341 Binomial Queues and Fibonacci Heaps. Basic Heap Operations OpBinary Heap Leftist Heap Binomial Queue Fibonacci Heap insertO(lgN) deleteMinO(lgN)
Fibonacci Heaps.
Fibonacci Heaps. Analysis FibonacciAnalysis.ppt Video  iew/cop5536sahni
1 Fibonacci heaps: idea List of multiway trees which are all heap-ordered. Definition: A tree is called heap-ordered if the key of each node is greater.
Data structures Binomial Heaps - Binomial Trees B0B0 BkBk B k-1.
Fibonacci Heap Fibonacci heapshave better asymptotic time bounds than binary heaps for the INSERT, UNION, and DECREASE-KEY operations, and they.
Fibonacci Heaps. Fibonacci Binary insert O(1) O(log(n)) find O(1) N/A union O(1) N/A minimum O(1) O(1) decrease key O(1) O(log(n)) delete O(log(n) O(log(n))
Leftist Trees Linked binary tree.
Analysis of Algorithms
Data Structures Binomial Heaps Fibonacci Heaps Haim Kaplan & Uri Zwick
Binomial heaps, Fibonacci heaps, and applications
Binomial Heaps On the surface it looks like Binomial Heaps are great if you have no remove mins. But, in this case you need only keep track of the current.
Heaps Binomial Heaps Lazy Binomial Heaps 1.
Hashing Exercises.
Binomial heaps, Fibonacci heaps, and applications
CMSC 341 Lecture 13 Leftist Heaps
Insert in amortized cost O(1), Merge in O(lgn) DeleteMax in O(lgn)
Binomial Heaps Chapter 19.
Binomial Tree Adapted from: Kevin Wayne Bk-1 B0 Bk
Priority Queues MakeQueue create new empty queue
Fibonacci Heaps Remove arbitrary is useful in (for example) correspondence structures and may also be used to do an increase key in a min structure (remove.
Selection in heaps and row-sorted matrices
A simpler implementation and analysis of Chazelle’s
Lecture 29 Heaps Chapter 12 of textbook Concept of heaps Binary heaps
Binomial Heap.
Chapter 20 Binomial Heaps
Fibonacci Heap.
CS 583 Analysis of Algorithms
"Teachers open the door, but you must enter by yourself. "
§3 Worst-Case vs. Amortized
Strict Fibonacci Heaps
CS 583 Analysis of Algorithms
Fibonacci Heaps Remove arbitrary is useful in (for example) correspondence structures.
21장. Fibonacci Heaps 숭실대학교 인공지능 연구실 석사 2학기 김완섭.
Data Structures Lecture 29 Sohail Aslam.
Binary and Binomial Heaps
Binomial heaps, Fibonacci heaps, and applications
Binomial heaps, Fibonacci heaps, and applications
Fibonacci Heaps.
CSE 373, Copyright S. Tanimoto, 2002 Priority Queues -
Binomial heaps, Fibonacci heaps, and applications
Heaps By JJ Shepherd.
Priority Queues Supports the following operations. Insert element x.
CS 6310 Advanced Data Structure Wei-Shian Wang
Fibonacci Heaps & Doubled-Ended Heap Structures
Fundamental Structures of Computer Science II
Priority Queues Binary Heaps
Presentation transcript:

ערמות בינומיות ופיבונצ'י מבני נתונים 08 ערמות בינומיות ופיבונצ'י

ערמות make-heap Operation insert find-min delete-min union decrease-key delete 1 Binary Heap log n n Binomial Heap Fibonacci Heap † Relaxed Heap Linked List is-empty † amortized n = number of elements in priority queue 3

תזכורת: Heaps עץ בינארי מלא החוק הבסיסי הפעולות הנתמכות אם צומת B צאצא של צומת A אזי Key(A)≤Key(B) הפעולות הנתמכות Find-min Delete-min Decrease-key Insert Merge 4

תזכורת: Binomial Heaps תחילה נגדיר Binomial Tree: עץ בינומי מדרגה 0 מכיל צומת יחידה עץ בינומי מדרגה k הוא בעל שורש מדרגה k ילדיו הינם עצים בינומיים מדרגות k-1,k-2,…,0 (בסדר זה) עץ בינומי מדרגה k מכיל 2k צמתים והינו בגובה k 5

תזכורת: Binomial Heaps איחוד שני עצים בינומיים מסדר k-1 ניצור עץ בינומי מסדר k ע"י תליית אחד העצים כבן השמאלי ביותר של העץ השני 6

תזכורת: Binomial Heaps סט עצים בינומיים המקיימים את התכונות הבאות כל עץ מקיים את תכונת minimum-heap (כל צאצא גדול מההורה שלו) עבור כל סדר k של עץ בינומי, יש 0 או 1 עצים כאלו ב-heap 7

תזכורת: Binomial Heaps פעולת Merge של שני עצים מדרגה k function mergeTree(p, q) if p.root <= q.root return p.addSubTree(q) else return q.addSubTree(p) end 8

תזכורת: Binomial Heaps פעולת Insert ניצור heap חדש המכיל את האבר החדש, ונבצע merge בין שני ה-heaps פעולת minimum עלינו לחפש את הערך המינימלי מבין שורשי העצים בheap פעולת delete-min מצא את האבר ומחק אותו הפוך את בניו ל-binomial heap ומזג את שני ה-heaps פעולת Decrease-min בדומה לפעולות ב-heap רגיל פעולת Delete שנה את הערך ל-∞ ובצע delete-min http://www.cse.yorku.ca/~aaw/Sotirios/BinomialHeap.html הדגמה באנימציה של Binomial Heaps: 9

Properties of binomial trees 1) | Bk | = 2k 2) degree(root(Bk)) = k 3) depth(Bk) = k ==> The degree and depth of a binomial tree with at most n nodes is at most log(n). Define the rank of Bk to be k

Binomial heaps (ops cont.) Basic operation is meld(h1,h2): Like addition of binary numbers. B5 B4 B2 B1 h1: B4 B3 B1 B0 + h2: B4 B3 B0 B5 B4 B2

תארו מבנה נתונים אנלוגי לערמה בינומית (binomial heap) נגדיר עצים בינומיים "שמנים" בצורה הבאה: עץ בינומי "שמן" מדרגה 0 מכיל צומת אחד בלבד. עץ בינומי "שמן" מדרגה k ניתן לבנות משלושה עצים בינומיים "שמנים" מדרגה k-1 כאשר נתלה שניים מהם על העץ השלישי. תארו מבנה נתונים אנלוגי לערמה בינומית (binomial heap) המשתמש בעצים "שמנים".

ערמה בינומית "שמנה" מוגדרת בצורה הבאה: בערמה יש n עצים בינומיים "שמנים" כאשר יש לכל היותר 2 עצים מדרגה k, לכל k. שורשי העצים מחוברים ביניהם ברשימה מקושרת. הפעולות מוגדרות בדומה לערמה בינומית רגילה וכאשר יש צורך לעשות merge בין העצים (יש יותר משני עצים מדרגה k) בונים משלושה עצים מדרגה k עץ יחיד מדרגה k+1.

תארו פעולת meld של שתי ערמות בינומיות "שמנות" שהגדרתם בסעיף הקודם.

ערמות פיבונאצ'י make-heap Operation insert find-min delete-min union decrease-key delete 1 Binary Heap log n n Binomial Heap Fibonacci Heap † Relaxed Heap Linked List is-empty † amortized n = number of elements in priority queue

ערימות פיבונאצ'י - מבנה Fibonacci heap. Set of heap-ordered trees. Maintain pointer to minimum element. Set of marked nodes. each parent larger than its children roots heap-ordered tree 17 24 23 7 3 set -> unordered 30 26 46 18 52 41 Heap H 35 39 44

ערימות פיבונאצ'י - מבנה Fibonacci heap. Set of heap-ordered trees. Maintain pointer to minimum element. Set of marked nodes. find-min takes O(1) time min 17 24 23 7 3 set -> unordered 30 26 46 18 52 41 Heap H 35 39 44

ערימות פיבונאצ'י - מבנה Fibonacci heap. Set of heap-ordered trees. Maintain pointer to minimum element. Set of marked nodes. use to keep heaps flat (stay tuned) min 17 24 23 7 3 set -> unordered 30 26 46 18 52 41 Heap H 35 marked 39 44

Cascading cuts & Successive linking פעולת delete-min יודעים מי המינימום בערימה נתלה את הבנים שלו כעצים בערימה נבצע successive linking – מכל דרגה עץ יחיד! min 7 24 23 17 3 30 26 46 18 52 41 35 39 44

Cascading cuts & Successive linking פעולת delete-min יודעים מי המינימום בערימה נתלה את הבנים שלו כעצים בערימה נבצע successive linking – מכל דרגה עץ יחיד! min 7 24 23 17 18 52 41 39 44 30 26 46 35

Cascading cuts & Successive linking פעולת delete-min יודעים מי המינימום בערימה נתלה את הבנים שלו כעצים בערימה נבצע successive linking – מכל דרגה עץ יחיד! עלות הפעולה: Amortized O(rank(H)) min 7 52 18 24 17 30 41 39 26 46 23 44 35

Cascading cuts & Successive linking פעולת decrease-key אינטואיציה: אם חוק הערמה לא מופר, פשוט נשנה את ערך הצומת אחרת נחתוך את תת העץ של הצומת ונתלה כעץ חדש בכדי לשמור על עצים שטוחים יחסית, ברגע שחותכים בן שני לצומת מסוים, גם הוא נתלה כעץ חדש min 7 18 38 marked node: one child already cut 24 17 23 21 39 41 26 46 30 52 35 88 72

Fibonacci Heaps: Decrease Key Case 1. [heap order not violated] Decrease key of x. Change heap min pointer (if necessary). min 7 18 38 24 17 23 21 39 41 26 29 46 30 52 x 35 88 72 decrease-key of x from 46 to 29

Fibonacci Heaps: Decrease Key Case 1. [heap order not violated] Decrease key of x. Change heap min pointer (if necessary). min 7 18 38 24 17 23 21 39 41 26 29 30 52 x 35 88 72 decrease-key of x from 46 to 29

Fibonacci Heaps: Decrease Key Case 2a. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min 7 18 38 24 17 23 21 39 41 p 26 29 15 30 52 x 35 88 72 decrease-key of x from 29 to 15

Fibonacci Heaps: Decrease Key Case 2a. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min 7 18 38 24 17 23 21 39 41 p 26 15 30 52 x 35 88 72 decrease-key of x from 29 to 15

Fibonacci Heaps: Decrease Key Case 2a. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). x min 15 7 18 38 72 24 17 23 21 39 41 p 26 30 52 35 88 decrease-key of x from 29 to 15

Fibonacci Heaps: Decrease Key Case 2a. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). x min 15 7 18 38 72 24 24 17 23 21 39 41 p mark parent 26 30 52 35 88 decrease-key of x from 29 to 15

Fibonacci Heaps: Decrease Key Case 2b. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min 15 7 18 38 72 24 24 17 23 21 39 41 p 26 30 52 decrease-key of x from 35 to 5 x 5 35 88

Fibonacci Heaps: Decrease Key Case 2b. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min 15 7 18 38 72 24 24 17 23 21 39 41 p 26 30 52 decrease-key of x from 35 to 5 x 5 88

Fibonacci Heaps: Decrease Key Case 2b. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min x 15 5 7 18 38 72 24 24 17 23 21 39 41 p 26 30 52 88 decrease-key of x from 35 to 5

Fibonacci Heaps: Decrease Key Case 2b. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min x 15 5 7 18 38 72 24 24 17 23 21 39 41 second child cut p 26 30 52 88 decrease-key of x from 35 to 5

Fibonacci Heaps: Decrease Key Case 2b. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min x p 15 5 26 7 18 38 72 88 24 24 17 23 21 39 41 30 52 decrease-key of x from 35 to 5

Fibonacci Heaps: Decrease Key Case 2b. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min x p 15 5 26 7 18 38 72 88 p' 24 24 17 23 21 39 41 30 52 second child cut decrease-key of x from 35 to 5

Fibonacci Heaps: Decrease Key Case 2b. [heap order violated] Decrease key of x. Cut tree rooted at x, meld into root list, and unmark. If parent p of x is unmarked (hasn't yet lost a child), mark it; Otherwise, cut p, meld into root list, and unmark (and do so recursively for all ancestors that lose a second child). min x p p' p'' 15 5 26 24 7 18 38 72 88 don't mark parent if it's a root 17 23 21 39 41 Note: when a root is linked into another root (in delete-min consolidation phase), we unmark it Q. How can a root node ever be marked? A. In delete-min we delete a root node, but promote all of its (potentially) marked children to be roots. 30 52 decrease-key of x from 35 to 5

ערמות פיבונצ'י כמו שראיתם בכיתה: Rank(H)<logФ(n)

תרגיל 1 – ערמות פיבונאצ'י האם ניתן לבנות ערמת פיבונאצ'י ובה עץ אחד מעומק n? פתרון נניח שאנו יודעים לפתור עבור n=k נפתור עבור n=k+1 נגדיר x’,y’,z’ כך ש- נכניס אותם לתוך הערמה נפעיל extract-min 5 7 9 20 25 30 35

תרגיל 1 – ערמות פיבונאצ'י האם ניתן לבנות ערמת פיבונאצ'י ובה עץ אחד מעומק n? פתרון נניח שאנו יודעים לפתור עבור n=k נפתור עבור n=k+1 נגדיר x’,y’,z’ כך ש- נכניס אותם לתוך הערמה נפעיל extract-min 7 20 9 25 30 35

תרגיל 1 – ערמות פיבונאצ'י האם ניתן לבנות ערמת פיבונאצ'י ובה עץ אחד מעומק n? פתרון נניח שאנו יודעים לפתור עבור n=k נפתור עבור n=k+1 נגדיר x’,y’,z’ כך ש- נכניס אותם לתוך הערמה נפעיל extract-min נמחק את x’ (9) 7 20 9 25 30 35

תרגיל 2 בערמות פיבונצ'י, אנחנו מבצעים cascading cuts בצומת v אם הוא איבד צומת בן מאז הפעם האחרונה שהוא נתלה על צומת אחרת. נניח שנבצע CC רק אם v איבד שני בנים מאז, כיצד משתנה הלמה: x צומת בערמת פיב', y1,…,yn בנים של x, מסודרים לפי הסדר בו נתלו על x (הכי ישן ועד הכי חדש). אזי rank(yi)≥i-2 לכל i.

תרגיל 2 Answer rank(yi)≥i-3 Since yi had the same rank as x when it became a child of x x must have had at least i-1 children at that time, so yi had at least i-1 rank. It could have lost at most two children since then, therefore rank at least i-3

הסוף