Penso che la prima cosa da considerare sia cos'è un'operazione supportata?
"L'inserimento di un valore con una chiave fissa specifica" (ad es. Per le chiavi prese dal regno intero, l'inserimento con chiave = 3) corrisponde a un'operazione supportata per l'heap min?
No, perché tale operazione può essere banalmente implementata con operazioni supportate più generali. Allo stesso modo, l'inserimento di 2 elementi contemporaneamente può essere fatto con l' insert
operazione esistente .
D'altra parte, l' insert
operazione non può essere definita se non esponendo i dettagli dell'implementazione. È praticamente lo stesso per le operazioni elencate nella pagina di Wikipedia, ad heapify
eccezione, che probabilmente potrebbero essere implementate da una sequenza di insert
.
In altre parole, ci sono operazioni elementari fornite sul tipo, che sono strettamente legate ai dettagli di implementazione affinché funzionino bene, e ci sono altre operazioni, che non rispettano quella regola, e quindi possono essere implementate come combinazioni di quelli canonici.
Con questa definizione in mente, pensi che la chiave di aumento potrebbe essere implementata esclusivamente con altre operazioni supportate, senza perdita di prestazioni? In tal caso, allora non è un'operazione supportata dalla definizione precedente, altrimenti potresti avere ragione.
Probabilmente, la definizione di un'operazione supportata che fornisco è mia, per quanto ne so. Non è formale e quindi soggetto a discussione (anche se mi sembra abbastanza chiaro). Tuttavia, sarei felice se qualcuno potesse fornire una fonte che definisca chiaramente e inequivocabilmente cosa sia un'operazione supportata per i tipi di dati, o almeno definirla in termini migliori della mia (è quella definizione fornita in CLR? Non ho una copia ).
Il mio secondo punto sarà su come definiamo una coda prioritaria (che è la ragion d'essere dei cumuli binari). È increase_key
un'operazione necessaria per quel tipo di dati, ovvero per il suo corretto utilizzo?
Come puoi vedere, la mia prospettiva riguarda le definizioni. In realtà non fornisco una risposta alle tue domande, solo alcuni suggerimenti, quindi i miglioramenti sono ben accetti.