Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

The objective is to write a Python program that traverses graphs in BFS and DFS manner. BFS will determine the shortest path distance (number of

 

The objective is to write a Python program that traverses graphs in BFS and DFS manner. BFS will determine the shortest path distance (number of edges) from the root for each node reachable from the root. DFS will find cycles in the graph of nodes reachable from the root. Study the lecture on graphs, in particular graph traversals.

Download dfbf.txt, and rename it dfbf.py. Some helper code is provided. Don't change it. Do change your main, particularly to test your code on different types of graph (cyclic, non cyclic, all nodes reachable from the root, not all nodes reachable from the root).

It is your job to implement dfs and bfs. In both dfs and bfs, visit children of a node in left to right order, i.e., if adj is the adjacency list of a node, visit the children as follows for nxt in adj:

 import sys #global variable, keeping track in dfs whether a cycle was found cyclic = False # Don't change helper functions # read, dump, white, dfsInit def read(fnm): """ read file fnm containing a graph into a dictionary and return the dictionary each line has a nodeName followed by its adjacent nodeNames """ f = open(fnm) gr = {} #graph represented by dictionary for line in f: l =line.strip().split(" ") # ignore empty lines if l==['']:continue # dictionary: key: nodeName value: (color, adjacency List of names) gr[l[0]]= ('white',l[1:]) return gr def dump(gr): print("Input graph: nodeName (color, [adj list]) dictionary ") for e in gr: print(e, gr[e]) def white(gr) : """ paint all gr nodes white """ for e in gr : gr[e] = ('white',gr[e][1]) def dfsInit(gr,root): """ dfs keeps track of cycles in global cyclic call dfs with appropriate initial parameters """ global cyclic cyclic = False visited = dfs(gr,root,[]) return (visited,cyclic) # Work on bfs, dfs def bfs(gr,q): """ q is an array representing a queue of (node,distance) pairs initially queue q contains 1 (node,distance) pair: (root,0) (see the call to bfs in main) breadth first search gr from the root, keep track of distance from root return the queue of all (node,distance) pairs visited """ return q def dfs(gr,r,visited): """ depth first search gr from root r for cycles, when a cycle is detected, set global cyclic to True return array of nodes visited, i.e. append node to visited when encountering it for the first time (i.e. when it is white) """ global cyclic return visited if __name__ == "__main__": print(sys.argv[0]) # program name gr = read(sys.argv[1]) # graph file name root = sys.argv[2] # root node print("BFS") dump(gr) print("Root node:", root) # don't need grey for bfs gr[root] = ('black',gr[root][1]) q = bfs(gr,[(root,0)]) print("BFS queue: (node name, distance) pairs") print(q) print("END BFS") print() white(gr); print("DFS") dump(gr) print("Root node", root) vis,cyc = dfsInit(gr,root) print("DFS from root visited:") print(vis) if cyc: print("graph with root",root,"is cyclic") else: print("graph with root",root,"is not cyclic") print("END DFS") 

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Advances In Database Technology Edbt 88 International Conference On Extending Database Technology Venice Italy March 14 18 1988 Proceedings Lncs 303

Authors: Joachim W. Schmidt ,Stefano Ceri ,Michele Missikoff

1988th Edition

3540190740, 978-3540190745

More Books

Students also viewed these Databases questions

Question

What is Entrepreneur?

Answered: 1 week ago

Question

Which period is known as the chalolithic age ?

Answered: 1 week ago

Question

Explain the Neolithic age compared to the paleolithic age ?

Answered: 1 week ago

Question

7. Understand the challenges of multilingualism.

Answered: 1 week ago