TRƯỜNG ĐẠI HỌC BÁCH KHOA Họ tên KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH MSSV ————————————————— ĐỀ KIỂM TRA HỌC KỲ 1 NIÊN KHÓA 2015 2016 Chuyên ngành Kỹ thuật máy tính Môn thi Cấu trúc dữ liệu và giải thuật[.]
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA Họ tên:
—————————————————
ĐỀ KIỂM TRA HỌC KỲ 1 - NIÊN KHÓA 2015-2016
Chuyên ngành: Kỹ thuật máy tính
Môn thi: Cấu trúc dữ liệu và giải thuật Ngày thi: 22/12/2015 Thời gian làm bài: 120 phút
Đề thi số: 1511 Đề thi gồm 5 trang Được phép dùng tài liệu viết tay trên 1 tờ A4
Sinh viên phải ghi họ tên và mã số sinh viên vào đề thi Sinh viên phải nộp lại đề thi
Phần I: TRẮC NGHIỆM Sinh viên làm trên đề thi bằng cách gạch chéo câu trả lời đúng nhất
Phần II: ĐIỀN CHỖ TRỐNG Sinh viên làm trực tiếp trên đề thi
Phần III: VIẾT CHƯƠNG TRÌNH Sinh viên làm trên giấy thi
I Các câu hỏi trắc nghiệm (4 điểm)
Câu 1 Cho đoạn chương trình:
i=s=0;
while (s < n) {
i++;
s+=i; }
}
Đoạn chương trình trên có độ phức tạp (Big-O) là:
D O(√
n) Câu 2 Cho hàm:
int foo(int n) {
if(n <= 0) return 0;
else if(n % 2 == 0) return foo(n - 1) + foo(n - 2) + n;
else return 2 * foo(n - 1) + 1;
}
Lời gọi hàm foo(8) trả về kết quả bằng:
D 0 Câu 3 Một mảng có n phần tử, khi xóa phần tử thứ i − 1 (1 ≤ i ≤ n), thì cần phải di chuyển bao nhiêu phần tử:
D i Câu 4 Giá trị của biểu thức tiền tố + + / + 14 6 20 ∗ 3 / 8 2 3 bằng
D Biểu thức không hợp lệ Câu 5 Độ cao nhỏ nhất của một cây nhị phân có 179 nút là
D 79 Câu 6 Số nút trong cây nhị phân đầy đủ có 10 mức là
D 1024 Câu 7 Cho cây như hình vẽ dưới đây:
A
Duyệt hậu thứ tự (postorder traversal) sẽ cho kết quả:
B B C D E F G H I J K A
D B D E G H I C F J K A
Trang 2Câu 8 Cho biết những nhận định nào sau đây là SAI về cây AVL
1) Cây AVL là cây tìm kiếm nhị phân (Binary Search Tree)
2) Cây AVL là cây cân bằng
3) Cây AVL là cây đầy đủ hoặc gần đầy đủ
B Nhận định 2 sai
D Không có nhận định nào sai Câu 9 Cho biết những nhận định nào sau đây là ĐÚNG về cây B (B-Tree) bậc m
1) Mỗi nút (ngoại trừ nút lá) phải có ít nhất 2 cây con không rỗng
2) Mỗi nút có nhiều nhất m - 1 dữ liệu
3) Tất cả nút lá nằm trên cùng một mức
B Chỉ có 2 và 3 đúng
D Chỉ có 1 và 2 đúng Câu 10 Sắp xếp dãy (3, 44, 38, 5, 27, 2, 19) theo thứ tự tăng dần, dãy số biến đổi như sau trong quá trình sắp xếp:
(3, 44, 38, 5, 27, 2, 19) → (2, 3, 44, 38, 5, 27, 19) → (2, 3, 5, 44, 38, 19, 27) → (2, 3, 5, 19, 44, 38, 27) → (2, 3,
5, 19, 27, 44, 38) → (2, 3, 5, 19, 27, 38, 44)
Hãy cho biết phương pháp sắp xếp nào được sử dụng:
A Sắp xếp lựa chọn đơn giản (Straight Selection Sort)
D Sắp xếp chèn đơn giản (Straight Insertion Sort) Câu 11 Cho dãy số (5, 12, 20, 26, 37, 42, 46, 50, 64), nếu sử dụng tìm kiếm nhị phân, khi tìm phần tử có giá trị 26 cần
phải thực hiện bao nhiêu phép so sánh?
D 5 Câu 12 Giả sử dùng dãy số để biểu diễn heap (max-heap), hãy cho biết trong những dãy số dưới đây, dãy nào là biểu
diễn của một heap:
A 5, 34, 83, 55, 2, 35, 17, 61, 28, 20, 95, 7, 27
B 95, 83, 35, 55, 61, 34, 17, 5, 28, 2, 20, 7, 27
C 2, 35, 17, 61, 20, 28, 7, 27, 95, 5, 34, 83, 55
D 2, 5, 7, 17, 20, 27, 28, 34, 35, 55, 61, 83, 95
Câu 13 Bảng băm (hash table) có kích thước m = 13, không gian địa chỉ là [0 12], hàm băm (hash function) h(k) =
k % 13, sử dụng phương pháp thăm dò bình phương (quadratic probing) để giải quyết đụng độ Giả sử bảng băm đã có 3 phần tử là 141414, 141424, 141425 Muốn chèn thêm phần tử có giá trị 141440 vào bảng băm, vậy địa chỉ của phần tử này là:
D 3 Câu 14 Đưa 5 phần tử dữ liệu vào bảng băm trống có dung lượng 500000 phần tử, hãy cho biết nhận định nào dưới đây
ĐÚNG
C Chắc chắn không xảy ra xung đột vì dung lượng bảng băm quá lớn
D Cả A, B, C đều sai Câu 15 Cho đồ thị liên thông G với tập các đỉnh là V = (A, B, C, D, E, F ), tập các cạnh là E =
(A, B), (A, E), (A, C), (B, E), (E, D), (D, F ), (F, C) Từ đỉnh A, tiến hành duyệt đồ thị theo chiều sâu, ta sẽ được kết quả (Lưu ý, trong trường hợp nhiều đỉnh có thể được chọn, duyệt theo thứ tự trong bảng chữ cái.)
D A E D F C B Câu 16 Cho đồ thị có hướng DG = (V, E) với tập các đỉnh V = (V1, V2, V3, V4, V5, V6, V7), tập các cạnh là E =
(V1, V2), (V1, V3), (V1, V4), (V2, V5), (V3, V5), (V3, V6), (V4, V6), (V5, V7), (V6, V7), thứ tự Topo của đồ thị này là:
A V1, V3, V4, V6, V2, V5, V7
B V1, V3, V2, V6, V4, V5, V7
C V1, V3, V4, V5, V2, V6, V7
D V1, V2, V5, V3, V4, V6, V7
Trang 3II Điền vào chỗ trống (3 điểm)
Câu 17 Hãy nêu ưu điểm của cây tìm kiếm nhị phân (binary search tree) so với danh sách liên kết (linked list)
- Việc tìm kiếm dữ liệu được thao tác nhanh chóng hơn danh sách liên kết với
Câu 18 Chuyển đổi biểu thức trung tố (infix expression) sau sang dạng tiền tố (prefix):
(A + B * (C - D)) * E - F * G
- * + A * B - C D E * F G
Câu 19 Giả sử dùng 1 stack S và 1 queue Q để chứa các số nguyên Hãy vẽ hình ảnh của S và Q sau
khi thực hiện các thao tác sau:
S = Stack(15, 12, 6, 30)
Q = Queue(8, 12)
Câu 20 Cho cây nhị phân có 10 nút Duyệt tiền thứ tự (preorder) cho kết quả JCBADEFIGH, duyệt
trung thứ tự (inorder) cho kết quả ABCEDFJGIH Hãy vẽ cây đó.
J
Câu 21 Hãy vẽ cây tìm kiếm nhị phân (BST) bằng cách chèn lần lượt các giá trị sau:
24, 18, 10, 57, 36, 12, 31, 83, 76, 28 (chỉ cần vẽ kết quả cuối cùng)
24
28
Trang 4Câu 22 Cây kết quả của câu trên (câu 21) có phải là cây AVL không? Tại sao?
Không, nút 18 và nút 36 mất cân bằng
Câu 23 Nếu cây kết quả của câu 21 không phải cây AVL, thì cân bằng lại cây BST đó thành cây AVL (vẽ cây AVL vào
ô trống) Nếu cây kết quả của câu 21 là cây AVL thì bỏ qua bước này Sau đó, chèn vào cây AVL thêm một nút
có giá trị là 32 và tái cân bằng lại cây nếu cần thiết (chỉ cần vẽ kết quả cuối cùng)
24
31
Câu 24 Xây dựng heap (max-heap) từ dãy số sau: 6, 68, 46, 1, 14, 57, 67, 53, 2 (có thể vẽ heap dưới dạng cây nhị phân
hoặc biểu diễn dưới dạng mảng, chỉ cần ghi lại kết quả cuối cùng)
68, 53, 67, 14, 6, 46, 57, 1, 2
Cho đồ thị có hướng như sau, được sử dụng cho 2 câu 25 và 26:
A
B
E
C
F
D
G
I
H
Câu 25 Cho biết kết quả duyệt theo chiều rộng của đồ thị trên, biết rằng bắt đầu duyệt từ đỉnh A Lưu ý, trong trường
hợp nhiều đỉnh có thể được chọn, duyệt theo thứ tự trong bảng chữ cái.A B E C F D G H I
Câu 26 Hãy xác định một thứ tự topo của đồ thị trên
A B E C F D G I H
Câu 27 Tìm cây khung nhỏ nhất (MST) của đồ thị sau (chỉ cần vẽ lại kết quả cuối cùng là cây khung)
Trang 5A
B
C
D
E
F
G
H
10 10
14
11 6 8
5 2 7 3
4
8 6
S
A
B
C
D
E
F
G
H
10
10
3
4
Câu 28 Cho biết tổng trọng số của cây khung tìm được trong câu 27 là bao nhiêu?41
III Viết chương trình (4 điểm) Sinh viên làm trên giấy thi.
Sinh viên phải trình bày ý tưởng của chương trình bằng cách viết các bình luận (comments) trên mỗi đoạn code của chương trình Chọn một ngôn ngữ (C hoặc C++) để thực hiện Có thể dùng pseudocode
Một nhà thuốc muốn quản lý các thông tin liên quan đến kho dự trữ thuốc chữa bệnh bằng máy tính Chúng tôi đề nghị các bạn biểu diễn những thông tin này dưới dạng một danh sách liên kết mà mỗi phần tử chứa tên thuốc, số lượng thuốc (số hộp) và đơn giá thuốc
Ví dụ:
Paracetamol 8 hộp 15000đ Menthol 20 hộp 10000đ Aspirine 10 hộp 20000đ
Cấu trúc dữ liệu được đề nghị là:
struct Pharma {
string name;
int quantity;
int price;
Pharma * link;
};
struct Stock {
Pharma * head;
};
Câu 29 Hãy hiện thực một phương thức (method) sell(string med, int nb) cho phép bán nb hộp thuốc med nếu có
thể (đủ số lượng trong kho) (1 điểm)
Câu 30 Hãy hiện thực một phương thức (method) buy(string med, int nb, int price) cho phép nhập vào kho nb
hộp thuốc med với đơn giá price Chú ý: nếu còn thuốc tồn kho thì hàng tồn kho cũng sẽ được bán theo giá mới (1 điểm)
Trang 6Câu 31 Hãy hiện thực một hàm (function) stockPrice() trả về tổng giá trị của kho hàng thuốc (1 điểm)
Câu 32 Bonus:
Sau khi sử dụng chương trình ở trên, nhà thuốc tây cảm thấy chương trình thực thi không được nhanh lắm Bạn hãy đề xuất một phương án để hiện thực lại chương trình sao cho chương trình mới chạy nhanh hơn Chỉ
ra cấu trúc dữ liệu mới và giải thích (1 điểm)
Trang 7TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
—————————————————
ĐÁP ÁN ĐỀ THI KIỂM TRA HỌC KỲ 1 - NIÊN KHÓA 2015 - 2016
Chuyên ngành: Kỹ thuật Máy tính Môn thi: Cấu trúc dữ liệu và giải thuật Thời gian làm bài: 120 phút
Không được phép dùng tài liệu Được phép dùng tài liệu viết tay trên 1 tờ A4
Đề thi số: 1511
I Các câu hỏi trắc nghiệm (4 điểm)
Câu 1
D
Câu 2
C
Câu 3
A
Câu 4
A Câu 5
C Câu 6
C
Câu 7
C Câu 8
C Câu 9
A
Câu 10
B Câu 11
C Câu 12
B
Câu 13
B Câu 14
B Câu 15
A
Câu 16
A
II Điền vào chỗ trống (3 điểm)
Câu 17
Câu 18
Câu 19 Câu 20
Câu 21 Câu 22
Câu 23 Câu 24
Câu 25 Câu 26
Câu 27 Câu 28
III Viết chương trình (4 điểm) Sinh viên làm trên giấy thi.