问题标签 [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 回答
1047 浏览

r - 如何在 R 中绘制探索性决策树

假设在一段时间内跟踪了一组人,并且在 3 个时间点询问他们是否愿意成为法官。在此期间,他们会改变他们的看法。我想以图形方式显示在一段时间内成为判断/不判断的意见变化。这是一个如何显示的想法:

在此处输入图像描述

以下是阅读情节的方法:

  • 抽样了 1,462 名学生,其中 (400+295+22+147) 想成为评委(第一行向上)。
  • 蓝色路径意味着他们最终成为法官。
  • 黑色路径意味着最后他们做了其他事情。
  • 线路上升:他们想成为法官。
  • 线路下降:他们不想成为法官。
  • 线条的粗细与通过此特定路径的人数成正比(= 绘制在路径末端的人数)。

例如:
(a) 118 人在高中和大学期间不想成为法官,但在实践中他们决定成为法官。
(b) 直到练习 695 决定成为法官,但在练习 400 成为法官之后,295 做了其他事情。

主要思想是探索存在哪种决策路径,哪些是最常用的。

我有几个问题:

  1. 这种图有名字吗?
  2. 是否已经有可以绘制此图的 R 函数?
  3. 如果没有 R 函数:知道如何绘制更漂亮的图吗?例如:(3.1)我想让曲线相邻(曲线之间没有间隙并且没有重叠)。(3.2) 曲线的起点和终点应平行于 y 轴。

有什么建议么?

编辑 1:
我发现了一个类似于上面的情节:riverplot,例如,参见R library riverplotR blogger。Riverplot 的缺点是在交叉点处丢失了单个线程或路径。


以下是数据:

以下是数据的转换以获取绘图:

这是ggplot:

0 投票
2 回答
653 浏览

java - 当变量值已知时,JavaBDD 消除(并简化 BDD)(从图中)

我是二元决策图 (BDD) 的新手,当我在已知变量值后尝试简化/重新计算 BDD 时,我被卡住了。

编程语言是 Java,使用的 BDD 包是 JavaBDD。

代码如下。

在注释中应该插入什么代码,以便在第二张图中消除变量 v1,就像在图像中一样。

图1 图2

graphviz 工具(1.02 版)用于通过复制/粘贴来自的输出来生成图像g.printDot();

0 投票
2 回答
545 浏览

algorithm - 地图- 可以检查位集子集的数据结构?

我有一个很大的哈希表(太大了,我无法检查每一行)(在 C++ 中使用 boost::unordered_map),其中键是 std::bitset,值是我拥有的一些结构。

假设我在表中有这个:

如果我查询地图,因为map[01111101]我希望它返回“随便”。没关系,这就是地图的用途。但是,如果我查询map[00110101]我希望它返回“Hello”,因为“00010101”(Hello 的键)是我查询的“00110101”的子集。我用位表示集合,我认为这是不言自明的。

如果表中有多个条目,而键是查询的子集,我想要它们全部。

我不知道是否有这样的事情。我正在查看二元决策图,但我从未使用过它们,我不确定它们是否能解决问题。

谢谢。


编辑:设置表示。假设我有一组对象 A,B,C,D,E,F,G 我有两组 A,B,C 和 D,F。我将它们分别表示为 1110000 和 0001010。因此:1110000 不是 0001010 的子集(反之亦然),但 1000100 是 1010101 的子集。

0 投票
2 回答
489 浏览

binary-decision-diagram - CUDD 积和布尔表达式

我想为以下布尔函数创建 BDD:

我设法仅F = (A'B'C'D')使用以下代码创建,但如何将其他产品术语添加到现有 BDD?

0 投票
1 回答
135 浏览

logic - ddcal 不工作

我正在尝试使用DDcal来评估二元决策图。当我尝试评估某些公式时,例如:a+b*c',我总是得到这个错误:

有谁知道我该如何解决这个错误?

感谢您的任何见解。

0 投票
1 回答
572 浏览

binary-decision-diagram - 使用 CUDD 的两个 BDD 的交集

我想为以下两个布尔函数找到两个 BDD 的交集:

这是我的代码:

这是我得到的结果:

正如您在此处看到的那样,交叉点给出 A=0 并且不关心 B、C 和 D。我期待 A、B、C 和 D 的值同时满足 F 和 G。但显然 A=0 不是F 和 G 的解决方案。例如,有人可以选择 A=0,B=1,它为函数 F 提供 0。这里有什么问题?

0 投票
0 回答
208 浏览

min - CUDD:将 BDD 转换为(最小)范式

我正在尝试将现有 BDD 导出为布尔表达式字符串。理想情况下,我想要一个最小长度的字符串或最小的范式,但我猜这本身就是一个难题。您知道将 BDD 转换为短字符串的方法吗?目前我正在使用该功能

但是结果几乎是不可读的,即使对于变量很少的 BDD。

0 投票
1 回答
325 浏览

c - 操作从 CUDD 中的 BLIF 文件导入的 BDD

我正在尝试将 BLIF 文件导入到 CUDD 包中,从中创建一个 BDD,然后执行一些操作。我已经设法使用 ntr 包导入 BLIF 文件。但是,我无法弄清楚我应该如何访问生成的 BDD 中的任何变量或节点。

如果我为函数创建了自己的 BDD,我会在执行过程中创建变量,并且能够调用它们来执行不同的操作/操作。但是,通过 BLIF 导入,我所拥有的只是生成的 ddManager (dd) 和布尔网络 (net1)。有谁知道如何调用各个变量/节点?请参阅下面的 BLIF 生成代码。谢谢!

0 投票
1 回答
75 浏览

data-structures - 检查ROBDD图是否正确

下面我展示了一个 BDD 和它的 ROBDD。有人可以告诉我绘制的图表是否正确。如果没有,请让我知道我所犯的错误。

BDD

在此处输入图像描述

答案 - ROBDD

在此处输入图像描述

0 投票
1 回答
551 浏览

logical-operators - 决策表中如何表示复杂条件

我正在尝试为决策表模板建模。

为什么我理解简单的规则,比如

(x>10 and y<10) print "red"可以在决策表中表示,其中一行使用两列表示条件,一列表示操作。

条件如何

((x>10 and y<10) or x>1) or z<5 and y>5 print "red"表示在决策表中。

我假设上述大条件以许多行表示,其中不同的小条件的组合为真。重复相同的动作部分。有什么方法可以将这样的条件减少到决策表?

但是,在这种情况下,该操作会触发多行。因为我们只有一个动作。有没有分组的列?