BÁO CÁO ĐỒ ÁN
CẤU TRÚC DỮ LIỆU
GVHD: Lê Quý Lộc
SVTH : Lê Văn Sỹ
Mai Thăng Long
2
Nội dung
Kết luận
5
Giới thiệu
1
Thuật toán
2
Cấu trúc dữ liệu
3
Chương trình
4
3
I. Giới thiệu
Lý thuyết đồ thị:
Định nghĩa
• Đồ thị là một tập các đối tượng được gọi là các
đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc
cung). Cạnh có thể có hướng hoặc vô hướng.
Đồ thị thường được vẽ dưới dạng một tập các
điểm (các đỉnh nối với nhau bẳng các đoạn
thẳng (các cạnh).
Ví dụ
Hình vẽ một đồ thị có 6 đỉnh và 7 cạnh
4
1 2
3
5
4
I. Giới thiệu
Bài toán tô màu đồ thị
Đề bài:
• Cho một đồ thị vô hướng N đỉnh, mỗi đỉnh được
nối với 1 số đỉnh khác. Bài toán đặt ra là: Hãy tô
màu các đỉnh sao cho không có hai đỉnh nào có 2
màu giống nhau mà lại nối trực tiếp với nhau với
số màu cần tô là ít nhất
Ví dụ:
1 2
3
5
4
MENU
5
II. Thuật toán
1
• Chọn một màu
để tô.
• Chọn một đỉnh
chưa được tô
• Tô màu cho đỉnh
đó
2
• Với mỗi đỉnh chưa
tô nếu không kề với
đỉnh đã tô thì tô đỉnh
đó bởi màu đã chọn.
• Lặp lại việc tô cho
đến khi không còn
đỉnh nào có thể tô
bằng màu đã chọn.
3
•Chọn một màu mới
và lặp lại bước 2
cho đến khi tất cả
các đỉnh được tô.
6
II. Thuật toán
Sơ đồ khối
của thuật
toán
END
SAI
màu của các đỉnh kề
nut_i khác color
setcolor(nut_i, color);
nut_da_to++;
nut_i++;
nut_i >= n
nut_da_to < n
nut_i chưa tô
nut_i = 0; color++;
Vào dữ liệu (n, các liên kết)
nut_da_to = 0; color = 1; nut_i
= 0
BEGIN
ĐÚNG
SAI
SAI
ĐÚNG
ĐÚNG
ĐÚNG
SAI
MENU
7
III. Cấu trúc dữ liệu
Tổ chức lưu trữ đỉnh đồ thị
Đỉnh của đồ thị là một đối tượng
• class node{… }
Các thuộc tính của đỉnh
• color kiểu số nguyên, mang giá trị là mã màu của
đỉnh khi đỉnh đã được tô màu.
• x, y kiểu số nguyên, là cặp tọa độ của đỉnh (để vẽ
lên màn hình)
• value kiểu xâu, là tên của đỉnh (để vẽ lên màn
hình)
• link kiểu con trỏ chỉ đến một danh sách liên kết.
Danh sách liên kết này chứa các đỉnh kề với nó.
8
III. Cấu trúc dữ liệu
Tổ chức lưu trữ đồ thị
Đồ thị
• Đồ thị được lưu trữ là mảng graph[MAX_NODE]
một chiều kiểu node, mỗi phần tử là một đỉnh.
Cung
• Cung: nếu tồn tại cung giữa đỉnh i và đỉnh x thì ta
chỉ cần thêm x vào danh sách các đỉnh kề của i
(link) và ngược lại.
MENU
9
IV. Chương trình
10
IV. Chương trình
Chương trình
Chức năng:
• Nhập dữ liệu cho chương trình từ bàn phím hoặc
nhập từ file text
• Hổ trợ chế độ đồ họa để vẽ các đỉnh, các cung liên
kết, minh họa việc tô màu một cách trực quan. Có
thể chỉnh thời gian thực hiện tô màu để quan sát
từng bước việc tô màu các đỉnh đồ thị.
• Sau khi tô màu có thể xuất kết quả tô màu ra file
text
11
IV. Chương trình
Chương trình
Menu:
• Nhap: nhập số đỉnh của đồ thị
• Nhap cac moi: nhập liên kết giữa các đỉnh. Cú
pháp là:
dinh1 dinh2
nhập 0 0 để kết thúc nhập
• To mau: thực hiện tô màu đồ thị.
• Doc tu file: Lựa chọn nhập dữ liệu từ file text
• Save as: Lưu kết quả tô màu ra file text
• (q)uit: Nhấn q để thoát khỏi chương trình
12
IV. Chương trình
Kết quả
13
IV. Chương trình
Kết quả
14
IV. Chương trình
Kết quả
15
IV. Chương trình
Kết quả
16
IV. Chương trình
Kết quả
MENU
17
V. Kết luận
Nhận xét về chương trình
Những điều đã thực hiện được:
• Chương trình đã được xây dựng hoàn chỉnh.
• Trong quá trình chạy không phát sinh lỗi.
• Cho ra kết quả nhanh chóng với độ chính xác cao
đúng với thuật toán đã đưa ra
• Có thiết kế đồ họa hiển thị trực quan.
• Có chức năng nhập dữ liệu trực tiếp hoặc nhập
thông qua file, lưu dữ liệu đã nhập vào file để sử
dụng lại, xuất kết quả ra file.
18
V. Kết luận
Nhận xét về chương trình
Những điều còn thiếu sót:
• Còn một số giới hạn về số nút (< 50 nút) và số
màu tô cho đồ thị (nếu quá số màu thì sẽ đưa kết
quả ra file) .
• Do thực hiện đề tài trong một khoảng thời gian
ngắn và sự thiếu kinh nghiệm nên đồ án của
chúng em chắc chắn còn có nhiều thiếu sót.
Chúng em rất mong nhận được sự chỉ bảo
của thầy cô và góp ý của các bạn để đồ án
hoàn thiện hơn.
MENU