Module 11 Graphs and Traversals Application Programming Assignment
This Programming Assignment is based on Application Exercise 13.8.39:
Describe an efficient algorithm that given a network of n stations connected by m high-speed connection links, represented by a graph, it computes, for each station, the set of stations it can reach using no more than four links.
Describe the problem in terms of input and expected output clearly.
Develop a program that accepts a network G of n switching stations connected by m high speed links, it will output for each station, the set of stations it can reach using no more than four links. Clearly specify all data structures and their implementations used to program the solution.
In your submission, you must upload two files:
Submit a typed Word or PDF document with description of your solution on LUMINA.
Your answers should be very clear, in proper order, and use complete sentences.
Review your work several times before submission to be sure the steps of the algorithm are clearly and properly stated and in the correct order.
Provide pseudocode for the main algorithms, except for user interface, input/output, etc.
Submit a single zip file named Telephone_ Network_Lastname.zip containing the code file and test files.
Here are some further guidelines for programming code:
Use an OOP language, such as Java, Python or C++.
Comment your code.
Your code file must compile and accept any number of inputs in the format you specified.
You need to design an efficient algorithm which will run in O(n + m) running time that computes for each station, the set of stations it can reach using with maximum 4 links. This can be implemented by using the algorithms mentioned in the text book. Below is the input/output format we will consider for grading:
Input:
n = number of stations
m = number of communication links
List of 'm' pairs which represents link between stations
Output:
From each station list of stations that can be reached using no more than 4 links from each station
From the input, you can construct a graph and perform your algorithm to find out a path for each station to reach all of the stations using no more than 4 links.
Example Test cases:
#Case-1
Input:
n = 8
m = 10
links = [(0, 1), (1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7), (4, 5), (5, 6), (6, 7)]
Output:
Reachable stations from station 0: {0, 1, 2, 3, 4, 5, 6, 7}
Reachable stations from station 1: {0, 1, 2, 3, 4, 5, 6, 7}
Reachable stations from station 2: {0, 1, 2, 3, 4, 5, 6, 7}
Reachable stations from station 3: {0, 1, 2, 3, 4, 5, 6, 7}
Reachable stations from station 4: {0, 1, 2, 3, 4, 5, 6, 7}
Reachable stations from station 5: {0, 1, 2, 3, 4, 5, 6, 7}
Reachable stations from station 6: {0, 1, 2, 3, 4, 5, 6, 7}
Reachable stations from station 7: {0, 1, 2, 3, 4, 5, 6, 7}
#Case-2
Input:
n = 5
m = 4
connections = [(0, 1), (1, 2), (2, 3), (3, 4)]
Output:
Reachable stations from station 0: {0, 1, 2, 3, 4}
Reachable stations from station 1: {0, 1, 2, 3, 4}
Reachable stations from station 2: {0, 1, 2, 3, 4}
Reachable stations from station 3: {0, 1, 2, 3, 4}
Reachable stations from station 4: {0, 1, 2, 3, 4}
This format needs to be followed while presenting your code. You can include Doctests or sample test cases in a separate text document which needs to be in the zip file Telephone_ Network_Lastname.zip.