SlideShare a Scribd company logo
1 of 18
Download to read offline
Alloyによるハミルトン閉路
Twitter @everysick
-1- ハミルトン閉路の定義


1. 無向グラフ内にあるすべての頂点を経由する。


2. 頂点を結ぶ辺は高々一回しか通れない。


3. どの頂点から開始しても必ず開始した頂点に戻る。


4. NP完全問題である。
-2- 具体例

たとえば、以下のような三角形・四角形もハミルトン閉路の条
件に満たされているのでハミルトン閉路であるといえる。
-3- 今回

                       n1
             n2
今回は右図のグラフを
検証します!                 n3
                  n4


                       n5


             n6
                       n7
-3- Alloyで実証する方針

 Alloyはc言語のように”求める”のではなく条件に合うよう”
  探してもらう”ような言語である
  ハミルトン閉路の条件を投げて探させる


 頂点などの入力はどうするか
  初期状態に頂点,辺を与え、その中から必要な辺をピックアップさせる


と大まかな方針を立てて実装開始。
-4.1- ソースの説明 頂点



enum Node{n1,n2,n3,n4,n5,n6,n7}

 n1~n7が今回の頂点として扱う


例図を次に示します
Node
• n1
• n2   4.1での Node の中身
• n3   Nodeの大きなくくりの中に
• n4
       n1~n7が存在している。
• n5
• n6
• n7
-4.2- ソースの説明 辺
                                        Node n1

one sig Links{
     link:Node-> set Node,
                             ans{(n1,n2)}         link{(n1,n2)}
     ans:Node-> set Node
}
 Link が初期状態に与えられる辺
                                            Node n2
 ans が答えを示す辺


 それぞれNode1とNode2を繋ぐ
-4.3- ソースの説明 初期辺
      Links.link=Reverse[
      (n1->n2)+(n2->n3)+(n1->n3)+
      (n2->n4)+(n2->n6)+(n4->n6)+   Reverse?
      (n4->n3)+(n4->n5)+(n6->n5)+
      (n5->n7)+(n6->n7)+(n3->n5)]


             “n1->n2”
                で
       “n1からn2に辺を持たせる”
    ということを現しているので上のソース
     では初期の辺をlinkに入れてます。
-4.3- ソースの説明 初期辺

                                            受け取る
fun Reverse(n:Node->Node):set Node->Node{
     n+~n
}

                                            返す
    funは関数の宣言なのでReverseは関数です。

    そして無向グラフなので
    “Node->Node”
    を受け取って
    “n+~n”
    で現在の方向の辺と方向を逆にした辺と一緒にを返す。
-4.4- ソースの説明 初期グラフ

                  n1
        n2

                  n3
             n4


                  n5


        n6
                  n7
-5.1- 制約を与える

 今回与える制約
  1. 答えの辺がついている頂点は2つの辺を持つ
  2. 辺ansは辺linkに含まれている辺でなければならない
  3. 自分から自分への辺は存在しない


 よく考えるとこれだけでは閉路が複数できてしまう
   閉路をひとつだけにするための制約も追加する
-5.2- 制約を与える

 one n.(ans) and one n[ans]   頂点からは2つしか辺が出ない制約


 ans in link    ansの辺はlinkの辺の中に含まれているという制約


 not n.(ans)=n[ans]     自分から自分への辺は存在しない制約


 *link=*ans     閉路に存在する頂点が初期状態に存在する頂点数内に存在する制約
-6- ソースの全貌



・初期グラフの作成
・制約の追加
    総計して30行程度
-7- 実行結果


Alloyによって経路の探索ができました

これを実際にグラフで検証してみます!
-8- 検証

Node番号で
                        n1
1→2→4→6→7→5→3→1…
            n2

                        n3
                   n4


                        n5


            n6
                        n7
-9- まとめ


Alloyをつかうことにより実際にやるのが面倒なハミルトン閉路
の問題に対して簡単に解を求めることができました。


ただAlloyはこのような問題を解くのではなく検証に向いている
と思いました。
おわり~~~~~~

More Related Content

What's hot

Replace
ReplaceReplace
Replaceoupc
 
情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5Tatsuki SHIMIZU
 
Rsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしいRsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしいYosuke Onoue
 
公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号Joe Suzuki
 
音響、騒音の評価
音響、騒音の評価音響、騒音の評価
音響、騒音の評価Motoi Yamaha
 
[ Grasshopper ] interpolate curve basic #02 j
[ Grasshopper ] interpolate curve basic #02 j[ Grasshopper ] interpolate curve basic #02 j
[ Grasshopper ] interpolate curve basic #02 jonioncraft
 
