Fibonacci Heaps. Single Source All Destinations Shortest Paths 1 2 3 4 5 6 7 2 6 16 7 8 10 3 14 4 4 53 1.

Slides:



Advertisements
Similar presentations
Lecture 15. Graph Algorithms
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.
Single Source Shortest Paths
Weighted graphs Example Consider the following graph, where nodes represent cities, and edges show if there is a direct flight between each pair of cities.
Advanced Data structure
Analysis Of Binomial Heaps. Operations Insert  Add a new min tree to top-level circular list. Meld  Combine two circular lists. Remove min  Pairwise.
Rank-Pairing Heaps Robert Tarjan, Princeton University & HP Labs Joint work with Bernhard Haeupler and Siddhartha Sen, ESA
Pairing Heaps. Experimental results suggest that pairing heaps are actually faster than Fibonacci heaps.  Simpler to implement.  Smaller runtime overheads.
By Amber McKenzie and Laura Boccanfuso. Dijkstra’s Algorithm Question: How do you know that Dijkstra’s algorithm finds the shortest path and is optimal.
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 =
Min-Max Heaps A double-ended priority queue is a data structure that supports the following operations: inserting an element with an arbitrary key deleting.
Binary Trees Terminology A graph G = is a collection of nodes and edges. An edge (v 1,v 2 ) is a pair of vertices that are directly connected. A path,
Analysis Of Binomial Heaps. Operations Insert  Add a new min tree to top-level circular list. Meld  Combine two circular lists. Delete min  Pairwise.
Minimum-Cost Spanning Tree weighted connected undirected graph spanning tree cost of spanning tree is sum of edge costs find spanning tree that has minimum.
Shortest Path Problems Directed weighted graph. Path length is sum of weights of edges on path. The vertex at which the path begins is the source vertex.
Binomial Heaps. Min Binomial Heap Collection of min trees
Initializing A Max Heap input array = [-, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
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.
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.
Chapter 9: Graphs Spanning Trees Mark Allen Weiss: Data Structures and Algorithm Analysis in Java Lydia Sinapova, Simpson College.
Princeton University COS 423 Theory of Algorithms Spring 2002 Kevin Wayne Binary and Binomial Heaps These lecture slides are adapted from CLRS, Chapters.
Binary Trees Chapter 6.
Fundamental Structures of Computer Science March 02, 2006 Ananda Guna Binomial Heaps.
1 Binomial heaps, Fibonacci heaps, and applications.
Dijkstras Algorithm Named after its discoverer, Dutch computer scientist Edsger Dijkstra, is an algorithm that solves the single-source shortest path problem.
Chapter 9 Heap Structures
Binomial heaps, Fibonacci heaps, and applications
Chapter 6 Binary Trees. 6.1 Trees, Binary Trees, and Binary Search Trees Linked lists usually are more flexible than arrays, but it is difficult to use.
Chap 9 Priority Queues. Operations supported by priority queue The functions that have been supported: –SP1: Return an element with minmum priority –SP2:
B + -Trees Same structure as B-trees. Dictionary pairs are in leaves only. Leaves form a doubly-linked list. Remaining nodes have following structure:
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.
Fibonacci Heap Fibonacci heapshave better asymptotic time bounds than binary heaps for the INSERT, UNION, and DECREASE-KEY operations, and they.
Proof of correctness of Dijkstra’s algorithm: Basically, we need to prove two claims. (1)Let S be the set of vertices for which the shortest path from.
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.
Data Structures Binomial Heaps Fibonacci Heaps Haim Kaplan & Uri Zwick
Binomial heaps, Fibonacci heaps, and applications
Chapter 11: Multiway Search Trees
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.
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.
Shortest Path Problems
Shortest Path Problems
Pairing Heaps Actual Complexity.
Minimum-Cost Spanning Tree
Dijkstra’s Algorithm We are given a directed weighted graph
A simpler implementation and analysis of Chazelle’s
Minimum-Cost Spanning Tree
ערמות בינומיות ופיבונצ'י
Minimum-Cost Spanning Tree
CS 583 Analysis of Algorithms
Fundamental Structures of Computer Science
Shortest Path Problems
Shortest Path Algorithms
Fibonacci Heaps Remove arbitrary is useful in (for example) correspondence structures.
Binary and Binomial Heaps
Binomial heaps, Fibonacci heaps, and applications
Shortest Path Problems
Algorithms: Design and Analysis
Shortest Path Problems
Fibonacci Heaps.
Binomial heaps, Fibonacci heaps, and applications
Pairing Heaps Actual Complexity
A Heap Is Efficiently Represented As An Array
Chapter 9: Graphs Spanning Trees
Minimum-Cost Spanning Tree
Presentation transcript:

Fibonacci Heaps

Single Source All Destinations Shortest Paths

Greedy Single Source All Destinations Known as Dijkstra’s algorithm. Let d(i) be the length of a shortest one edge extension of an already generated shortest path, the one edge extension ends at vertex i. The next shortest path is to an as yet unreached vertex for which the d() value is least. After the next shortest path is generated, some d() values are updated (decreased).

Operations On d() Remove min.  Done O(n) times, where n is the number of vertices in the graph. Decrease d().  Done O(e) times, where e is the number of edges in the graph. Array.  O(n 2 ) overall complexity. Min heap.  O(nlog n + elog n) overall complexity. Fibonacci heap.  O(nlog n + e) overall complexity.

Prim’s Min-Cost Spanning Tree Algorithm Array.  O(n 2 ) overall complexity. Min heap.  O(nlog n + elog n) overall complexity. Fibonacci heap.  O(nlog n + e) overall complexity.

Min Fibonacci Heap Collection of min trees. The min trees need not be Binomial trees.

Node Structure Degree, Child, Data Left and Right Sibling  Used for circular doubly linked list of siblings. Parent  Pointer to parent node. ChildCut  True if node has lost a child since it became a child of its current parent.  Set to false by remove min, which is the only operation that makes one node a child of another.  Undefined for a root node.

Fibonacci Heap Representation Parent and ChildCut fields not shown A

Delete(theNode) theNode points to the Fibonacci heap node that contains the element that is to be deleted. theNode points to min element => do a delete min.  In this case, complexity is the same as that for delete min.

Delete(theNode) theNode points to an element other than the min element.  Remove theNode from its doubly linked sibling list.  If sibling list becomes empty, make parent’s child pointer null.  Set parent field of theNode’s children to null.  Combine top-level list and children list of theNode; do not pairwise combine equal degree trees.  Free theNode. In this case, actual complexity is O(log n) (assuming theNode has O(log n) children).

Delete(theNode) Remove theNode from its doubly linked sibling list theNode 6 9 5

Delete(theNode) Combine top-level list and children of theNode

Delete(theNode)

DecreaseKey(theNode, theAmount) If theNode is not a root and new key < parent key, remove subtree rooted at theNode from its doubly linked sibling list. Insert into top-level list theNode 6 9 5

DecreaseKey(theNode, theAmount)

Cascading Cut When theNode is cut out of its sibling list in a remove or decrease key operation, follow path from parent of theNode to the root. Encountered nodes (other than root) with ChildCut = true are cut from their sibling lists and inserted into top-level list. Stop at first node with ChildCut = false. For this node, set ChildCut = true.

Cascading Cut Example theNode T T F Decrease key by 2.

Cascading Cut Example T T F

T F

F

T Actual complexity of cascading cut is O(h) = O(n).