MSSV:............................ m 3 trang Trang Đề thi g
1
TRƯNG ĐẠI HCNG NGH THÔNG TIN
KHOA KHOA H C MÁY TÍNH
ĐỀ THI CUI K
HC K 2 – N M H C 2021 – 2022 Ă
Môn thi: C u trúc d u và gi i thu t li
Mã l p: Các l p i trà, ch t l ng cao đạ ượ
Thi gian làm bài: 90 phút
(Sinh viên không c s d ng tài li u) đượ
Câu 1:
a. Hãy cho bi ph p c a thu t toán Insertion sort (chèn tr p) theo nh ngh a ết độ c t c tiế đị ĩ
Big-O (O l n) (0.25 đim)
b. Viết hàm s p x p m ng 1 chi u g m N ph n t gi n v i thu oán Insertion sort ế m d t t
(0.75 đim)
c. Hãy cho bi t dãy s s thay qua t ng b c nh th nào khi áp d ng thu t toán câu ế đổi ướ ư ế
1b, bi t r ng dãy s cho nh sau: 3, 8, 4, 5, 9, 1, 2, 6 (1 ế ư đim)
Câu 2:
Cho dãy k tý nh sau: R, E, T, A, V, X, L, G, S, I ư
Hãy th c hi n các yêu c u sau:
a. V ế cây nh phân tìm ki m b t tng cách thêm l n l ượ ng ký t vào cây theo th t t trái
qua ph trên, bi ng giá tr c t ng ng theo th t xui ca dãy k tý ết r a tng k tý ươ t
hi i in c trong t a k tý đ n (1 đ m)
b. i Cho bi t k t q a duy t cây theo RNL, NRL (1 ế ế đ m)
c. Hu ượ l n l t t i l i ting nút L, T, E, R trên cây, m n hu 1 nút v l i cây n ếp theo nh ư
th m) đ t hu (1 i
Câu 3:
Cho bi t cây B-Tree b c 3 là m t cây a mãn các tính ch t sau: ế th
Tt c node lá n m trên cùng m t m c
Tt c các node, tr node g c và node lá, có *ti thiu* 2 node con.
Tt c các node có *t a*i đ 3 con
Tt c các node, tr node g c, có t 1 cho n 2 khóa (keys) đế
Mt node không ph i lá và có n khóa thì ph i có n+1 node con.
Hãy th c hi n các yêu c u sau:
3.1 Cho dãy s : 12, 17, 20, 23, 15, 11, 24, 13, 19, 22, 18, 21, 16. H i khi l n l t thêm các s ượ
trong dãy theo th t t trái qua ph i vào m t cây B-Tree b c 3 r ng thì:
a. cây Các khóa nào khi thêm vào s làm phát sinh thao tác tách (split) node? (0.5 m) đi
b. i V cây B-Tree tr c và sau khi thêm các khóa câu a (1 ướ đ m)
3.2 Cho cây B-Tree b c 3 nh hình sau: ư
Hãy l n l n hành xóa các khóa sau kh i cây: 13, 24, 19 và v cây B-Tree tr ượt tiế ước
và sau khi xóa m i khóa trên (0.5 m) đi
Lưu khi xoá: ý
Khi khóa c n xóa (g i là x) không n node lá, ch n khóa th m ng là khóa có giá m ế
tr ơ l n nh t mà nh h n x.
MSSV:............................ m 3 trang Trang Đề thi g
2
Thao tác nh ng khoá (underflow) s c hi n khi hai node li n k t ng s ườ được th
khóa >= 2. Khi m t node không còn áp ng s ng khóa t i thi u, u tiên đ đủ lượ ư
th đổc hi n underflow thay cho catenation (h p) thao tác này không làm thay i s
khóa c a node cha.
Khi có 02 l n node li n k c hi n catenation, u tiên ch n catenation gia ch để th ư a
node b thi u khóa v i node li n tr c. ế ướ
Câu 4:
Để ế vi c tìm ki m thông tin mt hàng đượ ườ ăc nhanh chóng, ng i ta dùng m t b ng b m theo
phương pháp th m dò, làm vi c trên qu n l c t hàng. Mã qu n l này là m t con s ă ý a m ý
nguyên. B ng b m có: ă
- Hàm b m: ă h(key) = (key % M)
- Hàm b m l i (hàm th m dò): ă ă prob h(key, i) = ( (key) + i*i + i) % M
Trong đó:
- key là giá trị khóa.
- i là m t s nguyên cho bi t l ế n b m l ă i (th m dò) th i.ă
- M là kích th c b ng b m. ướ ă
Gi ườ s M = 7, cho tr ng h p cT a b a d t ng b m ã chă đ liu nh bên d i. Biư ướ ế -” ký
hiu v trí tr ng trong b ng b m. ă
B ng b m ă T
0
-
1
-
2
16
3
-
4
-
5
12
6
13
a. m) Trình bày t ng b c vi c tìm mã qu n l 23 trong b ng b m . (0.5 ướ ý ă T đi
b. Trình bày t ng b c vi c thêm các qu n l sau vào b ng b m ướ ý ă T theo úng th t đ
li đ t kê là 11, 20, 27 (1.5 i m).
Câu 5:
Trong các ng d ng th c t , ế chẳng h n trong m ng l i giao thông ng b , ng th y ướ đườ đườ
hoặc ng hàng không, ng i ta không ch quan tâm n vi c tìm ng i gi a hai a đườ ườ đế đườ đ đị
đ ế i m còn ph i l a ch n m t hành trình ti t ki m nh t (theo tiêu chu n không gian, thời
gian hay chi phí). Vấn đề này th c hình hóa thành m t bài toán trên thđượ đồ , trong
đ đượ đỉ đườ đó m i đị đ a i m c bi u di n b i m t đ nh, c nh n i hai nh bi u di n cho “ ng i trực
tiếp” gia hai địa điểm (tức không i qđ ua trung gian) và tr ng s c nh là kho ng địa điểm a c
cách gi a hai . địa đi m
Bài toán th phát bi u d i d ng t ng quát nh sau: Cho m t ướ ư đơn đồ thị có h ng ướ
trng s d ng (V,E), trong ó V t p nh, E t p c nh (cung)ươ G= đ đỉ các c nh u đề
trng s, hãy tìm m t ng i (không nh l p l i) ng đườ đ đỉ n nh t t nh xu t phát S thu ừ đỉ c V
đế đỉ đn nh ích F thuc V.
Gi s thông tin u vào c a bài toán (Input) c nh p vào ch ng trình nh đầ đượ ươ ư sau:
Input
7
A B 1
B E 3
MSSV:............................ m 3 trang Trang Đề thi g
3
E D 3
C B 4
A D 7
E C 2
C D 1
A E
Hãy c hi n các yêu c u sau: th
a. li Xây d ng các c u trúc d u phù hợ p nh t có thể để đồ bi u di n th trên máy tính
theo input ã cho. (0.5 m) đ đi
Cấu trúc đưc xem t u t c các tiêu chu n saut nế đạ đượ : Tiết ki m tài nguyên ; H
trợ m t s thao c c b n ơ nhưKiểm tra hai nh có k nhau khôngđỉ ”, “Tìm danh sách
các nh kđỉ ề v i m cột nh cho trđỉ ướ với ràng bu c là không ph i duy t qua danh sách
tất c các c nh c ủa thđồ .
b. Viết hàm nh p theo Input ở đầu bài và lưu trữ thông tin c a đồ th vào c u trúc d li u
đ đề ã xu t câu a. (0.5 đ i m)
*** K . Sinh viên HÔNG YÊU C U tìm cách gi i cho bài toán này ĐƯỢC PHÉP sử
dụng Standard Template Library-STL v ng c u trúc d u (vector, stack, queue, i nh li
list, map, set, pair, …) c ng nh gi i thu t ũ ư được xây d ng s ẵn.
Hết
MSSV:............................ m 3 trang Trang Đề thi g
4
Duy đềt Ging viên ra đề

Preview text:

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐỀ THI CUỐI KỲ
KHOA KHOA HỌC MÁY TÍNH
HỌC KỲ 2 – NĂM HỌC 2021 – 2022
Môn thi: Cấu trúc dữ liệu và giải thuật
Mã lớp: Các lớp đại trà, chất lượng cao
Thời gian làm bài: 90 phút
(Sinh viên không được sử d ng tài li ệu) Câu 1: a. Hãy cho biết đ
ộ phức tạp của thuật toán Insertion sort (chèn trực tiếp) theo định nghĩa
Big-O (O lớn) (0.25 điểm)
b. Viết hàm sắp xếp mảng 1 chiều g m ồ
N phần tử giảm dần với thuật oán t Insertion sort (0.75 điểm) c. Hãy cho biết dãy s
ố sẽ thay đổi qua từng bước như thế nào khi áp d ng ụ thuật toán ở câu
1b, biết rằng dãy số cho như sau: 3, 8, 4, 5, 9, 1, 2, 6 (1 điểm) Câu 2:
Cho dãy ký tự như sau: R, E, T, A, V, X, L, G, S, I Hãy th c hi ự ện các yêu cầu sau: a. Vẽ cây ị
nh phân tìm kiếm bằng cách thêm lần lượt từng ký tự vào cây theo thứ tự t ừ trái qua phải của dãy k
ý tự trên, biết rằng giá trị của từng k ý t
ự tương ứng theo thứ t ự xuất hiện của k t ý ự trong t ừ điển (1 i đ ểm) b. Cho biết kết q a duy ủ ệt cây theo RNL, NRL (1 i đ ểm)
c. Huỷ lần lượt từng nút L, T, E, R trên cây, m i ỗ lần hu ỷ 1 nút vẽ lại cây n i ố tiếp theo nh ư thứ tự huỷ đ (1 iểm) Câu 3:
Cho biết cây B-Tree bậc 3 là m t cây ộ th a mãn các tính ch ỏ ất sau: •
Tất cả node lá nằm trên cùng m t m ộ ức •
Tất cả các node, trừ node g c và node lá, có ố
*tối thiểu* 2 node con. •
Tất cả các node có *tối đa* 3 con •
Tất cả các node, trừ node g c, có t ố
ừ 1 cho đến 2 khóa (keys) •
Một node không phải lá và có n khóa thì phải có n+1 node con. Hãy th c hi ự ện các yêu cầu sau: 3.1 Cho dãy s : 12, 17, ố
20, 23, 15, 11, 24, 13, 19, 22, 18, 21, 16. H i
ỏ khi lần lượt thêm các s ố trong dãy theo th t ứ ự t trái qua ph ừ ải vào m t cây B-Tree b ộ ậc 3 r ng thì: ỗ
a. Các khóa nào khi thêm vào cây sẽ làm phát sinh thao tác tách (split) node? (0.5 điểm)
b. Vẽ cây B-Tree trước và sau khi thêm các khóa ở câu a (1 i đ ểm)
3.2 Cho cây B-Tree bậc 3 nh hình sau: ư
Hãy lần lượt tiến hành xóa các khóa sau kh i
ỏ cây: 13, 24, 19 và vẽ cây B-Tree trước
và sau khi xóa mỗi khóa trên (0.5 điểm) Lưu khi xoá: ý − Khi khóa cần xóa (g i
ọ là x) không nằm ở node lá, chọn khóa thế mạng là khóa có giá
trị lớn nhất mà nhỏ ơ h n x.
MSSV:............................ Đề thi gồm 3 trang Trang 1
− Thao tác nhường khoá (underflow) sẽ được th c
ự hiện khi hai node liền kề có t ng ổ số khóa >= 2. Khi có m t ộ node không còn áp đ ng ứ đủ số lượng khóa t i ố thiểu, ưu tiên
thực hiện underflow thay cho catenation (hợp) vì thao tác này không làm thay đổi số khóa c a node cha. ủ
− Khi có 02 lựa chọn node liền kể để th c
ự hiện catenation, ưu tiên chọn catenation giữa
node bị thiếu khóa với node liền trước. Câu 4:
Để việc tìm kiếm thông tin mặt hàng được nhanh chóng, ườ ng i ta dùng một ả b ng ă b m theo
phương pháp thăm dò, làm việc trên mã quản l
ý của mặt hàng. Mã quản l ý này là một con s ố nguyên. Bảng băm có: - Hàm băm: h(key) = (key % M)
- Hàm băm lại (hàm thăm dò): prob(key, i) = (h(key) + i*i + i) % M Trong đó: - key là giá trị khóa. - i là m t s
ộ ố nguyên cho biết lần băm lại (thăm dò) thứ i.
- M là kích thước bảng băm.
Giả sử M = 7, cho trường hợp T của bảng băm ã đ chứa dữ liệu nh
ư bên dưới. Biết “-” là ký hiệu vị trí tr ng trong b ố ảng băm. Bảng băm T 0 - 1 - 2 16 3 - 4 - 5 12 6 13 a. Trình bày t ng b ừ
ước việc tìm mã quản l 23 trong b ý ảng băm T. (0.5 điểm)
b. Trình bày từng bước việc thêm các mã quản l
ý sau vào bảng băm T theo úng đ th ứ t ự
liệt kê là 11, 20, 27 (1.5 điểm). Câu 5: Trong các ng ứ d ng ụ
thực tế, chẳng hạn trong mạng lưới giao thông đường b , ộ đường th y ủ
hoặc đường hàng không, người ta không chỉ quan tâm đến việc tìm đường i đ giữa hai địa điểm mà còn ả
ph i lựa chọn một hành trình tiết kiệm ấ
nh t (theo tiêu chuẩn không gian, thời
gian hay chi phí). Vấn đề này có thể được mô hình hóa thành m t ộ bài toán trên đồ thị, trong
đó mỗi địa điểm đượ ể c bi u diễn bởi một ỉ
đ nh, cạnh nối hai đỉnh biểu diễn đườ cho “ ng đi trực
tiếp” giữa hai địa điểm (tức không i q
đ ua địa điểm trung gian) và tr ng s ọ ố của cạnh là khoảng cách gi a hai ữ địa điểm.
Bài toán có thể phát biểu dưới dạng t ng ổ quát nh ư sau: Cho m t
ộ đơn đồ thị có hướng và có
trọng số dương G=(V,E), trong ó
đ V là tập đỉnh, E là tập cạnh (cung) và các cạnh đều có trọng số, hãy tìm m t
ộ đường đi (không có đỉnh lặp lại) ngắn nhất từ đỉnh xuất phát S thuộc V đế đỉ n đ nh ích F thuộc V. Giả s thông tin ử
đầu vào của bài toán (Input) được nhập vào chương trình như sau: Input Gii thích 7
- Dòng đầu tiên chứa một s nguyên d ố ương e cho biết s c ố ạnh c a ủ đồ thị A B 1
- Với e dòng tiếp theo, m i
ỗ dòng chứa hai chuỗi u, i và một số nguyên B E 3
dương x, thể hiện thông tin có một cạnh nối từ đỉnh u sang đỉnh i trong
MSSV:............................ Đề thi gồm 3 trang Trang 2 E D 3 đồ thị ớ
v i độ dài (trọng số) là x C B 4 - Dòng cu i ố cùng chứa hai chu i ỗ s và f, ây đ
là đỉnh bắt đầu và đỉnh kết A D 7 thúc của đường i c đ ần tìm E C 2 C D 1 Lưu : không bi ý ết trước s
ố đỉnh và danh sách các đỉnh. A E Hãy th c hi ự ện các yêu cầu sau: a. Xây d ng ự
các cấu trúc dữ liệu phù hợp ấ
nh t có thể để biểu diễn đồ thị trên máy tính theo input ã cho. (0.5 đ điểm)
Cấu trúc được xem là tốt nếu đạt được các tiêu chuẩn sau: Tiết kiệm tài nguyên; Hỗ trợ m t s ộ thao ố
tác cơ bản như “Kiểm tra hai đỉnh có kề nhau không”, “Tìm danh sách
các đỉnh kề với một đỉnh cho trước” với ràng bu c
ộ là không phải duyệt qua danh sách
tất cả các cạnh của đồ thị.
b. Viết hàm nhập theo Input ở đầu bài và lưu trữ thông tin c a
ủ đồ thị vào cấu trúc dữ liệu đã đề ấ
xu t ở câu a. (0.5 điểm)
*** KHÔNG YÊU CẦU tìm cách giải cho bài toán này. Sinh viên ĐƯỢC PHÉP sử
dụng Standard Template Library-STL với những c u
ấ trúc dữ liệu (vector, stack, queue,
list, map, set, pair, …) cũng như gi i thu t
ậ được xây dựng sẵ n. Hết
MSSV:............................ Đề thi gồm 3 trang Trang 3 Duyệt đề Giảng viên ra đề
MSSV:............................ Đề thi gồm 3 trang Trang 4