## Description

Question 1 – 15 points

(a) [6 points] Insert {12, 15, 20, 30, 41, 29, 17, 25, 22} into an empty hash table which:

• uses linear probing for collision resolution.

• uses quadratic probing for collision resolution.

• uses separate chaining.

The size of each hash table is 13 and the hash function is: h(x) = x mod 13

(b) [9 points] Find the average number of probes for a successful search and an unsuccessful search for the hash tables which you created in part a. Use the following numbers

for unsuccessful searches: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 38}

Table 1: Average number of probes

Successful Search Unsuccessful Search

Calculated Theoretical Calculated Theoretical

Linear Probing

Quadratic Probing

Separate Chaining

Page 2

Fundamental Structures of Computer Science II

Question 2 – 70 points

In this part you will design and implement a flight database network system. You will use

the dataset, routes.csv, provided with the homework.1 The dataset has the following

format:

Dataset format

Airline, Source airport, Destination airport

Airline: 2 or 3-letter code of the airline.

Source airport: 3 or 4-letter code of the source airport.

Destination airport: 3 or 4-letter code of the destination airport.

In total, there are 67652 routes between 3425 airports in the dateset.

Sample entry:

TK,ESB,IST

The example above means that there is a direct flight from ESB (Ankara Esenboga Airport) to IST

(Istanbul Ataturk Airport) operated by TK (Turkish Airlines).

Note: routes are directional: if an airline operates services from A to B and from B to A, both

A-B and B-A are listed separately.

First create a class named FlightNetwork, put all related code into FlightNetwork.h

and FlightNetwork.cpp files. In the constructor of the FlightNetwork class, you will

read the provided dataset and store it in appropriate data structure (airports in the

dataset will be vertices and flights will be directed edges in the graph). You should decide

whether adjacency matrix or adjacency list fits best for the purpose of this assignment.

You need to implement the following functionalities in FlightNetwork class.

(a) [10 points] Checks if there are any direct flights from airport A to airport B.

input: source airport, destination airport

output: boolean

(b) [10 points] Finds and prints all airports which are directly accessible from airport A.

input: source airport

(c) [10 points] Checks if there are any flight paths from airport A to airport B.

input: source airport, destination airport

output: boolean

(d) [15 points] Finds and prints the flight path from airport A to airport B with the

minimum number of stops. If there are multiple such paths, printing one of them is

sufficient.

input: source airport, destination airport

1Retrieved from https://openflights.org/data.html#route and simplified.

Page 3

Fundamental Structures of Computer Science II

(e) [15 points] Finds and prints all of the flight paths with n or lower number of stops

from airport A to airport B. Go to the hint!

input: source airport, destination airport, n

(f) [10 points] In this part of the assignment, you will write a program which takes

arguments from the command line and runs appropriate functions. The first argument

defines which function will be run. If the first argument is a, then you will run part

a. If it is b, then you will run part b and etc. The remaining arguments will be

passed to the corresponding function. For example: if your program is called as

./hw4 d IST ESB

then in your main function, you should call the function in part d and provide IST

and ESB parameters to it.

At the end, write a basic Makefile which compiles all your code and creates an executable file named hw4. Check out these tutorials for writing a simple make file:

tutorial 1, tutorial 2. Please make sure that your Makefile works properly on the

dijkstra server.

Question 3 – 15 points

After implementing FlightNetwork class, you are expected to prepare a single page report.2

In your report, state which data structure (adjacency matrix or adjacency list) you

used to store the graph and explain the reasoning behind your decision. And answer the

following questions:

• What would the time complexity (in terms of D – degree of source airport) of part a

be if:

– adjacency matrix is used?

– adjacency list is used?

• What is the worst case time complexity of part c in terms of |E| and |V |?

• What is the worst case time complexity of part d in terms of |E| and |V |?

For time complexity calculations, show all your work clearly. Answers without explanations will not get any credits.

2Please make sure that your report does not exceed the specified page limit, otherwise you may lose

points

Page 4

Fundamental Structures of Computer Science II

Hint for Question 2 Part (e)

You can solve this problem by modifying the BFS algorithm. Instead of vertices, keep

the paths in the queue.

• Initial path is source airport, add this to the queue.

• Then until queue is empty repeat the following:

– dequeue an element from the queue and assign it to currentPath

– set v to be the last element of currentPath

– if v == destination airport, then print currentPath

– visit each vertex u adjacent to v:

∗ if u is not in the currentPath, create a new path by combining currentPath

and u, and add it to the queue

Page 5