使用networkX:
import networkx as nxG1=nx.Graph()G1.add_edges_from([("a","b"),("b","c"),("c","d"),("d","e"),("f","g")])sorted(nx.connected_components(G1), key = len, reverse=True)
给予:
[['a', 'd', 'e', 'b', 'c'], ['f', 'g']]
您现在必须检查最快的算法…
OP:
这很棒!我现在在我的PostgreSQL数据库中。只需将对组织到一个两列的表中,然后用于
array_agg()传递给PL /
Python函数
get_connected()。谢谢。
CREATE OR REPLACe FUNCTION get_connected( lhs text[], rhs text[]) RETURNS SETOF text[] AS$BODY$ pairs = zip(lhs, rhs) import networkx as nx G=nx.Graph() G.add_edges_from(pairs) return sorted(nx.connected_components(G), key = len, reverse=True)$BODY$ LANGUAGE plpythonu;
(注意:我编辑了答案,因为我认为显示此步骤可能对附录有帮助,但评论太久了。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)