`
guyikun
  • 浏览: 16119 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

BDD简介 ---1

    博客分类:
  • AI
阅读更多
    BDD(Binary Decision Digrams)是最新流行于人工智能模型诊断方面的一种求解算法,主要用于诊断求解,配置和约束满足等方面,下面我将对BDD做一下简单的介绍.
    在学习BDD之前首先要有一点离散数学的基本概念,知道∧,∨,﹁,=>,<=>等基本符号的意义和各范式的表达,定义if-then-else 操作为:  x=>y0,y1 = (x∧y0) ∨(x∧y1)
所以x=>y0,y1 为真时当且仅当x ,y0同为真或x为假,y1为真.从这种if-then-else 操作演化来的形式被称作if-then-else Normal Form(INF).我们指定布尔表达式t[0/x],不难发现,对于t的山农扩展 t = x =>t[1/x],t[0/x] 是基于x的布尔值的,而对于任何的布尔表达式都可以转化为INF的表示方式.
例如:给定布尔表达式 t = (x1<=>y1) ∧(x2<=>y2) .我们可以通过对变量x1,x2,y1,y2的选择设定找到一个INF表达从而实现山农扩展.我们给定:
      t    =  x1  => t1  ,  t0
      t0   =  y1  => 0   ,  t00
      t1   =  y1  => t11  ,  0
      t00  =  x2  => t001 ,  t000
      t11  =  x2  => t111 ,  t110
      t000 =  y2 => 0 , 1
      t001 =  y2 => 1 ,0
      t110 =  y2 => 0 ,1
      t111 =  y2 => 1,0
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\dt.bmp" alt="[/img]
               图1 决策树
    从上图我们可以看到决策树其实就是一个完全的二叉树,可以说是对所有可能性的一种枚举,但是不难发现,给定中很多变量取值都是相同的,如我们可以用t000取代t110…,而对于子表达式的等价取代我们就可以得到一个图,BDD(Binary Decision Digrams)图! 通过取代,我们可以得到:
      t    =  x1  => t1  ,  t0
      t0   =  y1  => 0   ,  t00
      t1   =  y1  => t00  ,  0
      t00  =  x2  => t001 ,  t000
      t000 =  y2 => 0 , 1
      t001 =  y2 => 1 ,0
[img]C:\Documents and Settings\gyk\桌面\bdd-picture\bdd.bmp" alt="[/img]
    从而一个简单的BDD就出来了.
分享到:
评论

相关推荐

    《BDD IN ACTION:Behavior-Driven Development for the whole software lifecycle》

    #### 行为驱动开发(Behavior-Driven Development, BDD)简介 行为驱动开发(BDD)是一种敏捷软件开发方法,它强调在整个软件开发生命周期内,通过描述用户可见的行为来定义需求,并以此为基础构建测试案例和实现...

    python BDD 框架入门

    **1. Behave简介** `Behave`是Python的一个BDD框架,它允许开发者使用类似Gherkin语法编写可读性高的测试用例。Gherkin是一种领域特定语言(DSL),它的特点是使用自然语言描述功能需求,使得非技术人员也能理解。 ...

    BDD入门指南

    1. BDD的起源与核心思想 BDD是从测试驱动开发(Test-Driven Development,TDD)和领域驱动设计(Domain-Driven Design,DDD)中发展而来的。它将测试和需求描述结合起来,将需求以用户故事和场景的形式展现出来,并...

    YOLO系列算法使用bdd100k数据集训练的数据预处理及格式转换python代码

    内容简介 本资源提供了一套针对BDD100K数据集的Python代码,旨在辅助用户完成YOLO系列算法训练前的数据预处理及格式转换工作。内容概要上,该代码能够处理BDD100K数据集的复杂标注信息,包括图像路径、类别标签、...

    yolov5训练bdd100k自动驾驶数据集模型文件

    一、Yolov5简介 YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,因其快速而准确的特点而广受欢迎。Yolov5是其最新版本,由 Ultralytics 团队开发,它在前几代的基础上进行了优化,提高了速度和精度。...

    intro-to-bdd-1

    **行为驱动开发(Behavior Driven Development,BDD)简介** 行为驱动开发是一种软件开发方法,它强调通过描述软件的行为来驱动开发过程。BDD的核心思想是将需求转化为可执行的规范,这些规范不仅团队成员可以理解...

    bdd-and-cucumber:介绍BDD和Cucumber的演示文稿

    **行为驱动开发(Behavior-Driven Development, BDD)与Cucumber简介** 行为驱动开发是一种敏捷软件开发的方法,它强调从用户、客户或非技术人员的角度来描述软件的行为。BDD的核心理念是通过用业务语言(通常称为...

    BDD_Driving_Model

    项目简介: 在BDD驾驶项目中,我们将自我驾驶的任务制定为未来的自我运动预测。 为了完成这项任务,我们与合作伙伴收集了,提出了FCN + LSTM模型,并使用tensorflow实现了该模型。 伯克利DeepDrive视频数据集(BDD-...

    掺硼金刚石电极(BDD),全球前8强生产商排名及市场份额调查数据.pdf

    #### 一、掺硼金刚石电极(BDD)简介 掺硼金刚石电极(BDD)是一种由金刚石材料制成,并通过掺入硼元素来调节其电学性质的新型电极材料。这种电极因其独特的物理化学特性而在许多领域展现出了巨大的应用潜力。BDD ...

    bddbot测试报告(使用方法)

    #### 一、bddbot简介与环境搭建 **bddbot**是一款著名的开源搜索引擎,主要用于网站爬取与信息检索。它能够帮助用户抓取指定网站的内容,并提供简单高效的搜索功能。 ##### 环境搭建步骤: 1. **安装JDK**: - *...

    learning-bdd:我只想通过验收测试来练习我的测试技能

    **验收测试驱动开发(BDD)简介** 验收测试驱动开发(Behavior-Driven Development,简称BDD)是一种软件开发方法,它强调以用户需求和期望为导向,通过协作和沟通来驱动软件设计和开发。BDD的核心理念是将业务领域...

    behavior-django:表现为Django的BDD集成

    1. **模型测试**:它允许开发者对Django模型的行为进行BDD测试,确保数据操作符合预期。 2. **视图测试**:通过模拟HTTP请求,验证视图函数或类的响应是否符合业务逻辑。 3. **URL配置测试**:可以检查URL配置是否...

    BDD_Sample_Tests:Cucumber(小Cucumber)

    **行为驱动开发(Behavior-Driven Development,BDD)与Cucumber简介** 行为驱动开发(BDD)是一种软件开发方法,它强调以用户的行为和需求作为驱动力,促进开发者、业务分析师和测试人员之间的沟通。BDD的核心是...

    KmTest:BDD风格的内核模式C ++单元测试框架

    ### 一、KmTest框架简介 KmTest 提供了一个面向对象的接口,用于定义测试用例和测试套件,其设计灵感来源于用户模式下的测试框架,如Google Test。BDD风格使得测试代码更加清晰地表达预期的行为,而不是具体的操作...

    lua-bdd:二元决策图库(Lua)

    这是二元决策图库的 Lua 实现,如 Henrik Reif Andersen 的“二元决策图简介”中所述。 有关使用示例,请查看测试套件(取决于 lunatest)。 编写代码是为了清晰而不是性能(尽管它确实在几秒钟内找到了 10-queens ...

    introduction_to_testing-repo:测试简介 - 练习库

    1. **RSpec**:RSpec 是 Ruby 社区广泛使用的 BDD(行为驱动开发)框架,它提供了自然语言般的语法来描述代码应该如何工作。例如,你可以使用 `describe` 和 `it` 关键字来定义测试场景和断言,这样可以更清晰地表达...

    cucumber-guice-1.1.4.zip

    1. `pom.xml` - Maven项目的配置文件,定义了项目依赖、构建目标、插件配置等信息。 2. `src/main/java` - 存放源代码,包括插件的主要实现类和其他辅助类。 3. `src/test/java` - 测试代码,用于验证插件功能的正确...

    behat-drupal-extension-源码.rar

    1. **Drupal Contexts**: 扩展提供了预定义的Context类,如`DrupalContext`,它们封装了Drupal特定的操作,如登录用户、访问路径、操作实体等。这使得编写与Drupal交互的测试场景变得简单。 2. **Drupal Bootstrap*...

Global site tag (gtag.js) - Google Analytics