대부분의 $ \ lceil \ log_2 {n} \ rceil $ nodes에서 세그먼트 트리에서 범위 쿼리가 반환되는 이유는 무엇입니까?

cs.stackexchange https://cs.stackexchange.com/questions/125095

문제

배열 $ a [1 \ ldots n] $ 은 각 간격에 설정된 세그먼트 트리를 사용하여 표현되면 범위 쿼리 $ [l \ ldots r] $ 대부분의 $ \ lceil \ log_2 {n} \ rceil $ 세트 (또는 분리 된 간격)?

이 명령문을 가로 지르면 이 답변 .

인용 :

표준 세그먼트를 사용하여 쿼리 범위의 분리 된 적용 범위 찾기 트리 쿼리 절차. $ o (\ log n) $ disjoint 노드, 노조 누구의 멀티 세트가 쿼리 범위에서 정확히 값의 다단계입니다. 해당 멀티 세트 $ s_1, \ dots, s_m $ ( $ m \ le \ lceil \ log_2 n \ rceil $)을 호출 해 봅시다. ).

나는 증거를 찾고 시도했지만 어떤 사이트에서는 그것을 찾을 수 없었습니다. 누구든지 나를 도와 줄 수 있습니까?

도움이 되었습니까?

해결책

여기에 기본 아이디어가 있습니다.

dyadic 간격을 형태의 간격으로하자 $$ [2 ^ B A, 2 ^ B (A + 1) -1] $$ 일부 정수 $ a, b \ geq 0 $ .

주장 1. $ m <2 ^ n $ $ [0, m-1] $ 은 대부분의 $ n $

에 대한 분리 된 연합으로 작성 될 수 있습니다.

증명. $ m $ 을 2 : $$ m= 2 ^ {a_1} + \ cdots + 2 ^ {a_k}. $$ 그럼 우리는 쓸 수 있습니다 $$ [0, m-1]= [0,2 ^ {A_1} -1] \ 컵 [2 ^ {A_1}, 2 ^ {A_1} + 2 ^ {A_2} -1] \ 컵 \ CDOTS \ CUP [2 ^ {A_1} + \ cdots + 2 ^ {a_ {k-1}}, 2 ^ {a_1} + \ cdots + 2 ^ {a_k} -1]. $$

청구 2. $ 0 \ leq m_1 \ leq m_2 \ leq 2 ^ n $ $ [m_1, m_2-1] $ 은 대부분의 $ 2n $ 다이아드 간격으로 쓸 수 있습니다.

증명. $ m_1 $ $ m_2 $ $ m_1= x0y, m_2= x1z $ , $ | y |= | z | $ <$ < / span>. $ m= x10 ^ {| z |} $ 을 보냅니다. 청구 범위 1을 사용하여 $ [0, m_2-m-1] $ 을 대부분의 $ n $ 다이어틱 간격. $ m $ 에 의해 $ [m, m_2-1] $ 을의 조합으로 표현합니다. 대부분의 $ n $ 다이어틱 간격. 유사하게, 청구항 1을 사용하여 $ [0, m-m_1-1] $ 을 대부분의 $ n $ 다이어틱 간격. 이동 및 반전, 우리는 $ [m_1, m-1] 수학 용기 "> $ n $ 다이어틱 간격.

(두 경우 모두, 하나는 시프 팅을 확인하고 반전 가능성이 있는지, 일정한 간격이 다이어드입니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top