特定の種類のクエリに対する最適な前処理


11

要素S = { s 1、s 2、… 、s n }のセミグループとします。私たちの目標は、製品です。(S,∘)S={s1,s2,…,sn}si∘si+1∘⋯∘sj

AlonとSchieberの論文「オンライン製品クエリに回答するための最適な前処理」では、次のように使用するだけで、最大でステップ(は逆アッカーマン関数)で各クエリに回答できることが証明されています。前処理の線形量。αO(α(n))α

それは各クエリすることを希望する場合に答えることができるO (ログ(J - I ))の手順、1はまだ前処理のみの直線でこれを行うことができますか?si∘si+1∘⋯∘sjO(log⁡(j−i))

(この質問は触発されて、この Mathoverflowでブレンダン・マッケイによる最近の質問です。)


1
MO質問へのリンクを追加できますか?
— Suresh Venkat

1
グループではなくセミグループである理由は何ですか?
— ハックベネット

1
@Huck:グループの場合、上記のリンクのNoamの構築はそのようなアルゴリズムを提供します。
— Gjergji Zaimi

回答:


2

葉にが含まれる順序付けされたバランスの取れた二分木を(順番に)構築します。各内部ノードvには、vをルートとするサブツリーの葉の積が格納されます。この前処理は明らかにO (n )の時間と空間で実行されます。s1,…,snvv(n)

さて、積を計算することが(ここで、 I < jは)からツリーを歩く私の最小共通祖先(LCA)に Iと J。LCAの右の子を除く、パスからぶら下がっている右の子に格納されている製品を収集します。つまり、 uからその親 vに移動するときに、 uが vの左の子である場合、 vの右の子に格納されている製品を取得します。同様に、 jから歩きますsi∘…∘sji<jiijuvuvvjLCAに行き、その道からぶら下がっている左の子供たちに保管されている製品を集めます。およびs jとともにこれらすべての製品を順番に乗算します。sisj

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.