Программа 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);                     # Рисунок

[Maple Plot]

>    A:=adjacency(G);             # Матрица смежности

A := Matrix(%id = 151042232)

>    M:=convert(evalm(add(A^k,k=1..m)),Matrix);

M := Matrix(%id = 152099456)

>    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>>;#Номера - в последнюю строку

M := Matrix(%id = 152111692)

>    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);

`ТаблицаКомпонент` = TABLE([1 = {1, 2}, 2 = {3, 4}, 3 = {5, 6}])