090518computing Huffman Code Length
090518computing Huffman Code Length090518computing Huffman Code Length
090518computing Huffman Code LengthNaoya Ito
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisTatsuki SHIMIZU
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法nitoyon
 
有限個の点を取り付けた集合の位相
有限個の点を取り付けた集合の位相有限個の点を取り付けた集合の位相
有限個の点を取り付けた集合の位相政孝 鍋島
 
Nonlinear programming輪講スライド with 最適化法
Nonlinear programming輪講スライド with 最適化法Nonlinear programming輪講スライド with 最適化法
Nonlinear programming輪講スライド with 最適化法Yo Ehara
 
【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理 (II-07 2018)
【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理  (II-07 2018)【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理  (II-07 2018)
【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理 (II-07 2018)Kazuhiro Suga
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - Komeometo
 
日曜数学会Vol5 up用 bessel関数
日曜数学会Vol5 up用 bessel関数日曜数学会Vol5 up用 bessel関数
日曜数学会Vol5 up用 bessel関数和人 桐ケ谷
 
3次元の凸包を求める
3次元の凸包を求める3次元の凸包を求める
3次元の凸包を求めるabc3141
 
Shader読んで理解する会-4次元結び目SDF編
Shader読んで理解する会-4次元結び目SDF編Shader読んで理解する会-4次元結び目SDF編
Shader読んで理解する会-4次元結び目SDF編GearsRenard
 

What's hot (20)

Replace
ReplaceReplace
Replace
 
情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5情報幾何学の基礎 第2章 4.5
情報幾何学の基礎 第2章 4.5
 
Rsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしいRsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしい
 
公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号公開鍵暗号1: RSA暗号
公開鍵暗号1: RSA暗号
 
音響、騒音の評価
音響、騒音の評価音響、騒音の評価
音響、騒音の評価
 
[ Grasshopper ] interpolate curve basic #02 j
[ Grasshopper ] interpolate curve basic #02 j[ Grasshopper ] interpolate curve basic #02 j
[ Grasshopper ] interpolate curve basic #02 j
 
20131023 intersection
20131023 intersection20131023 intersection
20131023 intersection
 
090518computing Huffman Code Length
090518computing Huffman Code Length090518computing Huffman Code Length
090518computing Huffman Code Length
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
 
アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法アルゴリズムイントロダクション15章 動的計画法
アルゴリズムイントロダクション15章 動的計画法
 
有限個の点を取り付けた集合の位相
有限個の点を取り付けた集合の位相有限個の点を取り付けた集合の位相
有限個の点を取り付けた集合の位相
 
Nonlinear programming輪講スライド with 最適化法
Nonlinear programming輪講スライド with 最適化法Nonlinear programming輪講スライド with 最適化法
Nonlinear programming輪講スライド with 最適化法
 
120919 kyushu
120919 kyushu120919 kyushu
120919 kyushu
 
【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理 (II-07 2018)
【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理  (II-07 2018)【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理  (II-07 2018)
【材料力学】仮想仕事の原理 最小ポテンシャルエネルギーの原理 (II-07 2018)
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
 
表現行列問題
表現行列問題表現行列問題
表現行列問題
 
表現行列の問題
表現行列の問題表現行列の問題
表現行列の問題
 
日曜数学会Vol5 up用 bessel関数
日曜数学会Vol5 up用 bessel関数日曜数学会Vol5 up用 bessel関数
日曜数学会Vol5 up用 bessel関数
 
3次元の凸包を求める
3次元の凸包を求める3次元の凸包を求める
3次元の凸包を求める
 
Shader読んで理解する会-4次元結び目SDF編
Shader読んで理解する会-4次元結び目SDF編Shader読んで理解する会-4次元結び目SDF編
Shader読んで理解する会-4次元結び目SDF編
 

Viewers also liked

状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)啓 小笠原
 
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfestay_taka_23
 
Alloy Analyzer のこと
Alloy Analyzer のことAlloy Analyzer のこと
Alloy Analyzer のことHiromi Ishii
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介Daisuke Tanaka
 
AAをつくろう!
AAをつくろう!AAをつくろう!
AAをつくろう!Takami Sato
 
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストAngular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストMasahiko Asai
 

Viewers also liked (7)

状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
 
Alloyへの挑戦
Alloyへの挑戦Alloyへの挑戦
Alloyへの挑戦
 
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
 
Alloy Analyzer のこと
Alloy Analyzer のことAlloy Analyzer のこと
Alloy Analyzer のこと
 
形式手法とalloyの紹介
形式手法とalloyの紹介形式手法とalloyの紹介
形式手法とalloyの紹介
 
AAをつくろう!
AAをつくろう!AAをつくろう!
AAをつくろう!
 
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストAngular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Alloyによるハミルトン閉路