Giới thiệu • Đồ 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.. Đồ 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ẳ
Trang 1BÁ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
Trang 2Nộ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
Trang 3I Giới thiệu
• Đồ 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)
Trang 4
1 2
3
5
4
I Giới thiệu
• 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
1 2
3
5
4
MENU
Trang 5II 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ô
Trang 6II 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
Trang 7III Cấu trúc dữ liệu
• class node{… }
• 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ó
Trang 8III Cấu trúc dữ liệu
• Đồ 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: 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
Trang 9IV Chương trình
Trang 10IV Chương trình
• 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
Trang 11IV Chương trình
• 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
Trang 12IV Chương trình
Trang 13IV Chương trình
Trang 14IV Chương trình
Trang 15IV Chương trình
Trang 16IV Chương trình
MENU
Trang 17V Kết luận
• 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
Trang 18V Kết luận
• 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
của thầy cô và góp ý của các bạn để đồ án hoàn thiện hơn