セグメント ツリーとクワッド ツリーに関連する問題を解決しています。セグメント ツリーでは、1D 配列を2 (2^1)セグメントに分割し、ベース ケースが到着するまでこれを再帰的に行うことに気付きました。同様に、クワッド ツリーでは、2D グリッドを各ステップで4 (2^2)のセグメントに分割します。これらの分割統治メカニズムはすべて、対数時間の複雑さを達成するためのものです。悪意はありません!
しかし、セグメント ツリーの 2 つの部分ではなく、配列を4 (4^1)以上の部分に分割しないのはなぜですか? グリッドを 4 つではなく16 (4^2)の部分に分割しないのはなぜですか? O(log(N))
これらを行うことで、パフォーマンスを達成できますがlog
、log(N)
(base 4) の方がlog(N)
(base 2) よりも優れているため、パフォーマンスが向上します。
この場合、実装が少し難しいことはわかっています。メモリのオーバーヘッドの問題はありますか? それとも何か?
どこか間違っている場合は修正してください。ありがとう!