我想要一种算法来消除循环有向图或主要是锦标赛的边,并输出一种边数最少的树状结构。
消除应基于侧面的重量,如下面的简单现实示例所述。
如果有三个朋友 A,B,C。以彼此之间借钱和还钱为例。
A 人必须转移 B 人 - 10 美元。B 人必须转移 C 人 - 20 美元。个人 C 必须转移个人 A - 20 美元。
在最终结算中,为了尽量减少彼此之间的转账次数,我们可以将上述内容重新安排为“B 人将向 A 人转账 - 10 美元”,一切都已解决。
我正在寻找一些算法,当给定每边的权重和方向时,它适用于任意数量的节点。
鉴于该图可以重新排列,并且该图很可能是一个“锦标赛”,其中每个节点都连接到图中的所有节点,那么我遵循的最佳方法是什么。