BaiTapLon TRR

7
Khoa CNTT – ĐH Thành Đô Bài tập Toán rời rạ c DANH SÁCH BÀI TẬP LỚP MÔN TOÁN RỜI RẠC HỆ ĐẠI HỌC - CAO ĐẲNG CNTT 1. Sinh xâu - Trình bày thuật toán sinh xâu kết tiếp - Ứng dụng thuật toán trên viết chương trình liệt kê tất cả tập con của tập ( n < 10). Dứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (lực lượng của tổ hợp) Dòng kế tiếp ghi lại dãy các phần tử, mỗi phần tử cách nhau bởi ít nhất một dấu cách. Kết quả chương trình lưu vào file KetQua.out theo khuân dạng Dòng đầu ghi lại số tập con tìm được Dòng kế tiếp liệt kê tất cả các tập con Ví dụ: Data.in 3 2 4 6 KetQua.out 7 2 4 6 2 4 2 6 4 6 2 4 6 2. Thuật toán quay lui - Trình bày thuật toán - Viết chương trình cài đặt thuật toán trên để giải bài toán: liệt kê dãy nhị phân độ dài n; liệt kê hoán vị của tập {1,2,3,..n} 3. Thuật toán nhánh cận - Trình bày thuật toán - Viết chương trình cài đặt thuật toán trên để giải bài toán “cái túi”. 4. Thuật toán nhánh cận - Trình bày thuật toán - Viết chương trình cài đặt thuật toán trên để giải bài toán “người du lịch”. 5. Tối ưu 1

description

love

Transcript of BaiTapLon TRR

Page 1: BaiTapLon TRR

Khoa CNTT – ĐH Thành Đô Bài tập Toán rời rạ c

DANH SÁCH BÀI TẬP LỚPMÔN TOÁN RỜI RẠC HỆ ĐẠI HỌC - CAO ĐẲNG CNTT

1. Sinh xâu- Trình bày thuật toán sinh xâu kết tiếp- Ứng dụng thuật toán trên viết chương trình liệt kê tất cả tập con của tập ( n < 10). Dứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (lực lượng của tổ hợp) Dòng kế tiếp ghi lại dãy các phần tử, mỗi phần tử cách nhau bởi ít nhất một dấu cách.Kết quả chương trình lưu vào file KetQua.out theo khuân dạng Dòng đầu ghi lại số tập con tìm được Dòng kế tiếp liệt kê tất cả các tập conVí dụ:

Data.in32 4 6

KetQua.out72462 42 64 62 4 6

2. Thuật toán quay lui- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trên để giải bài toán: liệt kê dãy nhị phân độ dài

n; liệt kê hoán vị của tập {1,2,3,..n}3. Thuật toán nhánh cận

- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trên để giải bài toán “cái túi”.

4. Thuật toán nhánh cận- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trên để giải bài toán “người du lịch”.

5. Tối ưuViết chương trình tìm giá trị tối ưu fopt = f(x1,x2,..,xn) và phương án tối ưu

xopt = (x1, x2,..,xn) của hàm mục tiêu Trong đó

; cj, aj, b là các số nguyên dương (j=1,2,..,n).

Dữ liệu vào n, b, cj, aj được cho trong file Data.in theo khuôn dạng sau: Dòng đầu tiên ghi lại hai số tự nhiên n và b, hai số được viết cách nhau bởi một hoặc vài kí tự trống. Dòng kế tiếp ghi lại n số nguyên dương c1, c2, .., cn. ; các số được viết cách nhau bởi một hoặc vài kí tự

trống. Dòng cuối cùng ghi lại n số nguyên dương a1, a2,..,an; các số được viết cách nhau bởi một hoặc vài kí

tự trống. Giá trị tối ưu và phương án tối ưu tìm được ghi lại trong file Data.out theo khuôn dạng sau:

1

Page 2: BaiTapLon TRR

Khoa CNTT – ĐH Thành Đô Bài tập Toán rời rạ c Dòng đầu tiên ghi lại giá trị tối ưu fopt = f(x1,x2,..,xn) của hàm mục tiêu. Dòng kế tiếp ghi lại n thành phần của phương án tối ưu xopt = (x1, x2,..,xn). Mỗi thành phần được viết

