SlideShare a Scribd company logo
1 of 38
Alloy
~川渡り問題~




          @ichigo_o_re
川渡り問題
• 川岸にいる一団を対岸に渡す。

• 川を渡る手段は小船だけであり、小さいので数人しか乗
  れない。

• 特定の組み合わせがどちらかの岸にできてはいけない。

• とかいうものっ

• 今回は3つを解いてみました。
川渡り問題①
大人と子供
• 1人の大人と2人の子供が岸にいる。ボートが1台あるが
  大人1人か子供2人までしか乗れない。全員が川を渡るに
  はどうすればよいか?




                            船
 大人           子供       (※画像はイメージです。)
制約としてまとめる
大人と子供
• 1人の大人と2人の子供が岸にいる。ボートが1台あるが
  大人1人か子供2人までしか乗れない。全員が川を渡るに
  はどうすればよいか?
制約としてまとめる
• 大人1人
大人と子供
• 1人の大人と2人の子供が岸にいる。ボートが1台あるが
  大人1人か子供2人までしか乗れない。全員が川を渡るに
  はどうすればよいか?
制約としてまとめる
• 大人1人
• 子供2人
大人と子供
• 1人の大人と2人の子供が岸にいる。ボートが1台あるが
  大人1人か子供2人までしか乗れない。全員が川を渡るに
  はどうすればよいか?
制約としてまとめる
• 大人1人
• 子供2人
• すべての人間が最初は左側の岸にいる
大人と子供
• 1人の大人と2人の子供が岸にいる。ボートが1台あるが
  大人1人か子供2人までしか乗れない。全員が川を渡るに
  はどうすればよいか?
制約としてまとめる
•   大人1人
•   子供2人
•   すべての人間が最初は左側の岸にいる
•   ボートは1台
大人と子供
• 1人の大人と2人の子供が岸にいる。ボートが1台あるが
  大人1人か子供2人までしか乗れない。全員が川を渡るに
  はどうすればよいか?
制約としてまとめる
•   大人1人
•   子供2人
•   すべての人間が最初は左側の岸にいる
•   ボートは1台
•   ボートに乗れるのは
    o 子供2人
    o 子供1人
    o 大人1人
大人と子供
• 1人の大人と2人の子供が岸にいる。ボートが1台あるが
  大人1人か子供2人までしか乗れない。全員が川を渡るに
  はどうすればよいか?
制約としてまとめる
•   大人1人
•   子供2人
•   すべての人間が最初は左側の岸にいる
•   ボートは1台
•   ボートに乗れるのは
    o 子供2人
    o 子供1人
    o 大人1人

• 全員が右側の岸につくと完成
Alloy
• ①それぞれの人間、島、船を宣言する

