A questão em que estou interessado está relacionada à geração de permutações aleatórias. Dado um mecanismo probabilístico de troca por pares como bloco básico de construção, qual é a maneira mais eficiente de produzir uma permutação aleatória uniformemente de elementos? Aqui tomo "probabilística portão de pares de troca" ser a operação que implementa uma porta de permuta entre a elementos escolhidos e com uma probabilidade que pode ser livremente escolhido, para cada porta, e a identidade de outro modo.
Sei que geralmente não é assim que se gera permutações aleatórias, onde geralmente se pode usar algo como um embaralhamento de Fisher-Yates; no entanto, isso não funcionará para o aplicativo que tenho em mente, pois as operações permitidas são diferentes.
Claramente isso pode ser feito, a questão é com que eficiência. Qual é o menor número de swaps probabilísticos necessários para alcançar esse objetivo?
ATUALIZAR:
Anthony Leverrier fornece um método abaixo que realmente produz a distribuição correta usando portas , com Tsuyoshi Ito fornecendo outra abordagem com a mesma escala nos comentários. No entanto, o melhor limite inferior que vi até agora é , que escala como . Portanto, a questão ainda permanece em aberto: o melhor que pode ser feito (ou seja, existe um limite inferior melhor)? Ou, como alternativa, existe uma família de circuitos mais eficiente?
ATUALIZAR:
Várias das respostas e comentários propuseram circuitos que são compostos inteiramente de swaps probabilísticos, nos quais a probabilidade é fixada em . Esse circuito não pode resolver esse problema pelo seguinte motivo (retirado dos comentários):
Imagine um circuito que use tais portões. Depois, existem caminhos computacionais equiprobáveis e, portanto, qualquer permutação deve ocorrer com probabilidade para algum número inteiro k. No entanto, para uma distribuição uniforme, exigimos que
UPDATE (de mjqxxxx que está oferecendo a recompensa):
A recompensa oferecida é por (1) uma prova de que portões são necessários ou (2) um circuito de trabalho, para qualquer , que use menos que portões.n n ( n - 1 ) / 2