从海量数据中自动进行贝叶斯网络的构造是NP(非多项式时间可解)问题,也就是通常所说的难问题,需要耗费大量的时间在海量的各种可能结构中进行搜索。根据估算,其复杂度为O(n!)(n为结构所涉及到的变量数),这个复杂度是及其惊人的。所以在开发贝叶斯网推理引擎时,笔者根据参考书的提示采用了针对NP问题求解的蚁群算法。
蚁群算法和启发式算法的思路比较相似:保留以前搜索过的结构的信息用以对待搜索的结构进行筛选,其目的就是希望大大减少对无效结构的搜索,毕竟待搜索空间过于巨大,用少量的附加处理开销换取对搜索空间的大大缩减还是合算的。但和启发式算法不同的是,启发式算法完全依赖于对待解决问题的认识,其效果完全依赖于评价函数的好坏,这就使得其应用受到很大限制,尤其是在人们认识还不是很完善的领域,比如知识发现