Bạn có thể giúp tôi tìm ra độ phức tạp của thuật toán Fleury '(được sử dụng để lấy mạch Eulerian) không?Độ phức tạp về thời gian của thuật toán của Fleury
Trả lời
Ở đây: http://roticv.rantx.com/book/Eulerianpathandcircuit.pdf bạn có thể đọc trong số những thứ khác, rằng đó là O (E), số cạnh tuyến tính.
Thuật toán của Fleury không thực sự hoàn thành cho đến khi bạn xác định cách xác định các mép cầu. Tarjan đã đưa ra một thuật toán thời gian tuyến tính để xác định tất cả các cầu (xem http://en.wikipedia.org/wiki/Bridge_(graph_theory)), do đó, một triển khai ngây thơ chạy lại thuật toán của Tarjan sau mỗi cạnh đã xóa sẽ là O (E^2). Có lẽ có nhiều cách tốt hơn để tính toán lại tập các cây cầu, nhưng cũng có một thuật toán O (E) tốt hơn. (Xem http://www.algorithmist.com/index.php/Euler_tour#Fleury.27s_algorithm; không trang web của tôi :))
thuật toán Fleury bao gồm các bước sau:
Hãy chắc chắn rằng đồ thị có 0 hoặc 2 đỉnh lẻ.
Nếu có 0 đỉnh lẻ, hãy bắt đầu từ bất kỳ đâu. Nếu có 2 đỉnh lẻ, hãy bắt đầu từ một trong số chúng.
Làm theo từng cạnh một. Nếu bạn có một sự lựa chọn giữa một cây cầu và phi cầu, luôn luôn chọn phi cầu.
Dừng khi bạn hết các cạnh.
Nếu cầu được phát hiện ra bởi thuật toán Tarjan và những cây cầu được lưu trữ trong một ma trận kề thì chúng ta không cần phải chạy thuật toán Tarjan của mỗi thời gian để kiểm tra xem một cạnh là một cây cầu hay không. Chúng ta có thể kiểm tra nó trong O (1) thời gian cho tất cả các truy vấn cầu khác. Do đó, độ phức tạp của thuật toán Flury có thể được giảm xuống O (V + E) {vì đây là DFS} nhưng phương pháp này cần thêm không gian O (V2) để lưu trữ cầu.
- 1. Độ phức tạp thời gian của thuật toán Prim
- 2. Độ phức tạp về thời gian của thuật toán đồ thị độ sâu đầu tiên
- 3. Thời gian phức tạp của Sieve of Eratosthenes thuật toán
- 4. Độ phức tạp về thời gian của system.out.println
- 5. Độ phức tạp của thuật toán
- 6. Độ phức tạp về thời gian của thuật toán đệ quy
- 7. Độ phức tạp về thời gian đếm
- 8. Độ phức tạp của thuật toán
- 9. Thuật toán của ngân hàng tính toán độ phức tạp thời gian
- 10. Độ phức tạp thời gian của random.sample
- 11. Độ phức tạp về thời gian của erlang dict
- 12. Độ phức tạp của thuật toán nhân ma trận
- 13. Ví dụ về mã của thuật toán fleury hoặc hierholzer?
- 14. Độ phức tạp của thời gian nguyên trong Haskell
- 15. Thuật toán xấp xỉ phức tạp Kolmogorov Thuật toán
- 16. Độ phức tạp về thời gian được đặt trong Java
- 17. Độ phức tạp về thời gian của chuỗi con của Java()
- 18. Làm cách nào để tính toán độ phức tạp chính xác của thuật toán?
- 19. Độ phức tạp về thời gian đối với java ArrayList
- 20. Phân tích các thuật toán cho độ phức tạp thời gian
- 21. Độ phức tạp về thời gian của việc xóa một nút trong cây nhị phân
- 22. Một công cụ để tính toán độ phức tạp thời gian lớn của mã Java?
- 23. Độ phức tạp của thuật toán (Big-O) của trình giải Sudoku
- 24. Độ phức tạp về thời gian chứa (Object o), trong ArrayList của các đối tượng
- 25. F # bằng độ phức tạp của toán tử
- 26. Tại sao độ phức tạp của thuật toán này là O (1)
- 27. Đặt thời gian và tốc độ phức tạp
- 28. Đơn giản hóa độ phức tạp Big-O của thuật toán số mũ này
- 29. Thời gian phức tạp của phương pháp HashMap
- 30. Haskell GHC: độ phức tạp về thời gian của một mẫu khớp với N constructors là bao nhiêu?
Thuộc tính thuật toán trong liên kết thứ hai của tôi đến Fleury, không được hỗ trợ bởi bất kỳ nguồn nào khác mà tôi có thể tìm thấy. – user287792
Tôi không quen thuộc với thuật toán đó hoặc giấy đặc biệt, vì vậy tôi không thể nói. –