判定表和判定树

在加工说明中,除常使用的结构化语言外,对于一些较复杂的多条件的多组合判断处理,还经常用到判定表和判定树。对于描述这种依据多条件组合的判断结果来决定在多目标动作中所采取的策略的处理,采用结构化语言的叙述的方法是不合适的,容易造成处理结构复杂,使没有计算机专业知识的客户难于理解。而采用表格说明的形式,却往往可将复杂的过程描述得逻辑清晰,不需专门知识即使人一目了然。判定表和判定树(又称决策表和决策树)是描述具有复杂逻辑关系的多条件判断、多目标动作的广为使用的形式化工具。

(1)判定表

在判定表中,条件和操作(即目标动作或行动)之间的逻辑关系被明确易懂地表达出来。一个判定表由“条件定义”、“行动定义”“条件取值” “行动决策”四个部分组成。其结构如图 2—3—3 所示。

判定表和判定树 - 图1

其中“条件定义”部分自上而下列出了判断中所用的各种条件,条件的上下位置可以交换,无严格的次序要求。“行动定义”部分也由上而下列出了可采取的所有动作,排列的顺序也没有严格要求。“条件取值”和“行动决策”部分依次列出具体的条件取值数据和所选定的操作动作,其排列位置应按处理情况的“条件—行动”严格对应。

下面通过例子来说明判定表的绘制过程。

例 2-3-2.一般图书馆在读者借书时,就告知读者还书日期。图书馆自动化系统应有根据借书日期和借书期限计算还书日期的功能。设某馆借书期限为 1 个月,则一般的还书月份可为借书月份加 1 个月,还书日仍为借书日。

但以上计算方法显然存在许多问题。首先,若借书月为 12 月份,则还书

月份应为 1 月份而不是 13 月份;还书日期还应该是一个存在的日期,如不能

是 2 月 30 号或 9 月 31 号。同时,还书日期还应是图书馆的工作时间,若图

书馆 10 月 1 日放假闭馆,则不应让 9 月 1 日借书的读者于 10 月 1 日来还书。

考虑各种可能的还书日期情况,并假设图书馆每周工作 7 天,星期六和

星期日不休息,则可列出如表 2-3-1 所示的分析。

表 2-3-1 还书日期分析

借书日期 还书日期

1.28 ~ 2.1

3.1

3.31 ~ 4.2

5.3

5.31

7.1

8.31 ~ 9.2

10.3

10.31

12.1

12.1 ~ 12.2

1.3

其它

(月+ 1 ) MOD ( 12 )

注:假设图书馆每周工作 7 天

根据以上分析,可直接得出还书日期判定表。详见表 2—3-2。

表 2-3-2 确定还书日期的判定表

借 书日期

1.29 ~ 2.1

3.31 ~ 4.2

5.31

8.31 ~ 9.2

10.31

12.1 ~ 12.2

其它

还 书

日期

3.1

5.3

7.1

10.3

12.1

1.3

(月+ 1 )

MOD12

  1. 判定树

判定树的作用和判定表相同,它们之间的区别仅在于判定树以树形结构表示条件和动作,可以认为是判定表的一种变型。两者本质上是一样的。由于判定树采用的是图形表示形式,因而更具示意性、直观性和引导性,更易于问题的表达和理解。具体应用时,可根据自己的习惯选择使用。

判定树的基本结构是一棵从左向右生长的树。其树根在左边,表示加工或所要解决的问题。从左到右的每一列(最后一列除外),对应一类判断条件,自上而下,按对应关系写出其所有取值,位置在右边的判断列,其所有条件取值要根据在其左边的判断列的取值个数重复多次。最后一列是对应的目标动作。如图 2—3—4 所示。

判定表和判定树 - 图2

结构化语言、判定表、判定树这三种加工说明方法,各自有其优点和缺点:

①判定表、结构化语言形式化程度高,便于机器理解,容易由计算机自动生成程序。

②判定树以图形方式表达,形象直观,易于人们理解。

③判定表的可验证性强。并能简化判定和决策,提高了决策效率。