Вот пример, который иллюстрирует, как автоматизировать выделение определенного пути через график.
Вот глупый граф, определенный списком правил ребер:
edges = Table[i -> Mod[1 + i^2, 10], {i, 0, 9}];
GraphPlot[edges, VertexLabeling -> True]
Вот путь через график, который мы хотели бы выделить.
path = {0, 1, 2, 5, 6, 7, 0};
Давайте разделим путь на ребра, учитывая тот факт, что мы хотим выделить ребро независимо от его ориентации.
edgesToHighlight = Partition[path, 2, 1];
edgesToHighlight = Join[edgesToHighlight,
Reverse /@ edgesToHighlight];
Мы пишем EdgeRenderingFunction
, который отображает ребро в одном из двух стилей, в зависимости от того, находится он в нашем списке или нет.
erf[pts_, edge_, ___] := If[MemberQ[edgesToHighlight, edge],
{Thick, Black, Arrow[pts, 0.1]}, {Darker[Red], Line[pts]}];
Наконец, мы показываем результат.
GraphPlot[edges, EdgeRenderingFunction -> erf,
VertexLabeling -> True]