확률 적 검색 데이터 구조가 유용합니까?


9

SkipList는 동일한 기능을 제공합니다 O(logn)균형 재조정이 필요하지 않다는 이점이있는 균형 트리로 검색 범위를 제한합니다. SkipList는 랜덤 코인 플립을 사용하여 구성되므로 SkipList의 구조가 충분히 "밸런스 된"경우에만 이러한 경계가 유지됩니다. 특히, 일부 상수 대해 확률 경우 , 요소 삽입 후 균형 구조가 손실 될 수 있습니다.1/ncc>0

잠재적으로 영원히 실행되는 웹 응용 프로그램에서 저장소 백엔드로 건너 뛰기 목록을 사용하고 싶다고 가정 해 봅시다. 따라서 일부 다항식 연산이 끝나면 SkipList의 균형 잡힌 구조가 손실 될 가능성이 큽니다.

내 추론이 맞습니까? 이러한 확률 적 검색 / 저장 데이터 구조에는 실제 적용이 있으며, 그렇다면 위의 문제를 어떻게 방지 할 수 있습니까?

편집 : SkipList에는 결정적 변형이 있으며, 이는 (전통적인) 무작위 화 된 SkipList와 비교하여 구현하기가 훨씬 더 복잡합니다.


1
어떤 특정 응용 프로그램을 염두에두고 있습니까?
Pratik Deoghare

답변:


6

나는 '균형'을 잃을 다항식 확률이 있다고 생각하지 않습니다. 건너 뛰기 목록에 요소를 삽입 한 후 동전이 튀어 나올 때까지 동전을 뒤집어 그 위에 복사 탑을 만듭니다.

따라서 맨 위에 도달하면 더 적은 요소를 가진 레이어가 있습니다. 타워 높이가 있기 때문에케이 확률로 2케이, 높이에 요소가 있습니다 케이 이하의 확률 (결합 범위) /2케이. 따라서 레벨에 요소가 있습니다로그 도발보다 적은 1/. 높이의 탑ω(로그)다항식 확률이 있습니다. 허락하다미디엄 최대 레벨이되면

이자형[미디엄]=케이1아르 자형(미디엄케이)로그()+케이로그()/2케이=로그()+2.

또한 레벨에서 케이 있다 /2케이 확률이 매우 높은 요소 독립적 인 임의의 변수와 Chernov의 경계를 사용할 수 있습니다.

또한 수준 당 일정한 수의 단계 만 수행 할 수 있음 (매우 높은 확률로)을 표시 할 수 있으므로 검색 비용이 로그입니다.

따라서 당신은 불균형 한 목록으로 끝나기 위해 정말로 운이 좋지 않을 것입니다. 여기서 '행운'은 불균형 검색 트리와 달리 데이터와 무관합니다. 건너 뛰기 목록의 동전 뒤집기는 항상 무작위입니다.

내가 아는 한, 건너 뛰기 목록은 잠금이없는 검색 구조로 구현하기가 비교적 쉽기 때문에 실질적인 관심이 있습니다. 명백한 이점이 있습니다. 반면에 B- 트리는 동시 액세스에서 성능을 발휘하기가 다소 어렵습니다.


이진 검색 트리의 예상 깊이도 로그입니다. 여기 상황이 왜 더 좋은가요? (또한 임의의 순열을 가정합니다. 맞습니까?)
Raphael

2
검색 트리에서 깊이는 데이터에 따라 다릅니다. 난수를 공급하면 로그 깊이가 매우 높아 확률이 높습니다. 그러나 실제로는 데이터가 무작위가 아닙니다. 건너 뛰기 목록은 데이터를 임의의 소스로 사용하지 않으므로이 문제는 존재하지 않습니다.
adrianN

1

건너 뛰기 목록에는 삽입 / 조회 / 삭제 이외의 작업이 사용되는 상황에서 매력적으로 만들 수있는 다른 속성이 있습니다.

예를 들어, 건너 뛰기 목록에는 영형(1)수정 위치가 알려진 경우 예상 로컬 업데이트 시간 이것은 확실히 가능하다영형(1) 균형 잡힌 이진 검색 트리에서는 최악의 시간이지만 이러한 구조는 구현하기가 매우 복잡한 경향이 있습니다.

또한 건너 뛰기 목록은 동시 비교 기반 검색 구조를 구현하는 일반적인 방법입니다. 역사적으로, 균형 잡힌 검색 트리는 동시 경합이 좋지 않은 상태에서 수행되지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.