Sắp xếp tô pô Python lặp đi lặp lại
DFS đã được sửa đổi để tạo ra một sắp xếp topo. Trong hướng dẫn này, chúng tôi sẽ thực hiện sắp xếp tô pô trên biểu đồ bằng ngôn ngữ python Show Sắp xếp tô pô - Giới thiệu cơ bảnSắp xếp tô pô là thứ tự của các đỉnh theo cách mà nút hoặc đỉnh a phải truy cập trước nút hoặc đỉnh b cho mọi cạnh có hướng ab. Thực hiện truyền tải DFS bắt đầu tại một số nút trong biểu đồ và kết thúc với DFS trên một trong các nút chưa được truy cập nếu còn bất kỳ nút nào. Thao tác này được lặp lại cho đến khi không còn nút nào chưa được truy cập. Thứ tự cấu trúc liên kết của DAG sau đó được xác định bằng cách sắp xếp thời gian hoàn thành tương ứng với từng nút theo thứ tự giảm dần Chúng ta hãy nhìn vào sơ đồ dưới đây Thứ tự topo hoặc sắp xếp của đồ thị là A, B, C, D, E, F. Nghĩa là muốn thăm đỉnh B thì phải thăm đỉnh A trước. Để thăm đỉnh C, đỉnh A, B phải được thăm, v.v. Hai điều kiện sau sẽ được sử dụng để sắp xếp một mảng bằng phương pháp tô pô
thuật toánĐến bây giờ, chúng ta đã hiểu sơ bộ về cách sắp xếp tô pô được thực hiện. Để hiểu rõ hơn, hãy đi sâu vào thuật toán, sau đó là mã
Chương trình sắp xếp vỏNhư đã thảo luận ở trên về thuật toán, bây giờ chúng ta hãy đi sâu vào phần lập trình của thao tác sắp xếp tô pô chịu ảnh hưởng của thuật toán
Phần kết luậnTrong hướng dẫn này, chúng tôi đã thực hiện thao tác sắp xếp tô pô trong python để sắp xếp biểu đồ. Thuật toán sắp xếp tô pô không ổn định. Độ phức tạp thời gian của thuật toán sắp xếp tô pô là O(n+k) và độ phức tạp không gian là O(max). Chúng ta có thể sử dụng radic Sắp xếp tô pô của DAG là thứ tự tuyến tính từng phần của các nút của nó sao cho nếu đồ thị đó có cạnh hướng từ u đến v, thì u phải được đặt theo thứ tự trước v. Đặt hàng một phần rất hữu ích trong nhiều tình huống. Vấn đề lập lịch trình, giải pháp phụ thuộc Một số thuật ngữ hữu ích cho đồ thị
bước
Triển khai mã from collections import defaultdict Trong cách triển khai ở trên, tôi đã sử dụng heapq vì tôi muốn đảm bảo kết quả là nhỏ nhất về mặt từ điển trong trường hợp chúng tôi có nhiều đơn đặt hàng. Ngoài ra, tôi đã sử dụng (u-1 và v-1) vì tôi đang sử dụng lập chỉ mục dựa trên 1 cho các nút Tìm kiếm theo chiều sâu đã sửa đổibước
Triển khai mã from collections import defaultdict Trong phần triển khai ở trên, tôi đã sử dụng Reverse(range(self. V)) vì tôi muốn đảm bảo kết quả là nhỏ nhất về mặt từ điển trong trường hợp chúng tôi có nhiều đơn đặt hàng mã hóa hạnh phúc Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Kiểm tra Sự bất hòa trong cộng đồng của chúng tôi và tham gia Tập thể tài năng của chúng tôi Sắp xếp tô pô có thể hoạt động với các chu kỳ không?Sắp xếp tô pô là một thứ tự tuyến tính được xác định cho các đỉnh của đồ thị tuần hoàn có hướng (DAG). Đối với mọi cạnh có hướng (u,v), đỉnh u xuất hiện trước đỉnh v theo thứ tự được sắp xếp theo cấu trúc liên kết. Điều này có nghĩa là sắp xếp tô pô cho đồ thị tuần hoàn là không thể .
Sắp xếp tô pô có đệ quy không?Sắp xếp tô pô – Thuật toán đệ quy dựa trên DFS
. Khi bạn thực hiện DFS trên đồ thị tuần hoàn có hướng, cuối cùng bạn sẽ đến một nút không có cạnh nào.
Sắp xếp tô pô có sử dụng BFS hoặc DFS không?Sắp xếp tô pô có thể được thực hiện bởi cả DFS cũng như BFS , tuy nhiên, bài đăng này liên quan đến cách tiếp cận BFS của sắp xếp tô pô thường được gọi là Thuật toán Khan.
Độ phức tạp thời gian sắp xếp cấu trúc liên kết trong Python là gì?Độ phức tạp về thời gian để Sắp xếp tô pô là O(E + V) , ở đây, E có nghĩa là số lượng Cạnh trong Biểu đồ và . |