Coda prioritaria nella struttura dei dati: tutto ciò che devi sapere

Pubblicato: 2021-04-07

Sommario

introduzione

Le code prioritarie nelle strutture dati sono una forma importante di ADT (Abstract Data Types). Ad ogni elemento viene assegnata una priorità, che funge da caratteristica per definirli e organizzarli.

ADTS fa parte del dominio della scienza dei dati, in cui le strutture dei dati vengono utilizzate come modelli di organizzazione per la memorizzazione delle informazioni e la gestione di operazioni come l'accesso, l'aggiunta, la ricerca e la modifica dei valori dei dati. Le metodologie utilizzate per questa disposizione dei dati dirigono il modo in cui sono organizzati. Le strutture dati determinano anche la direzione del flusso di dati e le relazioni condivise all'interno degli elementi del sistema.

Gli esperti hanno stimato che entro il 2025 i dati globali totali potrebbero superare i 175 zettabyte. Per gestire tali grandi quantità di dati, le strutture dati vengono utilizzate per gestire database di grandi dimensioni e scopi di indicizzazione in modo efficiente. Durante le fasi di programmazione vengono utilizzati vari tipi di strutture dati come stack, code, array, heap, ecc. Gli stack e le code sono una forma lineare di strutture dati, poiché i dati vengono archiviati in sequenza, uno dopo l'altro. Non hanno rami e ogni valore di elemento/dati deve essere disposto in linea retta.

Disposizione di pile e code

Uno stack segue un approccio LIFO (Last In First Out) per la disposizione dello storage, mentre una coda segue una disposizione FIFO (First In First Out). Questo è un fattore importante per differenziare queste due strutture dati lineari. Le loro applicazioni sono decise in base al loro approccio LIFO/FIFO, poiché dipendono dal loro utilizzo computazionale unico.

Per saperne di più sulla scienza dei dati e sugli esempi di strutture dati, iscriviti al Diploma PG in Big Data, ospitato da upGrad.com .

Per una coda, FIFO stabilisce che quando più elementi vengono aggiunti al sistema, il primo elemento aggiunto sarà il primo a cui si accede/rimuove.

5 Operazioni di base che possono essere eseguite su una coda

1. Accoda: questa operazione viene eseguita quando si desidera aggiungere un elemento alla coda.

2. Elimina dalla coda: questo operatore viene utilizzato per rimuovere un elemento dalla coda.

3. IsEmpty: questa operazione viene utilizzata per verificare se la coda è vuota e non è possibile uscire dalla coda.

4. IsFull: questo operatore controlla se la coda è piena e non può gestire ulteriori aggiunte alla coda.

5. Peek: l'operatore Peek richiama/visualizza semplicemente il valore/elemento di dati previsto dalla coda senza rimuoverlo dalla sequenza allocata.

Scopri perché la scienza dei dati è importante e aggiunge valore al business attraverso questo blog informativo di upGrad.com.

Coda prioritaria nella struttura dei dati

Le code prioritarie hanno una priorità aggiuntiva associata a ciascuno dei loro elementi. Non seguono gli approcci FIFO come le code tradizionali. Al contrario, una coda di priorità nella struttura dei dati è disposta in modo che gli elementi di "priorità alta" siano serviti prima delle loro controparti di "priorità bassa".

Il valore dell'elemento viene spesso preso in considerazione mentre si assegna ad esso il valore di priorità. La coda di priorità differisce da una coda tradizionale in un modo in cui l'elemento con la priorità più alta verrebbe recuperato per primo quando si tenta di rimuovere l'elemento successivo dalla coda.

Un altro prerequisito delle code prioritarie è che i dati inseriti in queste code debbano essere ordinati in sequenza. Ciò significa che i singoli elementi di dati devono essere comparabili tra loro in modo tale che la loro disposizione possa essere sequenziata da minore a maggiore o da maggiore a minore. Ciò è necessario per allocare gli elementi della coda con le relative priorità, in base al confronto tra loro.

Le applicazioni della coda di priorità nella struttura dei dati di solito implicano la loro combinazione con altre strutture di dati non ordinate come heap, array, elenchi collegati o BST. Gli heap forniscono la forma di combinazione più efficiente grazie alla disposizione per implementare efficacemente le code prioritarie.

Per saperne di più sul campo emergente della scienza dei dati e delle sue applicazioni nell'industria manifatturiera, dai un'occhiata a questo blog dettagliato di upGrad.com.

Operazioni supportate in una coda prioritaria

Le operazioni in una coda prioritaria aiutano a elaborare le informazioni immesse, rimosse, visualizzate e modificate. Queste operazioni sono utili anche per spostarsi tra gli elementi della coda. Sono i seguenti:

1. Is_empty : l'operazione is_empty controlla se la coda contiene un elemento al momento.

2. Inserisci_con_priorità: questa operazione aggiunge un elemento alla coda, insieme al valore di priorità che deve essere associato ad esso.

3. Pull_highest_priority_element: questa operazione rimuove l'elemento con la priorità più alta dalla coda restituendo il valore di tale elemento.

4. Peek: l'operazione Peek viene utilizzata per "trovare il massimo" o "trovare il minimo", a seconda dei risultati attesi. Questa operazione non rimuove l'elemento max/min e solo lo restituisce.

