広域システム概論I「パズルをソルバーで解く」

担当 田中哲朗


このページは2016/11/23(水)2限の広域システム概論Iで田中が担当した 「パズルをソルバーで解く」のサポートページです.

スライド


リンク


サンプルプログラム


z3を用いた3人の賢者問題の求解

数学セミナー「エレガントな解答をもとむ」で出題者の用意した解答の間違いの発見 z3を用いた3人の賢者問題の求解

z3を教育用計算機システム(ECCS)のMac環境で使う

ECCSのMac環境にはz3は入っていません.個人のホームディレクトリにz3を入れる 方法を書きます.以下では,Anaconda 2.4.0のpython3環境に導入することを試みます. コマンドラインだけであれば,sshサーバで使う(およびインストール作業をおこなう)こともできます.

仮想環境の作成

/Applications/Anaconda3/bin/conda create -n my_root --clone=/usr/local/opt/pyenv/versions/anaconda3-2.4.0
を実行してください.数分間待つと,~/.conda/envs/my_root 以下に/usr/local/opt/pyenv/versions/anaconda3-2.4.0のコピーが作られます(z3までインストールすると ~/.conda 以下で200MBほどの容量のディスクが使われます).

仮想環境の有効化

source /usr/local/opt/pyenv/versions/anaconda3-2.4.0/bin/activate my_root
を実行します.

z3のインストール

Anaconda用のz3はasmeurer / packages / z3で公開されています.
/Applications/Anaconda3/bin/conda install -c asmeurer z3=4.4.0
で ~/.conda 以下にインストールされます.

z3の利用

source /usr/local/opt/pyenv/versions/anaconda3-2.4.0/bin/activate my_root
を実行したターミナルで,
python
として起動すると,z3が使える環境でpython3が立ち上がります.
Python 3.5.2 |Anaconda 2.4.0 (x86_64)| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from z3 import *
>>> x, y = Ints("x y")
>>> solve(x > 0, y > 0, x + y < 3, x + 2 * y < 5)
[y = 1, x = 1]
同じターミナルで,
jupyter-notebook
を実行すると,ブラウザ上でz3が使える状態で python3 を操作できます.

python2での利用

Z3 API in Pythonがpython2用に書かれているなどの理由でpython2で使いたい人がいるかもしれません.その場合は,以下のようにして,my_root2という名前でpython2の仮想環境を作って,z3をインストールすることもできます.
/Applications/Anaconda/bin/conda create -n my_root2 --clone=/usr/local/opt/pyenv/versions/anaconda-2.4.0
source /usr/local/opt/pyenv/versions/anaconda-2.4.0/bin/activate my_root2
/Applications/Anaconda/bin/conda install -c asmeurer z3=4.4.0