Ho bisogno di qualcosa come una coda di priorità ma con la seguente modifica:
A volte ho bisogno di contrassegnare alcuni elementi nella coda come "disabilitati".
Elementi disabilitati:
-
temporaneamente (finché non viene contrassegnato come non disabilitato) diventa meno prioritario rispetto a qualsiasi elemento non disabilitato;
-
non vengono mai estratti dalla coda. Questo è se l'algoritmo della coda di priorità conduce (poiché tutti gli elementi non disabilitati sono "esauriti" (già spuntati)) in spuntando un elemento disabilitato, si comporta come se la coda fosse vuota e invece genera un'eccezione.
Qual è il modo consigliato per implementarlo? Conosco solo la seguente soluzione: Metti tutti gli elementi in una lista / vettore di conseguenza l'ordine in cui arrivano e fai un pop (facendo una ricerca O (N)) di conseguenza la priorità dall'elenco ogni volta che viene richiesto. Questa potrebbe non essere la soluzione più efficiente. È un modo abbastanza semplice per farlo in modo più efficiente?
In effetti, ho bisogno di una coda con priorità doppia (modificata). Scrivo in Python.
Sarebbe troppo prolisso per spiegare la situazione reale di cui ho bisogno, ma è parte di questo grande progetto: link