나는 데이터 구조를 꿈꿨다. 존재 하는가?


27

이 데이터 구조를 찾지 못했지만 해당 분야의 전문가는 아닙니다.

구조는 집합을 구현하며 기본적으로 변하지 않는 비교 가능한 요소의 배열입니다. 불변은 다음과 같습니다 (반복적으로 정의 됨).

길이가 1 인 배열은 병합 배열입니다.

길이가 2 ^ n 인 배열 (n> 0)은 병합 배열 iff입니다.

  • 전반은 병합 배열이고 후반은 비어 있거나
  • 첫 번째 배열은 꽉 찼고 정렬되고 두 번째 절반은 병합 배열입니다.

배열이 가득 찬 경우 정렬됩니다.

요소를 삽입하기 위해 두 가지 경우가 있습니다.

  • 전반이 가득 차지 않은 경우 전반에 반복적으로 삽입하십시오.
  • 전반이 가득 찬 경우 후반에 재귀 적으로 삽입하십시오.
  • 재귀 단계 후 전체 배열이 가득 찬 경우 절반을 정렬하여 정렬하고 원래 길이의 두 배로 크기를 조정하십시오.

요소를 찾으려면 배열이 가득 찼을 때 이진 검색을 사용하여 두 부분을 모두 반복하십시오. (최대 오름차순 조각 이 있으므로 효율적 입니다.O(log(n))

구조는 정적 버전의 mergesort로 생각할 수 있습니다.

요소를 지우려면 어떻게해야하는지 명확하지 않습니다.

편집 : 구조에 대한 이해를 향상시킨 후.


5
정의 했으므로 존재합니다. 그래도 몇 가지 포인트를 부드럽게해야한다고 생각합니다. 첫째, 불변의 # 2는 설명 할 때 중간 상태에 적용되지 않는 것처럼 나를 혼동합니다. 둘째, 요소를 제거하면 어떻게해야합니까?
Raphael

7
당신 은 그것을 꿈꾸지 않고 데이터 구조를 꿈 꾸었 습니다 ...
Andrej Bauer

@Raphael 귀하의 의견에 감사드립니다, 나는 당신의 생각에 따라 정의를 개선했습니다. 제거 알고리즘을 생각하지 않았습니다.이 구조가 문헌에 있는지 확인하고 더 많은 시간을 할애하기 전에 (Google에서 아무것도 찾을 수 없었습니다). 첫 번째 문장에서 하나님을 정의 할 수 있지만 존재합니까? :)
pbaren

@Andrej 감사합니다. 영어는 모국어가 아닙니다. (나는 당신도 아닌 것 같아요 :)
pbaren

3
@Andrej : 원래 "꿈했던 영업 이익 거의 확실했었다없는 것입니다". "up"대신 "of"로 변경했습니다. 둘 다 문법적으로 정확하지만 의미도 변경됩니다. "중"... 더 재미있는 사운드 옵션이었다
안드라스 살 라몬

답변:


31

정적 정렬 된 배열에 적용되는 고전적인 Bentley-Saxe logarithmic 방법에 대해 설명합니다 . 동일한 아이디어를 사용하여 분해 가능한 검색 문제에 대한 정적 데이터 구조에 대한 삽입 지원 (삽입 또는 삭제 없음)을 추가 할 수 있습니다. (집합 에 대한 답을 세트 및 대한 답에서 쉽게 계산할 수 있으면 검색 문제를 분해 할 수 있습니다 .) 변환은 상각 된 쿼리 시간을 의 계수만큼 증가시킵니다 ( 그것은 이미 일부 다항식보다 컸습니다.A B O ( log n ) n에이에이영형(로그)), 공간을 일정한 요소 만 증가시킵니다. 그렇습니다. Overmars와 van Leeuwen 덕분에 쇠약 할 수 있지만, 필요하지 않으면 그렇게하고 싶지 않습니다.

이 노트 는 기본 사항을 다룹니다.

캐시가 보이지 않는 lookahead 배열은 Bentley-Saxe와 van Emde Boas 나무의 돌연변이 자손입니다.


4
그것들은 아름답게 쓰여지고 설명 된 메모이며, 나는 여러 번 참고로 사용했습니다. 사용 가능해 주셔서 감사합니다!
jbapple

나는 캐시 트리가 보이지 않는 lookahead 배열을 도입 한 논문의 전반부에서 셔틀 트리가 vEB 트리와 어떤 관련이 있는지 알지만 COLA와 vEB 트리의 관계는 무엇입니까?
jbapple

2
고마워,이 자료는 아이디어의 매우 흥미로운 일반화처럼 보입니다. 데이터 구조는 고정 된 알고리즘으로, 단계별로 실행할 수 있다고 생각했지만 그 직관에 대한 유용한 공식화는 찾지 못했습니다.
pbaren

첫 번째 링크는 다른 사람에게도 효과가 있었습니까?
AT

예, 방금 시도했습니다. (불행히도, 그것은 Elsevier paywall에갑니다; 죄송합니다!)
Jeffε

11

이것은 로그 구조의 병합 트리 또는 캐시 불명확 한 미리보기 배열 (또는 COLA)과 유사합니다.

2케이12나는0나는<케이

2021

영형(lg)영형()영형(lg2)

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