我正在尝试使用DDcal来评估二元决策图。当我尝试评估一些公式时,例如:a+b*c'
,我总是得到这个错误:
util_pipefork: can not exec dot: No such file or directory.
有没有人知道我如何解决这个错误?
您可以使用Python包dd
与使用Python或CUDD后端的bdd一起工作(免责声明:我是dd
的作者)。例子:
import dd.autoref as _bdd # to use CUDD, replace `dd.bdd` with `dd.cudd`
bdd = _bdd.BDD()
bdd.declare('a', 'b', 'c')
u = bdd.add_expr(r'a / (b / ~ c)')
语法在文档中有描述。如果你更喜欢写a | (b & ~ c)
,那也可以。纯Python后端是用pip install dd
安装的。
您也可以使用dot
绘图(假设安装了GraphViz):
bdd.dump('bdd_graph.pdf')
方法BDD.dump
在这里描述。
关于DDcal的消息
grep -ilr "util_pipefork" ./*
表示您从DDcal报告的错误似乎来自以下行:
/* Set up bidirectional pipe to/from dot. */
/* A unidirectional pipe should suffice. We'll try it some day. */
retval = util_pipefork(args,&toCommand,&fromCommand,&pid);
if (retval == 0) {
(void) fprintf(stderr,"Panic: util_pipefork returned 0!n");
exit(2);
}
因此,您需要安装GraphViz,并确保其可执行文件(特别是dot
)位于运行时环境的$PATH
中。