Files
CS412-Applied-Algorithms/Graph-Search/README.md

87 lines
2.9 KiB
Markdown
Raw Normal View History

2025-10-08 11:08:58 -04:00
# Lab 11: Graph Search - Bus Stops
## Graph Search Basics
The purpose of this lab is to give you practice implementing graph data
structures and basic graph traversal and reachability queries.
You are building an app for a newly created bus system connecting Harrisonburg
to Charlottesville. There are many different bus routes each of which travels
between named stops along its route. Not all of the bus routes cross each other,
so it is possible that there are some pairs of stops where there is no way of
getting on a bus at the first stop and making changes to get to the final stop.
Your task is to implement a graph search function that can determine a sequence
of stops a user can use to get from a starting stop to an ending stop, or to
tell the user that there is no bus route possible between those two stops.
## Input
The bus route segments are described as single stretches of road between two
consecutive stops. All such pairs will be described in one direction, but all
bus routes are bidirectional, since buses travel in both directions along each
route.
The first line of input has an integer n that is the number of road segments
between consecutive stops. The next n lines of input describe the consecutive
stops, each of which is named by a string of alphabetical characters with no
spaces. The line will contain both of the stops of the segment, separated by a
space.
The final line of input is the query, which is two stop names separated by a
space.
## Output
Give a sequence of stop names starting at the starting stop of the query and
ending at the ending stop separated by spaces (if one exists), or output "no
route possible" if none is found.
<table>
<tr>
<td>Sample Input</td>
<td>Sample Output</td>
</tr>
<tr>
<td><pre>
2
Hburg JMU
Charlottesville JMU
Hburg Charlottesville</pre></td>
<td><pre>Hburg JMU Charlottesville</pre></td>
</tr>
<tr>
<td><pre>
4
Hburg JMU
JMU Upark
Upark Hburg
CVO UVA
Hburg UVA</pre></td>
<td><pre>no route possible</pre></td>
</tr>
</table>
Larger example files (the one used on Gradescope) can be downloaded here:
bus_stops_t3_in.txt Download bus_stops_t3_in.txt bus_stops_t3_exp.txt Download
bus_stops_t3_exp.txt Depending how you implement your graph, the order of stops
on the path may not be unique, so, checking your solution requires writing a bit
more code to validate your path (and of course, that is optional).
## Hints:
- Store the stops in a dictionary and use a set for the edge list.
- You will need to implement a method that uses a spanning tree. The lab is
asking you for a path between the locations (not necessarily the shortest
path).
## Submission:
Your code in a file name `cs412_bus_stops_a.py` and submit your code to
gradescope.
## Rubrics:
- (6 points) program solves the examples
- (3 points) solves the hidden examples
- (1 point) instructor review