QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1832|回复: 5
打印 上一主题 下一主题

求【图论】大神帮忙看看这个【dijkstra】编程!

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

2

主题

6

听众

176

积分

升级  38%

  • TA的每日心情
    开心
    2013-10-6 11:33
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    890

    群组2013年国赛赛前培训

    群组2013年数学建模国赛备

    群组数学建模算法之matlab

    跳转到指定楼层
    1#
    发表于 2013-9-4 20:22 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    40体力
    代码贴过来了,高额悬赏。比较着急,请各位帮帮忙吧!运行一下,成功必重谢!
    n=100;           
    w=ones(n)+inf;
    for i =1:n
          w(i,i)=0;
    end
    A=100./[90 90 90 90 50 90 90 90 90;
    90 90 90 90 50 50 110 110 110;
    90 90 50 50 90 90 110 110 110;
    50 50 90 90 50 50 50 90 50;
    90 90 110 110 110 110 110 110 90;
    90 90 90 90 90 90 90 90 50;
    50 90 110 110 110 90 90 90 90;
    50 90 90 90 90 90 50 50 50 ;
    90 110 110 110 110 90 90 50 50;
    110 130 130 130 130 130 130 130 130];
    B=100./[90 90 110 90 90 90 110 90 90 110;
       90 90 110 50 50 90 90 90 110 90;
       50 50 110 50 50 50 50 50 110 50;
       90 50 110 90 50 90 50 50 50 50;
       90 90 110 90 90 90 90 90 50 50;
       50 90 110 90 50 90 90 90 50 130;
       50 90 90 90 90 110 90 50 50 130;
       50 90 90 90 50 110 90 90 90 130;
       90 110 90 90 50 50 50 90 90 130];
    for a=0:9
    for b=1:9
        w(90-a*10+b,90-a*10+b+1)=A(a+1,b);
        w(91-b*10+a,101-b*10+a)=B(b,a+1);
       end
    end
    w;%求得w为邻接矩阵

    V = [1:100]
    w;
    L(V(i)) = inf; L(V(1)) = 0;
    S = [];
    while ~ismember(V(100),S)
          U =setdiff(V,S);
          u=U( L(U)==min(L(U)) );
        S = [S u];
        for v = U
            if  L(u) + w(u,v) < L(v)
               L(v) = L(u) + w(u,v);
               parent(v) = u;
            end
        end
    end


    if parent(V(100)) ~= 0
       t = V(100); path = V(100);
       while t ~= a
           p = parent(t);
           path = [p path];
           t = p;
       end
    end
    L, path

    现在卡在

    Error using ==> plus
    Matrix dimensions must agree.

    Error in ==> a1 at 52
            if  L(u) + w(u,v) < L(v)
    L(u)应该是一个数啊,为什么不能加?!

    最佳答案

    madio 查看完整内容

    改了一下,能出结果了,不知道是不是你想要的
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    madio        

    3万

    主题

    1310

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    1. n=100;           
    2. w=ones(n)+inf;
    3. for i =1:n
    4.       w(i,i)=0;
    5. end
    6. A=100./[90 90 90 90 50 90 90 90 90;
    7. 90 90 90 90 50 50 110 110 110;
    8. 90 90 50 50 90 90 110 110 110;
    9. 50 50 90 90 50 50 50 90 50;
    10. 90 90 110 110 110 110 110 110 90;
    11. 90 90 90 90 90 90 90 90 50;
    12. 50 90 110 110 110 90 90 90 90;
    13. 50 90 90 90 90 90 50 50 50 ;
    14. 90 110 110 110 110 90 90 50 50;
    15. 110 130 130 130 130 130 130 130 130];
    16. B=100./[90 90 110 90 90 90 110 90 90 110;
    17.    90 90 110 50 50 90 90 90 110 90;
    18.    50 50 110 50 50 50 50 50 110 50;
    19.    90 50 110 90 50 90 50 50 50 50;
    20.    90 90 110 90 90 90 90 90 50 50;
    21.    50 90 110 90 50 90 90 90 50 130;
    22.    50 90 90 90 90 110 90 50 50 130;
    23.    50 90 90 90 50 110 90 90 90 130;
    24.    90 110 90 90 50 50 50 90 90 130];
    25. for a=0:9
    26. for b=1:9
    27.     w(90-a*10+b,90-a*10+b+1)=A(a+1,b);
    28.     w(91-b*10+a,101-b*10+a)=B(b,a+1);
    29.    end
    30. end
    31. w;%求得w为邻接矩阵

    32. V = [1:100]
    33. w;
    34. L(V(:)) = inf; L(V(1)) = 0;
    35. S = [];
    36. while ~ismember(V(100),S)
    37.       U =setdiff(V,S);
    38.       u=U( L(U)==min(L(U)) )
    39.     S = [S u(1)];
    40.     for v = U
    41.         if  L(u(1)) + w(u(1),v) < L(v)
    42.            L(v) = L(u(1)) + w(u(1),v);
    43.            parent(v) = u(1);
    44.         end
    45.     end
    46. end


    47. if parent(V(100)) ~= 0
    48.    t = V(100);
    49.    path = V(100);
    50.    while (t ~= a) && (t~=0)
    51.        parent(t);
    52.        p = parent(t);
    53.        path = [p path];
    54.        t = p;
    55.    end
    56. end
    57. L, path
    复制代码
    改了一下,能出结果了,不知道是不是你想要的
    数学建模社会化
    回复

    使用道具 举报

    小乱tx        

    2

    主题

    6

    听众

    176

    积分

    升级  38%

  • TA的每日心情
    开心
    2013-10-6 11:33
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    890

    群组2013年国赛赛前培训

    群组2013年数学建模国赛备

    群组数学建模算法之matlab

    回复

    使用道具 举报

    小乱tx        

    2

    主题

    6

    听众

    176

    积分

    升级  38%

  • TA的每日心情
    开心
    2013-10-6 11:33
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    890

    群组2013年国赛赛前培训

    群组2013年数学建模国赛备

    群组数学建模算法之matlab

    madio 发表于 2013-9-4 20:22
    改了一下,能出结果了,不知道是不是你想要的

    完全正确,我的程序问题出在哪里啊?麻烦指点一下!
    回复

    使用道具 举报

    madio        

    3万

    主题

    1310

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    你可以按照错误去寻找,先把一些矩阵的中间结果显示出来,看看中间结果是否和你预期的一样,你会发现
    L(V(i)) = inf;肯定有问题,这里的i并没有赋值,这一条可能只把某个成员的值变为inf了,与我们的预期不一致,然后改了错误继续查

    点评

    小乱tx  多谢版主!原来问题在这!  详情 回复 发表于 2013-9-10 22:12
    数学建模社会化
    回复

    使用道具 举报

    小乱tx        

    2

    主题

    6

    听众

    176

    积分

    升级  38%

  • TA的每日心情
    开心
    2013-10-6 11:33
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    自我介绍
    890

    群组2013年国赛赛前培训

    群组2013年数学建模国赛备

    群组数学建模算法之matlab

    madio 发表于 2013-9-10 06:04
    你可以按照错误去寻找,先把一些矩阵的中间结果显示出来,看看中间结果是否和你预期的一样,你会发现
    L(V( ...

    多谢版主!原来问题在这!
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-5-25 06:56 , Processed in 1.718946 second(s), 82 queries .

    回顶部