tìm đ ng đi ng n nh t gi a t t c các c p đnh c a đ th , chúng ta có th s d ng n l n thu t toán Ford_Bellman ho c Dijkstra (trong tr ng h p tr ng s không âm). Tuy nhiên, trong c hai thu t toán đ c s d ng đ u có đ ph c t p tính tốn l n (chí ít là O(n3)). Trong tr ng h p t ng quát, ng i ta th ng dùng thu t tốn Floy đ c mơ t nh sau:
void Floy(void)
/* Tìm đ ng đi ng n nh t gi a t t c các c p đnh*/
/*Input : th cho b i ma tr n tr ng s a[i, j], i, j = 1, 2,..., n.*/ /*Output: - Ma tr n đ ng đi ng n nh t gi a các c p đnh d[i, j], i, j = 1, 2,...,n; d[i,j] là đ dài ng n nh t t i đ n j.
Ma tr n ghi nh n đ ng đi p[i, j], i, j = 1, 2,..., n
p[i, j] ghi nh n đnh đi tr c đnh j trong đ ng đi ng n nh t; */
{
/*b c kh i t o*/ for (i=1; i≤ n; i++) {
for (j =1; j≤ n; j++) { d[i,j] = a[i, j]; p[i,j] = i;
} }
/*b c l p */
for (k=1; k≤ n; k++) { for (i=1; i≤ n; i++){
for (j =1; j≤ n; j++) { if (d[i,j] > d[i, k] + d[k, j]) { d[i, j] = d[i, k] + d[k, j]; p[i,j] = p[k, j]; } } } } }
Ch ng trình cài đ t thu t tốn Foly tìm đ ng đi ng n nh t gi a t t c các c p đnh c a đ
th đ c th hi n nh sau: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <dos.h> #define MAX 10000 #define TRUE 1 #define FALSE 0 int A[50][50], D[50][50], S[50][50]; int n, u, v, k;FILE *fp; void Init(void){ int i, j, k; fp=fopen(“FLOY.IN”,”r”); if(fp==NULL){
printf(“\n Khong co file input”); getch(); return;
}
for(i=1; i<=n; i++)
for(j=1; j<=n; j++) A[i][j]=0; fscanf(fp,”%d%d%d”,&n,&u,&v);
printf(“\n So dinh do thi:%d”,n);
printf(“\n Di tu dinh:%d den dinh %d:”,u,v); printf(“\n Ma tran trong so:”);
for(i=1; i<=n; i++){ printf(“\n”);
for(j=1; j<=n; j++){
fscanf(fp,”%d”, &A[i][j]); printf(“%5d”,A[i][j]); if(i!=j && A[i][j]==0) A[i][j]=MAX; } } fclose(fp);getch(); } void Result(void){ if(D[u][v]>=MAX) {
printf(“\n Khong co duong di”); getch(); return;
} else {
printf(“\n Duong di ngan nhat:%d”, D[u][v]); printf(“\n Dinh %3d”, u);
while(u!=v) {
printf(“%3d”,S[u][v]); u=S[u][v];
}
}
void Floy(void){ int i, j,k, found; for(i=1; i<=n; i++){
for(j=1; j<=n;j++){ D[i][j]=A[i][j]; if (D[i][j]==MAX) S[i][j]=0; else S[i][j]=j; } }
/* Mang D[i,j] la mang chua cac gia tri khoan cach ngan nhat tu i den j Mang S la mang chua gia tri phan tu ngay sau cua i tren duong di ngan nhat tu i->j */
for (k=1; k<=n; k++){ for (i=1; i<=n; i++){
for (j=1; j<=n; j++){
if (D[i][k]!=MAX && D[i][j]>(D[i][k]+D[k][j]) ){ // Tim D[i,j] nho nhat co the co
D[i][j]=D[i][k]+D[k][j]; S[i][j]=S[i][k];
//ung voi no la gia tri cua phan tu ngay sau i } } } } } void main(void){ clrscr();Init(); Floy();Result(); }
NH NG N I DUNG C N GHI NH
X N m v ng khái ni m s c s và s c l p c a đ th . Ph ng pháp chuy n bài toán s c l p v bài tốn tìm s c s c a đ th .
X Tìm hi u ph ng pháp ch ng minh các đnh lý v s c s c a đ th .
X Hi u bài toán lu ng c c đ i và thu t toán Ford-Fullkerson xây d ng lu ng c c đ i trên m ng.
X Hi u và phân bi t thu t toán Dijkstra & thu t tốn Floy trong khi tìm đ ng đi ng n nh t gi a các đnh c a đ th .
BÀI T P CH NG 8
Bài 1. Ch ng minh r ng trong khơng gian có sáu đ ng th ng, trong đó khơng có ba đ ng th ng nào đ ng qui t i m t đi m, khơng có ba đ ng th ng nào đ ng ph ng và khơng có ba
đ ng th ng nào song song, thì nh t đnh có ba đ ng th ng đôi m t chéo nhau.
Bài 2. M i b y nhà khoa h c m i ng i trao đ i th v i 16 ng i khác, trong th h ch bàn v 3 đ tài, nh ng b t c hai nhà khoa h c nào c ng ch bàn v i nhau v m t trong ba đ tài trên. Ch ng minh r ng có ít nh t ba nhà khoa h c đã bàn v i nhau cùng m t đ tài.
Bài 3. Cho đ th g m 7 đnh cho b i ma tr n tr ng s
00 65 65 65 65 65 65 10 00 65 65 18 13 65 15 65 00 65 65 65 65 18 65 65 00 65 65 65 19 65 14 13 00 65 65 16 10 65 65 12 00 65 65 65 65 17 65 11 00
Tìm đ ng đi ng n nh t t đnh 1 đ n đnh 7. Yêu c u ch rõ nh ng k t qu trung gian trong quá trình th c hi n thu t toán.
Bài 4. Cho C s d li u ghi l i thông tin v N Tuyxn bay (N<=100) c a m t hãng hàng
khơng. Trong đó, thơng tin v m i tuy n bay đ c mô t b i: i m kh i hành (departure), đi m
đ n (destination), kho ng cách (lenght). Departure, destination là m t xâu kí t đ dài không quá 32, không ch a d u tr ng gi a, Length là m t s nh h n 32767.
Ta g i “Hành trình bay” t đi m kh i hành A t i đi m đ n B là dãy các hành trình [A, A1, n1], [A1, A2, n2]...[Ak, B,nk] v i Ai là đi m đ n c a tuy n i nh ng l i là đi m kh i hành c a tuy n i +1, ni là kho ng cách c a tuy n bay th i (1<=i<k). Trong đó, kho ng cách c a hành trình là t ng kho ng cách c a các tuy n mà hành trình đi qua (n1+n2+..+nk).
Cho file d li u ki u text hanhtrinh.in đ c ghi theo t ng dòng, s các dòng trong file d li u không v t quá N, trên m i dịng ghi l i thơng tin v m t tuy n bay, trong đó departure, destination, length đ c phân bi t v i nhau b i m t ho c vài d u tr ng. Hãy tìm gi i pháp đ tho mãn nhu c u c a khách hàng đi t A đ n B theo m t s tình hu ng sau:
Tìm hành trình có kho ng cách bé nh t t A đ n B. In ra màn hình t ng đi m mà hành trình
đã qua và kho ng cách c a hành trình. N u hành trình khơng t n t i hãy đ a ra thơng báo “Hành trình khơng t n t i”. Ví d v C s d li u hanhtrinh.in New_York Chicago 1000 Chicago Denver 1000 New_York Toronto 800 New_York Denver 1900 Toronto Calgary 1500 Toronto Los_Angeles 1800 Toronto Chicago 500 Denver Urbana 1000 Denver Houston 1500 Houston Los_Angeles 1500 Denver Los_Angeles 1000
V i đi m đi: New_York, đi m đ n: Los_Angeles ; chúng ta s có k t qu sau: Hành trình ng n nh t:
New_York to Toronto to Los_Angeles; Kho ng cách: 2600.
Bài 5. K t c thành công v i kh i l p ph ng th n bí, Rubik sáng t o ra d ng ph ng c a trò ch i này g i là trị ch i các ơ vng th n bí. ó là m t b ng g m 8 ơ vng b ng nhau nh hình 1. Chúng ta qui đnh trên m i ơ vng có m t màu khác nhau. Các màu đ c kí hi u b i 8 s nguyên t ng ng v i tám màu c b n c a màn hình EGA, VGA nh hình 1. Tr ng thái c a b ng các màu đ c cho b i dãy kí hi u màu các ơ đ c vi t l n l t theo chi u kim đ ng h b t
đ u t ơ góc trên bên trái và k t thúc ơ góc d i bên trái. Ví d : tr ng thái trong hình 1 đ c cho b i dãy các màu t ng ng v i dãy s (1, 2, 3, 4, 5, 6, 7, 8). Tr ng thái này đ c g i là tr ng thái kh i đ u.
Bi t r ng ch c n s d ng 3 phép bi n đ i c b n có tên là ‘A’, ‘B’, ‘C’ d i đây bao gi c ng chuy n đ c t tr ng thái kh i đ u v tr ng thái b t k :
‘A’: đ i ch dòng trên xu ng dòng d i. Ví d sau phép bi n đ i A, hình 1 s tr thành hình 2:
‘B’: th c hi n m t phép hốn v vịng quanh t trái sang ph i trên t ng dịng. Ví d sau phép bi n đ i B hình 1 s tr thành hình 3:
‘C’: quay theo chi u kim đ ng h b n ơ gi a. Ví d sau phép bi n đ i C hình 1 tr thành hình 4: 1 2 3 4 8 7 6 5 8 7 6 5 1 2 3 4 4 1 2 3 5 8 7 6 1 7 2 4 8 6 3 5 Hình 1 Hình 2 Hình 3 Hình 4
Cho file d li u Input.txt ghi l i 8 s nguyên trên m t dòng, m i s đ c phân bi t v i nhau b i m t d u tr ng ghi l i tr ng thái đích. Hãy tìm dãy các phép bi n đ i s b n đ đ a tr ng thái kh i đ u v tr ng thái đích sao cho s các phép bi n đ i là ít nh t có th đ c.
D li u ra đ c ghi l i trong file Output.txt, dòng đ u tiên ghi l i s các phép bi n đ i, nh ng dòng ti p theo ghi l i tên c a các thao tác c b n đã th c hi n, m i thao tác c b n đ c vi t trên m t dòng.
B n s đ c thêm 20 đi m n u s d ng b ng màu thích h p c a màn hình đ mơ t l i các phép bi n đ i tr ng thái c a trị ch i. Ví d v i tr ng thái đích d i đây s cho ta k t qu nh sau:
Input.txt Output.txt 2 6 8 4 5 7 3 1 7 B C A B C C B
Bài 6. Cho m t m ng thông tin g m N nút. Trong đó, đ ng truy n tin hai chi u tr c ti p t nút i đ n nút j có chi phí truy n thơng t ng ng là m t s nguyên A[i,j] = A[j,i], v i A[i,j]>=0, i ≠ j. N u đ ng truy n tin t nút i1 đ n nút ik ph i thông qua các nút i2,.. ik-1 thì chi phí truy n thơng đ c tính b ng t ng các chi phí truy n thơng A[i1,i2], A[i2,i3],... A[ik-1,ik]. Cho tr c hai nút i và j. Hãy tìm m t đ ng truy n tin t nút i đ n nút j sao cho chi phí truy n thơng là th p nh t.
D li u vào đ c cho b i file TEXT có tên INP.NN. Trong đó, dịng th nh t ghi ba s N, i, j, dòng th k + 1 ghi k-1 s A[k,1], A[k,2],.., A[k,k-1], 1<=k<=N.
K t qu thông báo ra file TEXT có tên OUT.NN. Trong đó, dịng th nh t ghi chi phí truy n thơng th p nh t t nút i đ n nút j, dòng th 2 ghi l n l t các nút trên đ ng truy n tin có chi phí truy n thông th p nh t t nút i t i nút j.
Bài 7. Cho m t m ng thơng tin g m N nút. Trong đó, đ ng truy n tin hai chi u tr c ti p t nút i đ n nút j có chi phí truy n thơng t ng ng là m t s nguyên A[i,j] = A[j,i], v i A[i,j]>=0, i
≠ j. N u đ ng truy n tin t nút i1 đ n nút ik ph i thơng qua các nút i2,.. ik-1 thì chi phí truy n thơng đ c tính b ng t ng các chi phí truy n thơng A[i1,i2], A[i2,i3],... A[ik-1,ik]. Bi t r ng, gi a hai nút b t k c a m ng thông tin đ u t n t i ít nh t m t đ ng truy n tin.
ti t ki m đ ng truy n, ng i ta tìm cách lo i b đi m t s đ ng truy n tin mà v n
đ m b o đ c tính liên thơng c a m ng. Hãy tìm m t ph ng án lo i b đi nh ng đ ng truy n tin, sao cho ta nh n đ c m t m ng liên thơng có chi phí t i thi u nh t có th đ c.
D li u vào đ c cho b i file TEXT có tên INP.NN. Trong đó, dịng th nh t ghi s N, dòng th k + 1 ghi k-1 s A[k,1], A[k,2],.., A[k,k-1], 1<=k<=N.
K t qu thông báo ra file TEXT có tên OUT.NN trong đó dịng th nh t ghi chi phí truy n thơng nh nh t trong tồn m ng. T dòng th 2 ghi l n l t các nút trên đ ng truy n tin, m i
TÀI LI烏U THAM KH謂O
[1] Kenneth H. Rossen, Toán h c r i r c ng d ng trong tin h c. Nhà xu t b n khoa h c k thu t, Hà N i 1998.
[2] Nguy n c Ngh a - Nguy n Tô Thành, Toán r i r c. Nhà xu t b n i h c Qu c Gia Hà N i, 2003.
[3] ng Huy Ru n, Lý thuy t đ th và ng d ng. Nhà xu t b n khoa h c k thu t, 2000.
[4] c Giáo, Toán r i r c. Nhà xu t b n Khoa h c k thu t Hà N i, 2004. [5] c Giáo, Bài t p toán r i r c. Nhà xu t b n Khoa h c k thu t Hà N i, 2005.
M影C L影C L I GI I THI UU................................................................................................................................................... CH NG I: NH NG KI N TH C C B N .................................................................................................... 1.1. GI I THI U CHUNG.................................................................................................................................. 1.2. NH NG KI N TH C C B N V LOGIC.............................................................................................. 1.2.1. nh ngh a & phép toán ......................................................................................................................... 1.2.2. S t ng đ ng gi a các m nh đ ......................................................................................................... 1.2.3. D ng chu n t c....................................................................................................................................... 1.3. V T VÀ L NG T ............................................................................................................................... 1.4. M T S NG D NG TRÊN MÁY TÍNH................................................................................................. 1.5. NH NG KI N TH C C B N V LÝ THUY T T P H P ..................................................................
1.5.1. Khái ni m & đnh ngh a.........................................................................................................................
1.5.2. Các phép toán trên t p h p.....................................................................................................................
1.5.3. Các h ng đ ng th c trên t p h p............................................................................................................
1.6. BI U DI N T P H P TRÊN MÁY TÍNH.................................................................................................
NH NG N I DUNG C N GHI NH ...............................................................................................................
BÀI T P CH NG 1 ........................................................................................................................................
CH NG II: BÀI TOÁN M VÀ BÀI TOÁN T N T I ...............................................................................
2.1. NH NG NGUYÊN LÝ M C B N...................................................................................................... 2.1.1. Nguyên lý c ng ...................................................................................................................................... 2.1.2. Nguyên lý nhân ...................................................................................................................................... 2.2. NGUYÊN LÝ BÙ TR ............................................................................................................................... 2.3. M CÁC HOÁN V T H P ................................................................................................................... 2.3.1. Ch nh h p l p......................................................................................................................................... 2.3.2. Ch nh h p khơng l p.............................................................................................................................. 2.3.3. Hốn v ................................................................................................................................................... 2.3.4. T h p.................................................................................................................................................... 2.4. H TH C TRUY H I................................................................................................................................. 2.4.1. nh ngh a và ví d ................................................................................................................................
2.4.2. Gi i cơng th c truy h i tuy n tính thu n nh t v i h s h ng s ...........................................................
2.5. QUI T C V CÁC BÀI TOÁN N GI N ..............................................................................................
2.6. PH NG PHÁP LI T KÊ ..........................................................................................................................
2.7. BÀI TOÁN T N T I ..................................................................................................................................
2.7.2. Ph ng pháp ph n ch ng.......................................................................................................................
2.7.3. Nguyên lý Dirichlet................................................................................................................................
NH NG N I DUNG C N GHI NH ...............................................................................................................
BÀI T P CH NG 2 ........................................................................................................................................
CH NG III: BÀI TOÁN LI T KÊ....................................................................................................................
3.1. GI I THI U BÀI TOÁN.............................................................................................................................
3.2. QUI.........................................................................................................................................................
3.2.1. nh ngh a b ng đ qui ..........................................................................................................................
3.2.2. Gi i thu t đ qui.....................................................................................................................................
3.3. PH NG PHÁP SINH................................................................................................................................
3.4. THU T TOÁN QUAY LUI (BACK TRACK) ...........................................................................................
NH NG N I DUNG C N GHI NH ...............................................................................................................
BÀI T P CH NG 3 ........................................................................................................................................
CH NG IV: BÀI TOÁN T I UU......................................................................................................................
4.1. GI I THI U BÀI TOÁN.............................................................................................................................
4.2. DUY T TỒN B ......................................................................................................................................
4.3. THU T TỐN NHÁNH C N....................................................................................................................
4.4. K THU T RÚT G N GI I QUY T BÀI TOÁN NG I DU L CH.....................................................
4.4.1.Th t c rút g n........................................................................................................................................
4.4.2.Th t c ch n c nh phân nhánh (r,c)........................................................................................................
4.4.3.Thu t toán nhánh c n gi i bài toán ng i du l ch ...................................................................................
NH NG N I DUNG C N GHI NH ...............................................................................................................
BÀI T P CH NG 4 ........................................................................................................................................
CH NG V: NH NG KHÁI NI M C B N C A TH ..........................................................................
5.1. NH NGH A VÀ KHÁI NI M .................................................................................................................
5.2. CÁC THU T NG C B N......................................................................................................................
5.3. NG I, CHU TRÌNH, TH LIÊN THÔNG ..................................................................................
5.4. BI U DI N TH TRÊN MÁY TÍNH.................................................................................................... 5.4.1. Ma tr n k , ma tr n tr ng s .................................................................................................................. 5.4.2. Danh sách c nh (cung ) .......................................................................................................................... 5.4.3. Danh sách k .......................................................................................................................................... NH NG N I DUNG C N GHI NH ............................................................................................................... BÀI T P CH NG 5 ........................................................................................................................................
CH NG VI: CÁC THU T TỐN TÌM KI M TRÊN TH ....................................................................
6.1. THU T TỐN TÌM KI M THEO CHI U SÂU (DFS).............................................................................
6.2. THU T TỐN TÌM KI M THEO CHI U R NG (Breadth First Search)................................................
6.3. DUY T CÁC THÀNH PH N LIÊN THÔNG C A TH ....................................................................
6.5. NG I VÀ CHU TRÌNH EULER ....................................................................................................... 6.6. NG I VÀ CHU TRÌNH HAMILTON............................................................................................... NH NG N I DUNG C N GHI NH ............................................................................................................... BÀI T P CH NG 6 ........................................................................................................................................ CH NG 7. CÂY (TREE) .................................................................................................................................... 7.1. CÂY VÀ M T S TÍNH CH T C B N................................................................................................. 7.2. M T S NG D NG QUAN TR NG C A CÂY ................................................................................... 7.2.1. Cây nh phân tìm ki m ........................................................................................................................... 7.2.2. Cây quy t đnh ....................................................................................................................................... 7.2.3. Mã ti n t ............................................................................................................................................... 7.2.4. Mã Huffman........................................................................................................................................... 7.3. CÂY BAO TRÙM........................................................................................................................................ 7.4. TÌM CÂY BAO TRÙM NG N NH T .......................................................................................................
7.5. THU T TOÁN KRUSKAL.........................................................................................................................
7.6. THU T TOÁN PRIM..................................................................................................................................
NH NG N I DUNG C N GHI NH ...............................................................................................................
BÀI T P CH NG 7 ........................................................................................................................................
CH NG 8. M T S BÀI TOÁN QUAN TR NG C A TH ..................................................................
8.1. BÀI TỐN TƠ MÀU TH ....................................................................................................................
8.2. BÀI TỐN TÌM LU NG C C I TRÊN M NG ..................................................................................
8.3. BÀI TỐN TÌM NG I NG N NH T..............................................................................................
8.3.1. Thu t toán gán nhãn...............................................................................................................................
8.3.2. Thu t toán Dijkstra ................................................................................................................................
8.3.3.Thu t toán Floy .......................................................................................................................................
NH NG N I DUNG C N GHI NH ...............................................................................................................
BÀI T P CH NG 8 ........................................................................................................................................
TOÁN RこI R C
Mã sえ: 492TNC211 và 492TNC212
Ch^u trách nhi゜m b n th o
TRUNG TÂM ÐÀO T O B U CHÍNH VI?N THƠNG 1
(Tài li u này đ c ban hành theo Quy t đnh s : 374/Q -TT T1 ngày
22/05/2006 c a Giám đ c H c vi n Cơng ngh B u chính Vi n thơng)
In t i : Công ty c ph n In B u đi n