Кирсанов М.Н. Графы в Maple Физматлит 2007
> | #Программа 31 c.140 |
Остов наименьшего веса
> | restart: with(networks):with(LinearAlgebra): |
> | new(G): # Новый граф |
> | addvertex(seq(i,i=1..7),G): # 7 вершин |
> | r:=[4],[5,3],[7],[6,2],[1]: |
> | addedge([{3,7},{1,2},{6,1},{5,6}, {3,4},{2,7},{4,7},{1,7},{4,5},{6,7}], weights=[27,19,24,29,21,14,16,13,22,18],G); |
e1, e2, e3, e4, e5, e6, e7, e8, e9, e10
> | draw(Linear(r),G); # Рисунок исходного графа |
> | In:=incidence(G):# Матрица инцидентности |
> | A:=adjacency(G):# Матрица смежности |
> | B:=In.Transpose(In)-2*A:# Матрица Кирхгофа |
> | m:=Minor(B,1,1);# Число остовов |
> | tuttepoly(G,1,1); |
m := 79
79
> | T := spantree(G):# Остов минимального веса |
> | Ed:=edges(T); # Ребра остова |
> | MinWeight=add(eweight(Ed[i],T),i=1..6);# Сумма весов |
> | draw(Linear(r),T); |
Ed := {e10, e5, e6, e7, e8, e9}
MinWeight = 104