Assignment 11 -- Due Monday, November 22 (at the beginning of lab)
CS 4521 Fall Semester, 2010
20 Points

Topic: Implementation of Fibonacci Heaps

The assignment consists of two parts:
Part 1: (15 points) Implementation of Fibonacci Heaps.
Part 2: (5 points) Fibonacci Heap exercises.
For Part 2, write code and that implements Fibonacci heap operations as described in Chapter 19 of the text. Implementing Fibonacci heaps will require coding the operations:

Much of the code is provided for you. You need to supply code for FIB-HEAP-EXTRACT-MIN - consolidate() in particular.

You can use a modified version of the command interpreter for binary heaps (in Assignment 4); as in that assignment, i, m, and e insert, return the minimum key value, and extract the minimum. Also, a routine to show the structure of your Fibonacci heap is supplied for you.

Test Example

The test files are the same as for binary heaps. The correct output for heaptest1 is at: out1.txt.

Helpful code: Here is a .h file for the Fibonacci Heap (FibHeap) class fibheap.h. and skeleton code for the BHeap class implementation fibheap.cpp. Here is a command interpreter: cmdint.cpp. Here is a "Makefile" that puts it all together: Makefile. When you download these files, be sure to remove the ".txt" suffixes (by moving them to the same file name without the ".txt").

What To Hand In

Hand in a copy of your code and the output of the test files (15 points): Identify them clearly and draw in the links between nodes printed by the ShowHeap() operation.

Also hand in the following:

Extra Credit (up to 6 points)

Implement the union, decrease-key, and delete operations, and test them with test files that show those operations work correctly. To do this, you should also implement a search(k) operation that returns a pointer, x, to the node with key k. Then to test decrease-key in your command interpreter, first search for the original key value k-orig with search(k-orig) to get x, then call decrease-key(x, k-new) where k-new is the decreased value of the key. Similarly, to test delete for a node with key value k, first search(k) to get x, and then call delete(x).


Page URL: http://www.d.umn.edu /~ddunham/cs4521f10/assignments/a11/assignment.html
Page Author: Doug Dunham
Last Modified: Friday, 03-Dec-2010 18:02:29 CST
Comments to: ddunham@d.umn.edu