Considera il seguente problema:
Permettere essere una costante. Ci viene dato un-ary array di e 'S. Permettere.
Vogliamo creare una struttura di dati mediante preelaborazione per eseguire il seguente tipo di operazioni di query:
- Date le coordinate di a -a scatola , C'è un nella scatola?
- Date le coordinate di a -a scatola , restituisce la posizione di a nella casella (se ce n'è uno).
Le operazioni devono essere eseguite a tempo costante . La complessità temporale viene misurata su una macchina RAM. Il tempo di preelaborazione e lo spazio per la struttura dei dati non sono importanti per noi.
La domanda è: quanto spazio (in bit di complessità) è necessario per archiviare una struttura di dati che consenta le operazioni di cui sopra?
Il banale limite inferiore è bit poiché l'array può essere ricostruito per queste query (quindi la struttura dei dati dovrebbe contenere almeno la stessa quantità di informazioni).
Il banale limite superiore è memorizzare la risposta a tutte le query. Ciò richiederebbe bit. Tuttavia sospettiamo che ciò possa essere fatto in modo molto più efficiente.
Ad esempio, considera il caso speciale in cui . In questo caso possiamo usare una struttura dati RMQ sintetica per risolvere il primo problema e la struttura dati impiega bit per memorizzare.
Che cos'è una struttura dati efficiente per questo compito?
Quanto può essere ridotta la complessità dello spazio (il numero di bit) per supportare queste operazioni (o solo la prima operazione)?
Aggiornamento (1/15): nel caso speciale , è sufficiente usare bit (in realtà meglio, , dove è il numero di è in ) riducendo il problema a un problema precedente e usando la riduzione dal problema precedente al dizionario completamente indicizzabile (FID). Vedi " Più fretta, meno rifiuti: ridurre la ridondanza nei dizionari completamente indicizzabili " di Grossi, Orlandi, Raman e Rao (2009).
Aggiornamento (27/06): di nuovo riducendo il problema a RMQ. Usiamo un RMQ -dimensional da Yuan e Atallah per ottenere un limite superiore della quantità di spazio necessario quando è fisso.