You are on page 1of 17

Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

kimMỤC LỤC
1.Phần Mở Đầu
I.1 Lý do Chọn đề tài ...................................................................3

I.2 Đối tượng nghiên cứu .............................................................3

I.3 Nhiệm vụ nghiên cứu ...........................................................3

I.4 Phương nghiên cứu ...............................................................3

I.5 Kế hoạch nghiên cứu ............................................................3

2. Phần Nội Dung


2.1 Cơ sở lý thuyết .........................................................................4
2.1.1 Mô tả bài toán .....................................................................4
2.1.2 Thuật toán tô màu đồ thị .....................................................4

2.1.3 Xây dựng chương trình........................................................4

2.2 Đồ Thị ...................................................................................5

2.3 Ma Trận trọng số ...................................................................6


2.4 Cài đạt Thuật Toán ( Code ) Tô Màu Đồ Thị : ......................6
2.5 Chạy Thuật Toán .....................................................................9
2.6 Đánh giá giải thuật ................................................................17
3. KẾT LUẬN ......................................................................................17

4. Tài Liệu tham khảo: .........................................................................17

Sinh viên thực hiện: Kim Thanh Xuân trang 1


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

NHẬN XÉT

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

..............................................................................................................

Trà vinh,ngày tháng năm

GVHD

TRẦN QUANG HÀ

Sinh viên thực hiện: Kim Thanh Xuân trang 2


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

1.Phần Mở Đầu
I.6 Lý do Chọn đề tài
Qua lý thuyết đến những ứng dụng thực tế, môn lý thuyết đồ thị dã thực sự góp phần
không ít vào đời sống hàng ngay cua chúng ta. Bài toán to màu đồ thị là một trong những bài
toán được ứng dung kha rông như: Tô màu bản đồ, sấp xếp lịch thi cho sinh viên, phân chia
tần số gia các đài, sấp xếp sách trong thư viện….Vi vậy, việc nghiên cứu rất cần thiết cho
việc giải quyết những vấn đề rắt rối trong công việc cua chúng ta. Do đó, em chọn đề tài :”
Tô màu đồ thị trong việc sấp xếp sách theo từng loại trên cùng một kệ trong thư viện “
để hy vọng giúp một phần nào đó cho thư viện.
I.7 Đối tượng nghiên cứu
Sấp xếp những quyển sách cùng một loại thì ở cùng một kệ. Mỗi kệ được dùng tương ứng
với bấy nhiêu loại sách ma ta sự dụng trong thư viện.
I.8 Nhiệm vụ nghiên cứu
Tìm hiểu tính thực dụng của đề tài.
I.9 Phương nghiên cứu
Khảo sát, Phân tích, thiết kế, lập trình ( viết code ).
I.10 Kế hoạch nghiên cứu
Tuần 1: đưa ra ý tưởng, nghiên cứu đề tài.
Tuần 2: xây dựng đề tài.
Tuần 3: viết chưong trình
Tuần 4: viết bài báo cáo
Tuần 5: báo cáo và bảo vệ báo cáo (bảo vệ đề tài ).

2. Phần Nội Dung

Sinh viên thực hiện: Kim Thanh Xuân trang 3


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

2.1 Cơ sở lý thuyết
2.1.1 Mô tả bài toán
Sự dung phương pháp tô màu đồ thị để bố trí sách theo từng loại vào từng kể của của loại
sách đó. Yêu cầu, bố trí sách sau cho hai sách kề nhau không cùng một loại.
Vi dụ:
1. lập trình C++
2. Đại số tuyến tính
3. lập trình C#
4. photoshop
5. lập trình Java
6. Tư tưởng HCM
7. Flash
8. Toán rời rạc

2.1.2 Thuật toán tô màu đồ thị

Input: đồ thị G = (V, E).

Output: đồ thị G = (V, E) có các đỉnh đã được gán màu.

Bước 1 :tô màu 1 cho đỉnh 1.

Bước 2 :tô màu cho các đỉnh i (i=2,3,4,..,n) theo quy tắc.Gọi MAU là tập các màu đã tô
cho các đỉnh kề với i.Chọn số nguyên dương nhỏ nhất chưa có trong tập MAU để tô màu cho
đỉnh i.

2.1.3 Xây dựng chương trình

