Кирсанов М.Н. Графы в Maple M.: Физматлит 2007 

>    #Программа 35 c. 145

Задача коммивояжера (NVA)

>    restart: with(networks): new(G):  

>    V:=[a,b,c,d,f,g]:   n:=nops(V):

>    addvertex(V,G):addedge({[a,b],[b,c],[c,d],[d,f],[f,a],

>                             [a,f],[f,d],[d,c],[c,b],[b,a],

>                             [g,a],[g,b],[g,c],[g,d],[g,f], [b,g],[c,g]},

>    weights=[3,8,1,1,3, 1,3,8,3,3,3,3,3,5,4, 3,1],G):

>    draw(G);

>      G1:=duplicate(G):

>    a0:=b:# Начальная вершина

>    a1:=a0: sw:=0:

>    s:=[a0]:

>    for k to n-1 do

>     for v in incident(a1,G1,Out) do

>       if eweight(v,G1)=min(op(eweight([op(incident(a1,G1,Out))],G1)))

>       then u:=v; sw:=sw+eweight(v,G1);break;fi;

>     od:

>     a2:=ends(u,G1)[2];

>     delete(a1,G1):

>     a1:=a2:s:=[op(s),a2]:

>    od:

>    sw:=sw+eweight(op(edges([a2,a0],G)),G);#Сумма

>    s;# Контур

[Maple Plot]

sw := 19

[b, a, f, d, c, g]