BDD是过去35年中开发的唯一的全新数据结构

2020-12-09 23:05:51

假设您要在高速公路上一次访问每个州议会大厦。哪条路线最短?哪条路线最长?所有路线的均值和标准偏差是多少?

可以通过任何方式对状态进行加权,例如,通过在基数36中读取其两个字母的代码作为数字来进行加权。然后找到一组状态,使得该组中的两个成员都不相邻,并且使总权重最大化。

有几种方法可以用四种颜色为地图着色,以使两个相邻的州都不具有相同的颜色。如果颜色的权重为2、3、5和7,则哪种颜色的总权重最小?

您可以使用1x1、2x1和3x1矩形平铺棋盘的几种方法?如果我们还有一些看起来像2x2盒子且缺少一个瓷砖的碎片呢?

以第二个地图问题为例。令U(宇宙)为美国所有州的集合。任何非相邻状态的选择都可以视为U的子集。

考虑F,所有此类子集的集合。为了清楚起见,我们将U的子集称为F(相当于U的幂集的子集),称为U上的一组子集。因此,“ set”通常是指U的子集,并且& #34;家庭"表示这些子集的集合。超图等同于集合族,但我们遵循Knuth的观点,并且更喜欢" families"由于熟悉度更高,因此超过了“超图”。

事实证明,我们可以用易于描述的基本族来描述F。如果我们有一个聪明的方法来表示计算机上的家庭,我们也许能够从基本家庭快速构建F的表示。如果方法真的很聪明,我们可以随后确定最大权重的F值,并解决问题。

ZDD是一个非常聪明的数据结构,代表集合的集合。 ZDD代表零抑制的二进制决策图,但这并不重要。

诸如上述的组合问题可以看作是对特定系列集合的提问。使用ZDD,我们可以有效地回答它们。

唐纳德·E·努斯教授(Donald E. Knuth)的计算机沉思,特别是“带有零抑制二进制决策图(ZDD)的乐趣”。和"具有二元决策图(BDD)的乐趣"

粗略地讲,当许多元素的成员关系通常不相关时,BDD会击败ZDD,而当经常缺少许多元素时,ZDD会击败BDD。我专注于ZDD,因为当我开始这些笔记时,我对一个我认为更适合ZDD的问题感兴趣。

我想知道是否有人在看混合BDD-ZDD,其中每个边缘都包含另一个位,表示应将其解释为BDD边缘还是ZDD边缘(我们不允许具有相同目标的LO和HI边缘以及HI边缘指向到FALSE节点)。我怀疑是否可以使相关算法与混合BDD一起使用,并且最好的选择可能会解决一些问题。也许我们可以走得更远并定义针对特定问题的边缘,例如i和j之间的边可能意味着必须存在i和j之间的每第二个元素,另一种类型的边可能意味着该范围内的一个元素正好存在。

本林恩[email protected]💡