如何求图的最短距离
mathematica吧
全部回复
仅看楼主
吧务
level 11
wshzh1966 楼主
CNum = 5;
PNum = 10;
lis1 = Flatten@
Table[Thread[
Subscript[t, n] -> Array[Subscript[c, n, #] &, PNum]], {n,
CNum}];
lis2 = Flatten[
Outer[Rule, Sequence @@ #] & /@
Partition[Table[Array[Subscript[c, n, #] &, PNum], {n, CNum}], 2,
1]];
lis = Join[lis1, lis2];
g = Graph[lis, VertexLabels -> "Name",
GraphLayout -> "LayeredDigraphEmbedding",
GraphHighlight -> {Subscript[c, 1, 2] -> Subscript[c, 2, 9],
Subscript[c, 2, 9] -> Subscript[c, 3, 3],
Subscript[c, 3, 3] -> Subscript[c, 4, 5],
Subscript[c, 4, 5] -> Subscript[c, 5, 2]},
GraphHighlightStyle -> "Thick",
EdgeWeight -> RandomReal[1, Length@lis]]
我现在想求的是从 "c_ (1, 几)" 走到 "c_ (CNum, 几)", 并使得两种cost的计算的和最小
举了例子就是从c_ (1, 2) ->
c_ (2, 9) -> ... -> c_ (5, 2)。并且使得这个距离:cost1 (红色线条距离的和) +
(t1 -> c_ (1, 2)) +
(t2 -> c_ (2, 9)) + ... + +(t5 ->
c_ (5, 2)) 的距离最短 \
但是看起来FindShortestPath好像不能解决这个问题,因为不是单纯点到点的距离而是某一段到某一段的距离的距离最小
这个可以用Mathematica解决吗?
2018年08月31日 02点08分 1
吧务
level 11
wshzh1966 楼主
如果考虑t就是这样 不仅有前一个图的红线 同时也要考虑t指向c的那些线的距离
2018年08月31日 02点08分 2
吧务
level 15
……说实话,仔细读了两遍还是没看明白你要求啥。
2018年09月01日 05点09分 4
吧务
level 12
动态规划吧
2018年09月01日 06点09分 5
1