tôi muốn thực hiện thuật toán của kruskal trong python làm thế nào tôi có thể đi về đại diện cho cây/đồ thị và cách tiếp cận nào tôi nên làm theo để phát hiện các chu kỳ?làm thế nào để đại diện cho đồ thị/cây trong python và làm thế nào để phát hiện chu kỳ?
Trả lời
Cách đơn giản nhất của đại diện cho nó (theo ý kiến của tôi) là bằng cách sử dụng một dict của mảng danh sách:
graph = {}
graph[node_id] = [other_node_id for other_node_id in neighbors(node_id)]
Một cách đơn giản để tìm chu kỳ là bằng cách sử dụng một BF hoặc tìm kiếm DF:
def df(node):
if visited(node):
pass # found a cycle here, do something with it
visit(node)
[df(node_id) for node_id in graph[node]]
Tuyên bố từ chối trách nhiệm: đây thực sự là bản phác thảo; neighbors()
, visited()
và visit()
chỉ là các núm vú giả để thể hiện cách thuật toán trông như thế nào.
Python Graph API là một nơi tốt để bắt đầu.
Ví dụ: NetworkX có triển khai thuật toán của Kruskal để tìm cây bao trùm tối thiểu.
Nếu bạn muốn phát minh lại bánh xe và tự làm, điều đó cũng có thể.
vâng tôi đang cố gắng phát minh ra bánh xe ít nhất lần đầu tiên. –
- 1. Làm thế nào để phát hiện chữ thường trong Python?
- 2. Làm thế nào để kích hoạt báo cáo Chu kỳ trong các thiết bị trong ARC?
- 3. Làm thế nào để đại diện cho thời gian hiện tại của Vương quốc Anh?
- 4. Làm thế nào để phát hiện sự hiện diện và vị trí của JVM trên Windows?
- 5. Làm thế nào để đại diện cho văn bản để phân loại trong weka?
- 6. Làm thế nào để hình ảnh "cho" vòng lặp trong đại diện khối của thuật toán
- 7. Làm thế nào để tổ chức các gói (và ngăn chặn các chu kỳ phụ thuộc)?
- 8. Làm thế nào để tham gia các liên kết trong Python để có được một chu kỳ?
- 9. Làm thế nào để đại diện cho cây với chia sẻ trong Haskell
- 10. Làm thế nào để sử dụng định dạng chuỗi Python để chuyển đổi một số nguyên đại diện cho xu cho một phao đại diện cho đô la?
- 11. Làm thế nào là null đại diện trong NET
- 12. Python C API: làm thế nào để có được đại diện chuỗi của ngoại lệ?
- 13. Làm thế nào để tìm tất cả các chu kỳ của một chuỗi trong Ruby?
- 14. Làm thế nào để đại diện cho tiền trong Objective-C/iOS?
- 15. Làm thế nào để đại diện cho dấu ngoặc kép nhân vật kép (") trong regex?
- 16. Làm thế nào để đại diện cho kiểm đếm/năm-bar-gate trong unicode?
- 17. Làm thế nào để thực hiện một ma trận kề trong java tạo chu trình hamilton
- 18. Làm thế nào để tôi đại diện cho hộp đôi trong Scala tinh khiết?
- 19. Làm thế nào để đại diện cho sqrt (-1) trong lập trình?
- 20. Làm thế nào để đại diện cho char trống trong Java Character lớp
- 21. Làm cách nào để nhận thực thể đại diện cho người dùng hiện tại trong Symfony2?
- 22. Thuật toán tốt nhất để phát hiện chu kỳ trong đồ thị được hướng dẫn
- 23. Làm cách nào để tối ưu hóa chu kỳ?
- 24. Làm thế nào để chu kỳ với một mảng trong MySQL?
- 25. Làm thế nào để kiểm tra nếu một đồ thị vô hướng có một chu kỳ dài lẻ
- 26. Làm thế nào để phát hiện deadlocks trong Mysql/innodb?
- 27. Làm thế nào để tạo XElement ngày đại diện trong DateTime as type xs: Ngày
- 28. Làm thế nào để thực hiện tìm kiếm tia trong OpenGL hiện đại?
- 29. Làm thế nào để làm cho tab Bash' hoàn toàn tự động chu kỳ qua các tùy chọn OSX
- 30. Làm thế nào để phát hiện cuộn ngang trong jQuery?
bằng từ điển của mảng u nghĩa là từ điển của danh sách? –
@Bunny Rabbit erm .. yes. Xin lỗi, tôi đã sử dụng sai tên>< –