Cosa c'è di più difficile: mescolare un mazzo ordinato o ordinarne uno mischiato?


18

Hai una matrice di elementi distinti. Hai accesso a un comparatore (una funzione di scatola nera che prende due elementi e e restituisce vero iff ) e una fonte di bit veramente casuale (una funzione di scatola nera che non prende argomenti e restituisce un bit casuale uniformemente indipendente). Considera le seguenti due attività:a b a < bnun'Bun'<B

  1. L'array è attualmente ordinato. Produce una permutazione uniformemente (o approssimativamente uniformemente) selezionata casualmente.
  2. L'array è costituito da alcune permutazioni selezionate uniformemente a caso per natura. Produce una matrice ordinata.

La mia domanda è

Quale compito richiede più energia asintoticamente?

Non sono in grado di definire la domanda in modo più preciso perché non conosco abbastanza la connessione tra teoria dell'informazione, termodinamica o qualsiasi altra cosa sia necessaria per rispondere a questa domanda. Tuttavia, penso che la domanda possa essere resa ben definita (e spero che qualcuno mi aiuti con questo in una risposta!).

Ora, algoritmicamente, la mia intuizione è che sono uguali. Si noti che ogni tipo è un riordino al contrario e viceversa. L'ordinamento richiede confronti, mentre si mescola, poiché seleziona una permutazione casuale dascelte, richiede bit casuali. Sia lo shuffle che l'ordinamento richiedono circa swap.n ! log n ! n log n nlogn!nlognn!logn!nlognn

Tuttavia, credo che ci dovrebbe essere una risposta applicando il principio di Landauer , che afferma che richiede energia per "cancellare" un po '. Intuitivamente, penso che questo significhi che l'ordinamento dell'array è più difficile, poiché richiede la "cancellazione" di bit di informazioni, passando da uno stato di disturbo a bassa energia e ad alta entropia a uno altamente ordinato. D'altra parte, per ogni dato calcolo, l'ordinamento trasforma semplicemente una permutazione in un'altra. Dato che sono un completo non esperto qui, speravo che qualcuno con una conoscenza della connessione con la fisica potesse aiutare a "risolvere" questo!nlogn

(La domanda non ha ottenuto alcuna risposta su math.se , quindi la ripubblico qui. Spero che vada bene.)


Non ci ho pensato fino in fondo, quindi avvertimento. Se iniziamo con un array ordinato, quindi utilizziamo l'ordinamento di tipo merge, ma invece di confrontare, usiamo i bit casuali per eseguire l'unione (quindi invece di restituire true iff restituiamo true iff il bit casuale è ). Il caso base in cui abbiamo due matrici di dimensione uno produce i due possibili matrici di dimensione due con una probabilità uniforme. Non sono andato oltre. 1un'<B1
Luke Mathieson,

2
Penso che per rispondere a questa domanda, sia prima necessario definire i relativi costi di funzionamento; quanto costa leggere dati, scrivere dati e generare / ottenere un numero casuale?
mitchus,

@mitchus: sono principalmente curioso dei limiti fisici se assumiamo computer "ottimamente efficienti". La mia comprensione approssimativa è che esiste un limite fisico inferiore alla quantità di energia richiesta per "cancellare" un po 'di informazioni, mentre altre operazioni richiedono molta meno energia. Quindi mi chiedo se questa intuizione sia abbastanza corretta e formalizzabile per dare una risposta.
usul

Cosa vuoi dire cancellando un po '? Sovrascrivendolo? Per quanto ne so i computer di solito non cancellano nulla (tranne che per motivi di privacy) ma semplicemente "dimenticano" a questo proposito disallocando la regione di memoria associata. Ma forse non sto comprendendo correttamente il livello di astrazione qui :)
mitchus

2
@ Patrick87 Sfortunatamente, un modello energetico uniforme è troppo lontano dalla verità per usarlo; vedi Algoritmi di valutazione in base al consumo di energia di Fudeus née Bayer e Nebel (2009).
Raffaello

Risposte:


6

nlogn!nlog2n(nlnn)KTnlog2n

Si noti che questi sono solo limiti inferiori teorici. L'energia attualmente consumata da questi processi su un vero computer digitale non ha alcuna relazione con l'analisi di cui sopra.


Grazie mille! Posso chiedere un follow up forse ingenuo? Supponiamo che io modifichi la formulazione della domanda in modo che l'algoritmo di ordinamento riceva una permutazione fissa degli articoli e li debba ordinare. Ora, se ti iscrivi a una filosofia bayesiana e hai una convinzione uniforme su questo input, sembra che la risposta dovrebbe essere la stessa. Ma secondo una filosofia secondo cui non c'è casualità nell'input (anche se non so cosa sia), l'argomento sembra fallire. Come risolvo il paradosso? Grazie ancora!!
usul

(nlnn)KT

3

Né. Ogni circuito può essere reso reversibile tenendo traccia dell'ingresso e la dissipazione di energia del calcolo reversibile può essere resa arbitrariamente piccola .


ma renderlo reversibile potrebbe renderlo non efficiente. Qual è la relazione tra gli algoritmi ottimali . A proposito, non penso che si confrontino. Mescolare intrinsecamente richiede casualità (e ogni diversa casualità produrrà un output diverso). L'ordinamento può essere deterministico. L'ordinamento "Inversione" verrà mischiato in modo deterministico.
Ran G.

1
Per "efficiente" intendi tempo, spazio o una combinazione dei due? Rendere reversibile un calcolo non aggiunge necessariamente complessità temporale asintotica, e esistono versioni reversibili di ogni calcolo che non usano più spazio dell'originale [Vitányi05] .
rphv

1
Fintanto che si mantiene l'ingresso in ingresso, qualsiasi circuito può essere reso reversibile. Se non si desidera conservare informazioni in grado di ricostruire la permutazione originale, il circuito di smistamento non può essere reso reversibile.
Peter Shor,
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.