cách nhau một vài kí tự trống.

Ví dụ dưới đây sẽ minh họa cho file Data.in và file Data.out của bài toán Data.in

4 8 8 5 3 14 3 2 1

Data.out1 41 1 0 1

6. Bài toán tháp hà nội và xếp hậu (chi tiết đề bài xem trong giáo trình toán rời rạc)- Trình bày thuật toán- Cài đặt chương trình, kết quả ghi lại trên file KetQua.out

7. Chuyển đổi biểu diễn đồ thị

Cho đồ thị vô hướng G1 =<V1,E1>, G2 =<V2,E2>, G3 =<V3,E3>. Trong đó, G1 được biểu diễn dưới dạng ma trận kề, G2 được biểu diễn dưới dạng danh sách cạnh, G3 được biểu diễn dưới dạng danh sách kề. Mỗi đồ thị được được tổ chức trong các file dữ liệu theo khuôn dạng sau:

Đồ thị G1: Dòng đầu tiên ghi lại số tự nhiên n là số đỉnh của đồ thị; n dòng kế tiếp ghi lại ma trận kề của đồ thị, hai phần tử khác nhau của ma trận kề được viết phân biệt với nhau bằng một hoặc vài khoảng trống.

Đồ thị G2: Dòng đầu tiên ghi lại hai số tự nhiên n và m tương ứng là số đỉnh và số cạnh của đồ thị. Hai số được viết cách nhau bởi một hoặc vài kí tự trống; m dòng kế tiếp mỗi dòng ghi lại một cạnh của đồ thị. Đỉnh đầu và đỉnh cuối của mỗi cạnh được viết phân biệt với nhau bằng một hoặc vài kí tự trống.

Đồ thị G3: Dòng đầu tiên ghi lại số tự nhiên n là số đỉnh của đồ thị; n dòng kế tiếp mỗi dòng ghi lại danh sách kề của đỉnh tương ứng. Hai đỉnh trong cùng một danh sách kề được phân biệt với nhau bằng một hoặc vài kí tự trống.

Hãy viết chương trình thực hiện những công việc sau:a. Cho đồ thị G1 bất kì. Hãy chuyển đổi đồ thị G1 thành đồ thị được biểu diễn dưới dạng đồ thị G2.b. Cho đồ thị G1 bất kì. Hãy chuyển đổi đồ thị G1 thành đồ thị được biểu diễn dưới dạng đồ thị G3.c. Cho đồ thị G2 bất kì. Hãy chuyển đổi đồ thị G2 thành đồ thị được biểu diễn dưới dạng đồ thị G1.d. Cho đồ thị G2 bất kì. Hãy chuyển đổi đồ thị G2 thành đồ thị được biểu diễn dưới dạng đồ thị G3.e. Cho đồ thị G3 bất kì. Hãy chuyển đổi đồ thị G3 thành đồ thị được biểu diễn dưới dạng đồ thị G1.f. Cho đồ thị G3 bất kì. Hãy chuyển đổi đồ thị G1 thành đồ thị được biểu diễn dưới dạng đồ thị G2.

Ví dụ dưới đây sẽ minh họa cho biểu diễn của đồ thị G1, G2, G3.

8. Duyệt DFS- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thị

2

Page 3: BaiTapLon TRR

Khoa CNTT – ĐH Thành Đô Bài tập Toán rời rạ c Kết quả chương trình lưu vào file KetQua.out theo khuân dạng Dòng thứ nhất ghi lại đỉnh đầu tiên Dòng kế tiếp ghi lại kết quả duyệt, mỗi đỉnh cách nhau bởi một vài dấu cách.Ví dụ:

Data.in 3

0 0 10 0 11 1 0

KetQua.out 1

1 3 2

9. Duyệt BFS- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thịKết quả chương trình lưu vào file KetQua.out theo khuân dạng Dòng thứ nhất ghi lại đỉnh đầu tiên Dòng kế tiếp ghi lại kết quả duyệt, mỗi đỉnh cách nhau bởi một vài dấu cách.Ví dụ:

