首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Z3Py求解器在Jupyter中产生不同的结果

Z3Py求解器在Jupyter中产生不同的结果
EN

Stack Overflow用户
提问于 2020-05-20 15:28:15
回答 1查看 66关注 0票数 0

我正在学习如何通过here提供的Jupyter notebooks使用Z3Py,从guide.ipynb开始。在运行布尔逻辑部分中包含的以下示例代码时,我注意到了一些奇怪的事情。

代码语言:javascript
复制
p = Bool('p')
q = Bool('q')
r = Bool('r')
solve(Implies(p, q), r == Not(q), Or(Not(p), r))

我第一次在Jupyter笔记本中运行它时,它会生成结果[p = False, q = True, r = False]。但是如果我再次运行这段代码(或者在Jupyter之外),我得到的结果是[q = False, p = False, r = True]

为了得到这些不同的结果,我做错了什么吗?另外,既然笔记本上没有说明,那么哪种解决方案才是正确的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 16:36:52

如果你获得了两个结果,也就是对布尔变量的赋值,你会发现每个赋值集都满足你的约束条件。因此,这两个结果都是正确的。

在不同的平台/环境上获得不同的结果可能很奇怪,但可以解释: SMT解算器通常在其求解过程中使用启发式,这些启发式通常是随机的,并且不同的环境可能会产生不同的随机种子。

结论:一切都很好:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61907401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档