1
範囲合計問題のセグメントツリー実装の時間の複雑さの証明
のサブ配列の合計を見つけるためにセグメントツリーを使用できることを理解しています。そして、ここのチュートリアルによれば、これはO(log n )時間で実行できます。あAAO(ログn )O(logn)\mathcal{O}(\log n) ただし、クエリ時間が実際にことを証明することはできません。このリンク(および他の多くのリンク)は、各レベルで処理されるノードの最大数が4であることを証明できるため、O(4 log n )= O(log n )であると述べています。O(ログn )O(logn)\mathcal{O}(\log n)444O(4ログn )= O(ログn )O(4logn)=O(logn)\mathcal{O}(4 \log n) = \mathcal{O}(\log n) しかし、おそらく矛盾によって、どうやってこれを証明するのでしょうか? もしそうなら、もし私たちがより高次元の配列の範囲の合計にセグメントツリーを使うとしたら、証明はどのように拡張されるでしょうか? たとえば、元の行列を4つの象限(線形配列の2分の1間隔と同様)に分割して、象限セグメントツリーを構築してサブ行列の合計を見つけることを考えることができますが、その証拠は私にはわかりません。