Các đỉnh được sắp theo bậc.Đầu tiên gán màu 1 cho đỉnh 1.Xét tiếp các đỉnh để tô màu
cho các đỉnh còn lại.Quá trình tô màu cho các đỉnh được xét bởi các vòng lặp nhỏ để kiểm tra
tính liên thông,nếu liên thông sẽ không được gán trùng màu và ngược lại.

Quá trình được lặp lại cho đến khi không còn đỉnh nào chưa được tô.

2.2 Đồ Thị

Sinh viên thực hiện: Kim Thanh Xuân trang 4


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

2.3 Ma Trận trọng số

Sinh viên thực hiện: Kim Thanh Xuân trang 5


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

2.4 Cài đạt Thuật Toán ( Code ) Tô Màu Đồ Thị :

#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#define max 50
int n,b[50],a[max][max];

void to(int n)
{
switch(n)

Sinh viên thực hiện: Kim Thanh Xuân trang 6


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

{
case 1:
printf(" xanh luc ");
break;
case 2:
printf(" do ");
break;
case 3:
printf(" vang ");
break;
case 4:
printf(" tim ");
break;
case 5:
printf(" hong ");
break;
case 6:
printf(" cam ");
break;
}
}
void docfile(void)
{
FILE *fp;
int i,j;
fp=fopen("d:\\tomau.txt","rt");
fscanf(fp,"%d",&n);
printf(" ma tran ke la ");
for (i=1;i<=n;i++)

Sinh viên thực hiện: Kim Thanh Xuân trang 7


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

{
printf("\n");
for (j=1;j<=n;j++)
{
fscanf(fp,"%d",&a[i][j]);
printf("%3d",a[i][j]);
}
}
fclose(fp);
}
void Tomau()
{ int i,j;
b[1]=1;//đỉnh 1 được tô bằng màu 1
for (i=2;i<=n;i++ )//biến chạy từ đỉnh thứ 2->n
{
b[i]=1;//đỉnh i được tô bằng màu 1
nhan:
for (j=1;j<=i-1;j++)// biến chạy nửa dưới đường đối xứng của ma trận
if (a[i][j]!=0&&b[i]==b[j])//điều kiện 2đỉnh liên thông và 2 đỉnh tô
cùng màu
b[i]++;//tăng màu đỉnh i
for (j=1;j<=n;j++)//biến chạy từ 1->n ktra đỉnh vừa mới tô
if(a[i][j]!=0&&b[i]==b[j])// điều kiện 2 đỉnh liên thông và 2 đỉnh tô cùng màu
goto nhan;
}
}
void xuat(void)
{ printf(" \nto mau cac dinh la ");
for(int i=1;i<=n;i++)

Sinh viên thực hiện: Kim Thanh Xuân trang 8


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

{
printf("\n dinh %d to mau ",i,b[i]);
to(b[i]);
}
printf("\n");
}
void main()
{ clrscr();
docfile();
Tomau();
xuat();
getch();
}

2.5 Chạy Thuật Toán


Tảo File notepad, nhập ma trận trọng số trên và lưu với tên tomaudothi.txt (n=8) ở
Local Disk (D:) .
Dùng hàm docfile: để mở ma trận trọng số (được lưu trong notepad) .
Dùng hàm tomau: để tiến hành tô màu cho các đỉnh theo các bước:

Ban đầu gán màu 1 cho đỉnh 1: mau[1]=1 (Xanh lam)

Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh)
Chạy vòng lặp for(i=2;i<=n;i++)

Khi i=2 điều kiện i<=n (2<=8) đúng.


b[2]=1: đỉnh 2 được tô màu 1.
Xét tiếp vòng lập for(j=1; j<=i-1; j++)
j=1; i=2  1<=1 (đúng) <=> a[2][1] !=0 và b[1]=b[2] (đúng)
b[2]++ : tô màu 2 cho đỉnh 2

Sinh viên thực hiện: Kim Thanh Xuân trang 9


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

j=2 ;i=2 ;2<=1 (sai)  thoát khỏi dòng lặp for