Il vantaggio dell'utilizzo degli heap per la coda prioritaria nella struttura dei dati

Le prestazioni O(log n) vengono osservate per inserimenti e rimozioni quando le code con priorità si basano su un heap. Ciò migliora le prestazioni e la funzione O(n) è costruita da un insieme 'n' di elementi. L'associazione di heap e heap di Fibonacci fornisce limiti migliori per le operazioni di coda con priorità.

Per conoscere in modo approfondito la coda di priorità nella struttura dei dati e molti altri importanti concetti relativi al dominio di programmazione, iscriviti a un corso online su upGrad .

Coda prioritaria ed elementi di ordinamento

Tenendo conto della complessità computazionale, le code di priorità corrispondono agli algoritmi di ordinamento a causa della loro proprietà intrinseca. Ad esempio, dobbiamo raccogliere tutti gli elementi che richiedono l'ordinamento e quindi inserirli in una coda prioritaria.

Quindi, se rimuoviamo gli elementi in sequenza, il risultato sarebbe un ordine di elementi ordinato. Heapsort, Smoothsort, Selection Sort, Insertion Sort e Tree sort sono i nomi di alcuni degli algoritmi di ordinamento che condividono una correlazione equivalente alla coda di priorità nelle strutture dati.

Applicazioni delle code prioritarie

Le code di priorità nella struttura dati sono generalmente implementate in combinazione con strutture dati Heap. Sono utilizzati nelle simulazioni per sequenziare, ordinare e tenere traccia di percorsi inesplorati. I due tipi di code di priorità: Crescente e Decrescente, hanno il proprio insieme di utilizzi. Alcune di queste applicazioni sono:

  • Gestione della larghezza di banda
  • Simulazione di eventi discreti
  • L'algoritmo di Dijkstra
  • Codifica Huffman
  • Algoritmo di ricerca Best-first
  • Algoritmo di triangolazione ROAM
  • Algoritmo di Prim per il minimo spanning tree

Conclusione

Ad oggi, circa 5 miliardi di consumatori sono direttamente e indirettamente collegati ai dati. Entro il 2025, oltre 6 miliardi di persone sarebbero connesse ai big data. IDC prevede un aumento di 10 volte per i dati e prevede elevate richieste per i data scientist. La coda di priorità nella struttura dei dati è un concetto significativo per i programmatori e gli scienziati dei dati a causa della loro stretta correlazione e applicazione con le strutture dei dati dell'heap.

Se sei curioso di conoscere la scienza dei dati, dai un'occhiata al Diploma PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1- on-1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.

L'iscrizione a un corso di Master internazionale online in Informatica presso la Liverpool John Moores University o un corso PGD in corso di sviluppo software Full Stack , DevOps, ecc., può migliorare le tue prospettive di lavoro come programmatore.

Impara i corsi di scienza dei dati online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Descrivi le applicazioni di Priority Queue?

La coda di priorità viene applicata in molti algoritmi e in diverse applicazioni reali. Alcuni di questi sono descritti di seguito:
1. Algoritmo di Huffman: l'albero di Huffman generato nell'algoritmo di compressione dei dati di Huffman, utilizza una coda di priorità per implementare l'albero.
2. Algoritmo di Prim : questo algoritmo utilizza una coda di priorità per accelerare il processo della funzione minima esatta.
3. Algoritmo di Dijkstra: questo algoritmo utilizza un heap o una coda di priorità per estrarre il valore minimo. La coda di priorità rende abbastanza efficiente il processo per ottenere il minimo.
4. Sistema operativo: la coda di priorità viene utilizzata in diversi processi di sistemi operativi come il bilanciamento del carico e la gestione delle interruzioni.

Differenziare tra Stack e coda?

Stack e queue sono entrambi strutture dati lineari. Di seguito vengono illustrate le differenze principali tra queste due strutture di dati.
Stack - Gli elementi funzionano secondo il principio LIFO cioè l'elemento inserito per primo è l'elemento rimosso per ultimo. Gli elementi possono essere inseriti o rimossi da una sola estremità detta top. L'operazione di inserimento è anche nota come operazione di spinta.
Coda - Gli elementi funzionano secondo il principio FIFO, ovvero l'elemento inserito per primo è l'elemento rimosso per primo. L'operazione di inserimento è anche nota come operazione di accodamento.

Come è possibile implementare una coda prioritaria utilizzando un array?

Per implementare una coda di priorità utilizzando un array, viene creata una struttura per memorizzare i valori e la priorità dell'elemento e quindi viene creata l'array di tale struttura per memorizzare gli elementi. In questa implementazione sono coinvolte le seguenti operazioni:
enqueue() - Conosciuto anche come processo di inserimento, questa funzione viene utilizzata per inserire gli elementi nella coda.
peek() - Questa funzione attraverserà l'array per restituire l'elemento con la priorità più alta. Se trova due elementi con la stessa priorità, restituisce l'elemento di valore più alto tra di loro.
dequeue() - La funzione dequeue() viene utilizzata per spostare tutti gli elementi, 1 posizione a sinistra dell'elemento restituito dalla funzione peek(), e diminuisce la dimensione della coda.