Prioritní fronta

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Založena nová stránka: Speciální prípad ADT podobne jako zásobník a fronta, výber odebere prvek s nejvyšší ci nejnižší prioritou (maximová resp. minimová PF) Vkládat lze prvky s li...)
 
m (kategorizace)
 
(Nejsou zobrazeny 2 mezilehlé verze od 1 uživatele.)
Řádka 1: Řádka 1:
−
Speciální prípad ADT podobne jako zásobník a fronta, výber odebere prvek s nejvyšší ci nejnižší prioritou (maximová resp. minimová PF) Vkládat lze prvky s libovolnou prioritou.  
+
Speciální případ ADT podobne jako zásobník a fronta, výběr odebere prvek s nejvyšší či nejnižší prioritou (maximová resp. minimová PF) Vkládat lze prvky s libovolnou prioritou.  
  
−
Implementace polem / spoj.seznamem.
+
 
−
Složitost podle přístupu:  
+
'''Implementace:''' polem / spoj.seznamem
 +
 
 +
 
 +
== Složitost podle přístupu: ==
  
 
Rozhraní
 
Rozhraní
−
vytvoření rpázdný fronty
+
* vytvoření prázdný fronty
−
test prázdfné fronty
+
* test prázdné fronty
−
vložení a výběr prvku
+
* vložení a výběr prvku
  
−
Lazy:  
+
'''Lazy:'''
 
Pole či seznam je neuspořádaný, vkládáme prvek vždy na konec v poli (O(1)) a na začátek v seznamu (O(1)). Při výběru musíme najít maximum, v obou případech O(n)
 
Pole či seznam je neuspořádaný, vkládáme prvek vždy na konec v poli (O(1)) a na začátek v seznamu (O(1)). Při výběru musíme najít maximum, v obou případech O(n)
−
Eager:
+
 
 +
'''Eager:'''
 
Pole či seznam je uspořádaný, prvek vkládáme tak, aby byla struktura seřazena. Vložení je O(n), ale výběr je O(1) (ze začátku seznamu / konce pole)
 
Pole či seznam je uspořádaný, prvek vkládáme tak, aby byla struktura seřazena. Vložení je O(n), ale výběr je O(1) (ze začátku seznamu / konce pole)
−
Kombinace:
+
 
 +
'''Kombinace:'''
 
Implementace pomocí BVS nebo haldy - vložení i výber O(log2n)
 
Implementace pomocí BVS nebo haldy - vložení i výber O(log2n)
  
−
Modifikovatelná prioritní fronta
+
 
 +
== Modifikovatelná prioritní fronta ==
 +
 
 
Pomocí haldy, a  
 
Pomocí haldy, a  
−
1) Přidáme mapu prvek->pozice v haldě. Změnou priority a obnovením haldy je možné v O(log2n) prioritu i měnit  
+
# přidáme mapu prvek->pozice v haldě. Změnou priority a obnovením haldy je možné v O(log2n) prioritu i měnit  
−
2) Bez mapy je hledání prvku v haldě další O(log2n) čas, celkem tedy hledání O(log2n) + obnovení haldy O(log2n)
+
# bez mapy je hledání prvku v haldě další O(log2n) čas, celkem tedy hledání O(log2n) + obnovení haldy O(log2n)
  
 
Pokud proritu příliš neměníme, způsob 1 je výhodnější, ale paměťově náročnější
 
Pokud proritu příliš neměníme, způsob 1 je výhodnější, ale paměťově náročnější
 +
 +
{{fav-kiv-bzinf}}
 +
[[Kategorie:fav-kiv-bzinf]]

Aktuální verze z 20. 2. 2014, 06:35

Speciální případ ADT podobne jako zásobník a fronta, výběr odebere prvek s nejvyšší či nejnižší prioritou (maximová resp. minimová PF) Vkládat lze prvky s libovolnou prioritou.


Implementace: polem / spoj.seznamem


[editovat] Složitost podle přístupu:

Rozhraní

Lazy: Pole či seznam je neuspořádaný, vkládáme prvek vždy na konec v poli (O(1)) a na začátek v seznamu (O(1)). Při výběru musíme najít maximum, v obou případech O(n)

Eager: Pole či seznam je uspořádaný, prvek vkládáme tak, aby byla struktura seřazena. Vložení je O(n), ale výběr je O(1) (ze začátku seznamu / konce pole)

Kombinace: Implementace pomocí BVS nebo haldy - vložení i výber O(log2n)


[editovat] Modifikovatelná prioritní fronta

Pomocí haldy, a

  1. přidáme mapu prvek->pozice v haldě. Změnou priority a obnovením haldy je možné v O(log2n) prioritu i měnit
  2. bez mapy je hledání prvku v haldě další O(log2n) čas, celkem tedy hledání O(log2n) + obnovení haldy O(log2n)

Pokud proritu příliš neměníme, způsob 1 je výhodnější, ale paměťově náročnější


Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje