Consideremos las cadenas de bits . Definiciones:xnorteX
- x iF( x , i ) = cadena de bits con los últimos bits complementados.Xyo
- x x - xb ( x ) = "desequilibrio" de : número de 1s en número de 0s en .XX -X
Ahora arregla una cadena . Considere la función . Observaciones:g ( i ) = b ( f ( x , i ) )Xsol( i ) = b ( f( x , i ) )
- sol( 0 ) = b ( x ) .
- sol(n)=−g(0) .
- i|g(i)−g(i+1)|=2 para todo . Eliminamos un 0 y agregamos un 1 o viceversa.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))yf(x,i)iyO(logn)xy
Finalmente, puede agregar bits ficticios que reducen el desequilibrio de de a .y O ( log n ) 0O(logn)yO(logn)0 0