반전 쌍 계산


14

나누기와 정복의 고전적인 적용은 다음 문제를 해결하는 것입니다.

어레이 주어 별개 유사한 요소 배열의 반전 쌍의 개수를 카운트 : 쌍 ( I , J ) 이되도록 [ I ] > [ J ] 와 I < J .a[1…n](i,j)a[i]>a[j]i<j

이에 대한 한 가지 접근 방식은 병합 정렬을 수행하고 하위 문제의 반전 쌍 수를 계산하는 것입니다. 병합 단계에서 (2) 하위 문제에 걸쳐있는 반전 쌍의 수를 세고 하위 문제의 수를 더합니다.

이것이 좋고 시간 알고리즘을 제공하지만 이것은 배열을 엉망으로 만듭니다.O(nlog⁡n)

우리가 배열되어 추가적인 제약 조건이있는 경우 읽기 전용, 우리는 사본과 사본과 거래를하거나 사용 둘 다 계산을 수행하기 위해 통계 균형 이진 트리와 같은 추가 데이터 구조를 사용할 수 있습니다 공간.Θ(n)

현재 질문은 런타임에 영향을 미치지 않으면 서 공간을 개선하고 개선하는 것입니다. 즉

있는가 읽기 전용 어레이 및 사용 서브 선형 (즉, 작동 반전 쌍의 수, 시간 계산 알고리즘을 O ( N ) ) 공간을?O(nlog⁡n)o(n)

균일 한 비용의 RAM 모델을 가정하고 요소가 공간을 차지하고 이들 간의 비교가 O ( 1 )이라고 가정 합니다.O(1)O(1)

참조는 할 것이지만 설명이 더 좋습니다 :-)

웹 검색을 시도했지만 이에 대한 긍정적 / 부정적 답변을 찾을 수 없습니다. 나는 이것이 단지 호기심이라고 생각합니다.


3
Chan과 Pătraşcu 는 시간 알고리즘을 제공하지만, 종이를 감추지 않는 한 Ω ( n ) 공간이 필요 합니다. o(nlog⁡n)Ω(n)
— Raphael

2
또한, Ajtai 등. (정확한) 시간 스트리밍 알고리즘에 Ω ( n ) 공간이 필요 하다는 것을 증명하십시오 . 그러나 기준에 맞는 근사치가있는 것 같습니다. O(n)Ω(n)
— Raphael

1
@Raphael : 감사합니다! 앞으로 답변이 없을 경우, 귀하의 의견이 지금까지 최선의 답변이 될 것입니다.
— Aryabhata

BTW 나는 Ajtai 등의 하한에 대해 약간 혼란스러워합니다. 정리 8은 단일 패스에 대해 정확한 스트리밍 알고리즘, 매우 제한 모델이 될 것으로 보인다 나에 바인딩 "어떤 알고리즘"하지만 낮은 말한다
— Sasho 니콜 로프

@SashoNikolov : 전 세계적으로 모델을 스트리밍 알고리즘으로 설정했다고 생각합니다. 따라서 "any"는 해당 알고리즘으로 제한됩니다. 필자가 작성한 정확한 시간 알고리즘이 정확하기를 바랍니다. 즉, 선형 시간 알고리즘이 지속적으로 많은 패스를 갖는 스트리밍 알고리즘으로 표현 될 수 있기를 바랍니다. 우리는 볼 수 있습니다 . O(n)
— Raphael

답변:


3

라파엘의 대답은 다음과 같습니다.

o(nlog⁡n)Ω(n)O(n)Ω(n)


답변 해 주셔서 감사합니다. 그래도 좀 더 시간을 주겠다. 교통량이 늘어나고있는 것 같습니다.
— Aryabhata
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.