LoginSignup
0
2

SMTソルバー Z3Py

Last updated at Posted at 2021-07-24

ちょっと前に「Answer Set Programming」というのが使えそうだと思ったのだが、記述表現がよくわからなく停滞していたが、同じようなことをが「Z3Py」を使うとPythonで書けるということで、例題を通じて理解を深めた。

SMTソルバー Z3Pyとは

Z3は、Microsoft Researchで開発された高性能の定理証明器(theorem prover)です。
https://ericpony.github.io/z3py-tutorial/guide-examples.htm
SMT は背景理論付き充足可能性問題(Satisfiability Modulo Theories)の略語です。命題論理よりも表現能の高い論理体系で記述さた背景理論を、SAT技法で効果的に取り扱うことを目的とした技術だそうです。(条件を書くと、それが解けるか解けないかを判定してくれるもの、と理解していますorz)

インストール

pip install z3-solver

例題

コイン問題(制約充足問題)
コイン問題2
部分和問題
魔法陣
グラフ彩色問題
数独
ビンパッキング問題
ナップサック問題
制約最適化問題
エイト・クイーン問題
ハノイの塔
巡回セールスマン問題

まとめ

例題を通して、使い方は理解できたと思う。
当然、「論理学」にも使えると思うので、そちら側でどのように使えるか見てみようと思う。
しかし、これを何に使うかがピンと来ていないのが、自分の駄目さ加減に嫌気がさす。

参考

[Z3: Theorem Prover] (https://z3prover.github.io/)
Coprisによる制約プログラミング入門
電気通信大学のページ

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2