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

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

10 2 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đề thi môn Cấu trúc dữ liệu và Giải thuật Final 2016 2017
Trường học Trường Đại Học Bách Khoa TP. HCM
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Đề thi cuối kỳ
Năm xuất bản 2016-2017
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 10
Dung lượng 148,21 KB

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

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HCM KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH KỲ THI CUỐI KỲ – HỌC KỲ 1 / 2016 2017 Môn thi Cấu trúc dữ liệu & giải thuật [CO2003] Đáp án 1 Câu hỏi trắc nghiệm 1 1 LO 7 4 Cho đồ th[.]

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HCM KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH

KỲ THI CUỐI KỲ – HỌC KỲ 1 / 2016-2017 Môn thi: Cấu trúc dữ liệu & giải thuật [CO2003]

Đáp án

Cho đồ thị có hướng với tập đỉnh V = {V0, V1, V2, V3, V4, V5} cùng tập cạnh E = {<V0, V1>,

<V0, V3>, <V1, V5>, <V2, V0>, <V2, V3>, <V3, V4>, <V4, V1>, <V4, V5>} Hãy cho biết thứ tự topo (topological order) của đồ thị trên (dùng phương pháp Depth-First với các đỉnh được chọn theo thứ tự tăng dần)

V2, V0, V3, V4, V1, V5

Nhận định nào dưới đây SAI

Phương pháp duyệt theo chiều sâu không áp dụng cho đồ thị có hướng

Xây dựng cây nhị phân tìm kiếm với mỗi dãy số sau, trình tự chèn các giá trị vào cây theo đúng thứ tự của dãy Dãy nào dưới đây tạo ra cây nhị phân khác với 3 dãy số còn lại

(100, 60, 80, 90, 120, 110, 130)

Dùng dãy (mảng) để biểu diễn heap, trong những dãy số dưới đây, dãy nào là biểu diễn của heap

Cả A, B, C đều sai

Không gian địa chỉ bảng hash là [0 17], hàm hash H(K) = K%17, sử dụng phương pháp thăm

dò tuyến tính để giải quyết xung đột, giả sử bảng hash đã có các phần tử 26 , 25, 72, 38, 8, 18 Chèn thêm phần tử 59 vào bảng hash, vậy địa chỉ của phần tử này là:

11

Trang 2

1.6 LO 2.1

Dùng mảng V[1 m] để hiện thực 2 ngăn xếp có chung không gian lưu trữ, top[i] là đỉnh của ngăn xếp i (i = 1, 2), đáy của ngăn xếp 1 là V[1], đáy của ngăn xếp 2 là V[m] Ngăn xếp sẽ đầy khi:

top[1] + 1 = top[2]

Hãy cho biết thân vòng lặp sau thực thi bao nhiêu lần

int i = 0, s = 0, n = 100;

do {i = i + 1; s = s + 10 * i;}

while((i < n) && (s < n));

4

Nếu một danh sách nào đó có thao tác sử dụng nhiều nhất là truy xuất phần tử bất kỳ, ngoài

ra thao tác chèn và xóa được thực hiện ở phần tử cuối cùng của danh sách, thì cấu trúc dữ liệu nào sau đây tiết kiệm thời gian nhất

Danh sách liên tục

Cho f1(n) = 100 + 2n và f2(n) = 1 + 2 + 3 + + n, big-O của hai biểu thức này lần lượt là:

O1(n) và O2(n2)

Dùng mảng A[0 5] để hiện thực hàng đợi vòng (circular queue), giả sử rear = 0 và front = 3 Giá trị của rear và front sau khi xóa 1 phần tử và thêm 2 phần tử mới vào hàng đợi

2 và 4

Phương pháp sắp xếp nào mà ở mỗi bước, giải thuật sẽ lựa chọn giá trị nhỏ nhất trong phần chưa được sắp xếp, sau đó chèn vào cuối phần đã được sắp xếp:

