반전 쌍 계산


14

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

답변:


3

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

o(nlogn)Ω(n)O(n)Ω(n)


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