Приоритетная очередь F#

Библиотека F# включает приоритетную очередь? Еще кто-то может указать на меня на реализацию приоритетной очереди в F#?

15
задан Muhammad Alkarouri 24 July 2010 в 19:19
поделиться

5 ответов

Взгляните на http://lepensemoi.free.fr/index.php/tag/data-structure , где есть множество реализаций различных структур данных на F #. .

15
ответ дан 1 December 2019 в 00:59
поделиться

С F # вы можете использовать любую библиотеку .NET, поэтому, если вас устраивает реализация, которая не написана на F #, I Wintellect Power Collection Library.

1
ответ дан 1 December 2019 в 00:59
поделиться

Просто используйте F # Set пар вашего типа элемента с уникальным int (для разрешения дублирования) и извлеките свои элементы с помощью set.MinElement или set.MaxElement . Все соответствующие операции имеют временную сложность O (log n). Если вам действительно нужен повторный доступ O (1) к минимальному элементу, вы можете просто кэшировать его и обновлять кеш при вставке, если найден новый минимальный элемент.

Есть много видов структур данных кучи, которые вы можете попробовать (наклонные кучи, расширенные кучи, парные кучи, биномиальные кучи, косые биномиальные кучи, варианты вышеперечисленного с начальной загрузкой). Подробный анализ их дизайна, реализации и реальной производительности см. В статье Структуры данных: куча в The F # .NET Journal .

2
ответ дан 1 December 2019 в 00:59
поделиться

Функциональные структуры данных для очередей с приоритетом обсуждаются в выпуске 16 из The Monad.Reader , что интересно.

Он включает в себя описание кучи спаривания, которое быстро и очень легко реализовать.

4
ответ дан 1 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: