Professional Documents
Culture Documents
Lab02 LienThong
Lab02 LienThong
MC TIU
Hon tt bi thc hnh ny, sinh vin c th: Duyt th bng BFS, DFS. Kim tra th lin thng. m s thnh phn lin thng ca th. p dng vo mt s bi ton thc t.
Bi tp p dng: Tm min lin thng trong nh, ng hm b mt, Bn cc vng oThi gian thc hnh: t 120 pht n 400 pht
TM TT
2 cch duyt th: DFS, BFS.
DFS procedure DFS(v) begin Thmnh(v); chaXt[v] = false; for u K(v) do if chaXt[u] then DFS(u); end BFS procedure BFS(v) begin QUEUE = ; QUEUE v; // Kt np v vo QUEUE chaXt[v] = false; while QUEUE do p QUEUE; Thmnh(p); for u K(p) do if chaXt[u] then QUEUE u; chaXt[u] = false; end; Chng trnh chnh begin for v V do chaXt[v] = true; for v V do if chaXt[v] then DFS(v);//BFS(v) end
Mt th v hng c gi l lin thng nu c ng i gia mi cp nh phn bit ca th. Thnh phn lin thng (TPLT) ca G l th con lin thng ti i ca G. th c hng gi l lin thng mnh nu c ng i t a ti b v t b ti a vi mi cp nh a v b ca th. th c hng gi l lin thng yu nu c ng i gia 2 nh bt k ca th v hng nn. Thut ton xc nh s TPLT
1. Ban u, mi nh c nh du l cha c ving thm. 2. Chn mt nh i bt k cha c ving thm, s dng mt hm ViengTham duyt nh i v tt c cc nh j c ni vi nh i. Trong qu trnh duyt, ta s nh du cc nh ny l c ving thm sau ny khng xt tr li na. Kt thc ln duyt ny, ta c mt min lin thng. c th d dng in li tng thnh phn lin thng, ta s dng nhn nh du cho bit mt nh s thuc min lin thng th my trong qu trnh duyt. 3. Tng bin m s thnh phn lin thng.
Trang
Nu vn cn mt nh no cha c duyt, ta quay li bc 2. 4. Nu s thnh phn lin thng l 1, in ra th lin thng. Ngc li, in ra s thnh phn lin thng. Nu mun in ra tng thnh phn lin thng, ta s dng nhn gn trn, cc nh c cng nhn s c xem l cng mt min lin thng.
Trong thut ton xc nh lin thng, ta cn nh nhn cc TPLT v m s TPLT, v vy trong thuc tnh ca lp GRAPH cn phi c:
NhanDinh[MAX]; // nhn cho cc nh, 0 l cha duyt //1, 2, l duyt v nh thuc min lin thng tng ng SoMienLienThong;
Cc thao tc cn thc hin: Duyt th, Xt lin thng, In cc thnh phn lin thng.
Chng trnh mu
int GRAPH::XetLienThong(void) { for (int i=0;i<SoDinh;i++)//Thao tc ny dng lm g? NhanDinh[i] =0; SoMienLienThong = 0; for (int i=0; i<SoDinh; i++){ if (NhanDinh[i]==0){//iu kin ny c ngha g? SoMienLienThong++;//Thao tc ny dng lm g? ViengTham(i, SoMienLienThong); } } return SoMienLienThong; } void GRAPH::InThanhPhanLienThong(void) { if(SoMienLienThong == 1){ printf("Do thi lien thong.\n"); } else{ printf("Do thi khong lien thong, co %d TPLT.\n", SoMienLienThong); for (int i=1; i<=SoMienLienThong; i++){ printf("Mien lien thong #%d:", i); for (int j=0; j<SoDinh; j++){ if (NhanDinh[j]==i){ //iu kin ny c ngha g? printf(" %d", j); } } Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010
Trang
printf("\n"); } } } void GRAPH::ViengTham(int i, int Nhan) { NhanDinh[i] = Nhan; for (int j=0; j<SoDinh; j++){ if((NhanDinh[j]==0)&&(a[i][j]||a[j][i])){ //iu kin ny c ngha g? ViengTham(j, Nhan); //Thao tc ny dng lm g? } } }
Yu cu 1. B sung v bin dch li chng trnh bi tp tun trc. 2. Chy chng trnh vi cc d liu sau
5 02040 2 0 -3 1 2 0 -3 0 2 2 41200 02200 5 01001 10100 01001 00001 10110 7 0010001 0001000 1000000 0100010 0000001 0001000 1000100
3. Gii thch ngha cc hm trong code mu v chi tit tng dng lnh. 4. Nu ta thay i code trong hm XetLienThong thnh
for (int i=0; i<n; i++){ if (NhanDinh[i]){ SoMienLienThong++; ViengTham(i, SoMienLienThong); } }
Trang
H.D: S dng li cu trc QUEUE ci t trong mn CTDL. 5. Nu d liu tng ln th hm ViengTham c th xy ra hin tng g? Gii quyt s c trn. H.D: S dng li cu trc STACK ci t trong mn CTDL.
BI TP THM
1. Xy dng cc hm xc nh lin thng mnh v yu trong th c hng. HD: th c hng gi l lin thng mnh nu c ng i t a ti b v t b ti a vi mi cp nh a v b ca th. th c hng gi l lin thng yu nu c ng i gia 2 nh bt k ca th v hng nn. 2. Bi ton ng hm b mt Trong cc lu i c chu u ngi ta thng xy dng cc ng hm b mt thot him trong cc trng hp khn cp. Cc ng hm ch c th vo t mt ca vo duy nht ti phng Trung tm v thot ra rt nhiu ca ra. Cc ca ra u nm ra lu i, do vy, nu thot ra c ra lu i th coi nh thot him. ngu trang, ngi ta cho o nhiu nhnh hm ct v ca vo gi. Ngoi ra, tng kh nng thot him, ngi ta cn xy dng cc ng hm giao nhau ti mt s v tr. nghim thu cng trnh, ch lu i cn kim tra xem t phng trung tm c th thot him qua h thng ng hm hay khng. Hy lp trnh gip ch lu i kim tra h thng trn. Bit rng lu i l mt hnh vung c chia li vung gm n dng, n ct. Trn ho , dng i ct j c ghi s 1 nu c ng hm, s 0 nu khng c ( gc trn tri c to (0, 0)). 2 ch c th thng nhau nu chng c chung cnh. D liu nhp vo t tp tin vn bn duongham.in gm: Dng u cha 3 s nguyn dng n ( 50), D, C (D, C l dng v ct ca phng trung tm). n dng tip theo, mi dng cha n s l cc s cc v tr tng ng trn ho . Ghi ch: cc s trn cng dng cch nhau bi khong trng.
Kt qu tm c ghi ra tp tin vn bn duongham.out. Dng u cha s m l s phi i qua, nu khng thot c th m = -1. Trong trng hp thot c, m dng tip theo, m dng tip theo: mi dng cha 2 s l s hiu dng ct ca cc phi i qua theo ng trnh t ca mt cch thot him. V d: DUONGHAM.IN 4 2 1 DUONGHAM.OUT 3
Trang
0 1 1 0 1 0 0 1 1 1 1 1 0 1 1 0 3. Bi ton Bn cc vng o Ln cn 4 v ln cn 8
2 1 2 2 3 2
Khi lm vic vi cc dng li k nh bn c, bn th ngi ta a ra khi nim 2 k nhau. C nhiu loi k nhau nh k nhau theo bc i con m, theo ng cho, theo ln cn 4, ln cn 8 y chng ta s tm hiu v k nhau theo ln cn 4 v ln cn 8. Hai bt k A v B c ta ln lt l (iA, jA) v (iB, jB) (i l dng, j l ct) c gi l k nhau theo ln cn 4 khi v ch khi |iA- iB| + |jA- jB| = 1 (tc l 4 xung quanh trn di tri phi l ln cn ca trung tm). Hai bt k A(iA, jA) v B(iB, jB) c gi l k nhau theo ln cn 8 khi v ch khi |iA- iB| 1 v |jA- jB| 1 (tc l 8 xung quanh l ln cn ca trung tm). Cc c th i n c vi nhau theo ln cn 4 c gi tt l mt min lin thng 4. Cc c th i n c vi nhau theo ln cn 8 c gi tt l min lin thng 8.
V d:
Cc mu xm ln lt l nhng k nhau theo ln cn 4 v 8 vi trung tm (mu en). 1 v 2 ( mu xanh) k nhau theo ln cn 4 (v d nhin theo ln cn 8 lun). Tng t 2 v 3 cng k nhau theo ln cn 4. 3 v 4 ch k nhau theo ln cn 8, khng theo ln cn 4. 1 v 3 cng k nhau theo ln cn 8. Cc 1, 2 v 3 to thnh mt min lin thng 4 v t 1 i c n 2, t 2 i c n 3 theo ln cn 4 (t 3 khng n 4 c theo ln cn 4). s 4 bn thn n l mt min lin thng 4. Nu xt theo lin thng 8 th c 4 (1, 2, 3, v 4) to thnh mt min lin thng 8. Yu cu Khi kho st cc o mt vng bin n, ngi ta ghi kt qu kho st li thnh mt bn nh phn trong s 0 cho bit bin v s 1 l t lin. Mt o chnh l mt min lin thng 4 cc s 1 trn bn . T mt bn cho trc, hy m s lng o ca vng bin. Dng u tin cha 2 s nguyn dng M v N (M, N 1000) cho bit s dng (M) v s ct (N) ca bn . Trang
M dng tip theo, mi dng cha N s nguyn dng (0 hoc 1) ng vi cc v tr l bin hoc t lin. Cc s trn cng mt dng cch nhau bi t nht mt khong trng hoc k t tab.
Hy vit chng trnh v xut ra file: dao.txt cha mt s nguyn dng duy nht cho bit s o tm thy c trn bn . V d:
Trang