ada*_*amk 6 algorithm expert-system
我有一个算法问题可以简化为这个任务:
假设我们有一系列n疾病和m症状.
对于每种疾病d和症状s,我们有三种选择之一:
s => ds => ~d该算法的目标是创建关于症状的是/否问题列表(甚至更好 - 问题的二叉树),其可以根据症状推断出确切的疾病.
任何对特定算法,相关软件工具甚至特定领域术语的引用都将非常受欢迎.
您的案例使用决策树:http://en.wikipedia.org/wiki/Decision_tree_learning
基本上找到最佳树(即在识别疾病之前将问题的平均数量降至最低)是NP难的.
您可以使用贪心算法,然后尝试对其进行优化(如果需要).
在每个步骤中,您希望尽可能减少仍然"可能"的死亡数量.
你处于树的顶端,所以你有三个可能的选择s,计算每个选项中的疾病数量:pc nc uc.
一方面你有pc另一方面nc,uc你不能说什么(你可以看看你的树的两个级别有一些信息,但现在我们不这样做).
所以最糟糕的情况是,你有pc/ nc + uc或pc + uc/ nc,选择s最小化最坏情况(即:一方很多,另一方只有少数).
你需要最小化abs( pc - (nc + uc)) + abs ( (pc+uc) - nc).
您现在s可以获得第一个问题,并且可以迭代地构建树.