Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Breadth First Search (BFS) and Depth First Search (DFS) Algorithms in Python, Study notes of Artificial Intelligence

Artificial Intelligence study notes

Typology: Study notes

2021/2022

Available from 02/13/2024

versha-parashar
versha-parashar 🇮🇳

4 documents

1 / 7

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
ALGORITHM FOR INTELLIGENT SYSTEMS
AND ROBOTICS
LAB – 3: Searching in AI
Breadth First Traversal (BFS) for a Graph
Code:
# Python3 Program to print BFS traversal
# from a given source vertex. BFS(int s)
# traverses vertices reachable from s.
from collections import defaultdict
# This class represents a directed graph
# using adjacency list representation
class Graph:
# Constructor
def __init__(self):
# default dictionary to store graph
self.graph = defaultdict(list)
# function to add an edge to graph
def addEdge(self,u,v):
self.graph[u].append(v)
# Function to print a BFS of graph
def BFS(self, s):
# Mark all the vertices as not visited
visited = [False] * (len(self.graph))
pf3
pf4
pf5

Partial preview of the text

Download Breadth First Search (BFS) and Depth First Search (DFS) Algorithms in Python and more Study notes Artificial Intelligence in PDF only on Docsity!

ALGORITHM FOR INTELLIGENT SYSTEMS

AND ROBOTICS

LAB – 3: Searching in AI

Breadth First Traversal (BFS) for a Graph Code:

Python3 Program to print BFS traversal

from a given source vertex. BFS(int s)

traverses vertices reachable from s.

from collections import defaultdict

This class represents a directed graph

using adjacency list representation

class Graph:

Constructor

def init(self):

default dictionary to store graph

self.graph = defaultdict(list)

function to add an edge to graph

def addEdge(self,u,v): self.graph[u].append(v)

Function to print a BFS of graph

def BFS(self, s):

Mark all the vertices as not visited

visited = [False] * (len(self.graph))

Create a queue for BFS

queue = []

Mark the source node as

visited and enqueue it

queue.append(s) visited[s] = True while queue:

Dequeue a vertex from

queue and print it

s = queue.pop(0) print (s, end = " ")

Get all adjacent vertices of the

dequeued vertex s. If a adjacent

has not been visited, then mark it

visited and enqueue it

for i in self.graph[s]: if visited[i] == False: queue.append(i) visited[i] = True

Driver code

Create a graph given in

the above diagram

g = Graph() g.addEdge(0, 1) g.addEdge(0, 2) g.addEdge(1, 2) g.addEdge(2, 0)

self.graph = defaultdict(list)

function to add an edge to graph

def addEdge(self, u, v): self.graph[u].append(v)

A function used by DFS

def DFSUtil(self, v, visited):

Mark the current node as visited

and print it

visited.add(v) print(v, end=' ')

Recur for all the vertices

adjacent to this vertex

for neighbour in self.graph[v]: if neighbour not in visited: self.DFSUtil(neighbour, visited)

The function to do DFS traversal. It uses

recursive DFSUtil()

def DFS(self, v):

Create a set to store visited vertices

visited = set()

Call the recursive helper function

to print DFS traversal

self.DFSUtil(v, visited)

Driver's code

Create a graph given

in the above diagram

if name == "main":

g = Graph() g.addEdge(0, 1) g.addEdge(0, 2) g.addEdge(1, 2) g.addEdge(2, 0) g.addEdge(2, 3) g.addEdge(3, 3) print("Following is DFS from (starting from vertex 2)")

Function call

g.DFS(2) Result: Iterative Depth First Traversal (Iterative DFS) for a Graph Code:

An Iterative Python program to do DFS traversal from

a given source vertex. DFS(int s) traverses vertices

reachable from s.

Get all adjacent vertices of the popped vertex s

If a adjacent has not been visited, then push it

to the stack.

for node in self.adj[s]: if (not visited[node]): stack.append(node)

Driver program to test methods of graph class

g = Graph(5); # Total 5 vertices in graph g.addEdge(1, 0); g.addEdge(0, 2); g.addEdge(2, 1); g.addEdge(0, 3); g.addEdge(1, 4); print("Following is Depth First Traversal") g.DFS(0) Result: