首页 > 其他 > 详细

较优H圈matlab实现

时间:2016-10-11 21:02:02      阅读:296      评论:0      收藏:0      [点我收藏+]

%解决完备图中的较优H

clc

clear

w = [ inf 6 1 8 3 1 ;...        %权赋矩阵

     6 inf 1 1 6 9 ;...

     1 1 inf 3 6 7 ;...

     8 1 3 inf 1 2 ;...

     3 6 6 1 inf 1 ;...

     1 9 7 2 1 inf ] ;

v = [ 11 12 13 14 15 16 ;...   %两点之间的路径,如25表示从点2到点5

     21 22 23 24 25 26 ;...

     31 32 33 34 35 36 ;...

     41 42 43 44 45 46 ;...

     51 52 53 54 55 56 ;...

     61 62 63 64 65 66 ] ;

p = [ 12 23 34 45 56 61 ]    %保存某个H圈的每两点间的路径,H圈便是由这些小的路径构成的

 

W = zeros(1,6) ;

S=0;

for h = 1 : 6

   d= rem(p(h),10) ;

   c= (p(h) - d)/10 ;

  W(h) = w(c,d) ;

   S= S + W(h) ;

end

S

 

 

for i=1:1000

     x =  randperm(6) ;

     m = x(1) ;

     n = x(2) ;

     j = rem(p(m),10) ;

     i = (p(m) - j)/10 ;

     z = rem(p(n),10) ;

     y = (p(n) - z)/10 ;

    if ( w(i,j) + w(y,z) > w(i,y) + w(j,z) )

        s = 0;

        for b = 1 : 6

            if ( p(b) == v(i,y) | p(b) == v(j,z) | p(b) == v(y,i)| p(b) == v(z,j) )

                 s = 1 ;

                 break ;

            end

        end

        if s

            i = i + 1 ;

            break ;

        end

        p(m) = v(i,y) ;

        p(n) = v(j,z) ;

    end

 end

 

W = zeros(1,6) ;

S=0;

for h = 1 : 6

   d= rem(p(h),10) ;

   c= (p(h) - d)/10 ;

  W(h) = w(c,d) ;

   S= S + W(h) ;

end

p

S

较优H圈matlab实现

原文:http://www.cnblogs.com/xiaoyajiang/p/5950377.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!