Nhân loại ngày nay đang chứng kiến sự phát triển mạnh mẽ của ngành Công nghệ Thông tin, một trong những ngành mũi nhọn của nhiều quốc gia trên thế giới. Sự phát triển vượt bậc của nó là kết quả tất yếu của sự phát triển kèm theo các thiết bị phần cứng cũng như phần mềm tiện ích. Song song với sự phát triển đó là những nhu cầu của con người về việc áp dụng công nghệ vào sản xuất và đời sống ngày càng nâng cao. Việc áp dụng công nghệ thông tin vào thực tiễn công việc giúp mọi người giải quyết công việc nhanh hơn, chính xác hơn và tiết kiệm được rất nhiều chi phí phát sinh trong quá trình thực hiện công việc. Một trong những ứng dụng của công nghệ thông tin phải kể đến là việc áp dụng các thuật toán tô màu vào mô phỏng địa lý, tô màu bản đồ hay xếp lịch thi. Và ứng dụng mà chúng tôi muốn giới thiệu ở đây là phần mềm phân bố các kênh truyền hình vào các đài truyền hình ở các tỉnh vùng đồng bằng Sông Cửu Long. Mục tiêu của đề tài đề ra là vận dụng thuật toán tô màu đồ thị, cụ thể ở đây là thuật toán Greedy để tô màu các đỉnh của đồ thị (được tạo ra từ bản đồ vùng đồng bằng Sông Cửu Long), từ đó tìm ra số màu ít nhất có thể dùng để tô cho đồ thị
Trang 1LỜI NÓI ĐẦU
Nhân loại ngày nay đang chứng kiến sự phát triển mạnh mẽ của ngành Công nghệThông tin, một trong những ngành mũi nhọn của nhiều quốc gia trên thế giới Sự pháttriển vượt bậc của nó là kết quả tất yếu của sự phát triển kèm theo các thiết bị phầncứng cũng như phần mềm tiện ích
Song song với sự phát triển đó là những nhu cầu của con người về việc áp dụngcông nghệ vào sản xuất và đời sống ngày càng nâng cao Việc áp dụng công nghệthông tin vào thực tiễn công việc giúp mọi người giải quyết công việc nhanh hơn,chính xác hơn và tiết kiệm được rất nhiều chi phí phát sinh trong quá trình thực hiệncông việc Một trong những ứng dụng của công nghệ thông tin phải kể đến là việc ápdụng các thuật toán tô màu vào mô phỏng địa lý, tô màu bản đồ hay xếp lịch thi Vàứng dụng mà chúng tôi muốn giới thiệu ở đây là phần mềm phân bố các kênh truyềnhình vào các đài truyền hình ở các tỉnh vùng đồng bằng Sông Cửu Long
Mục tiêu của đề tài đề ra là vận dụng thuật toán tô màu đồ thị, cụ thể ở đây là thuậttoán Greedy để tô màu các đỉnh của đồ thị (được tạo ra từ bản đồ vùng đồng bằngSông Cửu Long), từ đó tìm ra số màu ít nhất có thể dùng để tô cho đồ thị
Nội dung báo cáo được chia thành 3 chương:
- Chương 1: Tổng quan
+ Giới thiệu đề tài của đồ án: trình bày mục tiêu, nhiệm vụ, phạm vi của đề tài;
mô tả các chức năng, công dụng của phần mềm cần đạt được trong đồ án
+ Bối cảnh thực tiễn, ứng dụng của đồ án
+ Phương pháp, cách thức giải quyết bài toán, nhiệm vụ đặt ra trong đồ án
+ Trình bày cơ sở lý thuyết, giải thuật, công nghệ được sử dụng trong đồ án
- Chương 2: Phân tích, thiết kế, cài đặt giải pháp
+ Mô tả các công việc phân tích, thiết kế để giải quyết nhiệm vụ của đồ án.+ Trình bày các bước thiết kế, cài đặt, thử nghiệm để giải quyết từng mục tiêucủa đồ án, từng chức năng của phần mềm kết quả
- Chương 3: Kết quả và hướng phát triển
+ Trình bày kết quả đạt được
+ Đánh giá kết quả đạt được
+ Hướng phát triển
Trang 2có những lời hướng dẫn, dạy bảo của thầy thì em nghĩ đồ án ngành này của em rất khó
có thể hoàn thiện được Bước đầu đi vào thực tế, tìm hiểu về đề tài em thấy kiến thứccủa em còn hạn chế và còn nhiều bỡ ngỡ Do vậy, không tránh khỏi những thiếu sót làđiều chắc chắn, em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy
Cô để kiến thức của em trong lĩnh vực này được hoàn thiện hơn Sau cùng, em xinkính chúc quý Thầy Cô thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnhcao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau
Em xin gởi lời cảm ơn chân thành và sự tri ân sâu sắc đối với các thầy cô củatrường Đại học Tiền Giang, đặc biệt là các thầy cô khoa Công Nghệ Thông Tin củatrường đã tạo điều kiện cho em để em có thể hoàn thành tốt bài báo cáo đồ án này Và
em cũng xin chân thành cảm ơn cô Trần Thị Ngà đã nhiệt tình hướng dẫn em hoàn
thành tốt môn đồ án ngành này
Mặc dù đã cố gắng hết sức để thực hiện đề tài nhưng sai sót là điều khó tránh khỏi,
vì vậy kính mong sự đóng góp và hướng dẫn nhiều hơn của quý thầy cô
Chúng em xin chân thành cảm ơn!
Tiền Giang, tháng 6 năm 2016
Nhóm sinh viên thực hiệnNguyễn Văn Hiền – Võ Nguyễn Thanh Nhân
Trang 3ĐỀ CƯƠNG BÁO CÁO
ĐỒ ÁN NGÀNH
1 Tên đề tài: Tìm Hiểu Và Viết Chương Trình Phân Bố Kênh Truyền Hình Tại Đồng
Bằng Sông Cửu Long
2 Người hướng dẫn: G.V Trần Thị Ngà
3 Thời gian thực hiện: Từ 07/04/2016 đến 23/06/2016
4 Sinh viên thực hiện:
1 Nguyễn Văn Hiền MSSV: 013101015
2 Võ Nguyễn Thanh Nhân MSSV: 013101035
5 Loại đề tài: Xây dựng phần mềm ứng dụng.
6 Nội dung đề tài: (nêu rõ mục tiêu, nhiệm vụ đồ án; các chức năng, công dụng của
phần mềm cần đạt được trong đồ án; bối cảnh thực tiễn, ứng dụng của đồ án; giải thuật,phương pháp, cách thức giải quyết bài toán, nhiệm vụ đặt ra trong đồ án; môi trường lậptrình, phần mềm phụ trợ, công nghệ được sử dụng trong đồ án )
6.1 Mục tiêu và nhiệm vụ đồ án:
Phân tích khả năng ứng dụng của đề tài trong thực tiễn
Thiết kế lại giải thuật cho phù hợp với yêu cầu đề tài dựa trên thuật toán Greedy
Tạo ra một phần mềm với đầy đủ tính năng đáp ứng theo yêu cầu đề tài: đọc dữliệu từ file input chứa thông tin đồ thị, kiểm tra tính hợp lệ của file dữ liệu nhập vào, vẽ
và tô màu đồ thị với thông tin từ file dữ liệu, tính toán và sắp xếp được các kênh truyềnhình vào các đài truyền hình dựa theo yêu cầu bài toán, hiển thị kết quả sắp xếp ra mànhình và cho phép lưu thông tin kết quả ra file output
6.1 Chức năng và công dụng phần mềm:
6.2.1 Chức năng:
Đọc dữ liệu đồ thị từ file input, có kiểm tra tính hợp lệ của file
Load dữ liệu bản đồ từ file hình ảnh
Cho phép người dùng đánh dấu vị trí các tỉnh trong bản đồ dùng làm các đỉnh cho
đồ thị
Ẩn/hiện bản đồ so với đồ thị để người dùng dễ dàng đối chiếu kết quả
Trang 4 Xuất kết quả đồ thị đã được tô màu ở các đỉnh sao cho hai đỉnh liên kết với nhau
có hai màu khác nhau, với số màu cần dùng cho cả đồ thị là tối thiểu
Hiển thị thông tin về số kênh và mã số kênh trong mỗi tỉnh đáp ứng yêu cầu bàitoán là không có hai đài phát nào ở hai tỉnh nằm cạnh nhau trên bản đồ địa lý dùng cùngmột kênh
Lưu thông tin kết quả vào file text để xem lại
Xuất hình ảnh đồ thị ra file hình có kèm theo chữ ký tác giả
6.2.2 Công dụng:
Tính toán và phân bố 12 kênh truyền hình vào các đài truyền hình ở các tỉnh đồng
bằng Sông Cửu Long sao cho không có hai đài truyền hình nào ở hai tỉnh nằm cạnh nhaudùng chung một kênh
6.3 Bối cảnh thực tiễn và ứng dụng của đồ án:
Các đài truyền hình các tỉnh trong vùng đồng bằng Sông Cửu Long (Cà Mau, BạcLiêu, Sóc Trăng, Cần thơ, Vĩnh long, An giang, Kiên giang, Đồng tháp, Trà Vinh, BếnTre, Tiền giang, Long An) cần phải có các kênh truyền hình riêng để phát, mỗi đài có thể
có nhiều hơn một kênh phát, các kênh phát của hai đài trong hai tỉnh gần nhau khôngđược trùng nhau vì như thế sẽ làm lãng phí kênh và giảm chất lượng tín hiệu Vì thế giảipháp cho vấn đề này là phân bố các kênh truyền hình vào các đài phát sao cho mỗi đàitrong hai tỉnh cạnh nhau phải có mã kênh khác nhau Việc phân bố các kênh truyền hìnhvào các tỉnh nếu làm bằng thủ công sẽ không tối ưu và rất mất thời gian, vì vậy sự ra đời
của phần mềm Channels Distribution giúp ta giải quyết bài toán phân bố kênh này một
cách nhanh chóng, tối ưu và chính xác hơn
6.4 Giải thuật sử dụng:
Đề tài áp dụng giải thuật tham lam (tiếng Anh: Greedy algorithm) xét lần lượt theo sốthứ tự các đỉnh (ở đây là các đài truyền hình trong các tỉnh) và tô màu chúng sao cho sốmàu cần tô là ít nhất và thỏa điều kiện hai màu tô ở hai đỉnh có cạnh liên kết nhau khôngđược giống nhau Nội dung giải thuật như sau: chuyển bản đồ vùng về dạng đồ thị vớicác đài phát trong các tỉnh tương ứng là các điểm trong đồ thị, hai tỉnh nằm cạnh nhau(có đường biên chung) sẽ được biểu diễn là cạnh nối giữa hai điểm trên đồ thị Tiến hànhđánh số thứ tự cho các đỉnh của đồ thị, bắt đầu từ 1 đến hết đỉnh (ở đây là 12 đỉnh) Tạo
Trang 5ra danh sách các màu với số lượng màu tối đa bằng số lượng đỉnh của đồ thị Duyệt quacác đỉnh theo thứ tự đã đánh dấu, bắt đầu từ đỉnh 1, và tô màu các đỉnh đó, ở đỉnh 1, ta tômàu 1 mặc định, ở đỉnh tiếp theo (tạm gọi là X) ta duyệt qua mã màu đã tô cho các đỉnh
có cạnh liên kết với X và không tô những màu đó cho đỉnh X mà tô bằng một màu khác,
cứ thế lần lượt duyệt tiếp các đỉnh còn lại cho đến đỉnh cuối cùng thì dừng vòng lặp
6.5 Môi trường lập trình và phần mềm phụ trợ:
Phần mềm được lập trình và hoạt động trong môi trường windows
Phần mềm phụ trợ: bộ Visual Studio 2015 của Microsoft
7 Kế hoạch thực hiện: (mô tả thời gian của các giai đoạn thực hiện và phân công công
việc của từng thành viên trong nhóm)
TT Các nội dung, công việc
chủ yếu cần được thực hiện
Thời gian
(bắt đầu - kết thúc) Người thực hiện
1 Lên kế hoạch chi tiết cho các công việc
cận thực hiện 7/4/2016 - 8/4/2016 Hiền - Nhân
2 Tìm kiếm hình ảnh bản đồ các tỉnh ở
đồng bằng Sông Cửu Long 9/4/2016 - 10/4/2016 Nhân
3 Tìm hiểu về giải thuật tô màu đồ thị
bằng thuật toán Greedy 11/4/2016 - 15/4/2016 Hiền - Nhân
4 Phân tích bản đồ vùng thành ma trận kề
và viết file dữ liệu đầu vào 16/4/2016 - 17/4/2016 Hiền
5 Viết mã giả cho giải thuật và cài đặt thử
nghiệm chương trình 18/4/2016 - 18/5/2016 Hiền
6 Viết chương trình chính với đầy đủ các
7
Chạy thử nghiệm chương trình trên
nhiều máy tính khác nhau và sữa các lỗi
Trang 6Xác nhận của người hướng dẫn Ngày……tháng……năm 2016
Nhóm sinh viên thực hiện
Trần Thị Ngà Nguyễn Văn Hiền – Võ Nguyễn Thanh Nhân
Trang 7MỤC LỤC
Chương 1: Tổng quan 1
1.1 Đặc tả đề tài: 1
1.2 Cơ sở lý thuyết: 1
1.2.1 Định nghĩa đồ thị: 1
1.2.2 Biểu diễn đồ thị trên máy tính: 1
1.2.3 Bài toán tô màu đồ thị: 2
1.2.4 Minh họa cho giải thuật: 4
1.3 Mục tiêu và nhiệm vụ đồ án: 5
1.4 Chức năng và công dụng phần mềm: 6
1.4.1 Chức năng: 6
1.4.2 Công dụng: 6
1.5 Bối cảnh thực tiễn và ứng dụng của đồ án: 7
1.6 Giải thuật sử dụng: 7
1.7 Môi trường lập trình và phần mềm phụ trợ: 7
Chương 2: Phân tích thiết kế và cài đặt giải pháp 8
2.2 Phân tích giải thuật: 8
2.2.1 Ý tưởng cho giải thuật: 8
2.2.2 Cài đặt giải thuật: 8
2.3 Cài đặt chương trình chính: 10
2.3.1 Nạp dữ liệu vào chương trình: 10
2.3.2 Xử lý tô màu đồ thị: 12
2.3.3 Xử lý lưu/xuất kết quả: 14
2.4 Định dạng file dữ liệu: 16
2.4.1 File dữ liệu vào: 16
2.4.2 File dữ liệu ra: 17
Chương 3: Kết quả và hướng phát triển 24
3.2 Đánh giá kết quả đạt được: 24
3.2.1 Điểm mạnh: 24
3.2.1 Điểm yếu: 24
3.3 Hướng phát triển: 24
TÀI LIỆU THAM KHẢO: 24
Trang 8DANH MỤC CÁC HÌNH
Trang 9Chương 1: Tổng quan
1.1 Đặc tả đề tài:
Các kênh truyền hình từ số 1 đến số 12 được phân chia cho các đài truyền hình các tỉnhtrong vùng đồng bằng Sông Cửu Long (Cà Mau, Bạc Liêu, Sóc Trăng, Cần Thơ, Vĩnh Long,
An Giang, Kiên Giang, Đồng Tháp, Trà Vinh, Bến Tre, Tiền Giang, Long An) sao cho không
có hai đài phát nào ở hai tỉnh nằm cạnh nhau trên bản đồ địa lý lại dùng chung cùng một kênh
1.2 Cơ sở lý thuyết:
1.2.1 Định nghĩa đồ thị:
Đồ thị (kí hiệu: G) là một cấu trúc rời rạc bao gồm các đỉnh (V) và các cạnh (E)nối các đỉnh này Chúng ta phân biệt các loại đồ thị khác nhau bởi kiểu và số lượng cạnhnối hai đỉnh nào đó của đồ thị
Các thuật ngữ cơ bản:
+ Dồ thị vô hướng G = (V,E) bao gồm V là tập các đỉnh, và E là tập các cặpkhông có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh Hai cạnh e1 và e2được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh
+ Hai đỉnh u và v của đồ thị vô hướng G được gọi la kề nhau nếu (u,v) là cạnh của
đồ thị G
1.2.2 Biểu diễn đồ thị trên máy tính:
Để lưu trữ đồ thị và thực hiện các phép toán khác nhau với đồ thị trên máy tínhcần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị Việc chọn cấu trúc dữ liệunào để biễu diễn đồ thị có tác động rất lớn đến hiệu quả của thuật toán Vì vậy việc chọnlựa cấu trúc dữ liệu để biểu diễn đồ thị phụ thuộc vào từng tình huống cụ thể (bài toán vàthuật toán cụ thể)
Ma trận kề của đồ thị:
Xét đơn đồ thị vô hướng G = (V,E), với tập đỉnh V={1,2,…,n}, tập cạnh E={e1,e2,…,em} Ta gọi ma trận kề của đồ thị là ma trận
A = {aij : i,j = 1,2,…,n}
Với các phần tử được xác định theo quy tắc sau đây:
Ai,j = 0, nếu (i,j) ∈ E và
Ai,j = 1, nếu (i,j) ∉ E, i,j= 1,2,…,n
Trang 1
Trang 10Ví dụ: Ma trận kề của đồ thị vô hướng cho trong hình 1.2.2.1 là:
Hình 1.2.2.1: Đồ thị vô hướng G và ma trận kề của G.
1.2.3 Bài toán tô màu đồ thị:
Cho đồ thị vô hướng G Hãy tìm cách gán mỗi đỉnh của đồ thị một màu sao cho hai đỉnh kề nhau không bị tô bởi cùng một màu Một phép gán màu cho hai đỉnh như vậy được gọi là phép tô màu đồ thị Bài toán tô màu đòi hỏi tìm phép tô màu với số màu phải
sử dụng là ít nhất Số màu ít nhất cần dùng để tô màu đồ thị được gọi là sắc số của đồ thị
Giải thuật cho bài toán này được thực hiện như sau:
Tính bậc của tất cả các đỉnh
while(còn đỉnh chưa được tô)
{
Trang 2
Trang 11+ Tìm đỉnh (chưa được tô) có bậc lớn nhất Chẳn hạn đó là đỉnh i0.
+ Tìm màu để tô đỉnh i0, chẳn hạn đó là màu j
+ Ngăn cấm việc tô màu j cho các đỉnh kề với đỉnh i0
+ Tính bậc cho mỗi đỉnh của đồ thị ban đầu:
for(int i=1, i<=n;i++)
for(int j=1;j<=n;j++)
if(c[i][j]==1)bac[i]=bac[i]+1;
+i=0 //là số đỉnh được tô tại thời điểm đang xét.
//Lặp lại đoạn sau đến khi nào số đỉnh đã được tô bằng n thì dừng lại.
Trang 12if(bac[j]>maxtemp && dinh[j]==0){
//bậc của các đỉnh kề với đỉnh i0 thì trừ đi 1 và ngăn cấm việc tô màu j cho các đỉnh kề với đỉnh i0.
for(int k=0;k<=n;k++)if(c[i0][k]==1)
Trang 13Hình 1.2.4.1: Tô màu cho đỉnh 1
Hình 1.2.4.2: Tô màu cho đỉnh 2
Hình 1.2.4.3: Tô màu cho đỉnh 3
Hình 1.2.4.4: Tô màu cho đỉnh 4
Hình 1.2.4.5: Tô màu cho đỉnh 5
Trang 5
Trang 141.3 Mục tiêu và nhiệm vụ đồ án:
Phân tích khả năng ứng dụng của đề tài trong thực tiễn
Thiết kế lại giải thuật cho phù hợp với yêu cầu đề tài dựa trên thuật toán Greedy
Tạo ra một phần mềm với đầy đủ tính năng đáp ứng theo yêu cầu đề tài: đọc dữ liệu từfile input chứa thông tin đồ thị, kiểm tra tính hợp lệ của file dữ liệu nhập vào, vẽ và tô màu đồthị với thông tin từ file dữ liệu, tính toán và sắp xếp được các kênh truyền hình vào các đàitruyền hình dựa theo yêu cầu bài toán, hiển thị kết quả sắp xếp ra màn hình và cho phép lưuthông tin kết quả ra file output
1.4 Chức năng và công dụng phần mềm:
1.4.1 Chức năng:
Đọc dữ liệu đồ thị từ file input, có kiểm tra tính hợp lệ của file
Load dữ liệu bản đồ từ file hình ảnh
Cho phép người dùng đánh dấu vị trí các tỉnh trong bản đồ dùng làm các đỉnh cho
đồ thị
Ẩn/hiện bản đồ so với đồ thị để người dùng dễ dàng đối chiếu kết quả
Xuất kết quả đồ thị đã được tô màu ở các đỉnh sao cho hai đỉnh liên kết với nhau cóhai màu khác nhau, với số màu cần dùng cho cả đồ thị là tối thiểu
Hiển thị thông tin về số kênh và mã số kênh trong mỗi tỉnh đáp ứng yêu cầu bài toán
là không có hai đài phát nào ở hai tỉnh nằm cạnh nhau trên bản đồ địa lý dùng cùngmột kênh
Lưu thông tin kết quả vào file text để xem lại
Xuất hình ảnh đồ thị ra file hình có kèm theo chữ ký tác giả
1.4.2 Công dụng:
Tính toán và phân bố 12 kênh truyền hình vào các đài truyền hình ở các tỉnh đồng bằngSông Cửu Long sao cho không có hai đài truyền hình nào ở hai tỉnh nằm cạnh nhau dùngchung một kênh
Trang 6
Trang 151.5 Bối cảnh thực tiễn và ứng dụng của đồ án:
Các đài truyền hình các tỉnh trong vùng đồng bằng Sông Cửu Long (Cà Mau, Bạc Liêu, SócTrăng, Cần thơ, Vĩnh long, An giang, Kiên giang, Đồng tháp, Trà Vinh, Bến Tre, Tiền giang,Long An) cần phải có các kênh truyền hình riêng để phát, mỗi đài có thể có nhiều hơn mộtkênh phát, các kênh phát của hai đài trong hai tỉnh gần nhau không được trùng nhau vì như thế
sẽ làm lãng phí kênh và giảm chất lượng tín hiệu Vì thế giải pháp cho vấn đề này là phân bốcác kênh truyền hình vào các đài phát sao cho mỗi đài trong hai tỉnh cạnh nhau phải có mãkênh khác nhau Việc phân bố các kênh truyền hình vào các tỉnh nếu làm bằng thủ công sẽ
không tối ưu và rất mất thời gian, vì vậy sự ra đời của phần mềm Channels Distribution giúp
ta giải quyết bài toán phân bố kênh này một cách nhanh chóng, tối ưu và chính xác hơn
1.7 Môi trường lập trình và phần mềm phụ trợ:
Phần mềm được lập trình và hoạt động trong môi trường windows
Phần mềm phụ trợ: bộ Visual Studio 2015 của Microsoft
Trang 7