Fibonnaci Heap obsługuje następujące operacje:
insert(key, data)
: dodaje nowy element do struktury danychfind-min()
: zwraca wskaźnik do elementu z minimalnym kluczemdelete-min()
: usuwa element z minimalnym kluczemdelete(node)
: usuwa element wskazany przeznode
decrease-key(node)
: zmniejsza klucz wskazanego elementunode
Wszystkie operacje niezwiązane z usuwaniem mają czas (amortyzowany), a operacje usuwania to czas amortyzowany.
Czy istnieją implementacje priorytetową kolejce które również wsparcie increase-key(node)
w (zamortyzowanego) czas?
Odpowiedzi:
Zakładam, że masz kolejkę priorytetową który ma , oraz . Poniżej znajduje się algorytm sortowania, który zajmuje czas:O ( n )O(1) O(n)
find-min
increase-key
insert
źródło
(de|in)crease-key
tylko jeden plus lub minus jeden.