Es fácil ver que para cualquier existe un mapeo 1-1 de {0,1} a {0,1} tal que para cualquier el vector está "equilibrado", es decir, tiene el mismo número de 1s y 0s. ¿Es posible definir tal para que dada podamos calcular eficiente?F n n + O ( log n ) x F ( x ) F x F ( x )
Gracias.
Respuestas:
Consideremos las cadenas de bits . Definiciones:xnorte X
Ahora arregla una cadena . Considere la función . Observaciones:g ( i ) = b ( f ( x , i ) )X sol( i ) = b ( f( x , i ) )
Ahora se deduce que existe un tal que .- 1 ≤ g ( i ) ≤ + 1i −1≤g(i)≤+1
Por lo tanto, podemos construir una cadena de bits siguiente manera: concatenar y la codificación binaria del índice . El valor absoluto del desequilibrio de es . Además, podemos recuperar dado ; El mapeo es biyección.y f ( x , i ) i y O ( log n ) x y(n+O(logn)) y f(x,i) i y O(logn) x y
Finalmente, puede agregar bits ficticios que reducen el desequilibrio de de a .y O ( log n ) 0O(logn) y O(logn) 0 0
fuente
Use el mapeo que preserva el orden lexicográfico. Para encontrar el -ésimo vector equilibrado de longitud n con n / 2 1's, hágalo recursivamente: si k ≤ ( n - 1k norte n / 2 , luego establezca el primer bit 0 y luego encuentre elk-ésimovector delongitudcon1 para completar losbitsrestantes. De lo contrario, establezca el primer bit 1 y encuentre el-th length-con1's.k ≤ ( n - 1n / 2) k n / 2 n - 1 k - ( n - 1( n - 1 ) n / 2 n - 1 (n-1)n/2-1k - ( n - 1n / 2) ( n - 1 ) n / 2 - 1
fuente