enum 岸{左,右}                        //岸を継承した左、右
abstract sig 物体{}                  //抽象的な物体
one sig 船 extends 物体{}             //物体を継承した船
abstract sig 人 extends 物体{}        //物体を継承した人
one sig 大人 extends 人{}             //人を継承した大人
sig 子供 extends 人{}            //人を継承した子供
fact { #子供 = 2 }                   //子供は2人である
sig State {l: 物体 -> one 岸}    //物体がどの岸にいるか
Alloy
• 一番最初には全ての物体は左にある

pred init(s: State){s.l = 物体 -> 左}

//sという状態において、物体は左側にある
Alloy
• 動き方を指定する

pred move(s, s': State, b: 船){
          (one p: 人 |
          (p.(s.l) = b.(s.l)) and
          s‘.l = s.l - b -> b.(s.l) - p -> p.(s.l)
                         + b -> (岸 - b.(s.l)) + p -> (岸 - p.(s.l)))
          or
          (some p, p': 人 |
          (p.(s.l) + p'.(s.l)) = b.(s.l) and
          (p + p') in 子供 and
          s'.l = s.l - b -> b.(s.l) - p -> p.(s.l) - p' -> p'.(s.l)
                         + b -> (岸 - b.(s.l)) + p -> (岸 - p.(s.l)) + p' -> (岸 - p'.(s.l)))
}
Alloy
• 動き方を指定する

pred move(s, s': State, b: 船){
          (one p: 人 |
          (p.(s.l) = b.(s.l)) and
          s‘.l = s.l - b -> b.(s.l) - p -> p.(s.l)
                         + b -> (岸 - b.(s.l)) + p -> (岸 - p.(s.l)))
          or
          (some p, p': 人 |
          (p.(s.l) + p'.(s.l)) = b.(s.l) and
          (p + p') in 子供 and
          s'.l = s.l - b -> b.(s.l) - p -> p.(s.l) - p' -> p'.(s.l)
                         + b -> (岸 - b.(s.l)) + p -> (岸 - p.(s.l)) + p' -> (岸 - p'.(s.l)))
}
ある一人の人(大人or子供)に対して
その人のいる岸と船のある岸が同じだったら
新しい関係(s’.l)は今までの関係(s.l)から動かす人と岸、船と岸をなくして、新しい岸との関係を足したもの
としています
• 新しい関係は今までの関係から動かす人と岸、船と岸を
  なくして、新しい岸との関係を足したものとしています



• (大人と船を動かす場合)
Alloy
• 動き方を指定する

pred move(s, s': State, b: 船){
          (one p: 人 |
          (p.(s.l) = b.(s.l)) and
          s‘.l = s.l - b -> b.(s.l) - p -> p.(s.l)
                         + b -> (岸 - b.(s.l)) + p -> (岸 - p.(s.l)))
          or
          (some p, p': 人 |
          (p.(s.l) + p'.(s.l)) = b.(s.l) and
          (p + p') in 子供 and
          s'.l = s.l - b -> b.(s.l) - p -> p.(s.l) - p' -> p'.(s.l)
                         + b -> (岸 - b.(s.l)) + p -> (岸 - p.(s.l)) + p' -> (岸 - p'.(s.l)))
}
ある二人の人(大人or子供)に対して
その人たちのいる岸と船のある岸が同じで、
二人とも子供だったら
s’.lは今までの関係から動かす人と岸、船と岸をなくして、新しい岸との関係を足したものとしています
ぐるぐるぽ~ん!
 (実際にやる)
川渡り問題②
宣教師と先住民
川のこちら側に3人の宣教師と3人の先住民がいます。こ
ちらの川岸に2人乗りのボートが1台あり、これを使って
6人全員を対岸に移したいのですが、一時的に も宣教師の
数が先住民の数より少なくなると先住民は宣教師を食べて
しまいます。無事に全員を対岸まで渡らせる手順を考えて
下さい。




  宣教師         先住民         船
                      (※画像はイメージです。)
制約としてまとめる
•   宣教師が3人
•   先住民が3人
•   2人乗りのボートが1台
•   先住民の数が宣教師の数を上回ってはいけない。
•   無事に全員を対岸まで渡らせる
制約としてまとめる
•   宣教師が3人
•   先住民が3人
•   2人乗りのボートが1台
•   先住民の数が宣教師の数を上回ってはいけない。
•   無事に全員を対岸まで渡らせる




ここが変わっただけ!
Alloyでぐるぐるぽ~ん
川渡り問題③
危険な家族                   船
                                 (※画像はイメージです。)
•   ある家族がいます。
    この家族は舟を使って川の向こう岸へわたろうとしています。
    舟は1台しかなく、1度に2人まで乗ることができます。
    家族は父、母、息子2人、娘2人、犬、メイドの8人(犬も1人と数えます)
    でありまたこの舟をこげるのは父か母かメイドの3人だけです。
•   さぁ、そしてこの家族、ぢつは!とっても危険な家族なんです。    メイド
    まず父は、母がいないと娘を殺してしまいます。
    また母は、父がいないと息子を殺してしまいます。
    そしてきわめつけ。
    犬は、メイドがいないと家族をみんな殺してしまいます。
•   誰も死ぬことなく川をわたりきるにはどうすればよいでしょうか?
父母             娘2人,息子2人         犬
制約としてまとめる
•   母1人
•   父1人
•   息子2人
•   娘2人
•   メイド1人
•   ボート1台
•   犬1人
•   犬はメイドがいないと、同じ岸の人間を食べる
•   父は母がいないと同じ岸の娘を殺す
•   母は父がいないと同じ岸の息子を殺す
•   ボートをこげるのは、メイドと父と母だけ!
制約としてまとめる
•   母1人
•   父1人
•   息子2人
•   娘2人
•   メイド1人
•   ボート1台
•   犬1人
•   犬はメイドがいないと、同じ岸の人間を食べる
•   父は母がいないと同じ岸の娘を殺す
•   母は父がいないと同じ岸の息子を殺す
•   ボートをこげるのは、メイドと父と母だけ!
Alloyでぐるぐるぽ~ん
Alloyを高速化!

• 検索のスコープをしぼる
  (run xx for xx but xx, xx)
  run show for 6 → run show for 6 but 4 Object

• 一つだけの要素はone sigで宣言する
  (one sig 大人)

• これらを行えばより速く探し出せます。
• そのまま
 o Executing "Run show for 18"
 o   Solver=sat4j Bitwidth=0 MaxSeq=0 SkolemDepth=1 Symmetry=20
 o   569162 vars. 774 primary vars. 2891145 clauses. 29311ms.
 o   . found. Predicate is consistent. 84805ms.
• スコープを絞る
 o Executing "Run show for 12 but 18 State"
 o   Solver=sat4j Bitwidth=0 MaxSeq=0 SkolemDepth=1 Symmetry=20
 o   176946 vars. 516 primary vars. 761597 clauses. 6240ms.
 o   . found. Predicate is consistent. 22715ms.
• 個数が1のものはonesigで宣言する
 o Executing "Run show for 12 but 18 State"
 o   Solver=sat4j Bitwidth=0 MaxSeq=0 SkolemDepth=1 Symmetry=20
 o   21371 vars. 446 primary vars. 49658 clauses. 524ms.
 o   . found. Predicate is consistent. 1415ms.
まとめ

• 川渡り問題を解くことでAlloyが実際に”制約”を書くだけで
  それを満たす解を探しだしてくれることがわかりました。

• “制約”は他の論理パズルやソフトウェア等にも出てくるの
  でAlloyを使えば自分の設計したものの制約が正しいかを
  チェックすることができます!!

More Related Content

Recently uploaded

Recently uploaded (11)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

Alloyで川渡問題を解く