Программа  17                        Кирсанов М.Н, 
Графы в Maple

 

Десятичная кодировка

>    restart:with(networks):

>    new(G): n:=9:  V:={$1..n}:

>    n2:=2*n-2: # Число цифр в коде

>    addvertex(V,G):

>    addedge(Path(7,4,1,2,3,6),G):

>    addedge(Path(2,5,8),G):

>    addedge({5,9},G):

>    draw(Linear([1,4,7],[2,5,8],[3,6,9]),G);

[Maple Plot]

>    v1:=3:   # Корень

>    V0:={v1}:# Множество вершин

>    i:=0:    # Счетчик элементов кода

>    S:={v1}: # Множество пройденных вершин

>    while i<n2 do

Движение от корня, кодировка единицами

>    vd1:=0:

>    while vd1<>1 do

>      v1:=min(op(neighbors(v1,G) minus S));

>      vd1:=vdegree(v1,G):

>      i:=i+1;

>      KOD[i]:=1;

>      S:=S union {v1};  

>    od:

Возвращение назад, кодировка нулями

>    V0:={v1}:

>    while nops(v1)=1 do

>     v10:=v1:

>     v1:=neighbors(v1,G) minus V0;

>     if nops(v1)=1 and nops(v1 intersect S)<>0 then

>       V0:=V0 union {v1[1]}:   

>       i:=i+1: KOD[i]:=0:

>       delete(edges({op(v10),op(v1)},G),G):

>       else v1:=v10: break;

>     fi;

>    od;

>    v1:=op(v1);# Начальная вершина для движения от корня

>    od:# Конец цикла i

>    Z2:=convert(KOD,list);

Z2 := [1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0]

>    Z10:=add(Z2[i]*2^(n2-i),i=1..n2);

Z10 := 61858