Tải bản đầy đủ (.pdf) (7 trang)

Bài tập Phân tích thiết kế giải thuật

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (150.04 KB, 7 trang )

BÀI TẬP PTTKGT
(Giải các bài trên bằng giấy và viết tay)

Chương 1:
Bài 1:
Cho chương trình bài toán tháp Hà Nội.
a. Tình độ phức tạp của bài toán tháp Hà Nội
b. Khử đệ quy đuôi
c. Khử đệ quy lời gọi hàm đệ quy còn lại.
Bài 2:
Cho số Fibonaci được định nghĩa như sau:
F
n
= F
n-1
+ F
n-2

a. Hãy viết hàm đệ quy để tính F
n

b. Dùng phương pháp tổng quát để khử đệ quy.
Bài 3:
Giả sử thời gian thực thi modun A là hằng M. Hãy phân tích độ phức tạp C(n) của giải
thuật sau đây với n là kích thước của dữ liêu nhập
a.
For i:=1 to n do
For j:=1 to I do
For k:=1 to j do
Modun A


b.
for (i = 0; i < n-2; i++) {
for (j = 0; j < n; j=j*2) {
for (k = 1; k < 5000; k=k*5) {
modun A;
}
}
for (j = 0; j < 1000*n; j=j+1) {
modun A;
}
for (j = 0; j < n/5; j=j+5) {
modun A;
}
}
Bài 4:
Giải công thức truy hồi sau:
a. C
N
= 4C
N/2
+ N; với N ≥ 2, C
1
=1.
b. C
N
= 4C
N-1
+ 2; với N ≥ 2, C
1
=1.

Bài 5:
Cho thủ tục tính giá trị lớn nhất và nhỏ nhất như sau:
procedure MAXMIN(A, n, max, min)
/* Set max to the maximum and min to the minimum of A(1:n) */
begin
integer i, n;
max := A[1]; min:= A[1];
for i:= 2 to n do
if A[i] > max then max := A[i]
else if A[i] < min then min := A[i];
end
Tính độ phức tạp C(n) trong trường hợp:
a. Xấu nhất
b. Tốt nhất
c. Trung bình


Chương 2:
Bài 1:
Cho dãy số :
66 33 40 22 55 88 60 11 80

a. Hãy chạy tay giải thuật insertion sort, selection sort, bubble sort.
b. Hãy cho biết trường hợp tốt nhất và xấu nhất của các giải thuật trên.
Bài 2:
Cho danh sách các số nguyên: 28, 3, 93, 10, 54, 65, 30, 90, 10, 69, 8, 22, 31, 5, 96, 40, 85,
9, 39, 13, 8, 77, 10.
a. Hãy chạy bằng tay giải thuật QuickSort dùng phần tử trái nhất làm phần tử cầm
canh.
b. Hãy chạy tay giải thuật merge sort

c. Nếu mỗi số là 1 record, mỗi block chỉ chứa 1 record, bộ nhớ của buffer chỉ
ch
ứa tối đa 3 page frames. Trong quá trình merge, 2 page frames dùng để nhập
dữ liệu, còn 1 page frame dùng để xuất dữ liệu. Hãy chạy bằng tay, dùng giải
thật external sort để sắp xếp file dữ liệu trên.
Bài 3:
Hãy cho biết trường hợp xấu nhất, tốt nhất và độ phức tạp tương ứng của các giải thuật:
a. insertion sort
b. selection sort
c. bubble sort
d. quick sort
e. radix sort
f. merge sort
g. external sort
h. tìm kiếm nhị phân

Bài 4:
Giả sử 1 dãy các số được lưu trữ bằng danh sách liên kết. Các anh chị hãy cho biết giải
thuật sắp xếp nào là phù hợp nhất để sắp xế
p dữ liệu? giải thích?


Chương 3:
Bài 1:
Chạy bằng tay giải thuật heap sort cho các khóa:
66 33 40 22 55 88 60 11 80
Phát biểu độ phức tạp của giải thuật heap sort.

Bài 2 :
Vẽ cây tìm kiếm nhị phân sau khi thêm các khóa sau từ cây rỗng ban đầu: 5, 10, 30, 22, 15,

20, 31. Sau đó xóa khóa 10. Trong trường hợp xấu nhất, cần bao nhiêu phép so sánh để tìm
kiếm trong cây nhị phân tìm kiếm có N khóa. Giải thích.
Bài 3:
Cho các trị khóa sau lần lượt đưa vào bảng băm : C,O,M,P,U,T,E,R,S,C,I,E,N,C,E
Giả sử bảng băm có kích thước 13 và hàm băm là h(k)= k mod 13
a. Hãy cho biết nên sử dụ
ng phương pháp giải quyết đụng độ là đầu dò tuyến tính
hay xâu chuỗi riêng. Sau đó, vẽ quá trình đưa các khóa vào bảng băm.
b. Nếu kích thước bảng băm là 19 và hàm băm là h(k) = k mod 19 và sử dụng
phương pháp đầu dò tuyến tính. Hãy vẽ quá trình đưa các khóa vào bảng băm.

