BDD (二分決定グラフ)ってのは、集合をコンパクトに表現できる方法らしい。
これを扱うライブラリをインストールしてみた。
まず、ソースは
http://www-2.cs.cmu.edu/~modelcheck/bdd.html
からダウンロードする。とりあえず
$ mkdir bdd
$ cd bdd
$ wget http://www-2.cs.cmu.edu/~modelcheck/bdd/bddlib.tar.gz
$ tar zxvf bddlib.tar.gz
と展開しすると、ディレクトリが四つある。
これは、mem -- bddlib -- boole / trlibの順に入れるらしい。(booleとtrlibは独立したライブラリっぽい)
まず、memに移動してdist.tarを展開。
なぜかパーミッションが444とかで色々面倒なので、chmod 644 *しておいた。
$ cd mem
$ tar xvf dist.tar
$ chmod 644 *
Makefileを編集して、インストール先っぽい~/bin, ~/lib, ~/lib/i386-linux, ~/includeとかのディレクトリを作る。
(自動で作ってはくれません。このi386-linuxっての作っておかないと、肝心のライブラリ(libbdd.a)がi386-linuxって名前でコピーされてしまいます)
その後、makeでコンパイル。
$ mkdir ~/bin ~/lib ~/lib/i386-linux ~/include ~/man
$ make
bddlibも同様にコンパイル…なんですが、僕の環境では一つ変更がいりました。(Warning出て、動かしたら動かなかったから)
testbbd.cの1155行目くらい
int err;
- mktemp(filename);
+ mkstemp(filename);
if (!(fp=fopen(filename, "w+")))
とします。
で、コンパイルしたディレクトリに出来たtestbbdを実行すると、デモってくれました。