Tải bản đầy đủ (.pdf) (3 trang)

D AN MON HC LY THUYE t DO THI

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 (346.47 KB, 3 trang )

CTT005 – LÝ THUYẾT ĐỒ THỊ
(hệ Đào tạo từ xa)

ĐỒ ÁN MÔN HỌC

1. Nội dung đồ án
Xây dựng ứng dụng phân tích đồ thị nhằm hỗ trợ người dùng tìm hiểu các thông tin về
đồ thị đang xét. Học viên có thể xây dựng ứng dụng ở chế độ console, không nhất thiết
sử dụng giao diện đồ họa. Các chức năng chính của ứng dụng được mô tả cụ thể như
bên dưới.
Chức năng 1 – Đọc dữ liệu đầu vào
Cho đồ thị có hướng, không chứa cạnh bội và không chứa cạnh khuyên, cạnh của đồ thị
có thể có trọng số ÂM.
Ma trận kề biểu diễn đồ thị được lưu trong tập tin input.txt có định dạng như sau:


Dòng đầu tiên chứa số nguyên n thể hiện số đỉnh của đồ thị



n dòng tiếp theo, mỗi dòng gồm n số nguyên, gọi số nguyên ở dòng i cột j là [i, j],
[i, j] = x: có cạnh nối từ đỉnh i đến đỉnh j với trọng số x (x là số nguyên), [i, j] = 0:
không có cạnh nối giữa i và j

Hãy tạo hai ma trận kề mới từ ma trận kề được cho theo mô tả bên dưới và lưu vào tập
tin có tên theo quy định:


Trọng số âm x được chuyển thành -x (tức là giá trị dương đối xưng) để tạo ra đồ
thị mới không có cạnh âm, lưu ma trận kề mới vào tập tin input_nonnegative.txt.




Tiếp tục chuyển đồ thị trên từ có hướng thành vô hướng, lưu ma trận kề mới vào
tập tin input_nonnegative_nondirected.txt.

Chức năng 2 – Khảo sát tính chất cơ bản của đồ thị
Dữ liệu đầu vào: tập tin input.txt và input_nonnegative_nondirected.txt (chưa cần
quan tâm đến trọng số)
Mô tả chức năng: gọi A là ma trận kề đọc được từ tập tin input.txt và B là ma trận kề đọc
được từ tập tin input_nonnegative_nondirected.txt, xuất ra màn hình kết quả của tất cả
các yêu cầu sau đây


a) Sử dụng ma trận A. Xác định đồ thị là vô hướng hay có hướng bằng cách kiểm tra
tính chất của ma trận kề. Xác định số lượng đỉnh, số lượng cạnh, bậc vào-bậc ra của
từng đỉnh trong đồ thị
b) Sử dụng ma trận B. Kiểm tra đồ thị có phải đồ thị đầy đủ Kn, nếu phải thì n bằng bao
nhiêu? Kiểm tra đồ thị có phải là đồ thị n-chính quy, nếu phải thì n bằng bao nhiêu?
Chức năng 3 – Xác định cây khung nhỏ nhất
Dữ liệu đầu vào: tập tin input_nonnegative_nondirected.txt
Mô tả chức năng: xuất ra màn hình kết quả của tất cả các yêu cầu sau đây
a) Kiểm tra đồ thị có liên thông hay không?
b) Nếu đồ thị liên thông, áp dụng thuật toán Prim để xác định danh sách các cạnh (kèm
trọng số tương ứng) thuộc cây khung nhỏ nhất và tổng trọng số của cây này
c) Thực hiện tương tự yêu cầu b) nhưng thay thuật toán Prim bằng thuật toán Kruskal
Chức năng 4 – Xác định đường đi ngắn nhất
Dữ liệu đầu vào: tập tin input.txt và input_nonnegative.txt
Mô tả chức năng: xuất ra màn hình đường đi ngắn nhất và chi phí của đường đi này cho
yêu cầu a) và b), và trình bày vào báo cáo trả lời cho yêu cầu c)
a) Lần lượt áp dụng thuật toán Dijkstra và Bellman để tìm đường đi ngắn nhất trên đồ

thị được biểu diễn bằng ma trận kề trong tập tin input.txt
b) Thực hiện tương tự yêu cầu a) nhưng thay tập tin input.txt bằng input_nonnegative.txt
c) Nhận xét bốn đường đi tìm được trong yêu cầu a) và b)

Chức năng 5 – Chức năng cộng điểm
Các yêu cầu dưới đây độc lập với nhau. Học viên tùy chọn một hay nhiều yêu cầu để đạt
điểm cộng.
a) Dữ liệu đầu vào: tập tin input_nonnegative.txt. Xác định loại liên thông trong đồ thị
có hướng: liên thông mạnh, liên thông yếu, liên thông một phần, hay không liên thông
b) Dữ liệu đầu vào: tập tin input_nonnegative_nondirected.txt. Xác định cây khung
lớn nhất bằng cách hiệu chỉnh thuật toán Prim và thuật toán Kruskal
c) Dữ liệu đầu vào: tập tin input_nonnegative.txt. Tìm đường đi ngắn nhất và chi phí
của đường đi này bằng thuật toán Floyd (xem tài liệu Huong_dan_08_Floyd.pdf).


d) Dữ liệu đầu vào: tập tin input_nonnegative_nondirected.txt. Kiểm tra đồ thị có phải
là đồ thị Euler hay không? Nếu phải thì in ra màn hình chu trình Euler. Nếu không phải
thì tiếp tục kiểm tra đồ thị có phải là đồ thị nửa Euler hay không? Nếu là đồ thị nửa
Euler thì in ra màn hình đường đi Euler.
e) Xây dựng giao diện đồ họa, thân thiện với người dùng
LƯU Ý: Học viên được tham khảo code gợi ý của giáo viên nhưng không được sao chép
nguyên văn. Nếu vi phạm sẽ bị trừ điểm phần chức năng đã sao chép.
2. Thang điểm
Chức năng 1
Chức năng 2
Chức năng 3
Chức năng 4
Chức năng 5 (cộng điểm)
* Mỗi yêu cầu nhỏ trong từng chức năng tính 1 điểm


2 điểm
2 điểm
3 điểm
3 điểm
5 điểm



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×