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

Popular posts from this blog

1d array

strings

2d array