Assignment 4 - Technische Universiteit Eindhoven

Transcription

Assignment 4 - Technische Universiteit Eindhoven
technische universiteit eindhoven
2IL50 Data Structures
Assignment 4
Spring 2015
Due at 23:59 on 08–03–2015
Requirements: Assignments have to be handed in by each student separately. Please write
your name and student number on the top of the first sheet that you hand in. Remember
that assignments have to be typeset in English and sent by email as .pdf to your instructor
on the due date. Always justify your answers!
Note: Whenever you are asked to describe an algorithm, you should present three things:
the algorithm, a proof of its correctness, and a derivation of its running time. Do not use
pseudo-code in your answers unless you are explicitly asked to do so.
Exercise 1:
(a) [3 points] Use the hash function h(k, i) = ( h0 (k)+3i+i2 ) mod 11 with h0 (k) = k mod 13
to insert the numbers 13, 23, and 40 into this hash table:
0
1
27
2
3
4
5
6
18
7
8
9
10
10
(b) [2 points] We want to store a set S of n numbers in a hash table T [0..m − 1] of size
m and we are choosing m = n + 2. Should we resolve collisions with chaining or open
addressing? Explain your answer.
(c) [2 points] Assume that we are using a hash table of size m. Show that if the universe
U has size |U | > nm, there is a subset of U of size n consisting of keys that all hash to
the same slot, so that the worst-case searching time for hashing with chaining is Θ(n).
Exercise 2: Suppose you are given an array A of n integers and you can use a hash table T of
size n. For this question you may assume the existence of a hash function h : Z → {1, . . . , n}
with simple uniform hashing.
(a) [1 point] Describe an algorithm that determines whether there are two equal numbers
in A in O(n) time on average.
(b) [2 points] Now suppose you are also given a positive integer k. Describe an algorithm
that determines whether there exist two numbers x and y in A such that |x − y| ≤ k.
Again, this algorithm must run in O(n) time on average (and should not depend on k).
(Hint: consider hashing bx/kc instead of x for every x.)
Exercise 3:
(a) [2 points] Insert items with the following keys (in the given order) into an initially empty
binary search tree: 23, 27, 12, 42, 34, 19, 5, 7. Draw the tree after any two insertions.
The best way to draw figures for inclusion in LATEX documents is to use ipe.
/department of mathematics and computer science
1
technische universiteit eindhoven
2IL50 Data Structures
(b) [2 points] Suppose that we have numbers between 1 and 1000 in a binary search tree
and want to search for the number 363. Which of the following sequences could not be
the sequence of nodes examined? Why?
(a)
(b)
(c)
(d)
(e)
2, 252, 401, 398, 330, 344, 397, 363.
924, 220, 911, 244, 898, 258, 362, 363.
925, 202, 911, 240, 909, 245, 363.
2, 399, 387, 219, 266, 382, 381, 257, 363.
935, 278, 347, 621, 299, 392, 358, 363.
(c) [1 point] Is the operation of deletion “commutative” in the sense that deleting x and
then y from a binary search tree leaves the same tree as deleting y and then x? Argue
why it is or give a counterexample.
(d) [2 points] What is the difference between the binary-search-tree property and the minheap property? Can the min-heap property be used to print out the keys of an n-node
tree in sorted order in O(n) time? Explain how or why not.
Exercise 4: [3 points] You are given an array A of n distinct integers and a binary search
tree T with n internal nodes of which the keys of the nodes have been removed. Describe
an O(n log n) algorithm that puts all integers of A into T (as keys) such that T becomes a
correct binary search tree (see the figure below; the leaves of T have not been drawn). You
may use the structure of the tree as described on slide 8 of Lecture 7, but your algorithm may
not change the structure of the tree.
13
T
19
5
2
8
16
22
A 13 8 22 16 5 2 19
2
/department of mathematics and computer science