Кирсанов М.Н. Графы в 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