Questa domanda si ispira a una domanda esistente sulla possibilità di simulare uno stack utilizzando due code in ammortizzato per operazione di stack. La risposta sembra essere sconosciuta. Ecco una domanda più specifica, corrispondente al caso speciale in cui tutte le operazioni PUSH vengono eseguite per prime, seguite da tutte le operazioni POP. Con quale efficienza è possibile invertire un elenco di N elementi utilizzando due code inizialmente vuote? Le operazioni legali sono:
- Accoda l'elemento successivo dall'elenco di input (alla coda di una delle due code).
- Dequeue l'elemento in testa a una delle code e accoda di nuovo (alla coda di entrambe le code).
- Dequeue l'elemento in testa a una delle code e aggiungerlo all'elenco di output.
Se la lista ingresso è costituito da elementi , come fa il numero minimo di operazioni necessarie per generare la lista di uscita invertita [ N , N - 1 , . . . , 2 , 1 ] comportarsi? Una prova che cresce più velocemente di sarebbe particolarmente interessante, dal momento che risolverebbe la domanda originale in senso negativo.
Aggiornamento (15 gennaio 2011): il problema può essere risolto in , come mostrato nelle risposte inviate e nei loro commenti; e un limite inferiore di è banale. Uno di questi limiti può essere migliorato?Ω ( N )