Xét tiếp vòng lặp for(j=1; j<=n; j++)
j=1; n=8; 1<=8 (đúng) <=> a[2][1] !=0 và b[2]=b[1] (sai)
không thực hiện lệnh ‘go to nhan’
j=2; n=8; 2<=8 (đúng) <=> a[2][2] !=0 và b[2]=b[2] (sai)
không thực hiện lệnh ‘go to nhan’
j=3; n=8; 3<=8 (đúng) <=> a[2][3] !=0 và b[2]=b[3] (sai)
không thực hiện lệnh ‘go to nhan’
j=4; n=8; 4<=8 (đúng) <=> a[2][4] !=0 và b[2]=b[4] (sai)
không thực hiện lệnh ‘go to nhan’
j=5; n=8; 5<=8 (đúng) <=> a[2][5] !=0 và b[2]=b[5] (sai)
không thực hiện lệnh ‘go to nhan’
j=6; n=8; 6<=8 (đúng) <=> a[2][6] !=0 và b[2]=b[6] (sai)
không thực hiện lệnh ‘go to nhan’
j=7; n=8; 6<=8 (đúng) <=> a[2][7] !=0 và b[2]=b[7] (sai)
không thực hiện lệnh ‘go to nhan’
j=8; n=8; 6<=8 (đúng) <=> a[2][8] !=0 và b[2]=b[8] (sai)
không thực hiện lệnh ‘go to nhan’
j=9; n=8; 9<=8 (sai)  thoát khỏi dòng lặp for (j=1 ;j<=n ;j++)
lúc này ta có mảng b[] như sau:
Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh) 2(Đỏ)

Quay trở lên dòng lặp for(i=2 ;i<=n ;i++)  tiếp tục tăng i=3
Khi i=3 điều kiện i<=n (3<=8) đúng.
b[3]=1 :đỉnh 3 được tô màu 1
Xét dòng lặp for(j=1;j<=i-1;j++)
j=1; i=3  1<=2 (đúng) <=> a[3][1] !=0 và b[1]=b[3] (sai)
không thực hiện : b[3]++

Sinh viên thực hiện: Kim Thanh Xuân trang 10


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

j=2; i=3  2<=2 (đúng) <=> a[3][2] !=0 và b[2]=b[3] (sai)


j=3; i=3  3<=2 (sai)  thoát khỏi dòng lặp for
Xét tiếp dòng lặp for(j=1 ;j<=n ;j++)
j=1; n=6  1<=6 (đúng) <=> a[3][1] !=0 và b[3]=b[1] (sai)
không thực hiện lệnh ‘go to nhan’
j=2; n=8  2<=8 (đúng) <=> a[3][2] !=0 và b[3]=b[2] (sai)
j=3; n=8  3<=8 (đúng) <=> a[3][3] !=0 và b[3]=b[3] (sai)
j=4; n=8  4<=8 (đúng) <=> a[3][4] !=0 và b[3]=b[4] (đúng)
Thực hiện lệnh ‘ go to nhan ’
i=3 ; j=4  4<=2 (sai) <=> thoát dòng lập for
j=5; n=8  5<=8 (đúng) <=> a[3][5] !=0 và b[3]=b[5] (sai)
j=6; n=8  6<=8 (đúng) <=> a[3][6] !=0 và b[3]=b[6] (sai)
j=7; n=8  7<=8 (đúng) <=> a[3][7] !=0 và b[3]=b[7] (sai)
j=8; n=8  8<=8 (đúng) <=> a[3][8] !=0 và b[3]=b[8] (đúng)
Thực hiện lệnh ‘ go to nhan ’
i=3 ; j=8  8<=2 (sai) <=> thoát dòng lập for
j=9; n=8  9<=8 (sai) : thoát khỏi dòng lặp for (j=1 ;j<=n ;j++)
lúc này ta có mảng b[] như sau:
Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh) 2(Đỏ) 1(Xanh)

Quay trở lên dòng lặp for(i=2 ;i<=n ;i++) tiếp tục tăng i=4
Khi i=4 điều kiện i<=n (4<=8) đúng.
b[4]=1 :đỉnh 4 được tô màu 1
Xét dòng lặp for(j=1;j<=i-1;j++)
j=1; i=4  1<=3 (đúng) <=> a[4][1] !=0 và b[1]=b[4] (sai)
không thực hiện : b[3]++
j=2; i=4  2<=3 (đúng) <=> a[4][2] !=0 và b[2]=b[4] (sai)

Sinh viên thực hiện: Kim Thanh Xuân trang 11


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

j=3; i=4  3<=3 (đúng) <=> a[4][3] !=0 và b[3]=b[4] (đúng)


