Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để tìm xem Đồ thị vô hướng có chứa Chu trình sử dụng BFS hay không

Khi được yêu cầu tìm tổng tất cả các nút của cây, một lớp sẽ được tạo và nó chứa các phương thức để đặt nút gốc, thêm các phần tử vào cây, tìm kiếm một phần tử cụ thể và thêm các phần tử của cây vào tìm tổng và như vậy. Một phiên bản của lớp có thể được tạo để truy cập và sử dụng các phương thức này.

Dưới đây là một minh chứng về điều tương tự -

Ví dụ

 from collection import dequedef add_edge (adj:list, u, v):adj [u] .append (v) adj [v] .append (u) def detector_cycle (adj:list, s, V, visit:list ):parent =[-1] * V q =deque () visit [s] =True q.append (s) while q! =[]:u =q.pop () for v in adj [u]:if chưa thăm [v]:đã thăm [v] =True q.append (v) parent [v] =u elif parent [u]! =v:return True return Falsedef cycle_disconnected (adj:list, V):visit =[Sai ] * V cho tôi trong phạm vi (V):nếu không truy cập [i] và detector_cycle (adj, i, V, đã thăm):trả về True return Falseif __name__ =="__main__":V =5 adj =[[] cho tôi in range (V)] add_edge (adj, 0, 1) add_edge (adj, 1, 2) add_edge (adj, 2, 0) add_edge (adj, 2, 3) add_edge (adj, 2, 1) if cycle_disconnected (adj , V):print ("Có 5 đỉnh trong đồ thị") print ("0 -> 1") print ("1 -> 2") print ("2 -> 0") print ("2 -> 3 ") print (" 2 -> 1 ") print (" Là nhiệt e là chu trình? ") print (" Có ") else:print (" Có 5 đỉnh trong đồ thị ") print (" 0 -> 1 ") print (" 1 -> 2 ") print (" 2- -> 0 ") print (" 2 -> 3 ") print (" 2 -> 1 ") print (" Có chu kỳ không? ") Print (" Có ") print (" Không ")  

Đầu ra

 Có 5 đỉnh trong đồ thị 0 -> 11 -> 22 -> 02 -> 32 -> 1 Có chu trình không? Có 

Giải thích

  • Các gói bắt buộc được nhập.

  • Một phương pháp khác có tên là ‘add_edge’ được xác định để giúp thêm các nút vào biểu đồ.

  • Một phương pháp có tên là "detector_cycle" được định nghĩa để giúp xác định xem một chu trình có được hình thành khi các thành phần của biểu đồ được kết nối với nhau hay không.

  • Một phương thức khác có tên là 'cycle_disconnected' được định nghĩa để giúp xác định xem chu trình có phải là một chu trình được kết nối hay không.

  • Các phần tử được thêm vào biểu đồ bằng phương pháp "add_edge".

  • Nó được hiển thị trên bảng điều khiển.

  • Phương thức 'cycle_disconnected' được gọi và đầu ra được hiển thị trên bảng điều khiển.