Upgrade to Pro — share decks privately, control downloads, hide ads and more …

On Space Filling Curves: Its Beauty and Applications

cannorin
July 25, 2019

On Space Filling Curves: Its Beauty and Applications

cannorin

July 25, 2019
Tweet

More Decks by cannorin

Other Decks in Science

Transcript

  1. VRCLT #3
    空間充填曲線,その魅力と意義
    cannorin

    View Slide

  2. だれ
    ● Twitter: @cannorin_vrc
    ● Study: 数理論理学
    プログラム言語の理論
    ● Job: F# プログラマ
    ● in VRC: VOLT Enthusiast
    VRCLT Speaker (#2~)

    View Slide

  3. 空間充填曲線とは
    ペアノ曲線 (0) ヒルベルト曲線 (1)

    View Slide

  4. 空間充填曲線とは(再帰的に細かくしていく)
    ペアノ曲線 (1) ヒルベルト曲線 (2)

    View Slide

  5. 空間充填曲線とは(再帰的に細かくしていく)
    ペアノ曲線 (2) ヒルベルト曲線 (3)

    View Slide

  6. 空間充填曲線とは(再帰的に細かくしていく)
    ペアノ曲線 (3) ヒルベルト曲線 (4)

    View Slide

  7. 空間充填曲線とは → 空間を充填する曲線(それはそう)
    ペアノ曲線 (∞) ヒルベルト曲線 (∞)

    View Slide

  8. 空間充填曲線とは / 一般化
    n 次元への一般化もできる(これは 3D ヒルベルト曲線)

    View Slide

  9. 空間充填曲線とは / 定義
    n 次元の単位(超)立方体を “埋め尽くす”(一次元の)曲線
    ↓ 形式的には
    (一次元の)単位区間 [0, 1] から
    n 次元の単位(超)立方体 [0, 1]ⁿ への連続写像

    View Slide

  10. なぜ埋め尽くせるのか?
    ゲオルク・カントール (1845 - 1918)
    実数 ℝ の濃度と
    n- 次元ユークリッド空間 ℝ ⁿ の
    濃度は等しい

    ( non-degenerate な)区間
    (単位区間 [0, 1] など)も等しい

    View Slide

  11. なぜ埋め尽くせるのか? / 濃度とは?
    全単射が存在(=1対1対応を作れる)⇔ 濃度が等しい
    「濃度」=「要素の個数」概念の一般化(無限もOK)
    |X| = |Y|
    ( ちなみに |ℝ| > |ℕ| )

    View Slide

  12. なぜ埋め尽くせるのか?
    ゲオルク・カントール (1845 - 1918)
    | [0, 1] | = |ℝ| = |ℝⁿ|
    [0, 1] ℝ
    と と ℝ ⁿ の間の全単射の存在を証明

    View Slide

  13. なぜ埋め尽くせるのか?
    ジュゼッペ・ペアノ (1858 - 1932)
    全単射が存在するなら,
    連続にできるのだろうか?
    ||
    空間を一本の曲線で
    埋め尽くせるのだろうか?

    View Slide

  14. なぜ埋め尽くせるのか?
    ジュゼッペ・ペアノ (1858 - 1932)
    → 全単射にはならなかったが,埋め尽くせた!
    (ペアノ曲線)

    View Slide

  15. なぜ全単射にならない?
    ℝ と ℝ ² は同相ではない
    ↓ 一点を取り除く
    分離する→ ← 分離しない

    View Slide

  16. なぜ全単射にならない?
    一点を取り除いても分離しない ⇔ 自己交叉がある
    ⇔ 同じ点を何度も通る場所がある ⇔ 単射ではない!
    ※ 詳しくは解析学や位相空間論の知識が必要. A.P.M Kupers,
    On Space-Filling Curves and the Hahn-Mazurkiewicz Theorem とか参照

    実は自己交叉してる

    View Slide

  17. おもしろい応用例が色々ある
    ● Google Maps のキャッシュの最適化
    ● 巡回セールスマン問題の高速なヒューリスティック手法
    ● 小型で高性能なアンテナの設計
    ● 大規模並列計算のロードバランシング
    ● 衝突判定やレイトレーシングの高速化
    ● etc...

    View Slide

  18. 応用 / Bounding Volume Hierarchy
    物体同士の衝突判定や,物体とレイの交差判定を効率化する
    ために,近くにある物体同士をグループ化して扱いたい
    二分木にする → 判定回数を減らせる: O(n) → O(log n)

    View Slide

  19. 応用 / Bounding Volume Hierarchy / 二分木構築の高速化
    近くにある物体同士を検出して二分木を作るのが大変
    → 空間充填曲線を使って走査する
    空間充填曲線は右から左へと
    走査するのに比べて,
    平面上で近くにあるものが
    直線上でも近くになりやすい
    → 順番に辿ればOK!

    View Slide

  20. 応用 / 空間充填曲線の locality
    「平面上で近くにあるものが直線上でも近くになりやすい」
    性質 (locality) が様々な分野に応用しやすい
    実装が楽なのでヒルベルト曲線がよく使われるが,
    使う曲線によって効率化の度合いが変わることもある

    View Slide

  21. ところで・・・
    今回のスライドで使われている空間充填曲線の画像は,
    私が所属している「株式会社ぺあのしすてむ」で
    業務の一環として開発しているスマホアプリ
    「 Peano Curves 」で作成されています
    ・現在オープンベータテスト中
    ・アプリ名 : Peano Curves
    ・対応 OS: iOS/Android
    ・公式 Twitter: @PeanoCurves

    View Slide

  22. Thank you for listening!

    View Slide