병렬 동적 검색


24

합리적으로 작업 효율을 유지하면서 업데이트를 위해 비슷하거나 끔찍하게 나쁜 속성을 가진 빨강-검은 나무와 자연스럽게 평행 한 아날로그가 있습니까?

보다 일반적으로 업데이트를 통한 병렬 검색에 가장 적합한 방법은 무엇입니까?


"무섭지 않은 상태"를 유지하거나 돌리려는 특성은 무엇입니까? 균형 상태가 여전히 적-검은 나무의 조건 인 것이 얼마나 중요합니까? 동시 건너 뛰기 목록에서와 같이 예상 범위가 허용됩니까?
— jbapple 2016 년

나는 기대되는 한계가 좋을 것이라고 생각합니다. 이것은 우리가 업데이트 된 키 값으로 데이터 구조에 매우 자주 충돌하는 상황으로, 피보나치 힙이 정확하고 효율적인 변경 키 작업이 될 수 있습니다. 동시 건너 뛰기 목록에 대한 좋은 참조가 있습니까?
— Suresh Venkat

Herlihy & Shavit의 저서 인 The Art of Multiprocessor Programming 또는 "Lock-free linked list and skip list" 또는 java.util.concurrent 또는 Practical lock-freedom . hopscotch 해시 테이블 과 같은 동시 해시 테이블 사용을 고려 했습니까 ?
— jbapple

사실은 아니야 나는 슬프게도 동시적인 방법으로 문맹입니다. 심판 주셔서 감사합니다.
— Suresh Venkat

답변:


8

내가 알 수 있듯이 전략은 균형 상태를 완화 한 다음 재조정 업데이트를 버스트로 수행하는 것입니다. 다음은 Hanke et al., 1997 [PDF] 의 논문입니다. 필자는 필자가 동시에 수행 할 수 있도록 업데이트 작업을 집계하고 해결하는 기술에 중점을두고 있다고 생각합니다.


5

오카 사키의 책 순수 기능적 데이터 구조 에서 흥미로운 답변을 찾을 수있을 것 같습니다 . 이 책에는 모든 업데이트가 비싸지 않도록 많은 데이터 구조가 표시됩니다 (보통 일정 또는 로그 시간 만 소요).

nn


4
추가 수정없이 순전히 기능적인 검색 트리가 모든 업데이트를 직렬화하므로 쓰기 경합에서 성능이 저하된다고 생각합니다.
— jbapple
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.