b[4]++ : tô màu 2 cho đỉnh 4
j=4; i=4  4<=3 (sai)  thoát khỏi dòng lặp for
Xét tiếp dòng lặp for(j=1 ;j<=n ;j++)
j=1; n=6  1<=6 (đúng) <=> a[4][1] !=0 và b[4]=b[1] (sai)
không thực hiện lệnh ‘go to nhan’
j=2; n=8  2<=8 (đúng) <=> a[4][2] !=0 và b[4]=b[2] (sai)
j=3; n=8  3<=8 (đúng) <=> a[4][3] !=0 và b[4]=b[3] (sai)
j=4; n=8  4<=8 (đúng) <=> a[4][4] !=0 và b[4]=b[4] (sai)
j=5; n=8  5<=8 (đúng) <=> a[4][5] !=0 và b[4]=b[5] (sai)
j=6; n=8  6<=8 (đúng) <=> a[4][6] !=0 và b[4]=b[6] (sai)
j=7; n=8  7<=8 (đúng) <=> a[4][7] !=0 và b[4]=b[7] (sai)
j=8; n=8  8<=8 (đúng) <=> a[4][8] !=0 và b[4]=b[8] (sai)
j=9; n=8  9<=8 (sai)  thoát khỏi dòng lặp for (j=1 ;j<=n ;j++)
lúc này ta có mảng b[] như sau :
Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ)

Quay trở lên dòng lặp for(i=2 ;i<=n ;i++) tiếp tục tăng i=5
Khi i=5 điều kiện i<=n (5<=8) đúng.
b[5]=1 :đỉnh 5 được tô màu 1
Xét dòng lặp for(j=1;j<=i-1;j++)
j=1; i=5  1<=4 (đúng) <=> a[5][1] !=0 và b[1]=b[5] (sai)
không thực hiện : b[3]++
j=2; i=5  2<=4 (đúng) <=> a[5][2] !=0 và b[2]=b[5] (sai)
j=3; i=5  3<=4 (đúng) <=> a[5][3] !=0 và b[3]=b[5] (sai)
j=4; i=5  4<=4 (đúng) <=> a[5][4] !=0 và b[4]=b[5] (sai)
j=5; i=5  5<=4 (sai)  thoát khỏi dòng lặp for

Sinh viên thực hiện: Kim Thanh Xuân trang 12


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

Xét tiếp dòng lặp for(j=1 ;j<=n ;j++)


j=1; n=8  1<=8 (đúng) <=> a[5][1] !=0 và b[5]=b[1] (sai)
không thực hiện lệnh ‘go to nhan’
j=2; n=8  2<=8 (đúng) <=> a[5][2] !=0 và b[5]=b[2] (sai)
j=3; n=8  3<=8 (đúng) <=> a[5][3] !=0 và b[5]=b[3] (sai)
j=4; n=8  4<=8 (đúng) <=> a[5][4] !=0 và b[5]=b[4] (sai)
j=5; n=8  5<=8 (đúng) <=> a[5][5] !=0 và b[5]=b[5] (sai)
j=6; n=8  6<=8 (đúng) <=> a[5][6] !=0 và b[5]=b[6] (đúng)
Thực hiện lệnh ‘ go to nhan ’
i=5 ; j=6  6<=4 (sai) <=> thoát dòng lập for
j=7; n=8  7<=8 (đúng) <=> a[5][7] !=0 và b[5]=b[7] (đúng)
Thực hiện lệnh ‘ go to nhan ’
i=5 ; j=7  7<=4 (sai) <=> thoát dòng lập for
j=8; n=8  8<=8 (đúng) <=> a[5][8] !=0 và b[5]=b[8] (đúng)
Thực hiện lệnh ‘ go to nhan ’
i=5 ; j=8  8<=4 (sai) <=> thoát dòng lập for
j=9; n=8  9<=8 (sai)  thoát khỏi dòng lặp for (j=1 ;j<=n ;j++)
lúc này ta có mảng b[] như sau:
Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ) 1(Xanh)

Quay trở lên dòng lặp for(i=2 ;i<=n ;i++) tiếp tục tăng i=6
Khi i=6 điều kiện i<=n (6<=8) đúng.
b[6]=1 :đỉnh 6 được tô màu 1
Xét dòng lặp for(j=1;j<=i-1;j++)
j=1; i=6  1<=4 (đúng) <=> a[6][1] !=0 và b[6]=b[1] (đúng)
mau[6]++ : tô màu 2 cho đỉnh 6
j=2; i=6  2<=5 (đúng) <=> a[6][2] !=0 và b[6]=b[2] (sai)

