Программа 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; |
> | draw(Linear(op(S0)),H); |