Prioritní fronta

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Prioritní fronta je abstraktní datový typ v informatice. K jeho prvkům se na rozdíl od prvků obyčejné fronty váže ještě priorita: Pokud mají prvky stejnou prioritu, opouští frontu v pořadí, v jakém do ní byly vloženy, ale prvek s vyšší prioritou prvky s nižší prioritou předběhne a jde na výstup dříve.

Setříděná fronta tedy nabízí přinejmenším následující dvě operace:

zařaď do fronty s udanou prioritou: přijímá jako vstup prvek a jeho prioritu a prvek s jeho prioritou zařadí do fronty vydej nejstarší z prvků s nejvyšší prioritou: odstraní z fronty ten z prvků s nejvyšší prioritou, který je tam nejdéle, a vrátí ho jako svůj výstup

Někdy jsou implementovány i další funkce, například možnost zjistit prvek s nejvyšší prioritou bez toho, že by byl odstraněn.

Implementace

Prioritní frontu je možné implementovat různými způsoby. Jednodušší na naprogramování, ale náročnější na procesorový čas jsou implementace netříděným polem nebo spojovým seznamem. +more Taková řešení nabízejí vložení v konstantním čase, ovšem vydání prvku s nejvyšší prioritou má časovou náročnost O(n).

Rozšířenější je implementace pomocí haldy, kde má zařazení i vydání prvku s nejvyšší prioritou časovou náročnost O(\log n); platí to např. pro binární nebo binomiální haldu. +more Zvláštním případem je Fibonacciho halda, operace vložení do ní má asymptotickou složitost O(1) a vydání z ní toho prvku, jenž má nejvyšší prioritu, amortizovanou časovou složitost O(\log n).

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top