如果是欧拉图,就直接找欧拉回路就行,如果不是的话,就是找所有奇度顶点,两两配对,就形成了欧拉图,权值设置为两点之间的最短路径(使用Floyd算法)。
设城市的个数为 n , dij 是两个城市 i 与 j 之间的距离, xij=0或1 (1表示走过城市 i 到城市 j 的路,0表示没有选择这条路)。则有
min ∑i≠jdijxij ,
s.t.⎧⎩⎨⎪⎪⎪⎪⎪⎪∑nj=1xij=1,∑ni=1xij=1,∑i,j∈sxij<=|s|−1,xij∈0,1,i,j=1,2,...,n,i≠j.i=1,2,...,n,(每个点只有一条边出去)j=1,2,...,n,(每个点只有一条边出去)2<=|s|<=n−1,s⊂1,2,..,n