1. Trang chủ
  2. » Giáo Dục - Đào Tạo

D AN MON HC LY THUYE t DO THI

3 59 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 346,47 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

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ệuHuong_dan_08_Floyd.pdf)

Trang 3

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

* Mỗi yêu cầu nhỏ trong từng chức năng tính 1 điểm

Ngày đăng: 15/09/2019, 09:23

TỪ KHÓA LIÊN QUAN

w