L'eliminazione di un nodo dal centro dell'heap può essere eseguita in O (lg n), a condizione che sia possibile trovare l'elemento nell'heap in un tempo costante. Supponiamo che il nodo di un heap contenga l'id come suo campo. Ora se forniamo l'id, come possiamo eliminare il nodo in O (lg n) tempo?Eliminazione di un nodo dal centro di un heap
Una soluzione può essere che possiamo avere un indirizzo di una posizione in ogni nodo, dove manteniamo l'indice del nodo nell'heap. Questo array sarebbe ordinato per id dei nodi. Ciò richiede però che venga mantenuta una matrice aggiuntiva. C'è qualche altro buon metodo per raggiungere lo stesso.
PS: mi sono imbattuto in questo problema mentre implementavo l'algoritmo Shortest Path di Djikstra.
Sì, questa è una delle soluzioni. Penso che non sia possibile senza usare spazio extra. destra? – Jonh