问题标签 [binary-decision-diagram]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
36 浏览

java - JavaBDD 使用变量子集进行计数

我正在使用 JavaBDD 对 BDD 进行一些计算。我有一个非常大的 BDD,其中包含许多变量,我想计算有多少种方法可以满足这些变量的一小部分。

我目前的尝试如下所示:

存在()的用法不正确吗?

0 投票
1 回答
820 浏览

python - 从可用数据结构生成二元决策图

这个问题有点长;请多多包涵。

我有一个包含如下元素的数据结构{x1, x2, x3, x4, x5}

它们代表真值表中的所有 TRUE。当然,该集合中不存在的 5 位字符串元素对应于真值表中的 FALSE。但是我没有对应于所述集合数据结构的布尔函数。

我看到了这个问题,但这里所有的答案都假设给出了布尔函数,这是不正确的。

我需要构建一个 ROBDD,然后从给定的数据结构到 ZDD。最好使用这些可用的 python 包。

专家有什么建议吗?我确信在这方面已经做了很多工作。

0 投票
0 回答
31 浏览

compression - 用于压缩的二元决策图等工具

我正在寻找压缩算法(具有相当规律性的二进制数据),它允许我对压缩数据进行操作以快速回答以下问题:输入的第 k 位的值是多少?设置了多少位?这个集合与其他集合的交集是什么?

这种算法的一个例子是二元决策图。我想知道是否还有其他类似的,也许有更强大的运营商。

0 投票
2 回答
74 浏览

haskell - haskell 中 2 个新类型的“或”模式匹配

我在 haskell 程序中使用决策图库。为此,我想声明 2 种不同的(新)类型来跟踪我正在处理的决策图类型。我使用的库是 cudd,决策图基类型是一个 DdNode,但我的问题只是与 haskell 相关。

通常我想在调用函数时区分它们,但现在我想使用一个不必区分这两种类型的函数。我主要尝试通过 3 种不同的方式解决这个问题:

所有这些方法都失败了。编写此代码的最优雅的方式是什么?感谢您的关注。

0 投票
2 回答
191 浏览

model-checking - CUDD:ZDD 的量化

我正在使用 CUDD ( https://github.com/ivmai/cudd ) 使用 bdd 和 zdd 功能进行模型检查,我想知道如何量化 zdds。

对于 bdd,有 bddExistAbstract 和 bddUnivAbstract 函数(参见http://web.mit.edu/sage/export/tmp/y/usr/share/doc/polybori/cudd/cuddAllDet.html#Cudd_bddUnivAbstract)。

该手册说,这些函数普遍地和存在地从 bdd 中抽象出给定的变量(以封面形式)。我不太清楚“抽象出来”是什么意思,因此我坚持弄清楚量化如何改变 zdds。

你们能帮忙吗?谢谢。

0 投票
1 回答
95 浏览

linear-programming - 寻找 BDD 对涉及 x,y 概念的问题的应用

我正在研究 BDD 的应用,以确定是否可以在那里实现 x,y 概念。

让我解释。

假设我有 z 的东西要分布在 x,y 坐标平面上。约束是:

  • 所有 z 项目都必须放置在 x,y 坐标平面中。
  • 一些 z 项目必须彼此相距一定距离。

我认为整数线性规划可以解决这个问题。例如,使用一组方程,我可以表示上述约束并进行线性规划以求解确切位置。

但我要问的是 BDD 是否可以帮助解决这个问题?

换句话说,二元决策图可以表示 x,y 坐标吗?我可以用布尔函数(相当于上面的方程组)来表示上述约束,并且可以操纵 BDD 来解决上述精确位置的约束,就像线性规划一样?

我没有任何具体的例子可以展示,但我认为用二进制表示等效的 x,y 坐标是一个起点?

0 投票
1 回答
116 浏览

algorithm - 修改后的皇后问题的布尔表达式

我从这里看到了 N 皇后问题的布尔表达式。

我修改后的 N 皇后规则更简单:

对于 ap*p 棋盘,我想以这样的方式放置 N 个皇后,以便

  1. 皇后将被相邻放置,行将首先被填充。
  2. p*p 棋盘大小将被调整,直到它可以容纳 N 个皇后

例如,假设 N = 17,那么我们需要一个 5*5 的棋盘,其位置将是:

问题是我试图为这个问题想出一个布尔表达式

0 投票
1 回答
85 浏览

binary-decision-diagram - 如何区分二元决策图的正整数和负整数

我有一个包含值的 CSV 文件,我目前正在制定一个命题公式。

这是一个示例:

我的公式:

现在我生成一个相同的 BDD。如果我想要一个人类/嵌入式系统从我的图表中理解,1101 可以表示为 13 或 -5。任何负数都可以有 2 种表示形式。有什么方法可以让我只做一个吗?

0 投票
1 回答
122 浏览

data-structures - 有效地创建结构化的二元决策图

我正在尝试创建具有特定结构的 BDD。我有一个布尔变量 x_i 的一维序列,例如 x_1、x_2、x_3、x_4、x_5。如果没有孤立的一或零(可能在边缘除外),我的条件就满足了。

我已经使用pyeda实现了这一点,如下所示。该条件相当于检查连续的三元组 ([x_1, x_2, x_3]; [x_2, x_3, x_4]; ...) 并检查它们的真值是否为 [[1,1,1], [0, 0,0],[1,1,0],[0,1,1],[1,0,0],[0,0,1]]。

最终的图表如下所示:

BDD

这适用于短序列,但是当长度超过 25 时,最后的减少变得非常缓慢。我想要一些适用于更长序列的东西。

我想知道在这种情况下直接构建 BDD 是否更有效,因为问题有很多结构。但是,我找不到任何方法来直接在 pyeda 中操作 BDD。

有谁知道我怎样才能更有效地完成这项工作?

0 投票
1 回答
49 浏览

python - 如何在python中以两种不同的颜色显示来自两个标签(0,1)的数值?

我目前正在研究二进制 SVM 分类器。为了可视化分类器的工作原理,我想创建一个概率密度函数(用 scikit 计算)的直方图,它显示单个数据点的标量(无论它属于 0 类还是 1 类)。

剧情:概率密度函数直方图

请注意,在 SVM 中,分类器的“切割边缘”是 -1 和 1。该图很好地描绘了在 [-1,1] 处存在一些决策边界。

回到我的问题:我想分别为标签 0 和 1 的数据点着色以分析软边距(-1 和 1 之间的区域)

概率密度函数存储为np.array 对应的标签存储在 pandas数据框中

如何链接数组和数据框,将类别 0 的数值绘制为 ie 'green' 而类别 1 绘制为 ie'blue' ?

代码:

我试图将两者保存在同一个数据帧中,但我无法解密我如何以上述预期方式将其编程到决策函数中:(

Some1 有一个聪明的方法?提前致谢!

编辑:示例代码:

概率的标量。事实。

带有相应标签的程式化数据框:

*类别 1 的数值应绘制为蓝色

类别 0 的数值应绘制为绿色