Tải bản đầy đủ (.docx) (30 trang)

Đồ án ngành chương trình phân bố kênh truyền hình tại đồng bằng sông cửu long sử dụng thuật toán tô màu lý thuyết đồ thị

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1000.65 KB, 30 trang )

LỜ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á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 q 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 tố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 tốn tơ màu đồ thị, cụ thể ở đây là thuật
tố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ị.
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êu
củ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.




2

LỜI CẢM ƠN
Trên thực tế khơng có sự thành cơng nào mà không gắn liền với những sự hỗ trợ,
giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt thời gian
từ khi bắt đầu học tập ở giảng đường đại học đến nay, em đã nhận được rất nhiều sự
quan tâm, giúp đỡ của q Thầy Cơ, gia đình và bạn bè. Em xin chân thành cảm ơn
Thầy Cô đã tận tâm hướng dẫn chúng em qua từng buổi học trên lớp cũng như những
buổi nói chuyện, thảo luận về lĩnh vực sáng tạo trong nghiên cứu khoa học. Nếu khơng
có 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ể hồ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ức
củ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 hồn thiện hơn. Sau cùng, em xin
kính chúc q 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ệnh
cao đẹ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ủa
trường Đại học Tiền Giang, đặc biệt là các thầy cô khoa Công Nghệ Thông Tin của
trường đã tạo điều kiện cho em để em có thể hồ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 hồ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ện
Nguyễn Văn Hiền – Võ Nguyễn Thanh Nhân


Trang 2


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ập
trì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 tốn và sắp xếp được các kênh truyền hì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àn hì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ả.
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à
Trang 3


4

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ùng mộ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 tố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 nhau
dù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ạ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) 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ả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.
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ới
cá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
ra 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 qua
cá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,
Trang 4


5


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
1
2
3
4
5
6

Các nội dung, cơng việc

Thời gian

chủ ́u cần được thực hiện

(bắt đầu - kết thúc)

Lên kế hoạch chi tiết cho các cơng việc
cận thực hiện.
Tìm kiếm hình ảnh bản đồ các tỉnh ở
đồng bằng Sơng Cửu Long.
Tìm hiểu về giải thuật tơ màu đồ thị

bằng thuật tốn Greedy.
Phân tích bản đồ vùng thành ma trận kề
và viết file dữ liệu đầu vào.
Viết mã giả cho giải thuật và cài đặt thử
nghiệm chương trình.
Viết chương trình chính với đầy đủ các
tính năng.

Người thực hiện

7/4/2016 - 8/4/2016

Hiền - Nhân

9/4/2016 - 10/4/2016

Nhân

11/4/2016 - 15/4/2016

Hiền - Nhân

16/4/2016 - 17/4/2016

Hiền

18/4/2016 - 18/5/2016

Hiền


19/5/2016 - 31/5/2016

Hiền - Nhân

1/6/2016 - 10/6/2016

Hiền - Nhân

11/6/2016 - 12/6/2016

Hiền

13/6/2016 - 16/6/2016

Hiền - Nhân

Chạy thử nghiệm chương trình trên
7

nhiều máy tính khác nhau và sữa các lỗi
phát sinh.

8
9

Đóng gói chương trình thành file cài
đặt.
Viết báo cáo.

Trang 5



6

Xá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 6


7

MỤC LỤC

Trang 7


8
DANH MỤC CÁC HÌNH

