SlideShare a Scribd company logo
1 of 30
ZDDでSATを解く
お姉さんよりも恐ろしい問題
そもそもSATとは?
• SATとは、論理式が与えられたとき、その式をtrue
にすることができるかという問題
• NP完全
• 今回は答えが複数あるときは、それをすべて列挙
することにする
連言標準形
• 今回は入力データは連言標準形という形式で与
えた。
• これは論理変数をいくつか論理和でつないだ節
が論理積でつながった形になっている。
フロンティア法
• 今回はこのSATを解くプログラムをフロンティア法
を用いて作った。
• 今回はフロンティアとして、今までに処理した論理
変数のみを考えたときのそれぞれの節の状態を保
持した。
実装
• 今回は、フロンティアに含まれる節の数が数百から
数千になるので、long longの配列にビットとして情
報を保持した。
• 追加していく論理変数の順序はとりあえず1から順
番に追加していくことにした。
高速化①
• このままでは各状態のデータが多すぎるので、い
らない情報を捨てる
• この場合、すでにすべての論理変数を処理した節
や、まだ1つも論理変数を処理していない節の情
報を捨てる
動かしてみた
• ランダムなケースを作って動かしてみた。
動かしてみた
• ランダムなケースを作って動かしてみた
フロンティアの状態の数
枝刈りされたもの
一致したフロンティアの数
動かしてみた
• 一応動く
• でも遅い
• メモリも食う
高速化②
• このままだとまずいので違うところを工夫してみる。
• フロンティア法ではフロンティア状態の数が増える
と計算が遅くなる。
• まずい
• 減らさなければ・・・
高速化②
• 今まで論理変数の追加順序は適当
• これをちゃんとした順番でやれば状態数が減りそう
• 今回はまだ使っていない論理変数に対してスコア
をつけ、それが最も大きいものを使った。
高速化②
スコアのつけ方
• その論理変数を使うとフロンティアとして持つ節の
数が減る→スコアを増やす
• 逆にフロンティアの節が増える→その節の論理変
数が多いほどスコアを減らす
• すでにフロンティアに含まれている節に存在する
→その節の残っている論理変数が多いほどスコア
を増やす
動かしてみた②
• こうなる
動かしてみた②
• こうなる
フロンティアの状態の数
枝刈りされたもの 一致したフロンティアの数
追加する論理変数の番号
応用してみた
• これをSATソルバーとして使って数独を解いてみ
た
• パズルをSATに落とすのはsnukeさんが作ってくれ
たものを使わせていただきました。
応用してみた
• 動かしてみる
応用してみた
• 動かしてみる
応用してみた
• 動かしてみる
フロンティアの状態の数
枝刈りされたもの 一致したフロンティアの数
応用してみた
• ZDDは、この例のようにフロンティア同士が一致す
るものが少ない場合は単なる枝刈り探索となってし
まう。
• そうなると実行時間がたくさんかかってしまってつ
らい
結論
• このようにフロンティア同士が同じ状態にならないよ
うなものはZDDに向いていない
• ZDDは用法用量を守って正しく使いましょう
おまけ
数え上げお姉さん
• 一応自分もやってみた。
• こっちはSATソルバーと違ってフロンティアの情報
がlong longに収まるので楽
数え上げお姉さん
• この問題で扱うのは平面グラフなので、フロンティ
アに含まれる各頂点は次の4種類のうちどれか1つ
の状態になる。
数え上げお姉さん
• 接続している辺が0本
• 接続している辺が1本で、自分より前の頂点とつな
がっている
• 接続している辺が1本で、自分より後の頂点とつな
がっている
• 接続している辺が2本
数え上げお姉さん
• このようにするとフロンティアに含まれる各頂点に
ついて2ビットの情報を持つだけでよい
• すると1辺の辺の数が31、頂点の数が32のときま
でフロンティアのデータを1つのlong long型の中に
収めることができる
実行すると
• こんな感じ
個数
実行時間
実行すると
• こんな感じ
フロンティアの状態の数
枝刈りされたもの 一致したフロンティアの数
実演
結果
• このようにこの問題ではフロンティアの状態が一致
しているものがとても多いことが分かる
• 自分のパソコンでは14*14まで実行することができ
た。
• お姉さん救出成功!
ご清聴ありがとうございました

More Related Content

More from gotoloop

J - 次の仕事
J - 次の仕事J - 次の仕事
J - 次の仕事gotoloop
 
F - NPCの家
F - NPCの家F - NPCの家
F - NPCの家gotoloop
 
仕事をしよう!
仕事をしよう!仕事をしよう!
仕事をしよう!gotoloop
 
私、木になります
私、木になります私、木になります
私、木になりますgotoloop
 
不可視境界線
不可視境界線不可視境界線
不可視境界線gotoloop
 
b木ノススメ
b木ノススメb木ノススメ
b木ノススメgotoloop
 
平衡二分探索木の並行化
平衡二分探索木の並行化平衡二分探索木の並行化
平衡二分探索木の並行化gotoloop
 

More from gotoloop (8)

反転
反転反転
反転
 
J - 次の仕事
J - 次の仕事J - 次の仕事
J - 次の仕事
 
F - NPCの家
F - NPCの家F - NPCの家
F - NPCの家
 
仕事をしよう!
仕事をしよう!仕事をしよう!
仕事をしよう!
 
私、木になります
私、木になります私、木になります
私、木になります
 
不可視境界線
不可視境界線不可視境界線
不可視境界線
 
b木ノススメ
b木ノススメb木ノススメ
b木ノススメ
 
平衡二分探索木の並行化
平衡二分探索木の並行化平衡二分探索木の並行化
平衡二分探索木の並行化
 

Recently uploaded

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介: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...Toru Tamaki
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
論文紹介: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 UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: 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 Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: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...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: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日本語マニュアル
 
論文紹介: 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
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

ZDDでSATを解く