Aquí está el trasfondo de esta pregunta. Amigos y yo estábamos jugando un juego en el que todos necesitan darle un regalo a otra gente. Para determinar quién debe dar un regalo a quién, decidimos sortear. Pero el problema es que alguien podría terminar dándose regalos, lo cual no es divertido. Puede ver que el número esperado de personas tan desafortunadas es 1, por lo que esto sucede con bastante frecuencia.
Para este propósito, querida disposición parece ser un gran ajuste. Si puedo generar un rango estimado, entonces puedo elegir uno y usarlo para decidir quién da a quién obsequios.
La generación aleatoria de queridos arreglos podría hacerse con el método de Las Vegas. Pero el problema es que solo ha esperado un tiempo de ejecución polinómico. Así que llegué a este problema de encontrar mi querida disposición. Si puedo elegir aleatoriamente una i en [1, D_n], y usar algún algoritmo de tiempo polinómico en el peor de los casos (eficiente) para obtener el i-ésimo rango, entonces está hecho.
fuente
Respuestas:
En realidad, esta podría ser una buena pregunta, pero está mal formulada en su forma actual. Los algoritmos bien conocidos para generar alteraciones aleatorias tienen un tiempo lineal esperado, pero tal vez sea un problema abierto encontrar un algoritmo de tiempo polinómico en el peor de los casos.
Ver por ejemplo: http://www.siam.org/proceedings/analco/2008/anl08_022martinezc.pdf (y diapositivas: http://www.lsi.upc.edu/~conrado/research/talks/analco08.pdf )
fuente
¿Por qué no, para cada posición i , elegir aleatoriamente de todos los elementos que no sean i ? Por ejemplo, puede elegir un índice en la matriz original de [0..n-2] , y si obtiene j> = i , usa j + 1 .
fuente