Hình 1.2.2.1: Đồ thị vơ hướng G và ma trận kề của G.
Hì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.
Hình 2.2.2.1: Struct chứa thơng tin các đỉnh của đồ thị
Hình 2.2.2.2: Phương thức tạo đỉnh láng giềng
Hình 2.2.2.3: Phương thức khởi tạo giá trị ban đầu cho đỉnh.
Hình 2.2.2.4: Phương thức CheckMau.
Hình 2.2.2.5: Phương thức To.
Hình 2.3.1.1: Phương thức nạp bản đồ vào chương trình.
Hình 2.3.1.2: Phương thức nạp file thơng tin đồ thị vào chương trình
Hình 2.3.1.3: Phương thức ReadFileMatrix.
Hình 2.3.1.4: Phương thức KiemTra_MaTran.
Hình 2.3.2.1: Phương thức xử lý sự kiện click nút tơ màu.
Hình 2.3.2.2: Hàm vẽ cạnh cho đồ thị.
Hình 2.3.2.3: Hàm tơ màu cho đồ thị
Hình 2.3.2.3: Hàm hiển thị kết quả tơ màu ra màn hình
Hình 2.3.3.1: Hàm xử lý sự kiện click nút Xuất kết quả.
Hình 2.3.3.2: Hàm SaveResult – ghi kết quả vào file text.
Hình 2.3.3.3: Hàm xử lý cho sự kiện click nút Lưu đồ thị.
Hình 2.3.3.4: Hàm SaveGraphic – xuất đồ thị ra file hình ảnh.
Hình 2.4.1: Thơng tin file dữ liệu input
Hình 2.4.2: Thơng tin file dữ liệu output
Hình 2.5.1: Màn hình khi mới mở ứng dụng
Hình 2.5.2: Màn hình khi đã nạp bản đồ các tỉnh ở đồng bằng Sơng Cửu Long
Hình 2.5.3: Màn hình khi đã nạp thành cơng dữ liệu từ file text chứa thơng tin đồ thị
Hình 2.5.4: Màn hình khi chọn nút chức năng Xem ma trận
Hình 2.5.5: Màn hình khi mới chọn chức năng xem Danh sách tỉnh
Hình 2.5.6: Màn hình sau khi chọn các đỉnh đồ thị và nhấn nút Vẽ cạnh và tơ màu
Hình 2.5.7: Màn hình sau khi chọn chức năng Ẩn bản đồ
Hình 2.5.8: Màn hình sau khi lưu file thơng tin kết quả
Hình 2.5.9: Màn hình sau khi lưu file đồ thị thành cơng

Hình 2.5.10: Hình ảnh đồ thị sau khi được lưu kèm theo chữ kí tác giả góc trái dưới
Hình 2.5.11: Màn hình thơng tin chương trình sau khi nhấn nút Thông tin

Chương 1: Tổng quan
Trang 8


9

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ỉnh
trong 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ạnh nố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ặp
khơ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 e 1 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 tốn khác nhau với đồ thị trên máy tính cầ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ệu nào để
biễu diễn đồ thị có tác động rất lớn đến hiệu quả của thuật tốn. Vì vậy việc chọn lự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 tốn và thuật

tố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.
Ví dụ: Ma trận kề của đồ thị vơ hướng cho trong hình 1.2.2.1 là:
Trang 9


10

Hình 1.2.2.1: Đồ thị vơ hướng G và ma trận kề của G.
Tính chất của ma trận kề:
+ Ma trận kề của đồ thị vô hướng là ma trận đối xứng, tức là a[i,j]=a[j,i], i,j=1,2,
…,n.
+ Tổng các phần tử trên dịn i (cột j) của ma trận kề chính bằng bậc của đỉnh i
(đỉnh j).
1.2.3. Bài tố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 tố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ơ)

{
+ Tìm đỉnh (chưa được tơ) có bậc lớn nhất. Chẳn hạn đó là đỉnh i0.
Trang 10


11

+ 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ô màu đỉnh i0 là j.
+ Gán bậc của đỉnh được tô là 0.
}
− Mã giả:

+ Danh sách bảng màu cho các đỉnh được cho là 1 và bậc của các đỉnh cho là 0.
for(int i=0, i<=n;i++)
{
for(int j=0;j<=n;j++)
mau[i][j]=1;
dinh[i]=0;
bac[i]=0;
}
+ 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.
{

//Tìm đỉnh có bậc cao nhất tại thời điểm đang xét
//Tìm đỉnh (CHUA XET) có bậc cao nhất.
maxtemp=-1;
for(int j=1;j<=n;j++)
if(bac[j]>maxtemp && dinh[j]==0)

Trang 11


12

{
maxtemp = bac[j];
I0=j;
}
//Tìm và tơ màu cho đỉnh co1 bậc cao nhất (giả sử đó là i0) và tơ
màu cho đỉnh này (giả sử đó là màu j).
//Tìm và tơ màu cho đỉnh có bậc cao nhất – màu m.
j=1;
while(mau[i0][j]==0)
j++;
//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)
{
bac[k]--;
mau[k][j]=0;
}
//bậc của đỉnh được tơ thì cho 0

dinh[i0] = j;
bac[i0] = 0;
i++;
}
1.2.4. Minh họa cho giải thuật:

