- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在与 ( https://github.com/ivmai/cudd) 合作,目标是执行以下重复过程:
(1)输入:(相干,非递减) bool 函数表达式顶部 = a_1a_2a_3...+ x_1x_2x_3... + z_1z_2z_3...)。我正在使用的 bool 值有数千个变量 (ai...zj) 和数百个术语。
(2)处理:将Boolean转换为BDD以简化minterms的计算,或者相互独家割集(正如我们在可靠性领域中所称的那样)。
(3) 输出:取m.e.的集合。最小割集(minterms)。计算顶事件概率将 (2) 中找到的所有最小项相加。
我找到了一种方法,使用劳动密集型手动 C 接口(interface)来构建 bool 值。我还找到了如何使用出色的 tulip-dd Py 界面来完成此操作,但无法像使用 cudd 那样进行扩展。
现在我希望通过 C++ 接口(interface)来 cudd 我可以两全其美(我要求太多了吗?)也就是说,说 tulip-dd 的便利性和可扩展性含糖。所以这里有一些示例代码。我失败的地方是第 3 步,打印出最小项,我以前可以在 C 中执行此操作。如何使用 C++ 接口(interface)执行此操作?!具体的想法和尝试请看代码中的注释。
int main()
{
/*DdManager* gbm; /* Global BDD manager. I suppose we do not use this if we use the Cudd type below.*/
/* (1-2) Declare the vars and build the Boolean. Convert Boolean to BDD */
Cudd mgr(0, 0);
BDD a = mgr.bddVar();
BDD b = mgr.bddVar();
BDD c = mgr.bddVar();
BDD d = mgr.bddVar();
BDD e = mgr.bddVar();
BDD top = a*(b + c + d*e);
/* How to print out the equivalent to below, which prints out all minterms and their relevant vars in C.
But the mgr below has to be a *DManager ? If so, how to convert? */
Cudd_PrintDebug(mgr, BDD, 2, 4);
return 0
}
谢谢,桂
最佳答案
CUDD C++ 类只不过是“DdManager*”和“DdNode*”数据类型的包装器。它们确保您不会意外忘记您正在使用的 Cudd_Ref(..) 或 Cudd_RecursiveDeref(...) *DD 节点。
因此,这些类具有可用于访问基础数据类型的函数。因此,例如,如果您想在“顶部”BDD 上调用“Cudd_PrintDebug”函数,那么您可以使用:
Cudd_PrintDebug(mgr.getManager(), top.getNode(), 2, 4);
对代码的修改很少。
请注意,当使用通过“getNode”函数获得的普通 CUDD DdNode* 时,您必须手动确保不会引入节点计数泄漏。如果您以“只读方式”使用 DdNode,则只存储与您也存储的 BDD 对象相对应的 DdNode*,并且确保 BDD 对象的生命周期始终比 DdNode* 指针长,但是,这不会发生。我之所以提到这一点,是因为在某些时候您可能想要遍历 BDD 的多维数据集。这些本质上是不保证最小的最小项。有special iterators in CUDD for this .但是,如果您真的想要最小项,这可能不是正确的方法。 There is other software using CUDD that comes with its own functions for enumerating the minterms .
作为最后的说明(在 StackOverflow 的范围之外),您写道“我正在使用的 bool 值有数千个变量 (ai...zj) 和数百个术语。 “- 不能保证使用具有如此多变量的 BDD 是解决问题的方法。但请尝试一下。对于基于 BDD 的方法来说,拥有数千个变量通常是有问题的。您的申请可能会也可能不会异常(exception)。另一种方法可能是将原始表达式的所有最小项的搜索问题编码为增量可满足性 (SAT) 求解问题。
关于c++ - CUDD C++ 接口(interface),用于将 bool 值转换为 BDD 和生成的最小项集(到割集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62944152/
有没有人使用 BDD 来驱动他们的域层? 最佳答案 是的,我们发现这个过程非常有效,并且使用 specflow 来提供这种方法相当容易。我们仅在域层中就实现了 2000 多个场景,我们也使用这种方法来
你需要像Fitnesse这样的东西吗? , 如果您有 BDD测试? 最佳答案 BDD“测试”存在于多个不同的粒度级别,一直到最初的项目愿景。大多数人都知道这些场景。有几个人记得BDD started
对于在休闲游戏开发工作室开始学习和应用 BDD,您有什么建议? 最佳答案 虽然我不能说专门在游戏中使用 BDD,但我不能错过向您介绍这篇优秀文章的机会: http://www.code-magazin
我很喜欢 BDD 的开发方法,但我遇到了对走多远的担忧。这条来自 ThoughtWorks 的最新评论 Radar让我暂停: "The advent of behavior-driven design
我有很多相同的场景,它们只是传递给它们的数据不同。 这是示例: 功能:将报表中的事实链接到 Excel 文档 为了将事实链接到 Excel 文档 作为有权报告的用户 我想点击报告中的事实值 场景:任何
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
似乎互联网没有明确的答案,也没有一套原则来帮助我回答这个问题。所以我求助于 SO 上的伟大人物帮助我找到答案或指导思想:) SpecFlow 对于 .NET 中的 BDD 非常有用。但是当我们谈论 B
我是 BDD 的新人。所以我对场景有一些疑问? BDD 场景和用户场景之间有什么区别?与传统所谓的“用户场景”或“用例”有明显区别吗?你能解释一下吗? 最佳答案 由于您刚才提到的“传统用户场景”有点含
我是 BDD 的新人。所以我对场景有一些疑问? BDD 场景和用户场景之间有什么区别?与传统所谓的“用户场景”或“用例”有明显区别吗?你能解释一下吗? 最佳答案 由于您刚才提到的“传统用户场景”有点含
只是寻找 BDD/SpecFlow 的一些示例 - 理想情况下是一个项目б,这样我就可以了解如何在大型项目中使用 SpecFlow,其中多个功能引用相同的步骤等. 在过去的几个月里,我读了一些博客,但
我们有一个工作流引擎,它会显示可用工作流列表(我指的是工作流定义,而不是实例),用户可以单击任何工作流旁边的“执行”链接来执行该工作流的新实例。我想以 BDD 方式完成这个“执行工作流”故事(功能?)
有谁知道实现这一目标的方法,或者他们认为这是一个好主意。在 Gherkin 中使用 OR 样式语法以减少重复但保持人类可读性(希望如此)。我正在考虑使用多个 OR 语句的每个组合扩展子句组合的情况。例
我有许多 BDD 故事/场景(450+ 以及不断增加),我为现有系统继承了这些故事/场景:more info 。这些故事是使用文件系统文件夹组织的: C:\specifications |
我希望更改 Serenity 报告中的 CSS 和 Logo 。此外,我想在 Serenity 报告中添加一些自定义文本或一些测试的链接。就像生成了一个 excel 报告,我希望在报告的测试步骤中提供
我正在处理几个月前部分完成的代码分支,以及相互交织的依赖关系。因此,前进的最简单方法是将特定分支上的失败测试标记为待处理(rspec 方式)或跳过,并在所有内容合并后处理它们。 在其最终报告中,beh
我是 BDD 新手,使用 SpecFlow 我正在尝试制定一种高效、有组织且可维护的方法(用于 ASP.NET MVC 中)。我需要改进的主要方面是: 步骤分组(到步骤文件中) 重用测试对象(就像通过
我整个星期都在四处寻找,无法全神贯注于如何让我们的 pylons 服务器实例启动以与 Behave BDD 一起使用。你们中的任何人都可以指出我的例子或提供您自己的例子吗?这是我正在处理的内容: 来自
我正在尝试为多步骤业务流程编写需求(通过向导)。我有很多场景,用户与一个屏幕的交互会改变您是否可以在另一个屏幕上选择选项。 例如(我已经模糊了实际业务,但步骤的过程和形式几乎相同): Feature:
有没有人有在 BDD 中使用现成框架作为规范流与 CQRS 的经验。 我喜欢 Mark Nijhof 的方法,但是我已经将 SpecFlow 用于其他项目。任何人都可以提供一些启示,如果可能的话,举个
我们正在尝试为每个步骤截取屏幕截图。 一切正常。但是我们无法将屏幕截图与创建它们的步骤相关联。 我们想要的是类似 FeatureContext.FeatureInfo 的东西和 ScenarioCon
我是一名优秀的程序员,十分优秀!