2009-06-04 21 views
8

Tôi đang sử dụng hàng đợi ưu tiên ban đầu căn cứ vào mức độ ưu tiên của các yếu tố của nó trên phương pháp phỏng đoán. Khi các phần tử được khử lưu huỳnh, heuristic được cập nhật và các phần tử hiện có trong hàng đợi có thể có khóa của chúng tăng lên.Một min-heap với tốt hơn so với O (logn) tăng phím?

Tôi biết có đống (đặc biệt là Fibonacci heap) có phân bổ hoạt động chính O (1) giảm, nhưng có bất kỳ cấu trúc heap nào có giới hạn tương tự về hoạt động tăng khóa không?

Đối với ứng dụng của tôi, đây là một vấn đề về hiệu suất (một đống nhị phân hoạt động tốt) nó thực sự chỉ là về sự tò mò học thuật.

Chỉnh sửa: để làm rõ, tôi đang tìm cấu trúc dữ liệu có thời gian nhanh hơn O (nhật ký) cho hoạt động tăng phím, chứ không phải phím giảm. Ứng dụng của tôi không bao giờ làm giảm khóa khi heuristic ước lượng quá mức mức độ ưu tiên.

Trả lời

1

Phân đoạn nhị phân quá không linh hoạt để đánh bại độ phức tạp lôgarit. Đống nhị thức chỉ cho phép kết nối hoạt động hiệu quả hơn.

đống Khác với hiệu suất giảm-key tốt là pairing heaps2-3 heaps

+1

Ghép nối các đoạn âm thanh thú vị nhưng chúng có cải thiện khi O (logn) để tăng các hoạt động chính không? –

0

đống nhị thức tham o (log n) thời gian cho các hoạt động chủ chốt giảm! Không phải là điều này chậm hơn so với đống heaps?

1

Thực ra, với vùng đệm Fibonacci, thao tác tăng phím cũng giống như phím giảm. IMHO, nó chỉ là một truyền thống để đặt tên cho hoạt động "phím giảm", bởi vì nó được sử dụng trong một số thuật toán. Nhưng việc triển khai vùng Fibonacci cho phép cả hai.

+0

Trên một đống heap, làm thế nào để tăng hoạt động chính mất cùng một thời gian như phím giảm (o (1))? –

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