Core Concepts
自己区切り数を含むN ビット列Sを効率的に並べ替え、密な順位と競争的順位を計算するアルゴリズムを提案する。これらのアルゴリズムは、アウタープレーナグラフ同型問題への応用も示す。
Abstract
本論文では、N ビット列Sに格納された k 個の自己区切り数を効率的に並べ替え、密な順位と競争的順位を計算するアルゴリズムを提案する。
まず、Sを小さい数と大きい数に分類し、それぞれに対して異なるアプローチを取る。小さい数については、長さ別に領域に分けて安定ソートを行い、その後各領域内でさらに安定ソートを行う。一方、大きい数については、長さ別に領域に分けた後、各領域内で基数ソートを用いて並べ替える。
これらの並べ替えアルゴリズムを用いて、密な順位と競争的順位を効率的に計算する手法も提案する。密な順位の計算では、各領域内の数の出現回数を記録し、prefix sumを用いて順位を求める。競争的順位の計算では、各領域内の数の出現回数を記録し、prefix sumを用いて順位を求める。
最後に、提案手法をアウタープレーナグラフ同型問題に応用し、線形時間かつ線形空間の解法を示す。従来の最良アルゴリズムは線形時間だが、線形空間ではなくΘ(n log n)ビットを必要としていた。
Stats
自己区切り数xの長さは2⌈log x⌉+ 1ビットである。
Sに含まれる数のうち、大きい数(サイズがNより大きい数)は最大O(N/log N)個である。
Quotes
"自己区切り数を含むN ビット列Sを効率的に並べ替え、密な順位と競争的順位を計算するアルゴリズムを提案する。"
"提案手法をアウタープレーナグラフ同型問題に応用し、線形時間かつ線形空間の解法を示す。"