Trang 12


13

Hì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 13


14

1.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 tốn và sắp xếp được các kênh truyền hình vào các đài truyền
hình dựa theo u cầu bài tốn, hiển thị kết quả sắp xếp ra màn hình và cho phép lưu thô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
tố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ùng mộ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 tố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 nhau dùng
chung một kênh.

Trang 14


15

1.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ó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) 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ả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 tố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.6. 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ới cá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 ra 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 qua cá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.
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 15


16


Chương 2: Phân tích thiết kế và cài đặt giải pháp
2.1. Phân tích nhiệm vụ:
− Bưới 1: Từ bản đồ các tỉnh vùng đồng bằng Sông Cửu Long, người dùng tiến hành phân tích và
tạo ra file chứa thơng tin về đồ thị, nội dung file gồm: số lượng đỉnh của đồ thị (chính là số
lượng tỉnh của vùng); ma trận kề thể hiện tỉnh láng giềng (hai tỉnh nằm cạnh nhau và có chung
được biên giới thì được gọi là láng giềng nhau) của mỗi tỉnh; danh sách tên các tỉnh và số kênh
cần dùng cho cả vùng.
− Bước 2: Nạp file dữ liệu đã phân tích ở bước 1 và file hình ảnh bản đồ vùng vào chương trình.
− Bước 3: Người dùng lần lượt lựu chọn các đỉnh của đồ thị tương ứng với các tỉnh của vùng
theo thứ tự định trước.
− Bước 4: Nối các đỉnh lại và tơ màu cho đồ thị theo thuật tốn tơ màu.
− Mỗi đỉnh sẽ có một màu tương ứng, với mỗi màu thu được ta sẽ phân bố đều các kênh truyền
hình vào mỗi tỉnh, những tỉnh nào có màu được tơ giống nhau sẽ có các kênh truyền hình giống
nhau.

− Bước 5: Người dùng xuất kết quả các tỉnh và các kênh được phân bố trong tỉnh ra file text để

xem lại khi cần.
2.2. Phân tích giải thuật:
2.2.1. Ý tưởng cho giải thuật:
Lần lượt lấy ra các màu và tơ hết cho các đỉnh có thể tơ được (khơng tơ màu cho đỉnh
láng giềng với nó), sau khi tơ cho một đỉnh thì việc đầu tiên là thêm màu vừa tô vào danh
sách màu cấm của đỉnh láng giềng với nó.
2.2.2. Cài đặt giải thuật:
− Tạo cấu trúc DinhDoThi chứa thơng tin các đỉnh của đồ thị:

Hình 2.2.2.1: Struct chứa thông tin các đỉnh của đồ thị
− Tạo class ToMauDoThi, thể hiện của giải thuật tô màu đồ thị, gồm các phương thức chính:


+ Phương thức TaoLangGieng(int[,] arr, int sodinhtoida, int x), để khởi tạo danh sách
các nước láng giềng cho mỗi đỉnh. Tham số truyền vào: arr: ma trận kề của đỉnh,
Trang 16


17

sodinhtoida: tổng số đỉnh đồ thị, x: đỉnh đang xét.

Hình 2.2.2.2: Phương thức tạo đỉnh láng giềng
+ Phương thức Set(List<Point> vitri, string[] TenDinh, int[,] arr, int MAXDINH),
khởi tạo các giá trị ban đầu cho mỗi đỉnh của đồ thị. Tham số truyền vào: vitri: danh sách vị
trí tọa độ của các đỉnh, TenDinh: danh sách tên các đỉnh, arr: ma trận kề của đỉnh,
MAXDINH: tổng số đỉnh cần tô.
Liên hệ email: để lấy hình ảnh gốc

Hình 2.2.2.3: Phương thức khởi tạo giá trị ban đầu cho đỉnh
+ Phương thức CheckMau(int i, int mauto), gán màu cần tô cho đỉnh và thêm màu này
vào danh sách màu cấm của các tỉnh láng giềng. Tham số: i: vị trí đỉnh trong danh sách,
mauto: mã số màu cần tô cho đỉnh.
Liên hệ email: để lấy hình ảnh gốc

