Можно еще в MIP посчитать:
(код (gmpl))
Код:
param num_nodes := 5;
param num_arcs := 5;
set nodes:= 1..num_nodes;
set arcs := 1..num_arcs;
var inc{n in nodes, a in arcs}, binary;
param deg{n in nodes};
s.t. arc_rule{a in arcs}: sum{n in nodes} inc[n, a] = 2;
s.t. degs{n in nodes}: sum{a in arcs} inc[n, a] = deg[n];
solve;
printf 'node; arc \n' > 'res.txt';
printf{n in nodes, a in arcs: inc[n, a] > 0} '%2d; %2d \n', n, a >> 'res.txt';
data;
param deg:=
1 2
2 2
3 2
4 2
5 2
;
Чего-то выдает:
(результат)
Код:
node; arc
1; 1
1; 2
2; 1
2; 2
3; 3
3; 5
4; 4
4; 5
5; 3
5; 4