Tôi có một DAG của các phụ thuộc có chứa nhiều cạnh dư thừa (xem ví dụ bên dưới). Tôi muốn một thuật toán "nhanh" (nghĩa là có thể xử lý một biểu đồ với hàng ngàn nút / cạnh) để tìm một biểu đồ con tối thiểu.
Ví dụ:
A -> B -> C
A -> C
trong các từ A là điều kiện tiên quyết đối với B và B là điều kiện tiên quyết đối với C và A cũng là điều kiện tiên quyết đối với C. Trong trường hợp này A -> C là dự phòng (vì B đã cần đến C và A cần thiết để đạt B) .
Đã được một thời gian kể từ khi tôi nghiên cứu các thuật toán, và tôi không biết bắt đầu từ đâu.
Nhân tiện, thuật toán tìm thấy mức tối thiểu toàn cầu, tối thiểu cục bộ là không quan trọng (việc giảm cạnh chỉ là tối ưu hóa thời gian chạy cho giai đoạn xử lý tiếp theo).
Ngoài ra, tôi nhận ra đây là CS QA và không lập trình, nhưng chương trình của tôi được viết bằng Python, vì vậy tôi sẽ rất vui khi biết về mô-đun python hoặc mã nguồn mở để thực hiện việc giảm này, chỉ trong trường hợp bạn biết về nó.
cảm ơn trước!