10.5.4 谓词异常和可能世界
您可能会回想起在guess_it游戏中,只有当特定时间间隔内达到猜测数目时,持有编码的agent才会改变编码。在这个场景中,尝试猜测编码的agent面临两个可能世界:一个世界中的编码没有改变,另一个世界中的编码发生改变。PBS对这些情形有着如下的分解。
分解5:N个agent足以在2分钟内从四百万个编码的样本中找到正确的编码。
分解6:如果编码每15秒改变一次,需要4N个代理2分钟内从四百万个编码的样本中找到正确的编码。
ValidCode( )谓词未通过单元测试,因为它没有为分解6做准备。需要注意的是,如果agent非常幸运地在15秒之内猜对了代码,那么程序将会显得处于好的工作状态。但是当您依据PBS对应用程序进行评估时,必须为PBS中的每个谓词提供一个测试案例。每个谓词引入了一个或多个可能世界。可能世界的概念是从逻辑领域拿来的。可能世界被用来表达什么必然为真、可能为真或偶尔为真。可能世界模型背后的直观想法是在事件的真实(或当前)状态之外,还有其他多种可能的事件状态,或"世界"[Fagin et al.,1995]。可能世界是agent认为可能的结果,在本例中,就是编码被改变(世界1)或编码未被改变(世界2)。应用程序的PBS清楚地定义了agent或知识源将要在什么样的可能世界中运行。对于agent的每个可能的世界,都有可接受的代码集合供agent或知识源执行。另一方面,对于不可能的世界,不存在可接受的代码供agent执行。不可能世界产生谓词异常。
PBS中的谓词引入了应用程序或agent所处的可能世界是什么。谓词异常类代表了进入到不可能世界的场景。例如,对于编码每15秒改变一次,但没有新的agent加入以适应这种改变,这在PBS中是一个不可能世界。正是这个问题导致ValidCode( )谓词失败。您可以在单元测试中运用模型检测来发现并行程序中这类软件缺陷。