Программа 10 c.104 Кирсанов М.Н,
Графы в Maple
Компоненты связности
| > | restart: with(networks):with(LinearAlgebra): |
| > | n:=6: G:=void(n): # Пустой граф |
| > | addedge([[1,2],[2,1],[3,4],[4,3], |
| > | [5,6],[6,5],[1,3],[3,5]],G): # Дуги |
| > | m:=nops(edges(G)): # Число дуг |
| > | draw(Linear([5,3,1],[6,4,2]),G); # Рисунок |
| > | A:=adjacency(G); # Матрица смежности |
| > | M:=convert(evalm(add(A^k,k=1..m)),Matrix); |
| > | for i to n do |
| > | for j to n do |
| > | M[i,j]:=M[i,j]*M[j,i]; |
| > | od: |
| > | od: |
| > | ################################################### |
| > | NM:=Vector[row](n,(j) -> j):#Номера вершин |
| > | M:= << M>,<NM>>;#Номера - в последнюю строку |
| > | for j while nV1<>n do |
| > | n:=Dimension(M)[2];# |
| > | KMP[j]:={}: #Компонента связности j |
| > | V1:={}: #Номера исключаемых строк и столбцов |
| > | for i to n do |
| > | if M[1,i]<>0 then V1:=V1 union {i}: |
| > | KMP[j]:=KMP[j] union {M[n+1,i]} end; |
| > | od; |
| > | V1:=convert(V1,list): |
| > | nV1:=nops(V1): |
| > | if nV1<>n then |
| > | M:=DeleteRow(DeleteColumn(M,V1),V1);fi; |
| > | od: |
| > | ТаблицаКомпонент=op(KMP); |