Можно еще в  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