这个问题有点算法化,我不确定它是否适合放在SO上,如果不合适请告诉我。
我想实现一种在两个标记的星形图之间计算距离或相似性的函数。例如,我可以有以下两个图的表示:
A = [3 -1 0; 4 1 0; 2 0 1; 2 0 -1]
和
B = [3 -0.8 1 4 1.4 0.4; 2 0.1 1.9]
我的想法(实际上主要基于我正在阅读的一篇论文)是进行某种信念传播:假设A是观察到的图——每一行都是中心节点的一个邻居,第一列是标签,第二列是x位置,第三列是y位置(位置相对于中心节点)。B是我们数据库中的一个图,我想要看看它们有多接近或相似。
在论文中,他们计算了给定B的情况下观察到的图A的可能性,作为所有节点可能性的乘积。你会如何在matlab中高效地实现这个呢?
我很感激任何想法或启发,我不是在寻找解决这个问题的代码,我只是想从你们这些大师那里学习你们会如何处理这个问题。
谢谢,
J
回答:
我只是粗略地看了一下那篇论文,我认为你正在寻找的是贝叶斯网络中的推理算法。这些算法以计算复杂和难以实现而闻名,所以我建议你寻找现成的解决方案。谷歌搜索“matlab图形模型”会返回很多结果
— 编辑 —
评论中发布的网站看起来相当详细,但可能有点过时(2005年)。我想推荐一个不同的软件。我一直在使用MALLET,我觉得它相当不错。作者在NLP社区中非常有名。结果发现有一个扩展,允许任意图形结构——GRMM。用Java编写,开源。我自己没有使用过它。