Tôi luôn luôn nghĩ rằng đống và hàng đợi ưu tiên là từ đồng nghĩa - một cấu trúc dữ liệu trừu tượng mà hỗ trợ các insert
, findMin
và deleteMin
các hoạt động.
Một số tài liệu dường như đồng ý với tôi - chẳng hạn cấu trúc dữ liệu chức năng hoàn toàn của Chris Okasaki (chương 3).
Mặt khác, trang heap của Wikipedia định nghĩa nó là một cấu trúc dữ liệu dựa trên cây và nói rằng các heap là một triển khai cụ thể của các hàng đợi ưu tiên.
Tôi đang gặp khó khăn trong việc điều hòa vấn đề này với thực tế là tôi có thể nghĩ ra nhiều hơn một lần thực hiện heap - đống trái, đống nhị phân, đống đống ...
Có phải thực tế đơn giản là một đống có thể được thực hiện với các cấu trúc dữ liệu khác nhau không có nghĩa là nó là một cấu trúc dữ liệu trừu tượng? Và nếu đó là trường hợp, có một sự khác biệt thực sự với hàng đợi ưu tiên?