Программа 24, с. 127           Кирсанов М.Н. Графы в Maple ,   М.: Физматлит 2007

Топологическая сортировка сети

>    restart: with(networks):

>    new(G):V:=$1..9: addvertex([V],G):

>    E:=[[1,2],[1,3],[1,7],[2,7],[3,7],[4,1],[4,5],[4,8],

>    [5,2],[5,3],[5,6],[6,7],[8,6],[8,3],[8,2],[9,1],

>    [9,5],[9,7],[9,8]]:# Дуги

>    addedge(E,G):draw(G);H:=duplicate(G):

>    S0:=[]:

>    while NV<>0 do

>      S1:=[]:

>      for v in vertices(G) do

>       if indegree(v,G)=0 then

>        S1:=[op(S1),v];

>       fi;#Множество вершин одного уровня

>      od;

>      if nops(S1)=0 then print("Сеть содержит контур"); break  fi;

>      S0:=[op(S0),S1];# Добавляем уровень

>      delete(S1,G):   # Удаляем вершины

>      NV:=nops(vertices(G))# Число вершин

>    od:

>    S0;

[Maple Plot]

[[4, 9], [1, 5, 8], [2, 3, 6], [7]]

>    draw(Linear(op(S0)),H);

[Maple Plot]