상각 된 시간에 검색, 삽입 및 삭제되는 데이터 구조


25

상각 시간 에 다음 연산을 지원하는 순서 목록을 유지하기위한 데이터 구조가 있습니까?O(1)

  • GetElement (k) : 리스트 의 번째 요소를 반환 합니다.k

  • InsertAfter (x, y) : x 바로 다음에 새 요소 y를 목록에 삽입합니다.

  • Delete (x) : 목록에서 x를 제거합니다.

마지막 두 작업의 경우 x가 데이터 구조에 대한 포인터로 제공되었다고 가정 할 수 있습니다. InsertElement는 y에 해당하는 포인터를 반환합니다. InsertAfter (NULL, y)는 목록의 시작 부분에 y를 삽입합니다.

예를 들어, 빈 데이터 구조로 시작하여 다음 작업은 아래에 표시된대로 순서가 지정된 목록을 업데이트합니다.

  • InsertAfter (NULL, a) [a]
  • InsertAfter (NULL, b) [b, a]
  • InsertAfter (b, c) [b, c, a]
  • InsertAfter (a, d) [b, c, a, d]
  • 삭제 (c) [b, a, d]

이 다섯 가지 업데이트 후에 GetElement (2)는 d를 반환하고 GetElement (3)은 오류를 반환해야합니다.


2
에서는 목록 인덱싱 최적 알고리즘 부분 순위 (1989)는 I 발견 이 문제에 대한 솔루션을 제공한다. Ω(log nlog log n)
AT

2
@Raphael : 데이터 구조가 배열 인 경우 라고 하는 요소를 의미한다고 생각 합니다. 배열은 O ( 1 ) 시간 에서 첫 번째 작업을 지원 하지만 두 번째 작업은 지원 하지 않습니다. 연결된 목록은 O ( 1 ) 시간 의 두 번째 작업을 지원 하지만 첫 번째 작업은 지원 하지 않습니다. A[k]O(1)O(1)
JeffE

2
또한 균형 이진 트리는 시간 에 두 작업을 모두 지원합니다 . O(logn)
JeffE

1
@Raphael : 명확히하기 위해 편집되었습니다.
JeffE

2
@JeffE 동적 배열은 상각 시간 ( cs.uwaterloo.ca/research/tr/1999/09/CS-99-09.pdf ) 에서 처음 두 개를 지원합니다O(1)
Diego

답변:


33

아니.

Fredman과 Saks 는 이러한 작업을 지원 하는 모든 데이터 구조에 작업 상각 시간Ω(logn/loglogn) 이 필요 하다는 것을 증명했습니다 . (이것은 Dietz의 논문에서 첫 번째 주석에서 언급 한 참고 문헌 [1]입니다.) 하한 은 업데이트 및 쿼리에 의해 액세스되는 고유 한 메모리 주소의 수만 고려하는 매우 강력한 셀 프로브 계산 모델 에서 유지됩니다. 알고리즘.

업데이트 및 쿼리 작업에 대한 추가 가정이 없으면 Dietz의 데이터 구조가 가장 좋습니다 (적어도 일정한 요인까지).


3
@AT : 그 한계는 결코 "잘못 증명되지 않았다". 적용되지 않는 상황이 있지만 그것은 완전히 다른 진술입니다!
Raphael

5
@AT : 정렬 하한은 훨씬 약한 계산 모델, 즉 이진 결정 트리에서 입증되었습니다. 이진 의사 결정 트리로 설명 할 수없는 더 빠른 알고리즘을 개발하여 한계가 잘못되었습니다 . Fredman과 Saks의 하한을 잘못 입증 하려면 메모리에 액세스하지 않는 더 빠른 알고리즘을 설계해야합니다 . 행운을 빌어 요.
JeffE

@JeffE와 라파엘; 다른 답변을 검토하고 기회가있을 때 결과를 확인 / 거부하십시오. 감사.
AT

6

처럼 보입니다.Ω(lognloglogn)

Ω(logn)


[1] Patrascu, 미하이, 에릭 D. Demaine. “세포 프로브 모델의 로그 하한 경계.”SIAM J. Comput. 35 번 4 (2006 년 4 월) : 932–963. doi : 10.1137 / S0097539705447256.


1
Ω(logn/loglogn)

과연. 또한이 바운드 가 일정한 크기의 단어 가있는 목록 표현 문제에 적용되는지 확인할 수 있습니까?
AT

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