lab
from collections import defaultdict
class Graph:
def __init__(self):
self.graph = defaultdict(list)
def add_edge(self, u, v):
self.graph[u].append(v)
def bfs(self, start):
visited = set()
queue = [start]
while queue:
vertex = queue.pop(0)
if vertex not in visited:
print(vertex, end=" ")
visited.add(vertex)
for neighbor in self.graph[vertex]:
if neighbor not in visited:
queue.append(neighbor)
# Example usage:
if __name__ == "__main__":
g = Graph()
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 2)
g.add_edge(2, 0)
g.add_edge(2, 3)
g.add_edge(3, 3)
print("Breadth-First Traversal (starting from vertex 2):")
g.bfs(2)
VIVA
BFS Purpose: Find shortest paths, explore nodes layer by layer.
Heuristic in A*: Estimate node-to-goal distance, guides efficient search.
A Advantages/Limitations*:
Advantages: Completeness, Optimality, Efficiency.
Limitations: Memory usage, Heuristic quality, Admissibility.
TSP (Traveling Salesman Problem): Find shortest route visiting cities once, NP-hard, various solving methods (Exact, Approximation, Heuristics), practical applications in routing and optimization.
Comments
Post a Comment