Программа 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); |