Псевдокод для черги Бродаля


12

Я намагаюся знайти більше ресурсів щодо купи Brodal . Все, що я знайшов - це хешкел реалізація купи Бродал-Окасакі , але я думаю, що вони перекошені купи , це правильно? Крім того, я неграмотний в Haskell, так що це не дуже допомагає. Хтось (або знає про) реалізацію черги Brodal у псевдокоді, C, C ++, Python?

Будь ласка, виправте, якщо мої припущення вище неправильні.


3
Ви хочете спеціально реалізувати чергу Brodal чи шукаєте ефективну реалізацію черги з пріоритетом? У висновку своєї роботи Бродал згадував, що без додаткових досліджень у цій галузі вони не практичні. Його праця цитується багато, можливо, щось корисне? У Введенні до алгоритмів CLR є розділ про пріоритетні черги, але він посилається на набагато більшу роботу з чергові черги.
Джей Елстон

2
У початковій черзі Brodal використовується деструктивне призначення, тому версія Haskell повинна мати деякі модифікації.
Фред Фоо

Відповіді:


2

Реалізація Haskell заснована на функціональній купі Brodal-Okasaki, і ви маєте рацію, це варіація косого купи. Папір написаний дуже чітко, тому це був би непоганий ресурс.

Що стосується реалізації, то в Scala також є реалізація як частина бібліотеки scalaz.


1

Це часткова відповідь, оскільки я ще не зрозумів, як перекласти код у щось, що не є Haskell. Наскільки я можу сказати, що їм потрібно використовувати Haskell, це те, що Haskell лінивий. Купу «Бродал-Окасакі» потрібно з легкістю поширити з паперу. Тож вам знадобиться спосіб надання цієї функціональності іншій мові разом з будь-якими іншими вимогами (наприклад, суто функціональними структурами даних), які можуть знадобитися BO Heap.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.