Nội dung bài giảng Bài giảng Giới thiệu các thuật toán tìm kiếm trình bày về: Bài toán tìm kiếm; tìm kiếm tuần tự, tìm kiếm nhị phân một số tiếp cận khác (Tìm kiếm dựa trên quy hoạch động, tìm kiếm dựa trên đệ quy, tìm kiếm dựa trên phân vùng)... Mời các bạn cùng tham khảo bài giảng.
Trang 1Giới thiệu Các thuật toán tìm kiếm
1
Trang 2Nội dung trình bày
• Bài toán tìm kiếm
• Tìm kiếm tuần tự, tìm kiếm nhị phân
Tìm kiếm tuần tự
Tìm kiếm nhị phân
• Một số tiếp cận khác
Tìm kiếm dựa trên quy hoạch động
Tìm kiếm dựa trên đệ quy
Tìm kiếm dựa trên phân vùng
Trang 3Bài toán tìm kiếm mở rộng
• Tìm kiếm trên quy hoạch động
Bài toán cái túi cơ bản
• Tìm kiếm bằng đệ quy
Sử dụng thuật toán đệ quy cho bài toán cái túi
• Tìm kiếm phân vùng tìm kiếm
Phân tích quá trình chia vùng tìm kiếm với bài toán cái túi
3
Trang 4Bài toán cái túi
• Tìm kiếm phương án lấy đồ cho cái túi
Một tên trộm mang túi có thể mang được trụng
lượng là C
Đến một ngôi nhà có N vật, mỗi vật có trọng lượng
là là wi và có giá trị là pi
Tìm các đồ vật mà tên trộm có thể lấy được mà có tổng giá trị lớn nhất
Trang 5Bài toán cái túi
• Tiếp cận quy hoạch động
Dựa trên mô tả về U(k,i) = max(U(k-wk)+pk,U(k-1,i))
• Tiếp cận tổ hợp
Sử dụng các phương án có thể, kiểm tra lấy giá trị lớn nhất (sử dụng đệ quy)
5
Trang 6Bài toán cái túi
• Thuật toán xây dựng phương án buildsolution
• Input: T, w[N], p[N]
• Output: Ma trận PA
• for(i=T->w[0])
PA[0,i]=p[0];
• For(i=0->w[0]-1)
PA[0,i]=0;
Trang 7Bài toán cái túi
• Thuật toán xây dựng phương án buildsolution (t)
• For(i=1->N-1)
For(j=T->w[i])
• PA[i,j]=max(PA[i-1,j], PA[i-1,j-w[i]]+p[i])
For(j=w[i]-1->0)
• PA[i,j]=PA[i-1,j];
7
Trang 8Bài toán cái túi
• Thuật toán xây dựng phương án getsolution
• Input: PA[N,T], w[N], p[N]
• Output: các vật cần lấy
• i=N
• j=T
• While(i>0 &&j>0)
If(PA[i,j]!PA[i-1,j])
• Print(i)
• J=j-w[i];
i=i-1;
• If(PA[i,j]!=0) print(i)
Trang 9Bài toán cái túi
• Xây dựng bảng các phương án
9
Trang 10Bài toán cái túi
• Xây dựng bảng các phương án
i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19
1 0 0 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 0 0 7 10 10 10 17 17 17 17 17 17 17 17 17 17 17 17
3 0 0 7 10 20 20 20 27 30 30 30 37 37 37 37 37 37 37
4 0 0 7 10 20 20 20 27 30 30 30 39 39 46 49 49 49 56
5 0 0 7 10 20 20 20 27 30 30 33 39 40 46 49 49 52 56
6 0 0 7 10 20 20 20 27 40 40 47 50 60 60 60 67 70 70
Trang 11Bài toán cái túi
• Xây dựng bảng các phương án
11
i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19
1 0 0 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 0 0 7 10 10 10 17 17 17 17 17 17 17 17 17 17 17 17
3 0 0 7 10 20 20 20 27 30 30 30 37 37 37 37 37 37 37
4 0 0 7 10 20 20 20 27 30 30 30 39 39 46 49 49 49 56
5 0 0 7 10 20 20 20 27 30 30 33 39 40 46 49 49 52 56
6 0 0 7 10 20 20 20 27 40 40 47 50 60 60 60 67 70 70
Trang 12Bài toán cái túi
• Tiếp cận đệ quy
Sinh tổ hợp để xét
Trang 13Bài toán cái túi
• Phân tích xu hướng phân vùng để tìm kiếm với bài toán cái túi
13
Trang 14Bài tập