由上述我们可以知道,BDD是由1个或2个终端节点(0或1)出度为2(low(u)和high(u))图所组成的,它把BDT从2n 个节点进行裁减,从而减少空间复杂度,然而却增加了时间复杂度,为使其了更有效,我们引入OBDD和R(O)BDD的概念。
OBDD(Ordered Binary Decision Digram)是所有BDD路径都是基于给定线性序列的BDD。如图2 就是 遵循x1<y1<x2<y2的线性序列。
R(O)BDD则满足:a 没有2个不同得节点u,v使之满足 var(u)=var(v),low(u)=low(v),high(u)=high(v)
b 没有节点u拥有相同的后继,即low(u)¹higt(u)
如图3:
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\111.bmp[/img]
R(O)BDD有些有趣的特性,它提供了一种紧凑,高效的布尔表示,对于所有函数
f: Bn à B总有一个R(O)BDD去表述,同时由于R(O)BDD总为真或假,对它的测试也是在有限时间范围内的(NP--完全),它的终端节点总是一个布尔值,非终端节点则是INF表达式,分别表示:
t0 = 0
t1 = 1
tu = var(u)à thigh(u) , tlow(u) ,u是节点变量
另外如果是有序的BDD,我们把与每个节点u有关的函数fu映射到(b1,b2…bn)ÎBn 满足 tu[b1/x1,b2/x2,……bn/xn].我们可以得到以下引理
引理1:对于任何函数 f: Bn à B总有一个ROBDD去表述,u是变量有序的x1<x2…<xn 且 fu = f(x1,x2…xn).
对于变量的有序选择对ROBDD的构建有重要的影响,如我们如果按x1<x2<y1<y2的序列构造(x1<=>y1) ∧(x2<=>y2),可得
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\333.bmp[/img]
有了ROBDD的概念后,就可以使BDD的算法更容易被表述,例还是对(x1<=>y1) ∧(x2<=>y2 按照x1<y1< x2<y2的有序表述(图2),同时对节点u标号,我们可以得到如下表:
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\1.jpg[/img]
由此,我们得到了一个更为简便的BDD表述.
分享到:
相关推荐
#### 行为驱动开发(Behavior-Driven Development, BDD)简介 行为驱动开发(BDD)是一种敏捷软件开发方法,它强调在整个软件开发生命周期内,通过描述用户可见的行为来定义需求,并以此为基础构建测试案例和实现...
**2. 安装Behave** 首先,你需要通过pip安装`behave`库: ```bash pip install behave ``` **3. 创建第一个.feature文件** `.feature`文件是BDD的核心,它包含一系列场景(Scenarios),每个场景都描述了一个具体的...
2. BDD的关键实践 BDD主要依赖于三个实践:用户故事(User Stories)、验收标准(Acceptance Criteria)、以及场景(Scenarios)。用户故事是关于一个特定功能的简单描述,验收标准是该功能必须满足的条件,而场景则...
内容简介 本资源提供了一套针对BDD100K数据集的Python代码,旨在辅助用户完成YOLO系列算法训练前的数据预处理及格式转换工作。内容概要上,该代码能够处理BDD100K数据集的复杂标注信息,包括图像路径、类别标签、...
一、Yolov5简介 YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,因其快速而准确的特点而广受欢迎。Yolov5是其最新版本,由 Ultralytics 团队开发,它在前几代的基础上进行了优化,提高了速度和精度。...
**行为驱动开发(Behavior-Driven Development, BDD)与Cucumber简介** 行为驱动开发是一种敏捷软件开发的方法,它强调从用户、客户或非技术人员的角度来描述软件的行为。BDD的核心理念是通过用业务语言(通常称为...
**行为驱动开发(Behavior Driven Development,BDD)简介** 行为驱动开发是一种软件开发方法,它强调通过描述软件的行为来驱动开发过程。BDD的核心思想是将需求转化为可执行的规范,这些规范不仅团队成员可以理解...
项目简介: 在BDD驾驶项目中,我们将自我驾驶的任务制定为未来的自我运动预测。 为了完成这项任务,我们与合作伙伴收集了,提出了FCN + LSTM模型,并使用tensorflow实现了该模型。 伯克利DeepDrive视频数据集(BDD-...
#### 一、掺硼金刚石电极(BDD)简介 掺硼金刚石电极(BDD)是一种由金刚石材料制成,并通过掺入硼元素来调节其电学性质的新型电极材料。这种电极因其独特的物理化学特性而在许多领域展现出了巨大的应用潜力。BDD ...
#### 一、bddbot简介与环境搭建 **bddbot**是一款著名的开源搜索引擎,主要用于网站爬取与信息检索。它能够帮助用户抓取指定网站的内容,并提供简单高效的搜索功能。 ##### 环境搭建步骤: 1. **安装JDK**: - *...
**验收测试驱动开发(BDD)简介** 验收测试驱动开发(Behavior-Driven Development,简称BDD)是一种软件开发方法,它强调以用户需求和期望为导向,通过协作和沟通来驱动软件设计和开发。BDD的核心理念是将业务领域...
**behave简介** `behave`是Python中的一个BDD框架,它允许开发者使用类似Gherkin语法的自然语言来编写测试用例。Gherkin是一种非编程的、领域特定的语言,用于描述软件的功能,其基本结构包括: 1. **Feature...
**行为驱动开发(Behavior-Driven Development,BDD)与Cucumber简介** 行为驱动开发(BDD)是一种软件开发方法,它强调以用户的行为和需求作为驱动力,促进开发者、业务分析师和测试人员之间的沟通。BDD的核心是...
### 一、KmTest框架简介 KmTest 提供了一个面向对象的接口,用于定义测试用例和测试套件,其设计灵感来源于用户模式下的测试框架,如Google Test。BDD风格使得测试代码更加清晰地表达预期的行为,而不是具体的操作...
这是二元决策图库的 Lua 实现,如 Henrik Reif Andersen 的“二元决策图简介”中所述。 有关使用示例,请查看测试套件(取决于 lunatest)。 编写代码是为了清晰而不是性能(尽管它确实在几秒钟内找到了 10-queens ...
2. **Minitest**:Minitest 是 Ruby 内置的轻量级测试框架,它包含了单元测试和集成测试的功能。Minitest 的语法简单,适合快速编写和执行测试。`test/unit` 风格的测试用例和 `minitest/spec` 风格的 BDD 测试都...
5. `README.md` 或 `README.txt` - 提供项目简介、安装指南和使用示例。 6. `LICENSE` - 许可证文件,说明该项目遵循的开源协议,如Apache 2.0、GPLv2等。 7. `.gitignore` - 指定版本控制系统忽略的文件或目录。 8....
2. **Drupal Bootstrap**: 这个扩展可以自动设置Drupal环境,包括加载配置、数据库连接和初始化会话,以便在测试环境中正确运行Drupal。 3. **Drupal Services**: 可以直接在测试中注入Drupal服务,如数据库查询、...