最近,我尝试在 C++ 中从图形边缘生成树,但这会导致过多的 if 条件或 for 循环。我将注意力转向 python,它似乎在用最少的复杂代码生成树。我是 python 新手,这就是我寻求帮助的原因。论坛上已经发布了类似的问题,但它们并没有解决我试图解决的相同问题。所以问题是我有一些图边,比如 1---->2,成本为 10;1--->3 成本为 20 等。如果“1”是根节点,我想生成多个可能的树以及它们的成本。我想我的代码看起来像;
class Edge:
def __init__(v1, v2, v3):
self.v1 = v1
self.v2 = v2
self.v3 = v3
graph = [Edge(1, 2, 10), Edge(2, 4, 20)]
这是我应该得到的;
map = {}
map[1] = [Edge(1, 2)] Cost: 10
map[2] = [Edge(1, 2), Edge(2, 4)] Cost: 30
如果 2 是根节点;
map = {}
map[1] = [Edge(2, 4)] Cost: 20
如果有人可以帮助我,我会很高兴,因为过去 5 天我一直被这个问题困扰,似乎无法找到解决方案。虽然,我查看了 networkx 模块,但不知道如何使用它们的 API。:(
编辑:总而言之,给定一个森林,我如何生成多个独特的“树”?