Python 从带有权重的边列表中获取不相交集的算法是什么

Python 从带有权重的边列表中获取不相交集的算法是什么,python,algorithm,networkx,union-find,Python,Algorithm,Networkx,Union Find,我有一个带权重的边列表,我想从中得到不相交集。但是,我还希望跟踪集合中的权重。e、 g如果我有一个数据集 N1 N2 Weight a1 a2 1.0 a2 a3 0.5 a3 a5 1.0 a4 a8 1.0 a8 a9 0.8 它将产生两套 [(a1,1.0), (a2,1.0), (a3,1.0*0.5), (a5,0.5*1.0)] and [(a4,1.0),(a8,1.0), (a9,1.0*0.8)] 基本上,关系中的权重乘以权重。除了暴力强迫之外,还有什么有效的算法来跟踪这一

我有一个带权重的边列表,我想从中得到不相交集。但是,我还希望跟踪集合中的权重。e、 g如果我有一个数据集

N1 N2 Weight
a1 a2 1.0
a2 a3 0.5
a3 a5 1.0
a4 a8 1.0
a8 a9 0.8
它将产生两套

[(a1,1.0), (a2,1.0), (a3,1.0*0.5), (a5,0.5*1.0)] and [(a4,1.0),(a8,1.0), (a9,1.0*0.8)]

基本上,关系中的权重乘以权重。除了暴力强迫之外,还有什么有效的算法来跟踪这一点吗?选择的语言是python

我不太清楚你在问什么。但是,我相信您正在寻找图表的最新版本。在这种情况下,您可以提取与原始图形中不相交边集对应的2个子图,如下所示:

G = nx.Graph()
G.add_weighted_edges_from([('a1', 'a2', 1.0), ('a2', 'a3', 0.5), 
                           ('a3', 'a5', 1.0), ('a4', 'a8', 1.0), ('a8', 'a9', 0.8)])


graphs = list(nx.connected_component_subgraphs(G))
for g in graphs:
    print(g.edges(data=True))
结果

[('a1', 'a2', {'weight': 1.0}), ('a3', 'a2', {'weight': 0.5}), 
 ('a3', 'a5', {'weight': 1.0})]


我认为您需要查找如何查找图的连接组件。另外,你的图是有向的还是无向的?图是无向的。
[('a9', 'a8', {'weight': 0.8}), ('a8', 'a4', {'weight': 1.0})]