용액 제안 차분의 합 - 도비 및 마리오 사실 우리가 (일정 시간) 이진 동작을 정의 할 수있는 다른 데이터 유형에 일반화 될 수있다 ⊕ 이다 :Θ ( n )⊕
- 총 같은 임의 값 것을 및 B , ⊕의 B가 정의되어 동일한 종류 (또는 조작자가되는 그 어떤 적절한 퍼의 적어도 ⊕ 여전히 정의된다);에이비a ⊕ b⊕
- 회합 , 예컨대 그 ⊕ ( B ⊕ C ) = ( ⊕ B ) ⊕ C ;a ⊕ ( b ⊕ c ) = ( a ⊕ b ) ⊕ c
- 가환 ,되도록 ⊕ B = B ⊕ ; 과a ⊕ b = b ⊕ a
- cancellative 역 연산자가 존재하도록 만족 ( ⊕의 B ) ⊖ B = . 기술적으로,이 역 연산은 n 개의 요소 의 두 합을 "감산"하는 데 각각 O ( n ) 시간을 초과하지 않는 한 반드시 일정한 시간 일 필요 는 없습니다 .⊖( a ⊕ b ) ⊖ b = a엔O ( n )
(유형이 유한 한 수의 고유 값만 취할 수있는 경우, 이러한 특성은 Abelian 그룹 으로 만들기에 충분합니다 . 그렇지 않은 경우에도 최소한 정류 가능한 반 정형 그룹이 됩니다.)
이러한 동작을 사용 우리는 어레이의 "합"을 정의 할 수 = ( 1 , 2 , ... , N ) 등을 ( ⊕⊕a = ( a1,2, ... ,엔) 다른 배열이 주어 B = ( b를 1 , b를 2 , ... , B , N , B , N + 1 ) 의 모든 요소가 포함더한 추가 소자 (X)를 , 우리는 따라서이 ( ⊕
( ⊕a ) = a1⊕2⊕ ⋯ ⊕ a엔.
b = ( b1, b2, … , b엔, bn + 1)에이엑스 이므로 다음과 같이 계산하여이 추가 요소를 찾을 수 있습니다.
x = ( ⊕( ⊕b ) = ( ⊕a ) ⊕ xx = ( ⊕b ) ⊖ ( ⊕) .
배열의 값이 정수가있는 경우 예를 들어, 또한 (또는 정수 모듈 또한 유한 길이의 정수 유형) 연산자로서 사용될 수있다 역 동작과 감산으로 ⊖ . 또는 고정 길이 비트 문자열로 값을 나타낼 수있는 모든 데이터 유형에 대해 비트 XOR 을 ⊕ 및 ⊖ 모두로 사용할 수 있습니다 .⊕⊖⊕⊖
더 일반적으로, 우리는 끝에서 패딩을 가역적으로 제거 할 수있는 방법이있는 한 필요에 따라 같은 길이까지 패딩하여 가변 길이의 문자열에 비트 XOR 방법을 적용 할 수도 있습니다.
어떤 경우에는 사소한 일입니다. 예를 들어, C 스타일의 널 종료 바이트 문자열은 암시 적으로 자체 길이를 인코딩하므로이 방법을 적용하는 것은 쉽지 않습니다. 두 문자열을 XOR 할 때 짧은 문자열을 널 바이트로 채워 길이를 일치시키고 추가 후행 널을 자릅니다. 최종 결과. 중간 XOR 합계 문자열 에는 null 바이트 가 포함될 수 있으므로 길이를 명시 적으로 저장해야하지만 최대 한두 개만 필요합니다.
더 일반적으로, 임의의 비트 문자열에 대해 작동하는 한 가지 방법은 1 비트 패딩 을 적용하는 것입니다 . 여기서 각 입력 비트 열은 단일 비트로 채워진 다음 패딩 된 길이와 일치하는 데 필요한만큼의 0 비트로 채워집니다. 가장 긴 입력 문자열. (물론,이 패딩은 사전에 명시 적으로 수행 할 필요는 없습니다. XOR 합을 계산하는 동안 필요에 따라 적용 할 수 있습니다.) 마지막에 우리는 후행 0 비트와 마지막 1 비트 를 스트립에서 제거하면 됩니다. 결과. 또는 현이 예를 들어 최대 2 321001232바이트 길이가 길면 각 문자열의 길이를 32 비트 정수로 인코딩하여 문자열 앞에 붙일 수 있습니다. 또는 접두사 코드를 사용하여 임의의 문자열 길이를 인코딩 하고 문자열 앞에 붙일 수도 있습니다. 다른 가능한 인코딩도 존재합니다.
실제로, 컴퓨터에서 표현할 수있는 모든 데이터 유형은 정의에 따라 유한 길이의 비트 문자열로 표현 될 수 방법은 문제에 대한 일반적인 Θ ( n ) 솔루션을 생성합니다.Θ ( n )
잠재적으로 까다로운 부분은 취소가 작동하기 위해 각 값에 대해 고유 한 정식 비트 열 표현을 선택해야한다는 것입니다. 이는 두 배열의 입력 값이 주어지면 어려울 수 있습니다 (실제로 계산할 수없는 경우도 있음) 다른 동등한 표현으로. 그러나 이것은이 방법의 특정한 약점이 아닙니다. 입력에 동등성을 결정할 수없는 값을 포함하도록 허용 된 경우이 문제점을 해결하는 다른 방법도 실패 할 수 있습니다.