Alberi bilanciati semplici con O (1) concat?


Risposte:


5

Puoi banalmente creare una struttura di dati con O (1) tempo di concatenazione ammortizzato , semplicemente reinserendo tutto da un albero all'altro sulla concatenazione (che ha un costo O (n log n), esattamente lo stesso usato per costruire quell'albero in il primo posto, quindi il tempo complessivo è ancora O (n log n)), ma questo è barare.

Nel peggiore dei casi O (1), gli autori sostengono che si è trattato di un problema aperto per qualsiasi struttura di dati, quindi non credo che troverai una risposta facile.


1
Non sono sicuro che Brodal et al. significava che era un problema aperto anche in un ambiente effimero. Stai parlando della frase in astratto che fa riferimento a "un problema aperto posto da Kaplan e Tarjan"? Se è così, penso sia chiaro dal contesto di quel documento che K&T dicesse che la domanda era aperta in una struttura puramente funzionale.
jbapple,

Ho scaricato il documento, ma afferma chiaramente che "Hanno [K&T] chiesto se l'operazione di join può essere implementata nel momento peggiore di O (1) anche in un ambiente effimero, supportando allo stesso tempo ricerche e aggiornamenti in tempi logaritmici".
Blaisorblade,

Buon punto, Blaisorblade. Ho perso quella frase.
jbapple,

Questa soluzione banale è effettivamente corretta? È ovvio per me che funziona solo se un determinato albero è concatenato a un altro solo una volta. Se applico la stessa costruzione alla concatenazione ricorsiva di liste singleton, ottengo la complessità , che corrisponde alla complessità nel caso dell'albero. nO ( n registro 2 n )O(nlogn)O(nlog2n)
Geoffrey Irving,

4

Ho scaricato il documento che lei menziona e risponde "no", almeno al momento della pubblicazione del documento. Questo per due motivi:

  1. è richiesto un documento per rivedere adeguatamente il lavoro correlato, e lo fanno nell'introduzione, con un riassunto in Fig. 1, che dice "no". Almeno se è stato pubblicato in una conferenza rispettabile, ma sembra così (Brodal è citato un paio di volte in "Strutture di dati puramente funzionali" da C. Okasaki, un riferimento sull'argomento).

    Tuttavia, menzionano nel testo un algoritmo con tempo di ricerca O (log n log log n) e concatenazione nel tempo O (1), abbozzato nel documento K&T di STOC '96. Potrebbe essere interessante per te.

    • la sfida aperta di K&T che risolvono riguarda i dizionari con O (1) concatenazione e O (log N) cerca / inserisci / elimina, anche per le strutture effimere.

Il punto 1. assicura anche che puoi semplicemente cercare documenti che citano questo per trovare eventuali risultati successivi, che dovrebbero citarlo.

Se la domanda avesse rilevanza pratica (ma non si suppone che lo fosse), credo che i fattori costanti siano più importanti della differenza tra O (1) e O (log N) (come discusso nell'Introduzione agli algoritmi di Sedgewick), quindi è necessario cercare solo benchmark per il caso d'uso dell'applicazione.


ESOP è una conferenza rispettabile, se questo è ciò che intendevi.
Charles Stewart,

Questa era la mia domanda, ma per l'ESA, dove è stato pubblicato il documento, non l'ESOP (forse intendevi questo). Non ero sicuro di poter contare sul grado della conferenza. Questa pagina di classifica non ufficiale suggerisce che anche l'ESA è abbastanza rispettabile: www3.ntu.edu.sg/home/assourav/crank.htm
Blaisorblade,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.