Chương 4
Bài 1:
Cho đồ thị biểu diễn bằng danh sách liên kết như sau:




a. Hãy vẽ đồ thị
b. Biểu diễn đồ thị bằng ma trận
c. Chạy bằng tay trạng thái của stack trong giải thuật depth first search (bắt đầu từ
đỉnh a). Sau đó, chỉ ra thứ tự duyệt các đỉnh
d. Phát biểu độ phức tạp của giải thuật depth first search
e. Chạy bằng tay trạng thái của stack trong giải thuật breadth first search (bắt đầu
từ đỉnh a). Sau
đó, chỉ ra thứ tự duyệt các đỉnh
Bài 2:
a. Hãy chỉnh sửa giải thuật dfs để kiểm tra đồ thị G có vòng không ?
b. Hãy chỉnh sửa giải thuật dfs để kiểm tra đồ thị G có bao nhiêu thành phần liên
thông ?

Bài 3:
Cho đồ thị có trọng lượng. Hãy dùng giải thuật Prim để tìm cây phủ tối tiểu. Sau đó hãy
cho biết độ phức tạp của giải thuật Prim trong trường hợp hàng đợi Q ta sử d
ụng cấu trúc
dữ liệu:
a. heap
b. array
c ac
a
d
b
a
f
e
c
b
a


Bài 4:
Cho đồ thị có hướng sau:

a. Hãy biểu diễn đồ thị trên bằng danh sách liên kết
b. Dùng phương pháp 1 để tìm 2 dãy topological sort khác nhau.
c. Dùng phương pháp 2 để tìm 2 dãy topological sort khác nhau.
Bài 5:
Cho ma trận biểu diễn đồ thị có hướng như sau:

0 0 0 1
1 0 1 1

1 0 0 1
0 0 1 0

a
g

f
b

ce
d
d
c e
a

b
f
w(d,c) = 4
w(d,e) = 4
w(d,a) = 3
w(a,c) = 3
w(a,b) = 3
w(a,f) = 3
w(a,e) = 3
w(b,f) = 2
w(b,c) = 2
w(f,e) = 1
w(c,e) = 2
a. Biểu diễn đồ thị trên bằng danh sách liên kết
b. Dùng giải thuật Warshall để tìm bao đóng truyền.


Bài 6:
Cho đồ thị có trọng lượng được biểu diễn như sau:

7 5 0 0
7 0 0 2
0 3 0 0
4 0 1 0


Hãy dùng giải thuật Floyd’s để tìm đường đi ngắn nhất giữa các đỉnh trong đồ thị có hướng
và có trọng lượng trên.

Bài 7:
a. Chỉnh sửa giải thuật Floyd’s để có thể lưu vết được đường đi ngắn nhất giữa các
đỉnh.
b. Phát triển thủ tục path để in tất cả các lối đi ngắn nhất từ một đỉnh đế
n các đỉnh
còn lại.
Bài 8:
Cho đồ thị có trọng lượng. Hãy dùng giải thuật Dijkstra để tìm cây phủ tối tiểu. Sau đó hãy
cho biết độ phức tạp của giải thuật Dijkstra trong trường hợp hàng đợi Q ta sử dụng cấu
trúc dữ liệu:
a. heap
b. array

a
g

f

b

ce
d
5
2
1
3
2
4
6
5
2
3
8
1
1
5

Chương 5
Bài 1:
Chỉnh sửa giải thuật quy hoạch động bài toán knapsack 0-1, để giải quyết bài toán
knapsack trong đó có mảng a[1 n] chứa số lượng các loại hàng.
Bài 2:
Cho công thức truy hồi của hàm C(m,n) ( n ≥1 và 0≤m≤n) như sau:
C(m,n) = 1 nếu m=0 hoặc m=n
C(m,n) = C(m,n-1) + C(m-1,n-1) nếu 0<m<n

a. Viết hàm đệ quy để tính C(m,n).
b. Nêu lý do tại sao không nên xây dựng hàm đệ quy để tính C(m,n). Dùng quy

hoạch động để tính C(m,n). Sau đó cho biết giá trị C(1,5) và C(2,5).
Bài 3:
Cho một danh sách ghi lại chỉ số
chứng khoán VNIndex từ khi khai trương đến nay. Dựa
vào danh sách này hãy cho biết, giai đoạn nào chỉ số VNIndex ổn định kéo dài nhất. Giai
đoạn ổn định là giai đoạn mà chỉ số VNIndex cao nhất so với chỉ số VNIndex thấp nhất
trong giai đoạn này không vượt quá 3%.

Bài 4:
Cho các giải thuật sau:
Thap Ha Noi, Prim,Dijkstra, : quicksort, mergesort, exchange radix sort, externel
sort, Floy, Warshall, heap sort
Anh/chị hãy cho biết giải thuật nào thuộc loại: chia để trị, biến thể để trị, quy hoạch
động,
tham lam, quay lui (backtracking).


×