Lựa chọn

Trang 3

1.13 LO 5.2

Giả sử bảng hash có không gian địa chỉ là [0 9999] Biết rằng khóa K = 442205883 có địa chỉ

là 837, hãy cho biết hàm hash nào dưới đây được sử dụng

Folding

Sắp xếp dãy số sau {15, 9, 7, 8, 20, -1, 4}, giả sử sau một bước chạy, ta nhận được kết quả là {4, 9, -1, 8, 20, 7, 15} Hãy cho biết phương pháp sắp xếp được sử dụng là:

Shell

Cho biết nhận định nào dưới đây về cây B bậc m là KHÔNG đúng

Nút trong có ít nhất m/2 cây con (nếu m chẵn) hoặc m/2 + 1 cây con (nếu m lẻ)

Cho cây nhị phân với 7 nút là A, B, C, D, E, F và G Biết kết quả duyệt tiền thứ tự (preorder)

là AFBCDEG, kết quả duyệt trung thứ tự (inorder) là CEDBGFA Cho biết kết quả duyệt theo chiều rộng:

AFBCGDE

Tính giá trị của biểu thức tiền tố sau: * * 7 6 - / 8 2 1

126

Cho biết sau khi đoạn chương trình sau thực thi xong, giá trị m bằng bao nhiêu:

int m = 0, n = 1000;

for(int i =1; i <= n ; i++)

for(int j =2*i ; j <= n ; j++)

m = m+1;

1000*1000/4 = 250000

Trang 4

2.4 LO 3.5

Cho cây AVL giống như hình vẽ Hãy vẽ lại cây AVL này sau khi chèn giá trị R vào cây Chỉ cần

vẽ kết quả cuối cùng, không cần vẽ các bước trung gian

J F

D

C

G

P L

N

V S

X

Key

J F

D

C

G

P L

N

S Q R

V

Cho cây AVL giống như hình vẽ Hãy vẽ lại cây AVL này sau khi xóa giá trị N khỏi cây

J F

D

C

G

P L

N

V S

X

Key

Trang 5

J F

D

C

G

S P

V

Cho đồ thị vô hướng G = (V, E), trong đó V={a, b, c, d, e, f}, E={(a,b), (a,e), (a,c), (b,e), (c,f), (f,d), (e,d)} Hãy cho biết kết quả duyệt đồ thị theo chiều sâu, 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, thì các đỉnh sẽ được đưa vào stack theo thứ tự trong bảng chữ cái

a e d f c b (lời giải đúng)

a b e d f c (lời giải chấp nhận, vì một số lớp tôi không nói nhiều về sử dụng stack)

Cho đồ thị như hình vẽ dưới, sử dụng giải thuật Prim để tìm cây phủ tối thiểu Giả sử bắt đầu

từ đỉnh A, hãy vẽ cây phủ tối thiểu

A

D

E

F G

5

6

4 2

1 3

5

3

1

Key

A

D

E

F G

5

6

4 2

1 3

5

3

1

Trang 6

2.8 LO 3.5

Cho cây B-tree bậc 3 như hình vẽ sau Hãy vẽ cây này sau khi đã chèn vào cây 3 giá trị 80, 40,

50 (theo thứ tự trên) Chỉ cần vẽ kết quả cuối cùng, không cần vẽ các bước trung gian

65

23

67 88

Key

65 75

23 40

67

88

Cho cây B-tree bậc 3 như hình vẽ sau Hãy vẽ cây này sau khi lần lượt xóa khỏi cây 3 giá trị 23,

70, 75 (khi xoá thì thay thế bằng entry phải cùng của cây con bên trái) Chỉ cần vẽ kết quả cuối cùng, không cần vẽ các bước trung gian

65

23

67 88

Key

65 20

67

65 20

80

