Coadă cu prioritate

Definiție

O coadă cu prioritate este o structură de date abstractă formată din elemente care au asociată o valoare numită cheie sau prioritate și care suportă următoarele operații:
- Insert(Q,x): inserează elementul x în coada cu prioritate Q;
- ExtractMax(Q): extrage elementul de valoare maximă din coada cu prioritate Q.

Observație!

În mod analog se poate defini o coadă cu min-prioritate, pentru care ne interesează operația de extragere din coadă a elementului de prioritate minima.
Există multe aplicații ale cozilor cu prioritate. De exemplu, planificarea execuției programelor pe un calculator: coada cu prioritate reține programele ce trebuie executate în funcție de prioritățile lor relative. Când se încheie sau se întrerupe execuția unui program, programul cu cea mai mare prioritate din coadă este selectat și lansat în execuție (operația ExtractMax). Adăugarea unui nou program în coadă se realizează cu operația Insert.

Noțiuni Introductive

  1. Arbori
  2. Arbori binari
  3. Heap-uri
Există diverse modalitați de a implementa o coadă cu prioritate: ca un vector, ca o lista înlănțuită, ordonată sau nu etc. Fiecare din aceste variante optimizează una din cele două operații, cealaltă realizându-se în timp liniar. O structură de date simplă ce permite implementarea ambelor operații în timp logaritmic este heap-ul. Astfel, pentru operația Insert se folosește funcția InsertHeap iar pentru operația ExtractMax se folosește funcția ExtractHeap.