Có một thuật toán tồn tại để duy trì hiệu quả thông tin kết nối cho DAG khi có chèn / xóa không?


17

Cho một đồ thị chu kỳ có hướng, , có thể hỗ trợ hiệu quả các hoạt động sau không?G(V,E)

  • : Xác định nếu có một đường dẫn trong G từ nút a đến nút bisConnected(G,a,b)Gab
  • : Thêm một cạnh từ a đến b trong đồ thị Glink(G,a,b)abG
  • : Loại bỏ cạnh từ a đến b trong Gunlink(G,a,b)abG
  • : Thêm một đỉnh vào Gadd(G,a)
  • : Loại bỏ một đỉnh khỏi Gremove(G,a)

Một vài lưu ý:

  • Nếu chúng ta không được phép , có vẻ như nó sẽ được dễ dàng để duy trì thông tin mối, sử dụng một cấu trúc kiểu dữ liệu rời nhau-set.unlink
  • Rõ ràng, có thể được thực hiện sử dụng độ sâu hoặc tìm kiếm theo chiều rộng, sử dụng các đại diện dựa trên con trỏ ngây thơ của đồ thị. Nhưng điều này là không hiệu quả.isConnected

Tôi hy vọng thời gian khấu hao không đổi hoặc logarit cho cả ba thao tác. Điều này có thể không?


3
Liên quan: Phiên bản đồ thị vô hướng đã được hỏi trước đó. Có một thuật toán trực tuyến để theo dõi các thành phần trong một biểu đồ không thay đổi?
Tsuyoshi Ito

1
Bạn có thể giải thích làm thế nào để giải quyết trường hợp đơn giản hơn (không hủy liên kết) bằng cách sử dụng cấu trúc dữ liệu loại tách rời?
jbapple

@Tsuyoshi - các liên kết trong câu hỏi đó trông thú vị, tôi đang xem chúng bây giờ.
Justin Kilpatrick

(1) Bạn đang tìm kiếm một thuật toán đồ thị động cho khả năng tiếp cận được định hướng với hạn chế rằng đồ thị là một DAG. Nếu tôi không nhầm, khả năng tiếp cận theo hướng động khó hơn nhiều so với đối tác không mong muốn, nhưng ở đây, thuộc tính DAG có thể giúp ích. (2) removeCũng loại bỏ các cạnh sự cố? Nếu vậy, yêu cầu thao tác đó là thời gian O (log n) có thể là quá nhiều để hy vọng LỚN.
Tsuyoshi Ito

Câu trả lời:


19

Vấn đề bạn đã mô tả là khả năng tiếp cận DAG hoàn toàn động (còn được gọi là đóng cửa bắc cầu hoàn toàn động trên DAG). Nó được gọi là hoàn toàn năng động vì mọi người cũng nghiên cứu các phiên bản trong đó chỉ có thể xóa (sau đó gọi là khả năng tiếp cận giảm dần) và trong đó chỉ có thể chèn thêm (gọi là khả năng tiếp cận tăng dần).

mnn1.58n0.58mn+I·n2+DID1

n2mnO(nm+nlognnn1.58n0.58n1.495n1.495

Có được thời gian truy vấn đa bội, mà không tăng thời gian cập nhật quá nhiều là một vấn đề mở lớn, ngay cả đối với DAG.


1
Cảm ơn về câu trả lời của bạn. Mặc dù tôi phải nói rằng tôi thất vọng về những giới hạn đó. :(
Justin Kilpatrick

1
Một câu hỏi liên quan: bạn có thể chỉ cho tôi bất kỳ tài liệu tham khảo nào về các vấn đề đơn giản hơn, khả năng tiếp cận gia tăng và khả năng tiếp cận giảm dần cho DAG không?
Justin Kilpatrick

Điều này không đường may tốt hơn nhiều so với cách tiếp cận dfs ngây thơ (O(1),O(n^2))hay (O(m),O(n+m)).
Thomas Ahle

4

O(n0.58)O(n1.58)

(Điều này chỉ bao gồm các phiên bản đầu tiên của câu hỏi của bạn, với linkunlinknhưng không có addremove.)


Các giới hạn được xây dựng trên thuật toán của Strassen, vì vậy hằng số là rất lớn.
Thomas Ahle
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.