我进行了几个实验,虽然没有记录,但似乎 FindEdgeCover[]
可以满足您的需求。
例如,请考虑以下情况:
h[list_] := CompleteGraph[4, EdgeWeight -> list]
FindEdgeCover[h@Range@6]
(*
-> {1->2,1->3,1->4}
*)
但是
FindEdgeCover[h@Reverse@Range@6]
(*
-> {1->2,3->4}
*)
当然,没有保修...
编辑
这里有一些代码可以使用不同的加权邻接矩阵进行实验。
adj = {{\[Infinity], 1, 1, 1, 1}, {1, \[Infinity], 2, 2, 2},
{1, 2, \[Infinity], 2, 2}, {1, 2, 2, \[Infinity], 2},
{1, 2, 2, 2, \[Infinity]}}
g = WeightedAdjacencyGraph[adj];
g = WeightedAdjacencyGraph[adj, VertexShapeFunction -> "Name",
EdgeLabels ->
MapThread[
Rule, {EdgeList@g, AbsoluteOptions[g, EdgeWeight] /. {_ -> x_} -> x}],
GraphHighlight -> FindEdgeCover[g]]
注:这段代码一点也不好,但我无法找到使用“EdgeLabels -> “EdgeWeight””的方式。我发布了这个问题,看看有没有人能够做到。