セグメントツリーの範囲クエリが$ \ \ LCEIL \ LOG_2 {N} \ RCEIL $ノードで返されるのはなぜですか?
-
29-09-2020 - |
質問
$ a [1 \ ldots n] $ が各間隔で設定されたセグメントツリーを使用して表され、なぜ範囲クエリ $ [L \ Ldots R] $ は、 $ \ lceil \ log_2 {n} \ rceil $ セット(または互いに素に戻す)間隔)?
標準セグメントを使用してクエリ範囲の廃棄された範囲を見つける ツリークエリ手順 $ o(\ log n)$ の互いにまいが$ onjodeノード、の共和済 そのマルチセットはクエリ範囲内のマルチセットの値の値です。 これらのマルチセット $ s_1、\ dots、s_m $ を呼び出しましょう( $ m \ le \ lceil \ log_2 n \ 2 n \ 2 n} )
私は証明を検索しようとしましたが、どんなサイトでも見つけることができませんでした。誰かが私がそれを証明するのを手伝ってくれる?
解決
これは基本的な考えです。
ダイアディック間隔を形の間隔である $$ [2 ^ b a、2 ^ b(a + 1)-1] $$ integer $ a、b \ geq 0 $
請求項1。 $ m <2 ^ n $ $ [0、M-1] $ は、 $ n $ dyadic間隔の互いに疑似合の共用体として書くことができます。
証明。 $ m $ を2の電力の減少の合計として展開します。 $$ m= 2 ^ {a_1} + \ cdots + 2 ^ {a_k}。 $$ それから私たちは書くことができます $$ [0、M - 1]= [0,2 ^ {A_1} -1] \ cup [2 ^ {a_1}、2 ^ {a_1} + 2 ^ {a_2} -1] \ cup \ cdots \ cup [2 ^ {a_1} + + 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] $ は、 ded 2n $ dyadic interveの互いに素な共用体として書くことができます。
証明 $ m_1 $ と $ m_2 $ $ m_1= x0y、m_2= x1z $ の形式です。ここで、 $ | y |= | z | $ < /スパン>。 $ m= x10 ^ {| z |} $ 。請求項1を使用して、 $ [0、m_2-m-1] $ を $ nの共用体として表現することができます。 $ ダイアディック間隔。 $ m $ によってこれらをシフトさせると、 $ [m、m_2-1] $ をexpressにexpresent aのunionほとんどの $ n $ dyadic間隔。同様に、請求項1を使用して、 $ [0、m-m_1-1] $ を $を表現できます。 n $ ダイアディック間隔。シフトと反転、 $ [m_1、m-1] $ x を $ n $ 二量間間隔。
(両方の場合において、シフト、そして反転する可能性があることを確認する必要がある場合は、相間隔が死角であることを確認する必要がある。)