Data.in30 0 10 0 11 1 0

KetQua.out22 3 1

10. Kiểm tra tính liên thông, đếm số thành phần liên thông- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thị

Kết quả in ra màn hình: Dòng thứ nhất ghi lại “Đồ thị liên thông” hoặc “Đồ thị không liên thông” Dòng thứ hai ghi lại số thành phần liên thôngVí dụ:

Data.in30 0 10 0 11 1 0

KetQua.out“Đồ thị liên thông”1

11. Tìm chu trình Euler- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thịKết quả chương trình lưu vào file KetQua.out theo khuân dạng Dòng thứ nhất ghi lại số chu trình Euler Dòng kế tiếp ghi lại các chu trình Euler tìm được, mỗi đỉnh cách nhau bởi một vài dấu cách.

3

Page 4: BaiTapLon TRR

Khoa CNTT – ĐH Thành Đô Bài tập Toán rời rạ c Ví dụ:

Data.in30 1 11 0 11 1 0

KetQua.out11 2 3 1

12. Tìm chu trình Hamilton- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thịKết quả chương trình lưu vào file KetQua.out theo khuân dạng Dòng thứ nhất ghi lại số chu trình Hamilton Dòng kế tiếp ghi lại các chu trình Hamilton tìm được, mỗi đỉnh cách nhau bởi một vài dấu cách.Ví dụ:

Data.in30 1 11 0 11 1 0

KetQua.out11 2 3 1

13. Đường đi ngắn nhất Dijstra- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thịKết quả chương trình lưu vào file KetQua.out theo khuân dạng Dòng thứ nhất ghi lại đường đi ngắn nhất Dòng thứ hai ghi lại đường đi ngắn nhất tìm đượcVí dụ:

Data.in4∞ 1 ∞ 11 ∞ 2 ∞∞ 2 ∞ 31 ∞ 3 ∞

KetQua.out1 31 2 3

14. Cây khung nhỏ nhất Kruskal- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thịKết quả chương trình lưu vào file KetQua.out theo khuân dạng Ma trận kề biểu diễn cây khung cần tìm.Ví dụ:

Data.in KetQua.out

4

Page 5: BaiTapLon TRR

Khoa CNTT – ĐH Thành Đô Bài tập Toán rời rạ c 40 1 0 1 1 0 2 00 2 0 31 0 3 0

0 1 0 11 0 2 00 2 0 01 0 0 0

15. Thuật toán Prim- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trênDứ liệu vào đươc cho trong file Data.in theo khuân dạng: Dòng đầu tiên ghi lại số tự nhiên n (số đỉnh của đồ thị) Dòng kế tiếp ghi lại ma trận biểu diễn đồ thịKết quả chương trình lưu vào file KetQua.out theo khuân dạng Ma trận kề biểu diễn cây khung cần tìm.Ví dụ:

Data.in40 1 0 1 1 0 2 00 2 0 31 0 3 0

KetQua.out0 1 0 11 0 2 00 2 0 01 0 0 0

16. Thuật toán tìm luồng cực đại trong mạng- Trình bày thuật toán- Viết chương trình cài đặt thuật toán trên để giải bài toán.

Yêu cầu:I. Lý thuyết:

- Trình bày cơ sở lý thuyết (nếu có), - Ý tưởng thuật toán.- Trình bày thuật toán.- Cho ví dụ mô tả thuật toán

II. Cài đặt:- Cài đặt thuật toán (dùng ngôn ngữ bất kỳ)- Mỗi thành viên trong nhóm cho một ví dụ minh họa, sử dụng chương trình trên để đưa ra kết

quả (có giải thích).Chú ý:

- Nộp bản mềm và chương trình chạy qua e-mail ([email protected]) + đóng quyển (không quá 30 trang).

- Nộp muộn 2 ngày trừ 1 điểm.- Hạn nộp trước khi kết thúc môn học.

Biên soạn: Trần Xuân Thanh

5