1. Trang chủ
  2. » Tất cả

Đề thi môn cấu trúc dữ liệu và giải thuật final solution2010

8 2 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 8
Dung lượng 82,33 KB

Nội dung

Final Sol 1 Đại học Quốc Gia TP Hồ Chí Minh Trường đại học Bách Khoa Khoa Khoa học & Kỹ thuật Máy tính Bộ môn Khoa học Máy tính ĐỀ THI CUỐI HỌC KỲ 1 Năm học 2010 – 2011 Môn Cấu trúc dữ liệu & Giải thu[.]

Đại học Quốc Gia TP Hồ Chí Minh Trường đại học Bách Khoa Khoa: Khoa học & Kỹ thuật Máy tính Bộ mơn: Khoa học Máy tính ĐỀ THI CUỐI HỌC KỲ Năm học: 2010 – 2011 Môn: Cấu trúc liệu & Giải thuật MSMH: 503001 Ngày thi: 20/01/2011 - Thời gian: 120 phút (Được sử dụng tài liệu) Lưu ý: Đề thi gồm câu với thang điểm 11/10 Câu 1: (2.5 điểm) Cho dãy gồm 11 số sau: 10, 26, 9, 3, 21, 17, 30, 28, 91, 29, 72 a (1.5 điểm) Cây AVL xây dựng dựa chuỗi số này, giả sử số nhập vào xây dựng theo thứ tự Vẽ AVL trường hợp sau: • • • Sau chèn (insert) thành công phần tử 17 Sau chèn thành công phần tử 91 Sau chèn thành công phần tử 72 b (1 điểm) Giả sử AVL xây dựng câu a bị xóa phần tử sau: 9, 3, 29, 26 Vẽ lại AVL sau phần tử bị xóa khỏi Giải: a Insert 17 10 21 17 26 Insert 91 10 28 21 17 30 91 26 Insert 72 28 10 30 21 17 91 29 26 72 b Delete 28 10 30 21 17 91 29 26 72 Delete 28 21 30 26 10 91 29 17 72 Delete 29 28 21 26 10 72 91 30 17 Delete 26 28 17 72 21 10 91 30 Câu 2: (3 điểm) Ta ký hiệu L(H) dạng trình bày max heap H dạng dãy Ví dụ: Một dãy số ban đầu sau: (1, 2, 3), sau xây dựng thành heap HT, L(HT) = (3, 1, 2) a (1 điểm) Với dãy số ban đầu gồm 10 số sau: (17, 26, 10, 9, 3, 21, 30, 28, 91, 72), ta xây dựng thành heap H1 Giả sử số đưa vào H1 theo thứ tự Cho biết L(H1) b (0.5 điểm) Sau loại bỏ phần tử khỏi H1, ta H2 Cho biết L(H2) c (1.5 điểm) Trình bày giải thuật sử dụng heap để xếp lại dãy số với yêu cầu sau: Input: Dãy số a có n phần tử từ a[1] đến a[n] Output: Dãy số a xếp theo thứ tự sau: số chẵn trước, số lẻ sau, số chẵn xếp từ nhỏ đến lớn, số lẻ từ lớn đến nhỏ Ví dụ: Nếu a (7, 4, 2, 1, 16, 19, 23, 24), sau xếp (2, 4, 16, 24, 23, 19, 7, 1) Do số lượng phần tử n dãy a lớn, giải thuật xếp không khai báo thêm biến phụ có dung lượng lưu trữ tương đương với n (ví dụ khai báo dãy tạm có độ lớn n/10 n/10 n tương đương) Các phương thức heap cho slide lý thuyết môn học Tuy nhiên, sử dụng phương thức sinh viên phải ghi rõ phương thức max heap hay heap Ví dụ sử dụng phương thức ReheapUp max heap tên phướng thức ReMaxheapUp, tên phương thức heap ReMinheapUp Giải: a L(H1) = (91, 72, 26, 28, 30, 10, 21, 9, 17, 3) 91 72 28 26 30 17 10 3 21 b L(H2) = (28, 17, 26, 9, 3, 10, 21) 28 17 26 10 21 c void sort(ref a[] ) i = last_odd = // chi so phan cach giua cac so chan va so le n = sizeof(a) loop(i 1) // sap xep tang dan cac so le position = last_odd/2 loop(position > 0) ReMaxheapDown(a, position, last_odd) position = position – last = last_odd loop(last > 0) swap(a[1], a[last]) last = last – ReMaxheapDown(a, 1, last) i = j = n loop(i < j) // sau vong lap cac so le voi thu tu giam dan // duoc chuyen ve cuoi day swap(a[i], a[j]) i = i + j = j – last_even = n – last_odd 10.if(last_even > 1) // sap xep tang dan cac so chan position = last_even/2 loop(position > 0) ReMaxheapDown(a, position, last_even) position = position – last = last_even loop(last > 0) swap(a[1], a[last]) last = last – ReMaxheapDown(a, 1, last) end sort Câu 3: (3.5 điểm) Có thành phố có tên A, B, C, D, E, F Người ta dự định xây dựng đường giao thông nối thành phố cho thành phố ln có thành phố có đường giao thơng trực tiếp đến thành phố lại a (0.5 điểm) Vẽ đồ thị vô hướng thỏa mãn yêu cầu với A, B, C, D, E, F đỉnh đồ thị, đường giao thông trực tiếp thành phố cạnh nối đỉnh b (0.5 điểm) Chuyển đồ thị câu a thành đồ thị có hướng theo quy tắc sau: cạnh nối vô hướng (x,y) chuyển thành cạnh nối có hướng từ x đến y x đứng trước y bảng chữ Trình bày lại đồ thị dạng bảng kề (adjacency table) c (0.5 điểm) Chứng minh đồ thị câu b khơng xuất chu trình d (1 điểm) Cho biết topological order đồ thị câu b tương ứng với phương pháp depth-first ordering breadth-first ordering e (1 điểm) (bonus) e1 Dành cho lớp thường: Với đồ thị vô hướng n đỉnh cho trước, xác định số k lớn cho k đỉnh đồ thị ln có đỉnh có cạnh nối đến k-1 đỉnh cịn lại Viết giải thuật để tính số k e2 Dành cho lớp KSTN (không cần làm câu e1): Bài toán nêu câu e1 thuộc lớp P hay NP? Vì sao? Giải: a A B F C E D b A B C D E F A 0 0 0 B 0 0 C 1 0 0 D 1 0 E 1 1 0 F 1 1 c Đồ thị có hướng câu b có đường từ đỉnh có thứ tự đứng trước đến đỉnh có thứ tự đứng sau bảng chữ mà khơng có đường ngược lại d Cả hai phương pháp depth-first ordering breadth-first ordering có chung topological order đồ thị này: A, B, C, D, E, F e1 Ý tưởng: Cho k chạy từ n -> 1, lần lặp giảm k xuống đơn vị • Xét tất tổ hợp chập k n đỉnh xem tổ hợp có tồn đỉnh có cạnh nối đến k – đỉnh cịn lại hay khơng • Nếu tất tổ hợp thỏa mãn trả số k integer findK(val G ) list k = G.numVertex loop(k > 1) index = flag = true loop(index + k

Ngày đăng: 25/03/2023, 08:34

w