I / nh ngha : Cy th hu hn , v hng , n thng , khng c chu trnh , c Yt nhEt 2 nh . II / TYnh chEt : 1 - nh l 1 : Nu H cy c N nh th H c cc tYnh chEt sau y : a) Thm vo H mt cnh n 2 nh bEt k khng kO nhau , H s xuEt hn chu trnh . b) Bt 1 cnh trong H th H khng n thng c) Ga 2 nh bEt k ca H un tn t 1 ng duy nhEt ( vy H th n) d) H c N-1 cnh 2 - nh l 2 : N th G n thng c N nh v N-1 cnh th G cy . Vy cy th n thng c chu s bng 0 ( suy t cng thc e ) 3 - Ghi ch : T 1 th c thO hnh thnh nhOu cy khc nhau ( g cc cy khung ca th ) . Trong s cc cy khung ca th , c 1 cy c to ra mt cch n gn nh sau : n 1 nh v n-1 nh cn ! S cy khung ca 1 th y N n-2 ( N s nh ) S cy khung ca mt th c hu hn nh mt s hu hn ,nn un tm c Yt nhEt 1 cy khung c tng d nh nhEt ( nguyn bn ). Ta g cy khung ny cy khung ngn nhEt . B ton tm cy khung ngn nhEt mt b ton gp trong thc t : Th d : Xy dng mng dy n tho n N thnh ph sao cho 2 thnh ph bEt k n c c v nhau v tng ng dy n ngn nhEt . b ton tm cy khung ngn nhEt . Ngc : Xy dng mng dy n tho n N thnh ph sao cho 2 thnh ph bEt k n c c v nhau v tng tn cy trn cc ng dy n n nhEt . b ton tm cy khung d nhEt . III / Thut ton Prm tm cy khung nh nhEt : 48 B c 1 : Kh tr - LEy 1 nh tu a vo tp nh ca cy . Kh tp nh ca cy = { }. Tp cnh ca cy C = ( Tp rng ) B c 2 : Gn nhn - V m nh k khng thuc , ta gn cho n nhn k( ,d
) trong
tn nh thuc ,kO v k , gn k nhEt , cn d khong cch ga
v k . Nu trong khng tm c nh
kO v k th gn cho k nhn k( 0 , ) . B c 3 : Kt nap - Chn nh k khng thuc tp , c nhn d nh nhEt , kt np k vo .Vy = + { k
} . Nhn ca k
k( ,d ) th kt np cnh ( , k
) vo tp cnh C . Vy C = C + { cnh ( , k ) } . G nh k va kt np 0 . Nu s nh ca bng N th kt thc , cn khng chuyOn sang bc 4 B c 4 : Sa nhn - V m nh k cha thuc c nhn k( , d ) m k kO v 0 - nh va c kt np vo tp nh bc 3 - ta sa nhn ca k theo nguyn tc sau : G d cung ( 0 ,k ) e Nu d > e th nh k c nhn m k( 0 , e )
e=15
0
Nhn m
k ( 0 ,15) +) 0 : va kt np vo , k : khng thuc
49
0 ( 0 ,1 0) k (,23 ) T u 11 Chuyn Tn H Ty Th d : Fe d u vo : PRIM.INT 6 0 16 3 12 0 0 16 0 12 0 7 0 3 12 0 13 16 10 12 0 13 0 0 5 0 7 16 0 0 16 0 0 10 5 16 0 Fe d u ra : PRIM.OUT ( 1, 3)= 3 ( 3, 6)= 10 ( 6, 4)= 5 ( 3, 2)= 12 ( 2, 5)= 7 Tong ga tr cay khung ngan nhat a 37 Uses Crt; Const F = 'prm.txt'; Fo = 'prm.out'; Max = 200; Var A : Array|1..Max,1..Max| of Byte; D : Array|1..Max| of Booean; C : Array|0..Max| of record x1,x2 : Byte; end; Nh : Array|1..Max| of record truoc,gatr : Byte; end; N,dd,socanh : Byte; _____________________________ Phn 3 : Cy - Cy khung ngn nhEt TDH 9/16/2014 9/16/2014 12 16 3 13 5 12 10 16 7 16 50 1 4 3 2 5 6 {canh : Integer;} {--------------------------------} Procedure DocF; Var f : Text; ,| : Byte; Begn Assgn(f,); Reset(f); Readn(f,n); For :=1 to n do Begn For |:=1 to n do read(f,a|,||); Readn(f); End; Cose(f); End; {--------------------------------} Procedure Napdnh1; Begn Fchar(d,szeof(d),Fase); d|1| := True; dd := 1; End; {--------------------------------} Functon Mn(x| : Byte): Byte; Var x,p, : Byte; Begn x := 0; p := 255; For :=1 to N do If d|| then If (p>a|,x||) and (a|,x||>0) then Begn x := ; p := a|,x||; End; Mn := x; End; {--------------------------------} Procedure Gannhan; Var x,x| : Byte; Begn For x|:=1 to N do If not d|x|| then Begn x := Mn(x|); If (x>0) and (A|x,x||>0) then Begn 51 T u 11 Chuyn Tn H Ty nh|x||.truoc := x; nh|x||.gatr:= A|x,x||; End Ese If x=0 then Begn nh|x||.truoc := 0; nh|x||.gatr:= 255; End; End; End; {--------------------------------} Procedure Ketnapthem; Var p,|,x| : Byte; Begn p := 255; For |:=1 to n do If not d||| then Begn If (nh|||.gatrp) then Begn x| := |; p := nh|||.gatr; End; End; d|x|| := True; Inc(socanh); c|socanh|.x1 := nh|x||.truoc; c|socanh|.x2 := x|; dd := x|; End; {--------------------------------} Procedure Suanhan; Var x| : Byte; Begn For x|:=1 to N do If (not D|x||) and (A|x|,dd|>0) then Begn If Nh|x||.gatr>A|x|,dd| then Begn Nh|x||.truoc := dd; Nh|x||.gatr:= A|x|,dd|; End; End; End; {--------------------------------} _____________________________ Phn 3 : Cy - Cy khung ngn nhEt TDH 9/16/2014 9/16/2014 52 Procedure Hencanh; Var ,p : Byte;f : Text; Begn Assgn(f,fo); Rerte(f);p:=0; For :=1 to n-1 do Begn p := A|c||.x1,c||.x2|+p; rte(f,'(',c||.x1:2,',',c||.x2:2,')=',A|c||.x1,c||.x2|:3,' ':3); End; rten(f); rten(f,'Tong ga tr cay khung ngan nhat a ',p); Cose(f); End; {--------------------------------} Procedure TT_Prm; Var Ok : Booean; Begn SoCanh := 0; Fchar(nh,szeof(nh),0); Napdnh1; Gannhan; Ok := Fase; Repeat Ketnapthem; If Socanh=N-1 then Ok:= True Ese Suanhan; Unt Ok; Hencanh; End; {--------------------------------} BEGIN Crscr; DocF; TT_Prm END. Phn 4 Tm ng ngn nhEt 53 T u 11 Chuyn Tn H Ty _____________________________ Phn 3 : Cy - Cy khung ngn nhEt TDH 9/16/2014 9/16/2014 54