我正在做一个关于寻找集群的小型python项目。我已阅读http://eddmann.com/posts/depth-first-search-and-breadth-first-search-in-python/并在我的代码中使用深度优先搜索来生成群集列表,但现在我想在连接两者后找到一个新点来连接两个群集。
假设我有:
graph1 = {'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])
'G': set(['H', 'I']),
'H': set(['G'),
'I': set(['G', 'J']),
'J': set(['I'])}
使用深度优先搜索功能,我可以轻松找到两个独立的群集[A,B,C,D,E,F]
和[G,H,I,J]
。
现在假设我有一个新元素'K':set(['F','G'])
,所以K连接到F和G.由于点K,这两个集群现在连接在一起形成一个新的大集群[A,B,C,D,E,F,G,H,I,J,K]
。如何系统地使用深度/广度优先搜索或其他算法(因为我将继续添加新点并测试新点是否可以加入甚至组合任何现有聚类)?
感谢