我在reddit上问了这个问题,但还没有收敛到解决方案。由于我的许多搜索都将我带到Stack Overflow,我决定尝试一下。这是我的问题的简单表述:
给定加权无向图G(V,E,w)和G中顶点S的子集,找到跨越S的最小/最大权重树。不允许添加顶点。基本模型的扩展是添加0权重的边,以及必须排除的顶点。这似乎与这里提出的问题类似:
Algorithm to find minimum spanning tree of chosen vertices
还可以更深入地了解边缘可以采用的值。每个边缘实际上都是一个相关概率,我可以用几种方式编码,所以我想问图的主要问题是:
至于实现,我安装了boost库,一旦我得到框架滚动这个问题,我可以处理如何多线程(如果适用),使用什么样的图,以及如何存储/缓存数据,因为顶点和边的数量将非常大。
更新 看看我试图解决的问题,它是NP完全的意义。我试图解决的现实世界问题涉及医学诊断;特别是当医学界正在考虑具体想法的问题时,他们需要退后一步并重新考虑他们如何到达那里。我想从我设计的程序中得到的是:
示例 流感样症状,红眼病,早期肺炎和一些糖尿病的迹象。有没有办法解决所有症状?是否有一些测试可以让它更容易确定?涉及哪些系统?
尝试将其映射到图形或多个图形似乎很自然,并将概率用作不同症状/条件之间的相关性。
答案 0 :(得分:0)
我见过你的问题模型,主要基于贝叶斯推理和模糊逻辑。贝叶斯推理网络表达原因和效果之间的关系,例如吸烟和肺癌。查看here以获得快速教程。您可以将模糊逻辑应用于该建模,以尝试考虑现实生活中的变化(因为不是每个人都患肺癌)。