问题标签 [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.
r - 如何在 R 中绘制探索性决策树
假设在一段时间内跟踪了一组人,并且在 3 个时间点询问他们是否愿意成为法官。在此期间,他们会改变他们的看法。我想以图形方式显示在一段时间内成为判断/不判断的意见变化。这是一个如何显示的想法:
以下是阅读情节的方法:
- 抽样了 1,462 名学生,其中 (400+295+22+147) 想成为评委(第一行向上)。
- 蓝色路径意味着他们最终成为法官。
- 黑色路径意味着最后他们做了其他事情。
- 线路上升:他们想成为法官。
- 线路下降:他们不想成为法官。
- 线条的粗细与通过此特定路径的人数成正比(= 绘制在路径末端的人数)。
例如:
(a) 118 人在高中和大学期间不想成为法官,但在实践中他们决定成为法官。
(b) 直到练习 695 决定成为法官,但在练习 400 成为法官之后,295 做了其他事情。
主要思想是探索存在哪种决策路径,哪些是最常用的。
我有几个问题:
- 这种图有名字吗?
- 是否已经有可以绘制此图的 R 函数?
- 如果没有 R 函数:知道如何绘制更漂亮的图吗?例如:(3.1)我想让曲线相邻(曲线之间没有间隙并且没有重叠)。(3.2) 曲线的起点和终点应平行于 y 轴。
有什么建议么?
编辑 1:
我发现了一个类似于上面的情节:riverplot,例如,参见R library riverplot或R blogger。Riverplot 的缺点是在交叉点处丢失了单个线程或路径。
以下是数据:
以下是数据的转换以获取绘图:
这是ggplot:
java - 当变量值已知时,JavaBDD 消除(并简化 BDD)(从图中)
我是二元决策图 (BDD) 的新手,当我在已知变量值后尝试简化/重新计算 BDD 时,我被卡住了。
编程语言是 Java,使用的 BDD 包是 JavaBDD。
代码如下。
在注释中应该插入什么代码,以便在第二张图中消除变量 v1,就像在图像中一样。
graphviz 工具(1.02 版)用于通过复制/粘贴来自的输出来生成图像g.printDot();
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 的子集。
binary-decision-diagram - CUDD 积和布尔表达式
我想为以下布尔函数创建 BDD:
我设法仅F = (A'B'C'D')
使用以下代码创建,但如何将其他产品术语添加到现有 BDD?
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。这里有什么问题?
min - CUDD:将 BDD 转换为(最小)范式
我正在尝试将现有 BDD 导出为布尔表达式字符串。理想情况下,我想要一个最小长度的字符串或最小的范式,但我猜这本身就是一个难题。您知道将 BDD 转换为短字符串的方法吗?目前我正在使用该功能
但是结果几乎是不可读的,即使对于变量很少的 BDD。
c - 操作从 CUDD 中的 BLIF 文件导入的 BDD
我正在尝试将 BLIF 文件导入到 CUDD 包中,从中创建一个 BDD,然后执行一些操作。我已经设法使用 ntr 包导入 BLIF 文件。但是,我无法弄清楚我应该如何访问生成的 BDD 中的任何变量或节点。
如果我为函数创建了自己的 BDD,我会在执行过程中创建变量,并且能够调用它们来执行不同的操作/操作。但是,通过 BLIF 导入,我所拥有的只是生成的 ddManager (dd) 和布尔网络 (net1)。有谁知道如何调用各个变量/节点?请参阅下面的 BLIF 生成代码。谢谢!
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"
表示在决策表中。
我假设上述大条件以许多行表示,其中不同的小条件的组合为真。重复相同的动作部分。有什么方法可以将这样的条件减少到决策表?
但是,在这种情况下,该操作会触发多行。因为我们只有一个动作。有没有分组的列?