http://dirtsimple.org/2010/11/simplest-way-to-do-tree-basing-queries.html cung cấp một thuật toán để chèn và xóa khỏi Bảng đóng.
Tôi muốn mô hình hóa một cấu trúc dữ liệu tương tự, ngoại trừ các nút có thể có nhiều cha mẹ.
Được:
Nếu chúng tôi loại bỏ, [B, C]
tôi hy vọng sẽ kết thúc với:
và nếu chúng ta loại bỏ nút, B
tôi sẽ kết thúc bằng:
Tuy nhiên, nếu bạn sử dụng thuật toán của tác giả để xóa các liên kết hoặc nút, bạn sẽ nhận thấy rằng nó gắn thẻ [D, C, 1]
để xóa, điều này là không mong muốn.
Những gì tôi đã cố gắng cho đến nay
Tôi đã thử điều chỉnh cấu trúc dữ liệu ban đầu bằng cách thêm một references
cột cho biết có bao nhiêu cách để di chuyển giữa hai nút. Trong ví dụ trên, bạn có thể di chuyển từ A
tới C
hoặc thông qua B
hoặc thông qua D
. Ý tưởng này có thể đã được rằng khi B
được gỡ bỏ, con đường từ A
để C
được lưu giữ và số lượng tài liệu tham khảo giảm từ 2 đến 1. It was nice về mặt lý thuyết, nhưng tôi không thể tìm ra cách để có được việc thực hiện làm việc và bây giờ tôi tự hỏi, nếu hoàn toàn có thể (cấu trúc dữ liệu có thể không chứa đủ thông tin để tìm ra hàng nào cần xóa).
Những gì tôi đang hỏi
Làm thế nào bạn thích ứng Bàn đóng cửa để hỗ trợ nhiều phụ huynh? Những cấu trúc dữ liệu thay thế nào bạn muốn giới thiệu? https://stackoverflow.com/q/4048151/14731 chứa một danh sách các cấu trúc dữ liệu như vậy, nhưng không rõ những hỗ trợ nào (hoặc tốt nhất cho) nhiều cha mẹ.
references
cột là gì?