Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

LAB 02: TNH LIN THNG CA TH

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.

Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

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.

NI DUNG THC HNH C bn


Sinh vin c k pht biu bi tp v thc hin theo hng dn: S dng li lp GRAPH thc hnh tun trc, cho trc mt th v hng, sinh vin kim tra th c lin thng khng v nu khng th c bao nhiu thnh phn lin thng, cho bit c th cc nh trong tng thnh phn lin thng Phn tch int int

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); } }

th kt qu c g thay i, gii thch l do. 5. Nu ta thay i code trong hm XetLienThong thnh


for (int i=0; i<n; i++){ if (NhanDinh[i]==0){ ViengTham(i, SoMienLienThong); SoMienLienThong++; } }

th kt qu c g thay i, gii thch l do. 6. Nu ta thay i code trong hm XetLienThong thnh


for (int i=0; i<n; i++){ SoMienLienThong++; if (NhanDinh[i]==0){ ViengTham(i, SoMienLienThong); } Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

Trang

th kt qu c g thay i, gii thch l do.

p dng Nng cao


1. 2. 3. 4. Vit hm DFS duyt th theo chiu su in ra cc nh theo k thut quy. Kh quy hm DFS trn. Vit hm BFS duyt th theo chiu rng in ra cc nh. Th tc ViengTham cho duyt th theo chiu rng hay chiu su? Thay i hm ViengTham cho cch duyt cn li.

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

Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

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

Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

D liu ban u c cho vo t file vn bn bando.txt c cu trc nh sau:

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:

4. Cho mt nh bitmap, xc nh s min lin thng c trong nh theo ln cn 4 v 8.

Ti liu hng dn thc hnh mn L thuyt th HCMUS 2010

Trang

You might also like