記事ディレクトリ
前書き
フェンウィックツリーは、ツリー配列またはバイナリインデックスツリー(BIT)とも呼ばれます。これは、クエリと変更の複雑度がlog(n)のデータ構造です。主に与えられた間隔、最大値、または合計を見つけます。
次に、フェンウィックツリーの概念について詳しく説明します。
フェンウィックツリーとは
配列がある場合は、次の操作を簡単に実行したいと考えています。
- 配列の最初のn個の要素の合計を数えます。
- nからmまでの配列の要素の合計を数えます。
- 配列に要素を追加すると便利です。
上記の3つの質問を達成するために、このデータ構造を構築するには
配列を作成するのは非常に単純で失礼な考え方です。この配列のn番目の要素は、元の配列の最初のn個の要素の合計です。
そのような配列が構築されると、2つの操作1、2は簡単に満たされます。
ただし、操作3では、要素が更新されると、後続のすべての要素をカスケードで更新する必要があるため、操作の時間の複雑さはO(n)になります。
配列の更新が少ない場合はこのデータ構造が適していますが、配列の更新が多い場合は、より効率的な方法が必要です。
<