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