zoukankan      html  css  js  c++  java
  • 黑板模式分析

    定义:

    黑板模式是一种常用的架构模式,应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理。就好像多位不同的专家在同一黑板上交流思想,每个专家都可以获得别的专家写在黑板上的信息,同时也可以用自己的分析去更新黑板上的信息,从而影响其它专家。

    特定场景:

    可用于非确定性问题求解,启发式解决过程,具有可维护性,可重用性。但是不能确保期望结果,效率低下,回退,不支持并行,共享空间的访问需要同步。

    一个问题:

    解决没有可行而确定的解决方案将原始数据转换为高级数据结构(如图表或英语词组)。存在这种问题的领域包括视觉识别、图像识别、语音识别和监视等。这种问题具有如下特点:可分解成多个子问题,但每个子问题都属于不同的专业领域。 

    对于这种问题,影响其解决方案的作用力如下。 
    - 不可能在合理的时间内遍历整个解空间。 
    - 鉴于领域不成熟,可能需要对同一个子任务尝试不同的算法。 
    - 子问题的算法各不相同。 
    - 输入、中间结果和最终结果的表示方式各不相同,而不同算法是根据不同范式实现的。 
    - 一个算法通常使用另一个算法的结果。 
    - 涉及不可靠的数据和近似解。 
    - 算法的执行顺序不确定时还可能要求支持并行性。

    解决方案:

    黑板系统主要由以下三部分组成。
    (1)知识源:包含独立的、与应用程序相关的知识,知识源之间不直接进行通讯,
    它们之间的交互只通过黑板来完成。
    (2)黑板数据结构:按照与应用程序相关的层次来组织并解决问题的数据,知识源
    通过不断地改变黑板数据来解决问题。
    (3)控制:完全由黑板的状态驱动,黑板状态的改变决定了需要使用的特定知识。

    实现 (语音识别)

    实例:

    例如语音识别,首先从开发语音识别这功能的角度而言,对于录入的语音具有不确定性,系统有可能无法识别,所以需要不断地扩充语言包(例如你说一句普通话能够识别,但是说一句家乡话就可能无法识别),所以满足黑板模式的适用条件。其次对于不同的语言都需要特定的语言专家,这些专家精通的语言有很大差异,语言包便是知识源,而编写每个语言包的专家便是控制的部分。

    实际应用:

    A 利用数据库

    利用数据库充当黑板,不同的应用共享数据库中信息,并且可以更新数据信息。这也是最常见的实现方式。

    特点:

    1 便于实现信息的查询,筛选和统计,这方面关系数据库提供了SQL 92的强大支持。

    2 不能用于较高实时性要求的环境,这种实现是工作在“拉模式”下的,并且高频率的访问数据库会导致严重的系统性能问题。

    B 利用发布—订阅模式

    这种实现方式通常采用消息队列作为黑板,队列工作在主题模式(Topic),专家作为队列的订阅者,同时可以向队列发送消息,消息会被发送至所有订阅者。以上过程实现了专家间的信息交流。

    特点:

    1 可以有效应用于实时性要求较高的系统,这种实现工作在“推模式”下。

    2 难于实现信息的统计分析,不像实现方式一那样可以通过SQL支持,这些工作必须开发者自己完成。

    4.这种模式对于没有确定解决方案策略的问题是有用的。黑板模式由3个主要组成部分组成。

    • 黑板——包含来自解决方案空间的对象的结构化全局内存
    • 知识源——专门的模块和它们自己的表示
    • 控制组件——选择、配置和执行模块

    所有的组件都可以访问黑板。组件可以生成添加到黑板上的新数据对象。组件在黑板上查找特定类型的数据,并通过与现有知识源的模式匹配来查找这些数据。

  • 相关阅读:
    孤儿进程与僵尸进程
    python with as的用法
    工作目录与os.getcwd()
    内置模块
    迭代器,生成器
    表达式,语句
    字符流
    字节流
    File
    触发器的操作
  • 原文地址:https://www.cnblogs.com/xulei11-/p/9099019.html
Copyright © 2011-2022 走看看