数学建模社区-数学中国
标题:
我是新手 请高手指点
[打印本页]
作者:
冰域逐梦
时间:
2012-8-19 16:15
标题:
我是新手 请高手指点
求生成树的广度搜索代码 死循环
请高手帮忙 谢谢
function x=bfs(A,b)
, x* D9 i, D, v
v=zeros(1,size(A,1)); % v(i)记录是否访问过第i个点
$ ?2 E' U4 C- t" t6 ]2 ~7 K
x=zeros(1,size(A,1)); % x存放生成树
; r8 n- O; F( M+ Q8 F q4 s% G. B
s=b; % s代表当前正在访问第s个点
* X2 H7 d0 Q7 i
x(b)=1; %从第一个点开始访问
* H, k' \7 Y3 X4 v7 a( d- j5 ?3 S. m
v(s)=1;
5 L& f* M# k, L, q3 N1 J
while sum(v)<length(v) %当向量v中所有变量为1时,算法结束
) s( N; } N; b6 g
t=find(A(s,:)==1); %t存放与s相连的点
+ q4 l$ R* a1 S' C5 b( Q& m* Q: L) ^
if isempty(t) %若当前访问点是孤立的,算法结束
) t# w$ Y1 A/ U* m
disp('生成树不存在');
. h7 J$ O# l$ n; M$ ]
break;
) P" @; F& l3 Q3 N- q, n
else
& K0 O1 u# {7 g. u/ w
for i=1:length(t)
9 Z0 [+ j4 g9 I! v: o
if v(t(i))==0
4 t9 k2 I- f$ p+ J7 P" A
v(t(i))=1;
: h& Y: g) t6 W. l: v
s=t(i);
3 {0 M$ e0 A5 R0 S3 K' v- l
x(s)=sum(v);
; ]& w3 i1 G' F6 w
end
! u( P$ C, {& S. a( Y1 o4 [! @ T
end
$ D. b% E; T' G) g5 G
end
: q5 P s5 |- z9 m- L3 B7 S9 B6 p/ `
end
复制代码
作者:
冰域逐梦
时间:
2012-8-19 16:16
笑脸那一行应该是 t=find(A(s,
==1); %t存放与s相连的点
作者:
冰域逐梦
时间:
2012-8-19 16:17
笑脸改成 冒号 右括号
作者:
darker50
时间:
2012-8-19 17:19
把代码的选中之后选择编辑器上面的这个符号“<>”就不会有表情出现了!!
作者:
冰域逐梦
时间:
2012-8-19 18:15
darker50 发表于 2012-8-19 17:19
: f) w4 F) I4 q1 z) K
把代码的选中之后选择编辑器上面的这个符号“”就不会有表情出现了!!
6 Z: p+ V3 [8 ^, W; z3 t6 t$ | t4 J
谢谢 那个 。。。。 我的问题你能解决吗
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5