O que é mais difícil: embaralhar um baralho classificado ou ordenar um baralhado?

18

Você tem uma matriz de elementos distintos. Você tem acesso a um comparador (a função de caixa preta tomando dois elementos e e retornando verdadeira sse ) e uma fonte verdadeiramente aleatório de bits (a função de caixa preta que não recebe argumentos e retornar um pouco independentemente uniformemente aleatório). Considere as duas tarefas a seguir:naba<b

  1. A matriz está atualmente classificada. Produza uma permutação selecionada de maneira uniforme (ou aproximadamente uniforme).
  2. A matriz consiste em alguma permutação selecionada uniformemente aleatoriamente por natureza. Produza uma matriz classificada.

Minha pergunta é

Qual tarefa requer mais energia assintoticamente?

Não consigo definir a pergunta com mais precisão porque não sei o suficiente sobre a conexão entre teoria da informação, termodinâmica ou qualquer outra coisa necessária para responder a essa pergunta. No entanto, acho que a pergunta pode ser bem definida (e espero que alguém me ajude com isso em uma resposta!).

Agora, algoritmicamente, minha intuição é que eles são iguais. Observe que todo tipo é um shuffle ao contrário e vice-versa. A classificação requer comparações, enquanto embaralha, pois seleciona uma permutação aleatória deopções, requer bits aleatórios. O embaralhamento e a classificação exigem cerca de trocas.logn!nlognn!logn!nlognn

No entanto, acho que deveria haver uma resposta aplicando o princípio de Landauer , que diz que é preciso energia para "apagar" um pouco. Intuitivamente, acho que isso significa que classificar a matriz é mais difícil, porque requer "apagar" bits de informação, passando de um estado fundamental de desordem de baixa energia e alta entropia para um estado altamente ordenado. Mas, por outro lado, para qualquer cálculo dado, a classificação apenas transforma uma permutação em outra. Como sou um completo não especialista aqui, esperava que alguém com conhecimento da conexão com a física pudesse ajudar a "resolver" isso!nlogn

(A pergunta não obteve respostas em math.se , por isso estou republicando aqui. Espero que esteja tudo bem.)

usul
fonte
Eu não pensei sobre isso, então faça uma ressalva. Se começarmos com uma matriz classificada, usaremos a ordem de mesclagem, mas em vez de comparar, usaremos os bits aleatórios para fazer a mesclagem (portanto, em vez de retornar true se s retornarmos true se o bit aleatório for ). O caso base em que temos duas matrizes de tamanho um produz as duas matrizes possíveis de tamanho dois com uma probabilidade uniforme. Eu não cheguei mais longe do que isso. 1a<b1
Luke Mathieson
2
Eu acho que, para responder a essa pergunta, você primeiro precisa definir os custos relativos da operação; Quanto custa ler, gravar e gerar / obter um número aleatório?
Mitchus 14/04
@ Mitchitch: Estou curioso principalmente sobre os limites físicos se assumirmos computadores "otimamente eficientes". Meu entendimento aproximado é que existe um limite físico mais baixo na quantidade de energia necessária para "apagar" um pouco de informação, enquanto outras operações requerem muito menos energia. Então, eu me pergunto se essa intuição é correta e formalizável o suficiente para dar uma resposta.
usul
O que você quer dizer com apagar um pouco? Substituindo-o? Até onde eu sei, os computadores geralmente não apagam nada (exceto por motivos de privacidade), mas simplesmente "esquecem" desalocando a região de memória associada. Mas talvez eu não estou segurando o nível de abstração corretamente aqui :)
mitchus
2
@ Patrick87 Infelizmente, um modelo de energia uniforme está muito longe da verdade para usá-lo; veja Avaliando algoritmos de acordo com seu consumo de energia por Fudeus née Bayer e Nebel (2009).
Raphael

Respostas:

6

nlogn!nlog2n(nlnn)kTnlog2n

Observe que esses são apenas limites inferiores teóricos. A energia atualmente consumida por esses processos em um computador digital real não tem relação com a análise acima.

Peter Shor
fonte
Muito obrigado! Posso pedir um acompanhamento possivelmente ingênuo? Suponha que eu mude a redação da pergunta para que o algoritmo de classificação receba uma permutação fixa dos itens e os ordene. Agora, se você subscreve uma filosofia bayesiana e tem uma crença uniforme nessa entrada, parece que a resposta deve ser a mesma. Mas, sob uma filosofia de que não há aleatoriedade na entrada (embora eu não saiba o que é), o argumento parece falhar. Como resolvo o paradoxo? Obrigado novamente!!
usul
(nlnn)kT
3

Nem. Qualquer circuito pode ser reversível , mantendo o controle da entrada, e a dissipação de energia da computação reversível pode ser arbitrariamente pequena .

rphv
fonte
mas torná-lo reversível pode torná-lo não eficiente. Qual é a relação entre os algoritmos ótimos . BTW, eu não acho que eles se comparam. A reprodução aleatória requer inerentemente aleatoriedade (e qualquer aleatoriedade diferente produzirá uma saída diferente). A classificação pode ser determinística. A classificação "invertida" será embaralhada de maneira determinística.
Ran G.
1
Por "eficiente" você quer dizer tempo, espaço ou alguma combinação dos dois? Tornar uma computação reversível não necessariamente adiciona complexidade de tempo assintótica, e existem versões reversíveis de toda computação que não usam mais espaço do que o original [Vitányi05] .
Rphv #
1
Enquanto você mantiver a entrada por perto, qualquer circuito poderá ser reversível. Se você não deseja manter informações que possam reconstruir a permutação original, o circuito de classificação não pode ser reversível.
Peter Shor