이전 문제

Predecessor problem

컴퓨터 과학에서, 선행 문제는 주어진 요소를 효율적으로 쿼리하기 위해 일련의 항목을 관리하는 것을 포함한다. 문제를 해결하기 위해 사용되는 데이터 구조에는 균형 잡힌 이진 검색 트리, van Emde Boas 트리 및 퓨전 트리가 포함됩니다.정적 선행 문제에서는 요소 세트가 변경되지 않지만 동적 선행 문제에서는 집합에 대한 삽입 및 삭제가 [1]허용됩니다.

이전 문제는 가장 가까운 네이버 문제의 단순한 사례로, 이를 해결하는 데이터 구조에는 정수 정렬과 같은 문제가 있습니다.

정의.

이 문제는 U 정수의 서브셋을 포함하는 집합 S를 유지하는 것으로 구성됩니다.이러한 각 정수는 w의 워드 크기로 저장할 수 있습니다.즉, U 2 \ U \2^ {} 입니다.문제를해결하는데이터구조는다음연산을지원합니다.[2]

  • predecessor(x)S에서 x 이하인 가장 큰 요소를 반환합니다.
  • successor(x)S에서 x 이상의 최소 요소를 반환합니다.

또한 문제의 동적 버전을 해결하는 데이터 구조도 다음 작업을 지원합니다.

  • insert(x)set S에 x를 추가합니다.
  • delete(x)set S에서 x를 삭제합니다.

이 문제는 일반적으로 단어 RAM과 같은 전이성 계산 모델에서 분석됩니다.

데이터 구조

A binary tree with 4 levels. The nodes on each level are: 3: (), 2: (0) and (1), 1: (00) and (10), 0: (001), (100) and (101). The unlabeled node is the root. There are directed edges between the folllowing nodes: ()->(0), ()->(1), (0)->(00), (0)->(001) in blue, (1)->(10), (1)->(101) in blue, (00)->(001) twice, once in blue, (10)->(100), (10)->(101), (001)<->(100), (100)<->(101). The nodes on each level are contained in a box, labeled with LSS(<level>).
1(0012), 4(1002) 및 5(101)의2 정수를 포함한 x-fast trie로 이전 문제를 효율적으로 해결할 수 있습니다.

이 문제에 대한 간단한 해결책 중 하나는 균형 잡힌 바이너리 검색 트리를 사용하는 것입니다.이 트리는 (Big O 표기로) 이전 쿼리의 실행 시간을 O n O n.Van Emde Boas 트리의 쿼리 시간은 O logU )(\ O U이지만 O[1] O 공간 합니다.Dan Willard는 O( logU) \ O ( \ U ) \ [3] O \log U)공간과 동일한 쿼리 시간이 한 보다 복잡한 y-fast trie를 사용하여 공간 사용률 개선을 제안했습니다Michael Fredman과 Willard에 의해 도입된 퓨전 트리는 정적 [4]문제에 대한 이전 쿼리의 O w { O _ 쿼리 과 O { O 합니다.동적 문제는 O w n + log log n){ O _ n 쿼리 [5]시간과 해싱을 [6]사용하는 O w n O _ 쿼리 시간을 지수 트리를 사용하여 해결되었습니다.

수학적 특성

이전 문제에 대한 하한을 증명하거나 점근적으로 최적의 솔루션의 실행 시간이 얼마인지 확인하는 다수의 논문이 있었다.를 들어 Michael Beame과 Faith Ellen은 w의 모든 값에 대해 쿼리 시간(Big Theta 표기법에서는log log log log w logw w 의 n 이 존재함을 증명했습니다.\ display style \( { \ \ w} { \ \ w} { \ light } } \ light}} ) , values,,,, 。( log ( { \ \ \ n \ \ n \ right[1]}. 통신의 복잡성에 대한 기타 증명.

정적 선행 문제의 경우, Mihai Pütra andcu와 Mikkel Thorup은 세포 [7]프로브 모델에서 최적의 검색 시간에 대한 다음과 같은 하한을 보였다.

RAM에는 w\ w\ w가 있으며, 세트에는 비트의 정수가 되어 있으며 RAM에 S\ Sdisplaystyle Slg 공간을 하여 표현되며, + w a frac wlg}를 합니다.

= lgn \ w = \ = \ n 1 O ( ) \ S \ { ( ) lg n 의 경우, 최적의 검색 시간은 LG( ) 입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c Beame, Paul; Fich, Faith (August 2002). "Optimal Bounds for the Predecessor Problem and Related Problems". Journal of Computer and System Sciences. 65 (1): 38–72. doi:10.1006/jcss.2002.1822. S2CID 1991980.
  2. ^ Rahman, Naila; Cole, Richard; Raman, Rajeev (17 August 2001). Optimized Predecessor Data Structures for Internal Memory (PDF). International Workshop on Algorithm Engineering. pp. 67–78.
  3. ^ Willard, Dan (24 August 1983). "Log-logarithmic worst-case range queries are possible in space Θ(n)". Information Processing Letters. 17 (2): 81–84. doi:10.1016/0020-0190(83)90075-3.
  4. ^ Fredman, Michael; Willard, Dan (1990). "Blasting through the information theoretic barrier with fusion trees". Symposium on Theory of Computing: 1–7.
  5. ^ 를 클릭합니다Andersson, Arne; Thorup, Mikkel (2007), "Dynamic ordered sets with exponential search trees", Journal of the ACM, 54 (3): A13, arXiv:cs/0210006, doi:10.1145/1236457.1236460, MR 2314255, S2CID 8175703.
  6. ^ 를 클릭합니다Raman, Rajeev (1996), "Priority queues: small, monotone and trans-dichotomous", Fourth Annual European Symposium on Algorithms (ESA '96), Barcelona, Spain, September 25–27, 1996, Lecture Notes in Computer Science, vol. 1136, Berlin: Springer-Verlag, pp. 121–137, doi:10.1007/3-540-61680-2_51, ISBN 978-3-540-61680-1, MR 1469229.
  7. ^ a b Pătraşcu, Mihai; Thorup, Mikkel (21 May 2006). "Time-space trade-offs for predecessor search". Proceedings of the Thirty-Eighth Annual ACM Symposium on Theory of Computing: 232–240. arXiv:cs/0603043. doi:10.1145/1132516.1132551. ISBN 1595931341. S2CID 1232.