Added all the codes.
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# Assignment-A1 (DFS | BFS) -> Alternative
|
||||
|
||||
"""
|
||||
THIS CODE HAS BEEN TESTED AND IS FULLY OPERATIONAL.
|
||||
|
||||
Problem Statement: Implement depth first search algorithm and Breadth First Search algorithm, Use an undirected graph and develop a recursive algorithm for searching all the vertices of a graph or tree data structure.
|
||||
|
||||
Code from ArtificialIntelligence (SPPU - Third Year - Computer Engineering - Content) repository on KSKA Git: https://git.kska.io/sppu-te-comp-content/ArtificialIntelligence
|
||||
"""
|
||||
|
||||
# Uses queue for BFS & stack for DFS
|
||||
|
||||
# BEGINNING OF CODE
|
||||
def bfs(graph, start):
|
||||
visited = [False] * len(graph)
|
||||
queue = [start]
|
||||
|
||||
while queue:
|
||||
node = queue.pop(0)
|
||||
if not visited[node]:
|
||||
print(node, end=" ")
|
||||
visited[node] = True
|
||||
|
||||
for neighbour in range(len(graph)):
|
||||
if graph[node][neighbour] == 1 and not visited[neighbour]:
|
||||
queue.append(neighbour)
|
||||
|
||||
def dfs(graph, start):
|
||||
visited = [False] * len(graph)
|
||||
stack = [start]
|
||||
|
||||
while stack:
|
||||
node = stack.pop()
|
||||
if visited[node] != True:
|
||||
print(node, end=" ")
|
||||
visited[node] = True
|
||||
|
||||
for neighbour in range(len(graph) - 1, -1, -1):
|
||||
if graph[node][neighbour] == 1 and visited[neighbour] != True:
|
||||
stack.append(neighbour)
|
||||
|
||||
graph = [
|
||||
# A B C D E F
|
||||
[ 0, 1, 1, 0, 0, 0], # A
|
||||
[ 1, 0, 0, 1, 1, 0], # B
|
||||
[ 1, 0, 0, 0, 0, 1], # C
|
||||
[ 0, 1, 0, 0, 0, 0], # D
|
||||
[ 0, 1, 0, 0, 0, 1], # E
|
||||
[ 0, 0, 1, 0, 1, 0] # F
|
||||
] # Might need to take user input for this. Hard coded values only for testing.
|
||||
|
||||
print("Breadth First Search:\t", end=" ")
|
||||
bfs(graph, 0)
|
||||
print("\nDepth First Search:\t", end=" ")
|
||||
dfs(graph, 0)
|
||||
# END OF CODE
|
||||
Reference in New Issue
Block a user