Homework 07
Q1: Create directed acyclic graph have random weight (v=10, e=20), plot this graph using plot_graph function. Prove that using is_undirected and is_acyclic_graph functions. Then run shortest_path function on this graph, use least 3 different label pair (shortest_path(g,v1,v2), shortest_path(g,v3,v4), )
Q2: Create undirected and acyclic graph have no weight (v=15), plot this graph using plot_graph function. Prove that using is_undirected and is_acyclic_graph functions. Then run is_connected function on this graph, use least 3 different label pair ( is_connected(g,v1,v2), is_connected(g,v3,v4), )
Q3: Create undirected and cyclic graph have no weight (v=10), plot this graph using plot_graph function. Prove that using is_undirected and is_acyclic_graph functions. Then run DepthFirstSearch and BreathFirstSearch functions on text book and plot spanning trees.
Q4: This answer of this question should be only 1 page. Explain what is the differencies of BFS and DFS. (usage areas, advantages, ). Consider the undirected graph below which is represented by its adjacency matrix.
- Run the DFS algorithm starting from vertex 1, and draw the DFS tree.
- Run the BFS algorithm starting from vertex 1, and draw the BFS tree.
- Input g, a graph object; v1, a vertex label in g; v2, a vertex label in g.
- Output TRUE if there is a path from v1 to v2 in g, FALSE if not.
- Description Determine if there is any path between vertex v1 and vertex v2 in graph g. If v1 or v2 are not in g then throw an error.
Function shortest_path
- Input g, graph object; v1, a vertex label in g; v2, a vertex label in g.
- Output path, a vector of the names of vertices that make up the shortest path, in order. If there is no path between the vertices then return an empty vector; distance , total weight of path.
- Description Find the shortest path from vertex v1 to vertex v2 using Dijkstras algorithm. Note that there may not be a unique solution for any given graph, you are only required to return one path.
Function is_undirected
- Input g, a graph object.
- Output TRUE if g is undirected, FALSE if not.
- Description Check if the graph object is undirected, this is true if all directed edges have a complementary directed edge with the same weight in the opposite direction.
Function is_acyclic_graph
- Input g, a graph object.
- Output TRUE if g is undirected, FALSE if not.
- Description -The graph may or may not have cycles. To check do a graph traversal (BFS or DFS).
Function plot_graph
- Input g, a graph object
- Output plot showing all vertices (labeled) and edges.
- Description This function should be able to take any graph object and produce a reasonably attractive visual representation of that graph. Your algorithm should make use edge weights to layout the distance between vertices.
Book Student source code:
http://bcs.wiley.com/he-bcs/Books?action=resource&bcsId=5643&itemId=0470128704&reso urceId=21295
Note:
- Obey OOP principles and clean code standarts.
- Write a main and maintest for each function
- Your submission is studentnumber.zip and include following files:
- o intelliJ project file
Q1 folder
Q2 folder
Q3 folder
- o Report.pdf
- o Javadoc
- The report must be in format ReportFormat_hw7
Reviews
There are no reviews yet.