교차로 오라클 설정
Set intersection oracle![]() | 이 기사는 너무 기술적이어서 대부분의 독자들이 이해하기 어려울 수 있습니다.. (2015년 2월) ( 템플릿 및 에 대해 .) 세부사항을 가 아닌 할 수 있도록 할 수 있도록 |
SIO(Set Intersection Oracle)는 집합의 집합을 나타내는 데이터 구조이며 지정된 두 집합의 집합 교차가 비어 있지 않은지 여부에 대한 쿼리에 신속하게 응답할 수 있습니다.
문제에 대한 입력은 유한 집합입니다.모든 집합의 크기의 합은 N(최대 N개의 개별 요소가 있음을 의미함)입니다.SIO는 다음과 같은 양식에 대한 모든 질문에 신속하게 답변해야 합니다.
- "집합i S가 집합k S와 교차합니까?"
최소 메모리, 최대 쿼리 시간
사전 처리 없이 S의 요소를i 임시 해시 테이블에 삽입한 다음 S의k 각 요소가 해시 테이블에 있는지 확인하여 쿼리에 응답할 수 있습니다.쿼리 은 O {\ O + )=입니다.
최대 메모리, 최소 쿼리 시간
또는 집합을 사전 처리하고 교차로 정보가 이미 입력된 n-by-n 테이블을 만들 수 있습니다.그러면 쿼리 시간은 O {{ O이지만 필요한 메모리는 2 {입니다.
타협안
큰 집합을N개 의 요소가 포함된 집합으로 정의합니다({분명히 N개의 스타일({개)이 있습니다.모든 대형 집합과 다른 대형 집합 사이에 교차로 데이터 표를 만듭니다.여기에는 O {{O( 메모리가 합니다.또한 각 큰 집합에 대해 모든 요소의 해시 테이블을 유지합니다.이를 위해서는 O/ 2){ O 메모리가 필요합니다.
두 집합이 주어지면 다음과 같은 세 가지 경우가 있을 수 있습니다.
- 두 세트 모두 큽니다.그런 다음 OO( 내에 교차로 쿼리에 대한 답을 표에서 읽으십시오.
- 두 세트 모두 작습니다.그런 다음 이들 중 하나의 요소를 해시 테이블에 삽입하고 다른 요소의 요소를 확인합니다. 세트가 작기 때문에 필요한 은 O O입니다.
- 한 세트는 크고 한 세트는 작습니다.작은 집합의 모든 요소를 루프하고 큰 집합의 해시 테이블과 비교하여 확인합니다.필요한 시간은 O {\ O {입니다.
일반적으로 "큰 집합"을 적어도 의의 요소가 있는 집합으로 정의하면 큰 집합의 수는 - {개이므로 필요한 는 O ) {O이고 쿼리 은 O {입니다.
대략적인 거리 오라클로 감소
SIO 문제는 다음과 같은 [1]방법으로 대략적인 거리 오라클(DO) 문제로 줄일 수 있습니다.
- 한 부분에는 n개의 세트 각각에 대한 노드가 포함되어 있고 다른 부분에는 세트에 포함된 (최대) N개의 요소 각각에 대한 노드가 포함되어 있는 방향이 지정되지 않은 이분 그래프를 작성합니다.
- 집합에 요소가 포함된 경우 집합과 요소 사이에 가장자리가 있습니다.
이 그래프의 속성은 다음과 같습니다.
- 두 집합이 교차하는 경우 두 집합 사이의 거리는 2입니다(한 집합에서 교차점의 요소까지, 다른 집합까지).
- 두 집합이 교차하지 않으면 두 집합 사이의 거리는 4 이상입니다.
따라서 근사 계수가 2 미만인 DO로 SIO 문제를 해결할 수 있습니다.
SIO 문제는 사소한 해결책이 없는 것으로 여겨집니다.즉, 시간 ( \O (에서 쿼리에 응답하려면 ( \ \ 공간이 필요합니다. 이 추측이 사실이라면 근사 계수가 2 미만이고 쿼리 [1]시간이 일정한 DO가 없음을 의미합니다.
레퍼런스
- ^ a b Patrascu, M.; Roditty, L. (2010). Distance Oracles beyond the Thorup–Zwick Bound. 2010 IEEE 51st Annual Symposium on Foundations of Computer Science (FOCS). p. 815. doi:10.1109/FOCS.2010.83. ISBN 978-1-4244-8525-3.