Hình 2.2.2.4: Phương thức CheckMau
+ Phương thức To(int MAXDINH), tô màu cho tất cả đỉnh của đồ thị. Tham số:
MAXDINH: số đỉnh tối đa của đồ thị.
Liên hệ email: để lấy hình ảnh gốc

Trang 17



18

Hình 2.2.2.5: Phương thức To
2.3. Cài đặt chương trình chính:
2.3.1. Nạp dữ liệu vào chương trình:
− Nạp bản đồ vùng vào chương trình, định dạng bản đồ được sử dụng là file hình ảnh.

Hình 2.3.1.1: Phương thức nạp bản đồ vào chương trình

− Nạp file thơng tin về đồ thị vào chương trình.

Hình 2.3.1.2: Phương thức nạp file thơng tin đồ thị vào chương trình
Sử dụng phương thức ReadFileMatrix.
Trang 18


19

Liên hệ email: để lấy hình ảnh gốc

Hình 2.3.1.3: Phương thức ReadFileMatrix
Trong đó có kiểm tra tính hợp lệ của trận thông qua phương thức: KiemTra_MaTran
Liên hệ email: để lấy hình ảnh gốc

Hình 2.3.1.4: Phương thức KiemTra_MaTran
2.3.2. Xử lý tơ màu đồ thị:

Hình 2.3.2.1: Phương thức xử lý sự kiện click nút tô màu
Gồm các hàm xử lý đi kèm:
+ Hàm VeCanh:

Liên hệ email: để lấy hình ảnh gốc

Hình 2.3.2.2: Hàm vẽ cạnh cho đồ thị
+ Hàm ToMau:
Liên hệ email: để lấy hình ảnh gốc

Hình 2.3.2.3: Hàm tô màu cho đồ thị

Trang 19


20

+ Hàm HienThiKetQua:
Liên hệ email: để lấy hình ảnh gốc

Hình 2.3.2.3: Hàm hiển thị kết quả tơ màu ra màn hình.
2.3.3. Xử lý lưu/xuất kết quả:
- Hàm xử lý cho sự kiện click nút Xuất kết quả:

Hình 2.3.3.1: Hàm xử lý sự kiện click nút Xuất kết quả.
Hàm đi kèm là SveResult:
Liên hệ email: để lấy hình ảnh gốc

Hình 2.3.3.2: Hàm SaveResult – ghi kết quả vào file text.
- Hàm xử lý cho sự kiện click nút Lưu đồ thị:
Liên hệ email: để lấy hình ảnh gốc
Hình 2.3.3.3: Hàm xử lý cho sự kiện click nút Lưu đồ thị.
Hàm đi kèm là: SaveGraphic
Liên hệ email: để lấy hình ảnh gốc

Hình 2.3.3.4: Hàm SaveGraphic – xuất đồ thị ra file hình ảnh.

Trang 20


21

2.4. Định dạng file dữ liệu:
File dữ liệu là một file text có định dạng *.txt.





2.4.1. File dữ liệu vào:
Dịng đầu tiên là số lượng tỉnh (đặt số lượng này là n).
n dòng tiếp theo là ma trận kề của đồ thị.
n dòng tiếp theo nữa là tên các tỉnh theo thứ tự hợp lệ.
Dòng cuối cùng là số lượng kênh truyền hình cần phân bố.

Hình 2.4.1: Thơng tin file dữ liệu input
2.4.2. File dữ liệu ra:
File dữ liệu xuất có dạng: Tỉnh: [tên tỉnh] – Kênh: [danh sách kênh theo tỉnh].

Trang 21


22

Hình 2.4.2: Thơng tin file dữ liệu output


Trang 22


23

2.5. Giao diện của chương trình:

Hình 2.5.1: Màn hình khi mới mở ứng dụng

Hình 2.5.2: Màn hình khi đã nạp bản đồ các tỉnh ở đồng bằng Sông Cửu Long

Trang 23


24

Hình 2.5.3: Màn hình khi đã nạp thành cơng dữ liệu từ file text chứa thơng tin đồ thị

Hình 2.5.4: Màn hình khi chọn nút chức năng Xem ma trận

Trang 24


25

Hình 2.5.5: Màn hình khi mới chọn chức năng xem Danh sách tỉnh

Hình 2.5.6: Màn hình sau khi chọn các đỉnh đồ thị và nhấn nút Vẽ cạnh và tô màu


Trang 25


×