好吧我不是在寻找如何在2d Graph上绘制项目,它只是图形表示预期输出需要
我有一个像
这样的清单a=[]
b=['c','d','e']
c=['a','b','d']
d=['a']
e=['b','a']
l=['g','r','p']
g=['r']
r=['g']
p=['l']
现在从上面可以清楚地看出b指的是c,d,e
a,b,c,d紧密相连,而l,g,r,p是相连的
任何人都可以告诉我一个算法(记住2d图片)如何将这些类似物品重新组合在一起。
以上只是一个例子。 该列表将动态创建
答案 0 :(得分:2)
你遇到过Graphviz吗?它有各种不同形式的图形布局的算法,我认为这样可以很好地布置上面的小例子。它还包括一些简单的GUI,允许您试验它支持的不同布局。
编辑:回应一些澄清:
如果您需要在图表中找到密集子图,即使它已完全连接,那么您正在寻找在网络中找到社区的算法。可以在this paper中找到最近开发的算法的示例,该算法在大图(200万个节点,代表社交网络)上有效地执行此操作。
答案 1 :(得分:1)
只是为了扩展Alex的答案,这里有一个graphviz用于图表的例子:
graph.dot:
digraph G
{
b -> c;
b -> d;
b -> e;
c -> a;
c -> b;
c -> d;
d -> a;
e -> b;
e -> a;
l -> g;
l -> r;
l -> p;
g -> r;
r -> g;
p -> l;
}
Graphviz的输出:
如果您只是想知道图表中的群集而不绘制它们,请使用this algorithm。