Model Base

A.1.6 スパニング木

最終更新:

modelbase

- view
管理者のみ編集可

更新日2011-09-03
[ Alloy Analyzer ] / [ 抽象によるソフトウェア設計/付録 A 練習問題 解答例 ]


 open util/graph[V] as gr

 -- 頂点の集合Vと辺の集合Eの定義
 some sig V{
   E: set V
   }
 -- 辺を持たない頂点は除外しておく
 fact{ V in E.univ + univ.E }
  
 pred isTree (r: univ -> univ){
   gr/tree[r]
   }
 
 pred spans (r1, r2: univ -> univ){
   r2 = E
   -- 部分グラフ
   r1 in r2
   -- すべてのノードを通る
   univ.r2 + r2.univ in univ.r1 + r1.univ
   }
 
 pred show (r, t1, t2: univ -> univ){
   spans [t1, r] and isTree [t1]
   spans [t2, r] and isTree [t2]
   t1 not = t2
   }
 
 run show for 4

インスタンスを見やすくするためにThemeを設定する。 ビジュアライザ画面のThemeアイコンを押せばテーマ設定が開くので 以下のように調整した。

  • relations の $show_r の Show as arcs をoffにする
  • relations の E のライン種を Dotted にする Applyアイコンを押して変更を反映させる。

スコープ4


スコー6


スコープ8


記事メニュー
目安箱バナー