Antecedentes
Sea
El número de permutaciones distintas de
Pregunta
¿Existe un algoritmo eficiente para generar dos permutaciones difusas y desordenadas
Una permutación
P es difusa si para cada elemento distintoi deP , las instancias dei están espaciados a cabo más o menos uniformemente enP .Por ejemplo, supongamos que
S=(1424)={1,1,1,1,2,2,2,2} .{1,1,1,2,2,2,2,1} no es difuso{1,2,1,2,1,2,1,2} es difuso
Más rigurosamente:
- Si , solo hay una instancia de para “espaciar” en , así que dejemos .
ni=1 i P Δ(i)=0 - De lo contrario, y mucho ser la distancia entre instancia y la instancia de en . Reste de ella la distancia esperada entre las instancias de , definiendo lo siguiente:
Si está espaciada de manera uniforme en , entonces debe ser cero, o muy cerca de cero si .
d(i,j) j j+1 i P i i P Δ ( i ) n i ∤ nδ(i,j)=d(i,j)−nniΔ(i)=∑j=1ni−1δ(i,j)2 i P Δ(i) ni∤n
Ahora definir la estadística de para medir la cantidad de cada está espaciada de manera uniforme en . Llamamos difuso si está cerca de cero, o aproximadamente . (Se puede elegir un umbral específico para para que sea difuso si )i P P s ( P ) s ( P ) ≪ n 2 k ≪ 1 S P s ( P ) < k n 2
s(P)=∑ci=1Δ(i) i P P s(P) s(P)≪n2 k≪1 S P s(P)<kn2 Esta restricción recuerda un problema de programación en tiempo real más estricto llamado problema del molinete con multiset (de modo que ) y densidad . El objetivo es programar una secuencia infinita cíclica manera que cualquier subsecuencia de longitud contenga al menos una instancia de . En otras palabras, un programa factible requiere todo ; si es denso ( ), entonces y . El problema del molinete parece ser NP-completo.
A=n/S ai=n/ni ρ=∑ci=1ni/n=1 P ai i d(i,j)≤ai A ρ=1 d(i,j)=ai s(P)=0 Dos permutaciones y se alteran si es un trastorno de ; es decir, para cada índice .
P Q P Q Pi≠Qi i∈[n] Por ejemplo, supongamos que .
S=(1222)={1,1,2,2} {1,2,1,2} y no están alterados{1,1,2,2} {1,2,1,2} y están alterados{2,1,2,1}
Análisis exploratorio
Estoy interesado en la familia de multisets con y para . En particular, dejemos .
La probabilidad de que dos permutaciones aleatorias y de están trastornados es de aproximadamente 3%.
P Q D Esto se puede calcular de la siguiente manera, donde es el polinomio th Laguerre: Vea aquí para una explicación.
Lk k |DD||SD|p=∫∞0dte−t∏i=1cLni(t)=∫∞0dte−t(L4(t))3(L3(t))(L2(t))(L1(t))3=4.5×1011=n!∏i=1c1ni!=20!(4!)3(3!)(2!)(1!)3=1.5×1013=|DD|/|SD|≈0.03 La probabilidad de que una permutación aleatoria de sea difusa es de aproximadamente 0.01%, estableciendo el umbral arbitrario en aproximadamente .
P D s(P)<25 A continuación se muestra una gráfica de probabilidad empírica de 100,000 muestras de donde es una permutación aleatoria de .
s(P) P D En tamaños de muestra medios, .
s(P)∼Gamma(α≈8,β≈18) P{1,8,2,3,4,1,5,2,3,6,1,4,2,3,7,1,5,2,4,3}{8,2,3,4,1,6,5,2,3,4,1,7,1,2,3,5,4,1,2,3}{3,6,5,1,3,4,2,1,2,7,8,5,2,4,1,3,3,2,1,4}{3,1,3,4,8,2,2,1,1,5,3,3,2,6,4,4,2,1,7,5}{4,1,1,4,5,5,1,3,3,7,1,2,2,4,3,3,8,2,2,6}s(P)119≈11409≈166509≈7212239≈13616979≈189cdf(s(P))<10−5<10−4<10.05<10.45<10.80
La probabilidad de que dos permutaciones aleatorias sean válidas (difusas y desordenadas) es de alrededor de
.
Algoritmos ineficientes
Un algoritmo común "rápido" para generar un desorden aleatorio de un conjunto se basa en el rechazo:
hacer P ← aleatorio_permutación ( D ) hasta que is_derangement ( D , P ) volver P
lo que requiere aproximadamente iteraciones, ya que existen aproximadamente posibles alteraciones. Sin embargo, un algoritmo aleatorio basado en rechazo no sería eficiente para este problema, ya que tomaría el orden de iteraciones.
En el algoritmo utilizado por Sage , un desorden aleatorio de un conjunto múltiple "se forma al elegir un elemento al azar de la lista de todos los desordenes posibles". Sin embargo, esto también es ineficiente, ya que hay permutaciones válidas para enumerar, y además, uno necesitaría un algoritmo para hacerlo de todos modos.
Mas preguntas
¿Cuál es la complejidad de este problema? ¿Se puede reducir a cualquier paradigma familiar, como el flujo de red, la coloración de gráficos o la programación lineal?