知识卡片

仓库风格与黑板系统风格

普通读书笔记卡

内容

仓库风格由两种截然不同的功能组件构成:一个中央数据结构组件代表系统当前状态,一组相对独立的组件对这个中央数据存储进行操作,连接件就是仓库与独立组件之间的交互——按”谁触发处理”这个标准,仓库风格可分两个子类:若由输入流中的事务触发相应进程执行,就是传统的数据库型知识库;若由中心数据结构的当前状态触发进程执行,就称为黑板知识库。也就是说,黑板系统风格本质上是仓库风格的一个”状态触发”子类,而非一个完全独立的风格。黑板系统尤其适合需要解决冲突、处理不确定性、把原始数据一步步转换为高层结构的问题(如图像/语音/语言识别),这类问题的共同特点是找不到确定的分解策略、各子问题需要不同的知识表达方式和求解模型。黑板系统由三部分组成:知识源(分离独立、依赖应用的知识包,只通过黑板交互)、黑板数据结构(问题求解状态数据,按应用组织成层次结构,被知识源不断修改直到问题得解)、控制器(完全由黑板状态驱动,一旦某个知识源可用就适时响应)——运行时每当有新输入/新结果/新状态写入黑板,中心控制组件就评价黑板信息并协调各知识源工作,操作次序不是预先确定的,而是由问题求解的进行状态决定的。仓库风格的共同优点是便于模块间数据共享、方便添加更新删除模块、避免知识源重复存储;共同缺点是需要同步/加锁机制保证数据结构完整性一致性。黑板系统额外的优点是知识源可重用、支持容错性健壮性;额外缺点是不同知识源对共享数据结构达成一致的代价较高,修改黑板结构要考虑所有代理。典型案例是HEARSAY-II自然语言处理系统,黑板是一个6-8级层次结构,每层从相邻低层抽取信息,知识源分别负责信号分割、音素识别、候选字产生、句法分类推测等任务。

参考来源

- 位置:《软件架构理论与实践》第4章《软件架构的风格与模式》"4.3.8 仓库风格"及"4.3.9 黑板系统风格"节(源文件:_epub-src/OEBPS/text00034.html) - 结论依据:原文明确说明"如果由输入流中事务触发系统相应的进程执行,这种知识库是传统的数据库型知识库;如果由中心数据结构的当前状态触发系统相应的进程执行,这种知识库称为黑板知识库",把黑板系统定性为仓库风格的一个子类,并进一步说明黑板系统的知识源/黑板数据结构/控制器三部分组成,直接支撑本卡片结论。 - 原始内容:控制方式的选择将仓库风格分成了两个主要的子类:如果由输入流中事务触发系统相应的进程执行,这种知识库是传统的数据库型知识库;如果由中心数据结构的当前状态触发系统相应的进程执行,这种知识库称为黑板知识库。