Professional Documents
Culture Documents
ci
ci
import heapq
def add_vertices(v):
if v not in graph:
graph[v] = []
def print_graph():
for v in graph:
print(f"Vertex {v} -> ", end="")
for edge in graph[v]:
print(f"{edge[0]} (edge weight {edge[1]})", end=", ")
print()
def delete_vertex(v):
if v in graph:
del graph[v]
for vertex in graph:
graph[vertex] = [(neighbor, cost) for neighbor, cost in graph[vertex] if neighbor !=
v]
else:
print(f"Vertex {v} not found in the graph.")
visited = set()
queue = deque([start_vertex])
visited.add(start_vertex)
print("BFS Traversal:")
while queue:
vertex = queue.popleft()
print(vertex, end=" ")
if vertex == end_vertex:
print(f"\nReached the end vertex {end_vertex}.")
return
visited = set()
stack = [start_vertex] # Store vertices to visit
visited.add(start_vertex)
print("DFS Traversal:")
while stack:
vertex = stack.pop()
print(vertex, end=" ")
if vertex == end_vertex:
print(f"\nReached the end vertex {end_vertex}.")
return
if vertex == end_vertex:
print(f"UCS Path Cost from {start_vertex} to {end_vertex}:
{path_cost[end_vertex]}")
print(f"UCS Path:")
print_path(parent, end_vertex)
return
def construct_graph():
global graph
graph.clear() # Clear existing graph data
n = int(input("Enter number of vertices: "))
for i in range(n):
v = int(input(f"Enter vertex {i + 1}: "))
add_vertices(v)
def main():
while True:
print("\nMenu:")
print("1. Construct graph")
print("2. Add vertex")
print("3. Add edge")
print("4. Delete vertex")
print("5. Delete edge")
print("6. Print graph")
print("7. Perform BFS traversal")
print("8. Perform DFS traversal")
print("9. Perform UCS (Uniform Cost Search)")
print("10. Exit")
if choice == '1':
construct_graph()
elif choice == '2':
v = int(input("Enter vertex to add: "))
add_vertices(v)
elif choice == '3':
v1, v2, cost = map(int, input("Enter edge (v1, v2, cost): ").split(","))
add_edges(v1, v2, cost)
elif choice == '4':
v = int(input("Enter vertex to delete: "))
delete_vertex(v)
elif choice == '5':
v1, v2 = map(int, input("Enter edge to delete (v1, v2): ").split(","))
delete_edge(v1, v2)
elif choice == '6':
print("Adjacency List Representation of Graph:")
print_graph()
elif choice == '7':
start_vertex = int(input("Enter the start vertex for BFS: "))
end_vertex = int(input("Enter the end vertex for BFS: "))
bfs(start_vertex, end_vertex)
elif choice == '8':
start_vertex = int(input("Enter the start vertex for DFS: "))
end_vertex = int(input("Enter the end vertex for DFS: "))
dfs(start_vertex, end_vertex)
elif choice == '9':
start_vertex = int(input("Enter the start vertex for UCS: "))
end_vertex = int(input("Enter the end vertex for UCS: "))
ucs(start_vertex, end_vertex)
elif choice == '10':
print("Exiting program.")
break
else:
print("Invalid choice. Please enter a valid option.")
if __name__ == "__main__":
main()