Prioritātes rinda Python

Prioritārās rindas ir abstraktas datu struktūras, kur katram rindas datiem/vērtībai ir noteikta prioritāte. Piemēram, aviokompānijās bagāža ar nosaukumu Business vai First Class pienāk agrāk nekā pārējā.

Prioritātes rinda ir rindas paplašinājums ar tālāk norādītajiem rekvizītiem.

  1. Elements ar augstu prioritāti tiek izslēgts no rindas pirms elementa ar zemu prioritāti.
  2. Ja diviem elementiem ir vienāda prioritāte, tie tiek apkalpoti atbilstoši to secībai rindā.
    Dažādi lietojumprogrammas Prioritātes rindā datorzinātnēs ir:
    Darba plānošanas algoritmi, CPU un diska plānošana, dažādu procesu koplietošanas resursu pārvaldība utt.

Galvenās atšķirības starp prioritāro rindu un rindu:

  1. Rindā vispirms tiek noņemts vecākais elements. Prioritātes rindā elements, kura pamatā ir visaugstākā prioritāte, tiek izslēgts no rindas.
  2. Kad elementi tiek izlaisti no prioritārās rindas, iegūtais rezultāts tiek sakārtots augošā vai dilstošā secībā. Ja elementi tiek izlikti no vienkāršas rindas, rezultātā tiek iegūta datu FIFO secība.

Zemāk ir a vienkārša īstenošana no prioritārās rindas.

Python




# A simple implementation of Priority Queue> # using Queue.> class> PriorityQueue(> object> ):> > def> __init__(> self> ):> > self> .queue> => []> > def> __str__(> self> ):> > return> ' '> .join([> str> (i)> for> i> in> self> .queue])> > # for checking if the queue is empty> > def> isEmpty(> self> ):> > return> len> (> self> .queue)> => => 0> > # for inserting an element in the queue> > def> insert(> self> , data):> > self> .queue.append(data)> > # for popping an element based on Priority> > def> delete(> self> ):> > try> :> > max_val> => 0> > for> i> in> range> (> len> (> self> .queue)):> > if> self> .queue[i]>>> :> > myQueue> => PriorityQueue()> > myQueue.insert(> 12> )> > myQueue.insert(> 1> )> > myQueue.insert(> 14> )> > myQueue.insert(> 7> )> > print> (myQueue)> > while> not> myQueue.isEmpty():> > print> (myQueue.delete())>

Izvade:

12 1 14 7 14 12 7 1 

Ņemiet vērā, ka dzēšanas laika sarežģītība iepriekš minētajā kodā ir O(n). A labāka īstenošana ir izmantot Binārā kaudze ko parasti izmanto, lai ieviestu prioritāro rindu. Ņemiet vērā, ka Python nodrošina kaudze q arī bibliotēkā.

Time complexity: By using heap data structure to implement Priority Queues Insert Operation: O(log(n)) Delete Operation: O(log(n))