QQ登录

只需要一步,快速开始

 注册地址  找回密码
楼主: from911
打印 上一主题 下一主题

有关遗传算法

[复制链接]
字体大小: 正常 放大

0

主题

3

听众

41

积分

升级  37.89%

该用户从未签到

新人进步奖

11#
发表于 2006-8-22 21:33 |只看该作者
|招呼Ta 关注Ta
回复

使用道具 举报

13

主题

3

听众

53

积分

升级  50.53%

该用户从未签到

新人进步奖

回复

使用道具 举报

0

主题

0

听众

51

积分

升级  48.42%

该用户从未签到

新人进步奖

回复

使用道具 举报

0

主题

0

听众

51

积分

升级  48.42%

该用户从未签到

新人进步奖

任意两点间的最短距离dijkstra算法

%clear
%d=[0 9 inf 3 inf;9 0 2 inf 7;inf 2 0 2 4;3 inf 2 0 inf;inf 7 4 inf 0]
%算法:当某点被选做新顶点时,则此时的P值为原始起点到此点的最短距离。
function [d,path]=dijkstra(A)
% i 为起点,k为终点
P=zeros(length(A));
for i=1:length(A)  
    pb=zeros(length(A));%用来判断是否选过,选过为1,未选为0
    k=i;
   P(i,k)=0;
    pb(i,k)=1;
    T=inf*ones(length(A));
    e=sum(pb,2);
    while e(i,1)<length(A)
        c=find(pb(i,1:length(A))==0);%寻找没考察的点
        for x=1:length(c)
            T(i,c(x))=min(T(i,c(x)),(P(i,k)+A(k,c(x))));
        end
        B=c;
        if length(c)~=1    %比较选择最小值,及顶点做为新起点
            a=T(i,c(1));
            b=B(1);
            for m=2:length(c)
                if a>T(i,c(m))
                   a=T(i,c(m));
                   b=B(m);
                else continue;
                end
            end           
            k=b;       
            P(i,k)=a;
            pb(i,k)=1;
        else
            P(i,c(1))=T(i,c(1));
            k=c(1);        
           pb(i,k)=1;
        end
        e=sum(pb,2);
    end   
end
d=P;
%路径的表示
for i=1:length(P)
    for j=1:length(P)
        path{i,j}=strcat(num2str(i),'-',num2str(j));
    end
end
for i=1:length(P)
    for j=1:length(P)
        v(i,j)=j;
    end
end
for i=1:length(P)
    u=P(i,1);
    w=v(i,1);
    for j=1:length(P)-1
        for n=j+1:length(P)
            if P(i,j)>(i,n)
                u=P(i,j)(i,j)=P(i,n)(i,n)=u;
                w=v(i,j);v(i,j)=v(i,n);v(i,n)=w;
            else continue
            end
        end
    end
end
for i=1:length(P)
     for j=1:length(P)
         for n=1:j-1
             if d(v(i,1),v(i,n))+A(v(i,n),v(i,j))==d(v(i,1),v(i,j))
                 if v(i,1)~=v(i,n);
                     path{v(i,1),v(i,j)}=strcat(strrep(path{v(i,1),v(i,n)},strcat('-',num2str(v(i,n))),'-'),path{v(i,n),v(i,j)});
                 else v(i,1)==v(i,n);
                     path{v(i,1),v(i,j)}=path{v(i,n),v(i,j)};
                 end
             end
         end
     end
end

 % 结果:d =

 %0     7     5     3     9
 %7     0     2     4     6
 %5     2     0     2     4
 %3     4     2     0     6
 %9     6     4     6     0


%path =

   % '1-1'        '1-4-3-2'    '1-4-3'    '1-4'      '1-4-3-5'
   %'2-3-4-1'    '2-2'        '2-3'      '2-3-4'    '2-3-5' 
   % '3-4-1'      '3-2'        '3-3'      '3-4'      '3-5'   
   % '4-1'        '4-3-2'      '4-3'      '4-4'      '4-3-5' 
   % '5-3-4-1'    '5-3-2'      '5-3'      '5-3-4'    '5-5'   
     

回复

使用道具 举报

kant        

1

主题

3

听众

22

积分

升级  17.89%

该用户从未签到

新人进步奖

回复

使用道具 举报

8

主题

2

听众

45

积分

升级  42.11%

该用户从未签到

新人进步奖

回复

使用道具 举报

8

主题

2

听众

45

积分

升级  42.11%

该用户从未签到

新人进步奖

回复

使用道具 举报

haha_98        

0

主题

0

听众

18

积分

升级  13.68%

该用户从未签到

新人进步奖

回复

使用道具 举报

1

主题

2

听众

26

积分

升级  22.11%

该用户从未签到

新人进步奖

回复

使用道具 举报

7

主题

5

听众

449

积分

升级  49.67%

该用户从未签到

新人进步奖

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-7-24 02:50 , Processed in 2.637434 second(s), 103 queries .

回顶部