É fácil ver que para qualquer existe um mapeamento 1-1 F de {0,1} n a {0,1} n + O ( log n ), de modo que, para qualquer x, o vetor F ( x ) é " equilibrado ", ou seja, possui número igual de 1s e 0s. É possível definir tal F para que, dado x , possamos calcular F ( x ) eficientemente?
Obrigado.
Respostas:
Vamos considerar as cadeias bits x . Definições:n x
Agora corrija uma string . Considere a função g ( i ) = b ( f ( x , i ) ) . Observações:x g(i)=b(f(x,i))
Agora segue-se que existe um tal que - 1 ≤ g ( i ) ≤ + 1 .i −1≤g(i)≤+1
Portanto, podemos construir uma sequência de bits y da seguinte forma: concatenar f ( x , i ) e a codificação binária do índice i . O valor absoluto do desequilíbrio de y é O ( log n ) . Além disso, podemos recuperar x dado y ; o mapeamento é bijeção.(n+O(logn)) y f(x,i) i y O(logn) x y
fonte
fonte