Tôi có một tham chiếu PriorityQueue chứa một số đối tượng. Khi tôi chèn các phần tử vào hàng đợi ưu tiên, thứ tự được duy trì bởi cấu trúc dữ liệu. Bây giờ sau khi một hoạt động loại bỏ tôi cập nhật một số tài liệu tham khảo đang được tổ chức bởi hàng đợi ưu tiên. Lý tưởng nhất điều này đòi hỏi một hoạt động reheapify trên hàng đợi ưu tiên nhưng như là rõ ràng kể từ khi tôi sửa đổi tài liệu tham khảo được lựa chọn bên ngoài một reheapify không thể được kích hoạt. Vì vậy, cách tốt nhất để đảm bảo rằng tôi có thể có được những lợi thế của một đống như nhanh chóng trích xuất tối đa trong sự hiện diện của sửa đổi các yếu tố tùy ý bên trong hàng đợi là gì? Tôi thấy tôi cần cấu trúc dữ liệu tốt hơn?Khôi phục lại java.util.PriorityQueue sau khi cập nhật các thành phần
Để cụ thể hơn, tôi cần thực hiện một thứ gì đó giống như một đống Fibonacci trong Java. http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm Tính năng này có sẵn không?
Tôi có triển khai một vùng Fibonacci trong Java nếu bạn quan tâm. Nó có sẵn trực tuyến tại http://www.keithschwarz.com/interesting/code/?dir=fibonacci-heap. Hy vọng nó giúp! – templatetypedef
Thậm chí các đống mã định dạng không đàn hồi khi đối mặt với những thay đổi ngoài băng đối với trọng số của các phần tử. Tôi nghĩ rằng bạn cần phải loại bỏ một yếu tố trước khi bạn sửa đổi nó và reinsert nó sau đó. –
loại bỏ một phần tử tùy ý khỏi heap sẽ yêu cầu xây dựng heap O (n) tôi đoán. –