SPIES系统综述
SPIES程序是一个专家系统,通过学习嫌疑犯的特征,它能够辨认他们。你往系统中输入的人越多,软件也就学得越多,也就越聪明。
程序建立一棵嫌疑犯树
程序用一棵二叉树记录数据。二叉树可以把一条数据与另外两条数据连接在一起,方法如下:
这是程序启动时的数据组成。二叉树中第一项(也叫节点)保存了一个问题:“嫌疑犯有胡子吗?”它与另外两个节点相连:一个代表yes,另一个代表no,yes与no节点中分别保存了一个嫌疑犯的名字。
为了辨认嫌疑犯,程序将利用这棵树来向用户提出一系列问题。如果找不到嫌疑犯,程序会要求用户输入这名新嫌疑犯的名字,和一些用于辨认他的信息。程序会把这些信息保存在二叉树中,随着程序学到的东西越来越多,二叉树会渐渐长高。
运行程序看看。
试驾
特工编译了SPIES程序,并进行了测试,结果如下:
第一遍运行时,程序未能辨认出嫌疑犯Hayden Fantucci。但当用户输入了嫌疑犯的详细信息,程序便获取了足够的信息,第二遍运行时就能辨认出Fantucci了。
真聪明。有问题吗?
有人在实验室中连续用了这个系统几个小时,他注意到,尽管程序看起来运行正确,但却多用了一倍存储器。
所以我们把你请来。源代码深处藏着一段代码,它在堆上分配存储器,但从不释放。你可以搬个椅子坐下来,然后通读所有代码,并祈祷能发现问题所在。通常情况下,很难发现存储器泄漏。
也许你应该跑一趟软件实验室……