首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CUDD:将变量转换为输出

CUDD:将变量转换为输出
EN

Stack Overflow用户
提问于 2019-05-02 14:10:02
回答 1查看 142关注 0票数 0

我正在与CUDD C++合作,我想知道是否可以这样做:

现在,我将下一个表存储在bdd中。

代码语言:javascript
复制
|-----|-----|-----||-----|
|  x1 |  x2 |  x3 ||  y  |
|-----|-----|-----||-----|
|  0  |  0  |  0  ||  0  |
|-----|-----|-----||-----|
|  0  |  0  |  1  ||  0  |
|-----|-----|-----||-----|
|  0  |  1  |  0  ||  1  |
|-----|-----|-----||-----|
|  0  |  1  |  1  ||  0  |
|-----|-----|-----||-----|
|  1  |  0  |  0  ||  0  |
|-----|-----|-----||-----|
|  1  |  0  |  1  ||  1  |
|-----|-----|-----||-----|
|  1  |  1  |  0  ||  0  |
|-----|-----|-----||-----|
|  1  |  1  |  1  ||  0  |
|-----|-----|-----||-----|

如果原始输出的值为1,是否可以创建另一个具有2个输出提取x2x3值的表?

期望产出:

代码语言:javascript
复制
|-----||-----|-----|
|  x1 ||  x2 |  x3 |
|-----||-----|-----|
|  0  ||  1  |  0  |
|-----||-----|-----|
|  1  ||  0  |  1  |
|-----||-----|-----|

我已经尝试过使用ExistAbastract()命令,并获得了具有正确数据的2 bdds,但是x2x3仍然是输入。是否可以根据x2的值将变量和x3从变量转换为输出

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 19:12:34

第一个表是一个值表,它为x1、x2、x3的每一个组合定义一个y值,因此可以表示为变量x1、x2、x3上的BDD。

您想要的输出表只剩下双行行的y1。因此,您需要两个BDDs x2和x3,它们的范围仅限于x1的值。

请注意,如果对于x1的某些值,x2、x3的多个组合使得y(x1,x2,x3)=True,则您的问题是模棱两可的。但如果不是这样的话,这里有一个可行的解决方案。

让我们只考虑您想要x2函数的情况(另一种情况类似)。存在地抽象x3并得到:

代码语言:javascript
复制
|-----|-----||-----|
|  x1 |  x2 ||  y  |
|-----|-----||-----|
|  0  |  0  ||  0  |
|-----|-----||-----|
|  0  |  1  ||  1  |
|-----|-----||-----|
|  1  |  0  ||  1  |
|-----|-----||-----|
|  1  |  1  ||  0  |
|-----|-----||-----|

一开始还不错。现在,作为最终函数,您想要的是y为真的行中x2的值。让我们分解这个:

  • 对于x1的所有值,如果最终函数的输出为真,则y(x1,true )为真
  • 对于x1的所有值,如果最终函数的输出为false,则y1(x1,false)为真。

我们可以将第一个案例构建为:

代码语言:javascript
复制
(y & x2).ExistAbstract(x2)

这个表达式已经足够了,因为这个表达式是一个函数,它对所有其他输入值都返回FALSE。

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

https://stackoverflow.com/questions/55954326

复制
相关文章

相似问题

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