2011-10-25 28 views
9

Tôi đang tìm cấu trúc dữ liệu sẽ lưu trữ bất kỳ DAG nào, nhưng hiệu quả (tức là phụ tuyến tính trong số cạnh/đỉnh) phát hiện nếu thêm cạnh sẽ tạo chu trình (và do đó ngăn bạn phá vỡ bất biến acyclic). Có ai biết điều đó không?Có cấu trúc dữ liệu cho DAG hỗ trợ chỉnh sửa hiệu quả không?

Cảm ơn!

+4

Bài báo này, [Thuật toán nhanh hơn cho chủ đề gia tăng Đặt hàng] (http://www.cs.princeton.edu/~sssix/papers/dto-conf.pdf), yêu cầu ** khấu hao ** O (m^1/2) mỗi lần thêm vòng cung. Không chắc chắn nếu đó là đủ tốt, hoặc nếu một trường hợp xấu nhất ràng buộc là có thể. Tôi chưa đọc hết phần giới thiệu. – Crosbie

Trả lời

1

Bạn có thể duy trì cơ sở hạ tầng về đồ thị transitive closure. Sau đó kiểm tra xem việc thêm một cạnh có gây ra các chu kỳ được thực hiện trong thời gian không đổi; nếu bạn muốn thêm cạnh (i, j), hãy kiểm tra xem đã có đường đi từ j đến i chưa. Tuy nhiên, việc cập nhật cơ sở hạ tầng có thể tốn kém hơn nói chung (xem ví dụ: La Poutré and van Leeuwen).

Các vấn đề liên quan