500 likes | 553 Views
地図への高速ラベル貼りアルゴリズムの実装と評価. 東北大学大学院 情報科学研究科 ◎小池 敦 徳山 豪. 地図へのラベル配置問題とは ?. 地図上の点 , 辺 , 領域に対し ラベル ( 文字情報 ) を付加する. 地理情報処理の 重要問題. 広瀬川. 仙台駅. ⇒ ユーザの要求毎に 迅速にラベリングする必要性. 東北大学. 青葉城址. 今回は点へのラベリングを扱う. ラベリングに対する要求. ラベルは標的点の近くに貼りたい ⇒予め各標的点に対しラベル候補集合を定める ラベル同士が重なって欲しくない 障害物と重なって欲しくない.
E N D
地図への高速ラベル貼りアルゴリズムの実装と評価地図への高速ラベル貼りアルゴリズムの実装と評価 東北大学大学院 情報科学研究科 ◎小池 敦 徳山 豪
地図へのラベル配置問題とは? • 地図上の点,辺,領域に対しラベル(文字情報)を付加する 地理情報処理の重要問題 広瀬川 仙台駅 ⇒ユーザの要求毎に迅速にラベリングする必要性 東北大学 青葉城址 今回は点へのラベリングを扱う
ラベリングに対する要求 • ラベルは標的点の近くに貼りたい⇒予め各標的点に対しラベル候補集合を定める • ラベル同士が重なって欲しくない • 障害物と重なって欲しくない ラベル配置問題 = 2,3 を満たすようにラベル候補集合からラベルを選ぶ バス停 文字が重なると読めない ここにはラベルを貼って欲しくない(道が判らない) 東北大学 青葉城址
ラベル候補集合 とうほく とうほく どちらかのラベルを配置 各標的点に とうほく とうほく とうほく とうほく とうほく
背景 • ラベル配置問題は多くの場合 NP-hard である [Formann et al. ’91] ⇒ラベル候補集合に強い制限が必要 • 本論文ではラベルの形状に自由度を持たせたモデル(LOFL;Left-part Ordered Flexible Labeling)を扱う[Koike, Nakano, Nishizeki, Tokuyama and Watanabe ’01] 東北大学 東北大学 東北大学
本論文の成果 • 1. LOFL のアルゴリズムに対するRed-black tree を用いた高速実装 • 2. LOFL のバリエーションを考え,評価
発表の流れ • LOFLについて ⇒ラベル候補集合が left-part ordered setである時のラベル配置問題 • 定式化 • アルゴリズムと計算時間の解析 • LOFL になるラベル候補集合の紹介 • two-position LOFL モデルに対するヒューリスティクス • 実験
のとき ≤ と定義する ラベル間の半順序(LOFL の定式化) • ラベル の left-part • の標的点の左側の部分 • ラベル間の半順序 順序付け不可
left-part ordered set (LOFL の定式化) • ラベル候補集合Lが left-part ordered set or つまりどの2つのラベルのleft-partも包含関係にある left-part ordered set left-part ordered set ではない すべての標的点のラベル候補集合が left-part ordered set ⇒LOFL
とうほく とうほく とうほく とうほく とうほく とうほく とうほく Yes LOFL(Left-part Ordered Flexible Labeling)の定式化(判定問題) left-part ordered set • 入力 • n個の標的点集合 • 各標的点に対するラベル候補集合 • スケール係数(フォントサイズ) σ • 合計m辺からなる多角形障害物集合 とうほく とう ほく 障害物 • 出力 • ラベル配置可能ならYes • 不可能ならNo
とうほく とう ほく とうほく とう ほく とう ほく とう ほく とう ほく LOFL(Left-part Ordered Flexible Labeling)の定式化(判定問題) left-part ordered set • 入力 • n個の標的点集合 • 各標的点に対するラベル候補集合 • スケール係数(フォントサイズ) σ • 合計m辺からなる多角形障害物集合 とうほく とう ほく 障害物 • 出力 • ラベル配置可能ならYes • 不可能ならNo No
とうほく とう ほく とうほく とう ほく とう ほく とうほく とうほく LOFL(Left-part Ordered Flexible Labeling)の定式化(最適化問題) left-part ordered set • 入力 • n個の標的点集合 • 各標的点に対するラベル候補集合 • 合計m辺からなる多角形障害物集合 とうほく とう ほく • 出力 • ラベル配置可能なスケール係数の最大値
判定問題に対するアルゴリズム larger smaller • 平面走査法を用いる 例2種類のラベル候補で考える できるだけleft small なラベルを配置する left small = 左の標的点に与える影響が少ない ⇒これによりアルゴリズムの正当性を証明できる
実装 • 各標的点での交差判定 (障害物無しの時) ⇒frontier を定義する frontier: 左端から見ることのできる領域の集合
frontier のデータ構造 • y座標を key として各線分を red-black tree に格納 • 交差判定 O(log n) • 更新 O(log n) 更新回数 O(n) 回 ⇒全体で O(n log n)時間 同様に 障害物があるときは O((n+m)log(n+m))
最適化問題に対するアルゴリズム • 判定問題を用いてσ に対する二分探索を行う ⇒標的点の座標が log Γ bit で表されている時 計算時間 O((n+m)log(n+m)log Γ) ⇒必ず最適なスケール係数が求まる
90度回転 いろいろな LOFL • どのようなラベル候補集合がleft-part ordered set になるのか 1.90度回転によるleft-part ordered set
90度回転 いろいろな LOFL 2.two-position set two-position model [Formann et al. ’91] でのラベル候補集合 →90度回転によるleft-part ordered set になっている
いろいろな LOFL 3.slider set slider model [M. van Kreveld et al. ‘99] でのラベル候補集合 →90度回転によるleft-part ordered setになっている 自由に動ける
いろいろな LOFL 4.degenerate set ⇒属するラベルのleft-part がすべて線分 5.revival set ⇒degenerate set に reliever を追加 reliever
これらはleft-part ordered set two-position LOFL モデル left-part ordered set ではない two-position set ⇒これを用いてヒューリスティクスを設計する
LOFL を用いたヒューリスティクス[Koike et al. ’01] 1.各標的点のラベル候補を6枚に限定しLOFL を解き,σの最大値を求める 2.各標的点で得られたラベルに対しtwo-position set を作る 3.LOFLを解き, σの最大値を求める 4.3.で得られたラベルに対し新たにラベル候補集合を作る 5.1.から4.を繰り返す
実験(いろいろなラベル候補集合でスケール係数を比べる)実験(いろいろなラベル候補集合でスケール係数を比べる) • 50000×50000の領域上のランダムなn個の標的点のすべてに同じラベル候補集合を与え最適化問題を解き,スケール係数を比べる.(障害物は無し) • スケール係数は1000回の平均値
実験(いろいろなラベル候補集合でスケール係数を比べる)実験(いろいろなラベル候補集合でスケール係数を比べる) • ラベル候補集合 1.fixed : 3 σ ×4 σ 2.two-position set (2-POS) 3.slider set LOFL 4.degenerate set: 1×12, 2×6, 3×4, 4×3, 6×2, 12×1 5.revival set 6.two-position LOFL (2-LOFL)
実験(いろいろなラベル候補集合でスケール係数を比べる)実験(いろいろなラベル候補集合でスケール係数を比べる) • スケール係数の大小をtwo-position set を基準として比較する • 計算機環境 • CPU : Intel Pentium4 1.6GHz • Memory : 256MB • プログラミングには C++ のライブラリである LEDA を使用
実験結果(Fixed) • スケール係数の理論値は 9000n-1[Koike et al. ’01](正確には から 9000n-1の間) 実験値/理論値(9000n-1) n≥200では |実験値-理論値|<1 となっている 標的点数
Fixed と 2-POS の比較 fixed/2-position 2-position の方が 20倍以上(n=12800) 大きいラベルが貼れる 標的点数
2-POS と slider の比較 slider/2-position nに関わらず slider の方が17%くらい大きい 標的点数
2-POS と degenerate の比較 degenerate/2-position • n≥60 では2-position の方が大きい • n=12800 では2-position の方が3倍大きい なぜ degenerate は小さいのか? 標的点数
σ σ degenerate の上限の理論値 σ σ 少なくともこのラベル1枚が ラベル候補の時よりは小さい ⇒期待値は 31333n-1 これがdegenerateの上限になる
σ σ degenerate の上限値との比較 vs. degenerate/上限値 と同じスケール係数の ラベルが貼れている. 標的点数
degenerate と revival の比較 2-positionで規格化されたスケール係数 revival は degenerateより6倍以上大きくなった →reliever が効果的である 標的点数
revival と 2-LOFL の比較 2-positionで規格化されたスケール係数 • n=20 では同じ • n=12800 ではrevival の方が95% 大きい • ⇒2-LOFLは 最適なスケール係数を • 求めていないため →LOFLは最適解が求まるので強力 標的点数
実験結果(計算時間) 1000回の平均値 理論値O(n log n log Γ)の 曲線になっている [ミリ秒] データ構造に red-black tree を用いず 単純な list を用いた場合との比較 n=1600 の時 (ミリ秒) ⇒大幅に計算時間が短縮された [標的点の数]
結論 • LOFL のアルゴリズムをred-black tree を用いて高速実装することにより計算時間の大幅な改善を行った • LOFL の様々なバリエーションについて実験を行うことにより解の品質(スケール係数)を比較した.⇒バリエーションにより品質は大きく異なる n≤40 : fixed < 2-POS < degenerate < slider < (2-LOFL) < revival 40<n≤6400 : fixed < degenerate < 2-POS < slider < (2-LOFL) < revival 6400<n : fixed < degenerate < 2-POS < (2-LOFL) < slider < revival
今後の課題 • LOFLのバリエーションをさらに増やす • スケール係数についての理論的解析 • 別の方法でLOFLの品質を評価する • あるスケール係数で何枚貼れるか?
交差判定詳細 • 標的点からラベルの右辺までの距離が w 以下であるleft smallest なラベルをO(log n)time で見つけることができるとする w • 総ラベル候補数がO(n)の時 • slider set • の時などに成立
交差判定詳細 1.標的点の右にある線分を見つける ⇒O(log n) time 2.その線分と交差しないラベルを 見つける ⇒O(log n) time 3.その線分の上下の線分を見つける ⇒O(log n) time 4.上の線分と交差判定→OK ⇒O(1) time 5.下の線分と交差判定→交差 →下の線分と交差しないラベルを 見つける ⇒O(log n) time
交差判定詳細 6.さらに上下の線分を見つける ⇒O(log n) time 7.上下の線分と交差判定→OK ⇒O(1) time 挿入される線分 消去される線分 長さを更新する線分
交差判定詳細 まとめると 各標的点について 計算時間 = (消去or更新される線分数)×O(log n) • 線分を見つける O(log n) • ラベルと交差判定 O(1) • 線分と交わらないラベルを 見つける O(log n) • 線分の消去 or 更新O(log n)
交差判定詳細 総計算時間 = (消去or更新される総線分数)×O(log n) 各標的点で多くても2つ →全部で多くても 2n 挿入される線分よりは少ない 多くても 2n 総計算時間 = O(n log n) よって
≤ LOFLのアルゴリズムの正当性 ラベル が自分の標的点より左の標的点のラベルと交差しないならば, を満たすラベル も自分より左の標的点のラベルと交差しない 性質 ≤
LOFLのアルゴリズムの正当性 示すべきこと 条件を満たすラベル配置が存在するならば このアルゴリズムで必ず見つけることができる ラベル配置に辞書式順序を定義 より右側の標的点にleft-smallなラベルを割り当てている配置 ⇒小さい配置とする 配置赤と配置緑では 配置緑が小さい
< < LOFLのアルゴリズムの正当性 アルゴリズムにより辞書式順序が最も小さい配置 L (left-minimum solution)が求まることを示す • アルゴリズムで求めた配置が L と異なると仮定する. • アルゴリズムが初めて L と異なるラベルを選んだ • (Lでは を選択したのにアルゴリズムでは を選択した) • とき • アルゴリズムはleft smallest なラベルを選択する • ので • よってLにおいて を に入れ替えた配置L´は • Lよりも辞書式順序が小さくなってしまい矛盾 • ⇒アルゴリズムはいつでもLと同じラベルを選択する ∊ L
Fixed のスケール係数の期待値について [Koike et al. ’01] • まずスケール係数がσ以上になる確率を計算 • これよりスケール係数がσである確率密度が求まる • 最後にσの期待値を求める 期待値 =
Fixedのスケール係数の期待値計算 標的点集合をP={p1,p2,…,pn}とし p1から順に3 σ ×4 σのラベルを付けていくとする. スケール係数が σ 以上になる確率 = p1へのラベルが他のラベルと重ならない確率×p2へのラベルが他のラベルと重ならない確率 ×p3へのラベルが他のラベルと重ならない確率 : ×pnへのラベルが他のラベルと重ならない確率 Pr1 Pr2 Pr3 Prn
Fixedのスケール係数の期待値計算 Pr1=1 • p1へのラベルが他のラベルと重ならない確率 • Pr2=50000×50000 – 4×12σ2 50000 p2がこの領域にいなければ良い p1 50000
Fixedのスケール係数の期待値計算 • Pr3=50000×50000 – 2×4×12σ2 50000 p3が点線の領域にいなければ良い p1 p2 50000 p1とp2の点線の重なった部分≒0とみなせる
Fixedのスケール係数の期待値計算 スケール係数が σ 以上になる確率 = Pr1× Pr2× Pr3×…× Prn = 1 ×(50000×50000 – 4×12σ2) ×(50000×50000 – 2×4×12σ2) : ×(50000×50000 – (n-1)×4×12σ2) Pr1 Pr2 Pr3 Prn
実験結果(Fixed) • スケール係数の理論値は 9000n-1[Koike et al. ’01](正確には から 9000n-1の間) 実験値/理論値(9000n-1) n≥200では |実験値-理論値|<1 となっている 標的点数