La pregunta que me interesa está relacionada con la generación de permutaciones aleatorias. Dada una puerta de intercambio por parejas probabilística como el bloque de construcción básico, ¿cuál es la forma más eficiente de producir una permutación aleatoria uniforme de elementos? Aquí considero que la "puerta de intercambio por parejas probabilística" es la operación que implementa una puerta de intercambio entre los elementos elegidos y con alguna probabilidad que puede elegirse libremente para cada puerta, y la identidad de lo contrario.j p
Me doy cuenta de que esta no es la forma en que uno genera permutaciones aleatorias, donde generalmente se puede usar algo como un shuffle de Fisher-Yates, sin embargo, esto no funcionará para la aplicación que tengo en mente ya que las operaciones permitidas son diferentes.
Claramente esto se puede hacer, la pregunta es qué tan eficientemente. ¿Cuál es el menor número de permutas probabilísticas necesarias para lograr este objetivo?
ACTUALIZAR:
Anthony Leverrier proporciona un método a continuación que realmente produce la distribución correcta utilizando puertas , con Tsuyoshi Ito proporcionando otro enfoque con la misma escala en los comentarios. Sin embargo, el mejor límite inferior que he visto hasta ahora es , que se escala como . Entonces, la pregunta sigue abierta: ¿ lo mejor que se puede hacer (es decir, hay un límite inferior mejor)? O, alternativamente, ¿hay una familia de circuitos más eficiente?⌈ log 2 ( n ! ) ⌉ O ( n log n ) O ( n 2 )
ACTUALIZAR:
Varias de las respuestas y comentarios han propuesto circuitos que se componen completamente de intercambios probabilísticos donde la probabilidad se fija en . Tal circuito no puede resolver este problema por la siguiente razón (levantada de los comentarios):
Imagine un circuito que usa puertas de este tipo. Luego hay rutas computacionales equiprobables de , por lo que cualquier permutación debe ocurrir con probabilidad para algún entero k. Sin embargo, para una distribución uniforme, se requiere que , ¡Que se puede reescribir como . Claramente, esto no puede satisfacerse para un valor entero de para , ¡ya que(para , pero .2 m k 2 - m k 2 - m = 1
ACTUALIZACIÓN (de mjqxxxx que ofrece la recompensa):
La recompensa que se ofrece es por (1) una prueba de que se requieren puertas , o (2) un circuito de trabajo, para cualquier , que use menos de puertas.