Давайте рассмотрим битные строки x . Определения:nx
- = строка битов x с последнимидополненными битами i .f(x,i)xi
- = "дисбаланс" x : число 1 с в x - число 0 с в x .b(x)xx −x
Теперь исправьте строку . Рассмотрим функцию g ( i ) = b ( f ( x , i ) ) . Замечания:xg(i)=b(f(x,i))
- .g(0)=b(x)
- .g(n)=−g(0)
- для всех я . Мы либо удаляем один 0 и добавляем один 1, либо наоборот.|g(i)−g(i+1)|=2i
Теперь следует, что существует такое , что - 1 ≤ g ( i ) ≤ + 1 .i−1≤g(i)≤+1
Следовательно, мы можем построить -битную строку y следующим образом: объединить f ( x , i ) и двоичное кодирование индекса i . Абсолютное значение дисбаланса у составляет O ( log n ) . Более того, мы можем восстановить x с учетом y ; отображение биекция.(n+O(logn))yf(x,i)iyO(logn)xy
Наконец, вы можете добавить фиктивных битов, которые уменьшают дисбаланс y с O ( log n ) до 0 .O(logn)yO ( журналн )0