Sinh viên thực hiện: Kim Thanh Xuân trang 13


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

j=3; i=6  3<=5 (đúng) <=> a[6][3] !=0 và b[6]=b[3] (sai)


j=4; i=6  4<=5 (đúng) <=> a[6][4] !=0 và b[6]=b[4] (sai)
j=5; i=6  5<=5 (đúng) <=> a[6][5] !=0 và b[6]=b[5] (sai)
j=6; i=6  6<=5 (sai) thoát khỏi dòng lặp for
Xét tiếp dòng lặp for(j=1 ;j<=n ;j++)
j=1; n=8  1<=8 (đúng) <=> a[6][1] !=0 và b[6]=b[1] (sai)
không thực hiện lệnh ‘go to nhan’
j=2; n=8  2<=8 (đúng) <=> a[6][2] !=0 và b[6]=b[2] (sai)
j=3; n=8  3<=8 (đúng) <=> a[6][3] !=0 và b[6]=b[3] (sai)
j=4; n=8  4<=8 (đúng) <=> a[6][4] !=0 và b[6]=b[4] (sai)
j=5; n=8  5<=8 (đúng) <=> a[6][5] !=0 và b[6]=b[5] (sai)
j=6; n=8  6<=8 (đúng) <=> a[6][6] !=0 và b[6]=b[6] (sai)
j=7; n=8  7<=8 (đúng) <=> a[6][7] !=0 và b[6]=b[7] (sai)
j=8; n=8  8<=8 (đúng) <=> a[6][8] !=0 và b[6]=b[8] (sai)
j=9; n=8  9<=8 (sai)  thoát khỏi dòng lặp for (j=1 ;j<=n ;j++)

lúc này ta có mảng như sau:


Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ)

Quay trở lên dòng lặp for(i=2 ;i<=n ;i++) tiếp tục tăng i=7
Khi i=7 điều kiện i<=n (7<=8) đúng.
b[7]=1 :đỉnh 7 được tô màu 1
Xét dòng lặp for(j=1;j<=i-1;j++)
j=1; i=7  1<=6 (đúng) <=> a[7][1] !=0 và b[7]=b[1] (đúng)
mau[7]++ : tô màu 2 cho đỉnh 7

Sinh viên thực hiện: Kim Thanh Xuân trang 14


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

j=2; i=7  2<=6 (đúng) <=> a[7][2] !=0 và b[7]=b[2] (đúng)


mau[7]++ : tô màu 3 cho đỉnh 7
j=3; i=7  3<=6 (đúng) <=> a[7][3] !=0 và b[7]=b[3] (sai)
j=4; i=7  4<=6 (đúng) <=> a[7][4] !=0 và b[7]=b[4] (sai)
j=5; i=7  5<=6 (đúng) <=> a[7][5] !=0 và b[7]=b[5] (sai)
j=6; i=7  6<=6 (đúng) <=> a[7][5] !=0 và b[7]=b[5] (sai)
j=7; i=7  7<=6 (sai) thoát khỏi dòng lặp for
Xét tiếp dòng lặp for(j=1 ;j<=n ;j++)
j=1; n=8  1<=8 (đúng) <=> a[7][1] !=0 và b[7]=b[1] (sai)
không thực hiện lệnh ‘go to nhan’
j=2; n=8  2<=8 (đúng) <=> a[7][2] !=0 và b[7]=b[2] (sai)
j=3; n=8  3<=8 (đúng) <=> a[7][3] !=0 và b[7]=b[3] (sai)
j=4; n=8  4<=8 (đúng) <=> a[7][4] !=0 và b[7]=b[4] (sai)
j=5; n=8  5<=8 (đúng) <=> a[7][5] !=0 và b[7]=b[5] (sai)
j=6; n=8  6<=8 (đúng) <=> a[7][6] !=0 và b[7]=b[6] (sai)
j=7; n=8  7<=8 (đúng) <=> a[7][7] !=0 và b[7]=b[7] (sai)
j=8; n=8  8<=8 (đúng) <=> a[7][8] !=0 và b[7]=b[8] (sai)
j=9; n=8  9<=8 (sai)  thoát khỏi dòng lặp for (j=1 ;j<=n ;j++)
lúc này ta có mảng như sau:
Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ) 3(Vàng)