Giả sử ta biểu diễn min-heap dưới dạng dãy, hiện tại ta có min-heap (10, 21, 35, 32, 37, 56, 64,

Trang 7

3 Tự luận

3.1.1 LO 3.2

s t r u c t BpEntry < K , T >

key < t y p e K >

r i g h t P t r < pointer >// v o i d p o i n t e r is the b e s t c h o i c e end s t r u c t B p E n t r y

s t r u c t BpNode < N , K , T >

l e f t P t r < pointer >

n E n t r i e s < integer >

e n t r i e s [ N -1] < a r r a y of B p E n t r i e s < K , T > >

end s t r u c t B p N o d e

c l a s s BpTree < degree , K , D >

r o o t < p o i n t e r to BpNode < degree , K , D > >

// m e t h o d s d e c l a r a t i o n s

<bool> i n s e r t ( key <K > , d a ta <D >);

<bool> r e m o v e ( key <D >);

< p o i n t e r to D > f i n d ( key <K >);

t r a v e r s e ( op < f u n c t i o n >);

end c l a s s B p T r e e

3.1.2 LO 3.3

Các phương thức cơ bản được mô tả như mã của BpTree bên trên

3.2.1 LO 4.5, 8.4

t e m p l a t e <c l a s s T >

v o i d s o r t H M ( T * pD , int N ) {

if ( N < 2) r e t u r n;

if ( N < 1 0 0 0 ) s o r t M i n H e a p ( pD , N );// s o r t u s i n g m i n H e a p

e l s e {

s o r t H M ( pD , N / 2 ) ;

s o r t H M ( pD + N /2 , N - N / 2 ) ;

m e r g e D e s c ( pD , N /2 , // f i r s t a r r a y + s i z e

pD + N /2 , N - N /2 , // s e c o n d a r r a y + s i z e

pD // o u t p u t a r r a y );// m e r g e two a r r a y s in d e c r e a s i n g o r d e r }

}

Trang 8

t e m p l a t e <c l a s s T >

v o i d s o r t M i n H e a p ( T * pD , int N ) {

b u i l d M i n H e a p ( pD , N );

for (int i = N - 1; i > 0; i - -) {

s w a p ( pD [0] , pD [ i ]);

m i n H e a p D o w n ( pD , i );

}

}

3.2.2 LO 4.6

Có thể thu giảm số lần hoán vị trong heap sort nếu chỉ sắp xếp index thay vì xắp xếp toàn bộ mảng dữ liệu gốc Tradeoff của thuật toán là không gian bộ nhớ

3.3.1 LO 2.5, 3.7, 4.1

s t r u c t C u s t o m e r I n f o {

C u s t o m e r S t a t u s s t a t u s ;// C u s t o m e r S t a t u s is a s t r u c t u r e

// d e f i n e d b e f o r e

Queue < C u s t o m e r R e q > r e q u e s t s ;// C u s t o m e r R e q is a s t r u c t

// c o n t a i n t i n g r e q u e s t i n f o };

s t r u c t C u s t o m e r A V L D a t a {

C u s t o m e r I n f o * p D a t a ;

o p e r a t o r < ( C u s t o m e r A V L D a t a & b ) {

r e t u r n pData - > a r r i v e T i m e < b pData - > a r r i v e T i m e ;

}

// o t h e r c o m p a r i s o n m e t h o d s s h o u l d be d e f i n e d

};

t e m p l a t e <c l a s s T >

s t r u c t P r i o r i t y N o d e {

int p r i o t i t y ;

o p e r a t o r < ( P r i o r i t y N o d e < T >& b ) {

r e t u r n p r i o t i t y < b p r i o t i t y ;

}

Trang 9

// P r i o r i t y q u e u e for c u s t o m e r checkin , use Max - h e a p

vector < P r i o r i t y N o d e < C u s t o m e r I n f o > > p r i o Q u e u e ;

// AVL - t r e e to s t o r e c u s t o m e r i n f o r m a t i o n

AVLTree < C u s t o m e r A V L D a t a > c u s T r e e ;

// R e q u e s t q u e u e

Queue < C u s t o m e r R e q > r e q Q u e u e ;

// Q u e u e to s t o r e a r r i v e t i m e of c u s t o m e r s

Queue <int> a r r i v e Q u e u e ;

3.3.2 LO 4.1, 4.4

// C h e c k i n c u s t o m e r

v o i d c h e c k i n C u s t o m e r (int age , C u s t o m e r S t a t u s status , int a r r i v e T i m e ) {

C u s t o m e r I n f o * pC = new C u s t o m e r I n f o ;

pC - > age = age ;

pC - > s t a t u s = s t a t u s ;

pC - > a r r i v e T i m e = a r r i v e T i m e ;

P r i o r i t y N o d e < C u s t o m e r I n f o > c N o d e ;

c N o d e p r i o t i t y = g e t P r i o r i t y ( age , status , a r r i v e T i m e );

c N o d e p D a t a = pc ;

h e a p I n s e r t < P r i o r i t y N o d e < C u s t o m e r I n f o > >( p r i o Q u e u e , c N o d e );

}

3.3.3 LO 3.7, 4.4

// p i c k c u s t o m e r f r o m p r i o r i t y q u e u e

b o o l p i c k C u s t o m e r () {

if ( p r i o Q u e u e s i z e () < 1) r e t u r n;

C u s t o m e r A V L D a t a c D a t a ;

c D a t a p D a t a = p r i o Q u e u e [ 0 ] p D a t a ;

c u s T r e e i n s e r t ( c D a t a );

h e a p R e m o v e < P r i o r i t y N o d e < C u s t o m e r I n f o > >( p r i o Q u e u e );

}

3.3.4 LO 2.5, 3.7

// t r a v e r s e t h r o u g h c u s t o m e r l i s t

v o i d t r a v e r s e () {

_ t r a v e r s e ( c u s T r e e r o o t );

C u s t o m e r A V L D a t a c D a t a ;

C u s t o m e r I n f o c I n f o ;

c D a t a p D a t a = & c I n f o ;

w h i l e (! a r r i v e Q u e u e i s E m p t y ()) {

c I n f o a r r i v e T i m e = a r r i v e Q u e u e f i r s t ();

c u s T r e e r e m o v e ( c D a t a );

Trang 10

}

v o i d _ t r a v e r s e ( AVLNode < C u s t o m e r A V L D a t a >* pR ) {

if ( pR == N U L L ) r e t u r n;

_ t r a v e r s e ( pR - > p L e f t );

if ( pR - > pData - > r e q u e s t s i z e () < 1) {

// to r e m o v e t h i s c u s t o m e r l a t e r

a r r i v e Q u e u e e n q u e u e ( pR - > pData - > a r r i v e T i m e ); }

e l s e {

r e q Q u e u e e n q u e u e ( pR - > pData - > r e q u e s t s f i r s t ( ) ) ;

pR - > pData - > r e q u e s t s d e q u e u e ();

if ( pR - > pData - > r e q u e s t s i z e () < 1) { // to r e m o v e t h i s c u s t o m e r l a t e r

a r r i v e Q u e u e e n q u e u e ( pR - > pData - > a r r i v e T i m e ); }

}

_ t r a v e r s e ( pR - > p R i g h t );

}

t e m p l a t e <c l a s s T >

v o i d t r a v e r s e I n s e r t ( BSTNode < T >* pR , List < T >& o u t L i s t ) {

if ( pR == N U L L ) r e t u r n;

t r a v e r s e I n s e r t ( pR - > pRight , o u t L i s t );

o u t L i s t p u s h _ b a c k ( pR - > d a t a );

t r a v e r s e I n s e r t ( pR - > pLeft , o u t L i s t );

}

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

🧩 Sản phẩm bạn có thể quan tâm

w