어떤 에 대해서도 {0,1} 에서 {0,1} 1-1 매핑 가 존재하여 어떤 에 대해서도 벡터 는 "균형"입니다. 즉, 1과 0의 개수가 같습니다. 주어진 우리가 효율적으로 계산할 수 있도록 그러한 를 정의 할 수 있습니까?F n n + O ( log n ) x F ( x ) F x F ( x )
감사.
어떤 에 대해서도 {0,1} 에서 {0,1} 1-1 매핑 가 존재하여 어떤 에 대해서도 벡터 는 "균형"입니다. 즉, 1과 0의 개수가 같습니다. 주어진 우리가 효율적으로 계산할 수 있도록 그러한 를 정의 할 수 있습니까?F n n + O ( log n ) x F ( x ) F x F ( x )
감사.
답변:
비트 문자열 고려해 봅시다 . 정의 :x
이제 문자열 수정하십시오 . 함수를 고려하십시오 . 관찰 :g ( I ) = B ( F ( X , I ) )
이제 과 같은 가 존재합니다 .− 1 ≤ g ( i ) ≤ + 1
따라서 다음과 같이 비트 문자열 할 수 있습니다. 와 인덱스 의 이진 인코딩을 연결합니다 . 불균형의 절대 값 은 입니다. 또한, 우리는 주어진 를 회복 할 수 있습니다 . 매핑은 bijection입니다.Y F ( X , I ) I Y O ( 로그 N ) 의 X , Y
마지막으로, 추가 의 불균형을 줄이기 더미 비트 로부터 로 .y O ( log n ) 0
사전 순서를 유지하는 매핑을 사용하십시오. 1이 있는 번째 길이 균형 벡터 를 찾으려면 재귀 적으로 수행하십시오. 인 경우 첫 번째 비트 0을 설정 한 다음 번째 길이 를 찾으십시오. - 나머지 비트 를 완성하기 위해 1을 갖는 벡터 . 그렇지 않으면 첫 번째 비트 1을 설정하고 1 과 함께 -길이 벡터를 찾으십시오 .n n / 2 k ≤ ( n - 1K(N-1)N/2N-1 개(K)-(N-1(N-1)N/2-1