Quay trở lên dòng lặp for(i=2 ;i<=n ;i++) tiếp tục tăng i=6
Khi i=8 điều kiện i<=n (8<=8) đúng.
b[8]=1 :đỉnh 8 được tô màu 1
Xét dòng lặp for(j=1;j<=i-1;j++)
j=1; i=8  1<=7 (đúng) <=> a[8][1] !=0 và b[8]=b[1] (sai)
j=2; i=8  2<=7 (đúng) <=> a[8][2] !=0 và b[8]=b[2] (sai)

Sinh viên thực hiện: Kim Thanh Xuân trang 15


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

j=3; i=8  3<=7 (đúng) <=> a[8][3] !=0 và b[8]=b[3] (đúng)


mau[8]++ : tô màu 2 cho đỉnh 8
j=4; i=8  4<=7 (đúng) <=> a[8][4] !=0 và b[8]=b[4] (đúng)
mau[8]++ : tô màu 3 cho đỉnh 8
j=5; i=8  5<=7 (đúng) <=> a[8][5] !=0 và b[8]=b[5] (sai)
j=6; i=8  6<=7 (đúng) <=> a[8][6] !=0 và b[8]=b[6] (sai)
j=7; i=8  7<=7 (đúng) <=> a[8][7] !=0 và b[8]=b[7] (đúng)
mau[8]++ : tô màu 4 cho đỉnh 8
j=8; i=8  8<=7 (sai) thoát khỏi dòng lặp for
Xét tiếp dòng lặp for(j=1 ;j<=n ;j++)
j=1; n=8  1<=8 (đúng) <=> a[8][1] !=0 và b[8]=b[1] (sai)
không thực hiện lệnh ‘go to nhan’
j=2; n=8  2<=8 (đúng) <=> a[8][2] !=0 và b[8]=b[2] (sai)
j=3; n=8  3<=8 (đúng) <=> a[8][3] !=0 và b[8]=b[3] (sai)
j=4; n=8  4<=8 (đúng) <=> a[8][4] !=0 và b[8]=b[4] (sai)
j=5; n=8  5<=8 (đúng) <=> a[8][5] !=0 và b[8]=b[5] (sai)
j=6; n=8  6<=8 (đúng) <=> a[8][6] !=0 và b[8]=b[6] (sai)
j=7; n=8  7<=8 (đúng) <=> a[8][7] !=0 và b[8]=b[7] (sai)
j=8; n=8  8<=8 (đúng) <=> a[8][8] !=0 và b[8]=b[8] (sai)
j=9; n=8  9<=8 (sai)  thoát khỏi dòng lặp for (j=1 ;j<=n ;j++)
lúc này ta có mảng như sau:
Đỉnh 1 2 3 4 5 6 7 8
Màu 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ) 1(Xanh) 2(Đỏ) 3(Vàng) 4(Tím)

Quay trở lên dòng lặp for(i=2 ;i<=n ;i++) tiếp tục tăng i=9
Khi i=9 điều kiện i<=n (9<=8)  Sai
<=> Thoát khỏi vòng lập trong ham tomau và xuất ra màng hình . Kết thúc chưong
trình.

Sinh viên thực hiện: Kim Thanh Xuân trang 16


Trường ĐH Trà Vinh Môn : Lý Thuyết Đồ Thị

2.6 Đánh giá giải thuật

Với dòng lặp : for(int i=1;i<=n;i++)  Độ phức tạp của nó là: n+1

Với dòng lặp : for(int j=1;j<=n;j++)  Độ phức tạp của nó là: n+1

3. KẾT LUẬN
Chương trình đã được xây dựng qua các giai đoạn hoàn chỉnh: giai đoạn khảo sát, giai
đoạn phân tích, giai đoạn thiết kế, giai đoạn lập trình và giai đoạn kiểm thử.

Đó là quá trình của việc nghiên cứu sau bốn tuần, với sự hướng dẫn tận tình của
Thầy và sự giúp đỡ của bạn bè, em đã hoàn thành được bài báo cáo này. Ty nhiên vẫn
còn nhiều lỗi thiếu xót

Mong các ban thong cảm và giúp minh hoàng thiệt tốt hơn cho đêg tài.

4. Tài Liệu tham khảo:


[1] Đặng Huy Ruận, Lý thuyết đồ thị và ứng dụng, Nhà xuất bản khoa học và kỹ
thuật - Hà nội 2000.

[2] www.google.com.vn

Sinh viên thực hiện: Kim Thanh Xuân trang 17

You might also like