Worksheetsw789
Total questions: 119
Worksheet time: 1hrs 8mins
Tư tưởng của kỹ thuật quay lui là:
Xây dựng dần các thành phần của cấu hình (nghiệm) bằng cách gọi đệ quy các khả năng đề cử.
Xây dựng dần các thành phần của cấu hình (nghiệm) bằng cách chọn tất cả các khả năng đề cử.
Xây dựng dần các thành phần của cấu hình (nghiệm) bằng cách chọn một số các khả năng đề cử.
Xây dựng dần các thành phần của cấu hình (nghiệm) bằng cách thử tất cả các khả năng thoả mãn một số ràng buộc nào đó.
Kỹ thuật quay lui dùng để giải bài toán:
Liệt kê các cấu hình
Tối ưu hóa các cấu hình
Tăng số lượng các cấu hình
Giảm bớt số lượng các cấu hình
Hàm sau thể hiện kỹ thuật thiết kế thuật toán: void BT(int i)
{ int j;
for (j thuộc <Tập đề cử 1.. ni của xi >)
if <chấp nhận j >
{
<Xác định xi theo j >
if ( i == n) < ghi nhận một cấu hình mới >
else BT(i+1);
}
}
Chia để trị
Quay lui
Nhánh cận
Quy hoạch động
Đánh giá đúng về kỹ thuật nhánh cận:
Nhánh cận là kỹ thuật độc lập với kỹ thuật quay lui
Nhánh cận là kỹ thuật sinh ra kỹ thuật quay lui
Nhánh cận là là kỹ thuật cải tiến của quay lui, nó đưa ra quyết định quay lui sớm nếu nhánh hiện tại không có khả năng ra nghiệm tối ưu hơn nghiệm đã biết.
Nhánh cận là là kỹ thuật cải tiến của quay lui, nó đưa ra quyết định quay lui sớm nếu nhánh hiện tại có khả năng ra nghiệm tối ưu hơn nghiệm đã biết.
1. Giả sử đã xác định i-1 thành phần của cấu hình (x1, x2,…,xi-1)
2.Tiến hành xây dựng thành phần thứ i của cấu hình xi bằng cách duyệt tất cả các khả năng đề cử của xi
- Đánh số các khả năng đề cử cho xi từ 1 đến ni
- Với mỗi khả năng j (j=1..ni) xét 2 khả năng
a. Nếu chấp nhận j thì xác định xi theo j, sau đó kiểm tra nếu i = n thì ghi nhận thêm một cấu hình mới, nếu i < n thì đi xây dựng tiếp thành phần thứ i+1
b. Nếu không có khả năng nào của j được chấp nhận thì quay lại bước trước để xác đị
. 1. Giả sử đã xác định i-1 thành phần của cấu hình (x1, x2,…,xi-1)
2.Tiến hành xây dựng thành phần thứ i của cấu hình xi bằng cách duyệt tất cả các khả năng đề cử của xi
- Đánh số các khả năng đề cử cho xi từ 1 đến ni
- Với mỗi khả năng j (j=1..ni) xét 2 khả năng
a. Nếu chấp nhận j thì xác định xi theo j, sau đó kiểm tra nếu i = n thì ghi nhận thêm một cấu hình mới, nếu i < n thì đi xây dựng tiếp thành phần thứ i-1;
b. Nếu không có khả năng nào của j được chấp nhận thì quay lại bước trước để xá
1. Giả sử đã xác định i-1 thành phần của cấu hình (x1, x2,…,xi-1)
2.Tiến hành xây dựng thành phần thứ i của cấu hình xi bằng cách duyệt tất cả các khả năng đề cử của xi
- Đánh số các khả năng đề cử cho xi từ 1 đến ni
- Với mỗi khả năng j (j=1..ni) xét 2 khả năng
a. Nếu chấp nhận j thì xác định xi theo j, sau đó kiểm tra nếu i = n thì ghi nhận thêm một cấu hình mới, nếu i > n thì đi xây dựng tiếp thành phần thứ i+1;
b. Nếu không có khả năng nào của j được chấp nhận thì quay lại bước trước để xác
1. Giả sử đã xác định i-1 thành phần của cấu hình (x1, x2,…,xi-1)
2.Tiến hành xây dựng thành phần thứ i của cấu hình xi bằng cách duyệt tất cả các khả năng đề cử của xi
- Đánh số các khả năng đề cử cho xi từ 1 đến ni
- Với mỗi khả năng j (j=1..ni) xét 2 khả năng
a. Nếu chấp nhận j thì xác định xi theo j, sau đó kiểm tra nếu i = n thì ghi nhận thêm một cấu hình mới, nếu i > n thì đi xây dựng tiếp thành phần thứ i+1;
b. Nếu không có khả năng nào của j được chấp nhận thì quay lại bước trước để xác đ
Giải bài toán liệt kê các dãy nhị phân x=(x1, x2, …, xn) có độ dài bằng n theo kỹ thuật quay lui, khi xây dựng thành phần xi (i=1..n), tập giá trị đề cử cho xi là:
{0}
{1}
{ 0, 1}
{00, 11}
Giải bài toán liệt kê các dãy nhị phân x=(x1, x2, …, xn) có độ dài bằng n theo kỹ thuật quay lui, khi xây dựng thành phần xi (i=1..n), điều kiện chấp nhận giá trị đề cử j (j=0, 1) của xi là:
Không có điều kiện chấp nhận
Là giá trị còn tự do (chưa được sử dụng)
Là giá trị 0
Là giá trị 1
Sử dụng kỹ thuật quay lui liệt kê các hoán vị x=(x1, x2, …, xn) của n số tự nhiên {1,2,…n}, tập giá trị đề cử khi xây dựng thành phần xi (i=1..n) là:
{1, 2, …, n}
{1, 2, …, n-1}
{2, …, n}
{2, …, n-2}
Sử dụng kỹ thuật quay lui liệt kê các hoán vị x=(x1, x2, …, xn) của n số tự nhiên {1,2,…n}, điều kiện chấp nhận giá trị đề cử j (j=1..n) khi xây dựng thành phần xi (i=1..n) là:
Không có điều kiện chấp nhận
Là giá trị còn tự do (chưa được sử dụng)
Là giá trị 1
Là giá trị n
Khi sử dụng kỹ thuật quay lui liệt kê tất cả các cách phân tích n (n<=50) thành tổng các số nguyên nhỏ hơn n, theo thứ tự từ điển, thì việc sinh ra các cách tạo tổng n thoả mãn:
Số sau lớn hơn hoặc bằng số trước trong dãy phân tích
Số sau khác số trước trong dãy phân tích
Số sau nhỏ hơn số trước trong dãy phân tích
Số sau nhỏ hơn và khác số trước trong dãy phân tích
Khi sử dụng kỹ thuật nhánh cận trong bài toán TSP (n là số thành phố), hành trình của người du lịch tương ứng với nghiệm x=(x1, x2, …, xn):
Khi sử dụng kỹ thuật nhánh cận trong bài toán TSP (n là số thành phố, C[i, j] là chi phí đi lại giữa thành phố i và j (i, j=1..n)), tổng chi phí tương ứng với nghiệm x=(x1, x2, …, xn) bằng:
Hàm mục tiêu giải bài toán chiếc ba lô mở rộng bằng kỹ thuật nhánh cận (B là trọng lượng của chiếc ba lô, đồ vật thứ i (i=1..n) có trọng lượng là ai và giá trị sử dụng là ci):
Hàm mục tiêu giải bài toán TSP bằng kỹ thuật nhánh cận (n là số thành phố):
Hàm cận dưới giải bài toán TSP (n là số thành phố) bằng kỹ thuật nhánh cận tương ứng với phương án bộ phận cấp k: (x1, x2, …, xk):
Hàm mục tiêu giải bài toán chiếc ba lô giá trị nguyên bằng kỹ thuật nhánh cận (B là trọng lượng của chiếc ba lô, đồ vật thứ i (i=1..n) có trọng lượng là ai và giá trị sử dụng là ci):
Khi giải quyết bài toán chiếc ba lô giá trị nguyên (B là trọng lượng của chiếc ba lô) bằng kỹ thuật nhánh cận thì cần sắp xếp các đồ vật thõa mãn điều kiện:
: Hàm cận trên giải bài toán chiếc ba lô giá trị nguyên (B là trọng lượng của chiếc ba lô, đồ vật thứ i (i=1..n) có trọng lượng là ai và giá trị sử dụng là ci) bằng kỹ thuật nhánh cận tương ứng với phương án bộ phận cấp k:
Với bài toán chiếc ba lô giá trị nguyên (B là trọng lượng của chiếc ba lô, đồ vật thứ i (i=1..n) có trọng lượng là ai và giá trị sử dụng là ci) khi tiếp tục xây dựng thành phần thứ k+1 của phương án bộ phận cấp k (bằng kỹ thuật nhánh cận), giá trị đề cử cho xk+1 :
0,1
Với bài toán chiếc ba lô giá trị nguyên (B là trọng lượng của chiếc ba lô, đồ vật thứ i (i=1..n) có trọng lượng là ai và giá trị sử dụng là ci) khi tiếp tục xây dựng thành phần thứ k+1 của phương án bộ phận cấp k (bằng kỹ thuật nhánh cận), số nhánh bằng:
0
1
{0}
{0, 1}
{0, 1, 2}
{0, 1, 2, 3}
{0}
{0, 1}
{0, 1, 2}
{0, 1, 2, 3}
{0}
{0, 1}
{0, 1, 2}
{0, 1, 2, 3}
(70; 0)
(52; 0)
(52; 3)
(21; 0)
(62; 0)
(74; 0)
(74; 7)
(68; 0)
(2;7)
(3;5)
(4;6)
(5; 8)
(2;13)
(3;10)
(4;15)
(5; 11)
(6; 8)
(6; 9)
(6; 10)
(5; 8)
(7; 13)
(7; 15)
(9; 13)
(9; 15)
Hàm đánh giá g(x) trong nhánh cận có vai trò gì?
Hỗ trợ sắp xếp thứ tự mở rộng nhánh
Giúp xác định nhánh nào có khả năng chứa lời giải tốt
Để xác định hàm mục tiêu
Không cần liên quan đến hàm mục tiêu
Trong bài toán TSP với nhánh cận, ta dùng cận dưới g(x) để:
(Chọn 2 phương án đúng)
Ưu tiên nhánh có tổng chi phí tạm thời nhỏ nhất
Lựa chọn hành trình ngắn nhất ngay lập tức
Cắt bỏ các nhánh có chi phí không thể tối ưu
Tăng tốc việc liệt kê tất cả các hành trình
Trong cây tìm kiếm của bài toán TSP:
Mỗi nút biểu diễn một hành trình tạm thời
Cần xây toàn bộ cây trước khi chọn hành trình tối ưu
Cận dưới càng lớn thì phương án càng tốt
Nhánh cận giúp rút ngắn số tổ hợp phải xét
Các bước chính của kỹ thuật quay lui gồm
Chấp nhận giá trị nếu thoả điều kiện
Duyệt ngẫu nhiên các giá trị
Loại trừ tất cả các giá trị nhỏ hơn
Đưa ra tập đề cử cho xi
Hàm đánh giá g(x) trong nhánh cận có vai trò gì? (Chọn 2 phương án đúng)
Hỗ trợ sắp xếp thứ tự mở rộng nhánh
Không cần liên quan đến hàm mục tiêu
Để xác định hàm mục tiêu
Giúp xác định nhánh nào có khả năng chứa lời giải tốt
Để liệt kê dãy nhị phân độ dài n bằng quay lui, ta cần (Chọn 2 phương án đúng)
Tập đề cử là {0,1}
Duyệt tất cả các tổ hợp dãy nhị phân
Sử dụng mảng đánh dấu giá trị đã chọn
Áp dụng cấu trúc cây tìm kiếm tuyến tính
Kỹ thuật quay lui khi liệt kê hoán vị cần sử dụng (Chọn 2 phương án đúng)
Mảng logic để đánh dấu phần tử đã chọn
Thuật toán vét cạn toàn phần
Duyệt các chỉ số từ 0 đến n-1
Thay thế đệ quy bằng vòng lặp
Trong cây tìm kiếm của bài toán TSP (Chọn 2 phương án đúng)
Cần xây toàn bộ cây trước khi chọn hành trình tối ưu
Mỗi nút biểu diễn một hành trình tạm thời
Cận dưới càng lớn thì phương án càng tốt
Nhánh cận giúp rút ngắn số tổ hợp phải xét
Tư tưởng của kỹ thuật quy hoạch động là:
Chia bài toán ban đầu thành các bài toán con, tính trước lời giải của các bài toán con và lưu vào một bảng và sau đó lấy lời giải của bài toán con ở trong bảng đã tính trước để giải bài toán ban đầu .
Chia bài toán ban đầu thành các bài toán con, giải các bài toán con xong thì nhận được nghiệm của bài toán ban đầu .
Chia bài toán ban đầu thành các bài toán con, giải các bài toán con và kết hợp lại để giải bài toán ban đầu
Chia bài toán ban đầu thành các bài toán con, từ các các bài toán con có thể giải bài toán ban đầu .
Tư tưởng của kỹ thuật tham lam là:
Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán, dựa vào đó chọn lựa hành động tốt nhất của từng bước trong quá trình tìm kiếm lời giải.
Lấy tiêu chuẩn tối ưu cục bộ trên từng phạm vi để lựa chọn hành động của từng bước trong quá trình tìm kiếm lời giải.
Lấy tiêu chuẩn tối ưu cục bộ trên từng phạm vi để lựa chọn hành động tốt nhất của từng bước trong quá trình tìm kiếm lời giải.
Lấy tiêu chuẩn tối ưu cục bộ để chọn lựa hành động tốt nhất trong lời giải của bài toán.
Thuật toán được thiết kế theo kỹ thuật quy hoạch động có ưu điểm chính là:
Tìm được tất cả các nghiệm tối ưu
Tìm được nghiệm tối ưu trong thời gian đa thức
Tiết kiệm không gian lưu trữ
Tiết kiệm thời gian tính toán
Bài toán con gối nhau trong kỹ thuật quy hoạch động là:
Bài toán nhỏ hơn và được phân chia từ bài toán ban đầu, các bài toán con này sẽ được gọi đi gọi lại.
Bài toán nhỏ hơn và được phân chia từ bài toán ban đầu.
C. Bài toán nhỏ hơn một nửa và được phân chia từ bài toán ban đầu.
D. Bài toán có kích thước bằng 1 và được phân chia từ bài toán ban đầu.
Cấu trúc con tối ưu trong kỹ thuật quy hoạch động là:
Từ lời giải của bài toán ban đầu có thể tìm được lời giải tối ưu của các bài toán con.
Từ lời giải tối ưu của bài toán ban đầu có thể tìm được lời giải cho các bài toán con.
Từ tập hợp các lời giải bất kỳ của các bài toán con để tìm ra lời giải tối ưu chính xác cho bài toán ban đầu.
Từ tập hợp các lời giải tối ưu của các bài toán con để tìm ra lời giải bài toán ban đầu.
Kỹ thuật quy hoạch động sẽ không hiệu quả khi gặptình huống:
Sự kết hợp lời giải của các bài toán con chưa chắc đã cho lời giải của các bài toán lớn hơn.
Sự kết hợp lời giải của các bài toán con luôn cho lời giải của các bài toán lớn hơn.
Số lượng các bài toán con cần giải quyết và lưu trữ kết quả nhỏ và chấp nhận được.
Số lượng các bài toán con cần giải quyết luôn xác định trước.
Thuật toán được thiết kế theo kỹ thuật tham lam có điểm mạnh là:
Tính đơn giản và tốc độ thực thi nhanh.
Tính đơn giản và cho nghiệm tối ưu
Tính dễ dàng triển khai và cung cấp giải pháp tối ưu chính xác
Tính dễ dàng lưu trữ và cung cấp giải pháp tối ưu chính xác
Các thao tác tổng quát của quy hoạch động:
1. Tìm nghiệm của các bài toán con đơn giản nhất;2. Xây dựng hàm quy hoạch động (công thức truy hồi xây dựng nghiệm của bài toán con thông qua nghiệm của các bài toán con cỡ nhỏ hơn);3. Truy xuất lời giải của bài toán ban đầu.
. Tìm nghiệm của các bài toán con đơn giản nhất ;2. Lập bảng lưu lại các giá trị của hàm quy hoạch động;3. Dùng bảng lưu giá trị hàm quy hoạch động để truy xuất lời giải của bài toán ban đầu.
1. Xây dựng hàm quy hoạch động (công thức truy hồi xây dựng nghiệm của bài toán con thông qua nghiệm của các bài toán con cỡ nhỏ hơn);2. Lập bảng lưu lại các giá trị của hàm quy hoạch động;3. Dùng bảng lưu giá trị hàm quy hoạch động để truy xuất lời giải của bài toán ban đầu.
. Tìm nghiệm của các bài toán con đơn giản nhất;
2. Xây dựng hàm quy hoạch động (công thức truy hồi xây dựng nghiệm của bài toán con thông qua nghiệm của các bài toán con cỡ nhỏ hơn);
3. Lập bảng lưu lại các giá trị của hàm quy hoạch động;
4. Dùng bảng lưu giá trị hàm quy hoạch động để truy xuất lời giải của bài toán ban đầu.
Công thức truy hồi trong kỹ thuật quy hoạch động là:
Công thức thể hiện quan hệ giữa các thành phần trong một bài toán.
Công thức thể hiện quan hệ giữa các kết quả khi giải một bài toán.
Công thức thể hiện quan hệ giữa các bước trong quá trình giải một bài toán và kết quả của bước trước nhờ vào kết quả của các bước sau đó.
Công thức thể hiện quan hệ giữa các bước trong quá trình giải một bài toán và kết quả của bước sau nhờ vào kết quả của các bước trước đó.
Để có thể sử dụng kỹ thuật quy hoạch động thì bài toán ban đầu cần có tính chất:
Phân rã được thành các bài toán con.
Phân rã được thành các cấu trúc con.
Phân rã được thành các bài toán con gối nhau và cấu trúc con tối ưu.
Phân rã được thành các bài toán con gối nhau và cấu trúc con gần tối ưu.
Với bài toán tìm kiếm nhị phân thì khi áp dụng kỹ thuật quy hoạch động, kết quả đạt được thêm về tính tối ưu:
Không tối ưu được gì thêm.
Tối ưu thêm về độ phức tạp thời gian
Tối ưu thêm về độ phức tạp không gian
Tối ưu thêm về cách mô tả thuật toán.
Giải bài toán tính số Fibonacci thứ n (F[n]: n nguyên dương và n>=1) bằng kỹ thuật quy hoạch động, bước xây dựng hàm quy hoạch động (công thức truy hồi), bảng lưu lại các giá trị của hàm quy hoạch động được lập:
Dùng mảng phương án một chiều F[100]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: F[i]=F[i-2]+F[i-1] với i>=3; i=1..n
Dùng mảng phương án một chiều F[100]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: F[i]=F[i-2]+F[i-1] với i>3; i=1..n
Dùng mảng phương án một chiều F[100]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: F[i]=F[i+2]+F[i-1] với i>3; i=1..n
Dùng mảng phương án một chiều F[100]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: F[i]=F[i-2]+F[i+1] với i>=3; i=1..n
Dùng mảng phương án hai chiều C[0..n, 0..n]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: C[i,j]:=C[i-1,j-1]+C[i-1,j]; i=1..n; j=1..(i-1)
Dùng mảng phương án hai chiều C[n x n]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: C[i,j]:=C[i+1,j-1]+C[i-1,j]; i=1..n; j=1..(i-1)
Dùng mảng phương án hai chiều C[n x n]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: C[i,j]:=C[i-1,j-1]+C[i+1,j]; i=1..n; j=1..(i-1)
Dùng mảng phương án hai chiều C[n x n]. Sử dụng lời giải của bài toán con trước đó để tìm lời giải của bài toán con tiếp theo: C[i,j]:=C[i-1,j-1]+C[i-1,j+1]; i=1..n; j=1..(i-1)
Quay lui
Nhánh cận
Quy hoạch động
Tham lam
Khi thiết kế thuật toán tham lam, điều quan trọng là:
Xác định cấu trúc con tối ưu
Xác định thuộc tính lựa chọn tham lam.
Xác định hàm mục tiêu.
Xác định cấu trúc con tối ưu và thuộc tính lựa chọn tham lam.
Độ phức tạp về thời gian của thuật toán tham lam phụ thuộc vào:
Bài toán cụ thể
Việc triển khai thuật toán
Bài toán cụ thể và việc triển khai thuật toán.
Kinh nghiệm của người dùng
Thuật toán Kruskal để xây dựng cây khung nhỏ nhất trên đồ thị vô hướng được thiết kế theo kỹ thuật:
Chia để trị
Quay lui
Nhánh cận
Tham lam
Thuật toán PRIM để xây dựng cây khung nhỏ nhất trên đồ thị vô hướng được thiết kế theo kỹ thuật:
Chia để trịQuay lui
Quay lui
Nhánh cận
Tham lam
5
10
15
20
5
10
15
20
. 5
. 10
. 15
20
Bắt đầu đổi từ loại tiền có giá trị nhỏ nhất và cứ như vậy cho đến khi số tiền M đã được đổi hết thì thông báo là tìm được nghiệm, ngược lại thì thông báo không đổi được.
Bắt đầu đổi từ loại tiền có giá trị bất kỳ và cứ như vậy cho đến khi số tiền M đã được đổi hết thì thông báo là tìm được nghiệm, ngược lại thì thông báo không đổi được.
Bắt đầu đổi từ loại tiền có giá trị lớn nhất và cứ tăng dần cho đến khi số tiền M đã được đổi hết thì thông báo là tìm được nghiệm, ngược lại thì thông báo không đổi được.
Bắt đầu đổi từ loại tiền có giá trị lớn nhất và cứ giảm dần cho đến khi số tiền M đã được đổi hết thì thông báo là tìm được nghiệm, ngược lại thì thông báo không đổi được.
Bài toán TSP:
Input: Có n thành phố, được đánh số từ 1, …, n. Chi phí đi lại giữa thành phố i và thành phố j là Cij (i, j=1..n) nguyên dương. Một người du lịch muốn đi thăm tất cả các thành phố mỗi thành phố đúng một lần rồi quay trở về thành phố xuất phát (thành phố xuất phát là bất kỳ trong n thành phố).
Output: Xác định hành trình cho người du lịch sao cho tổng chi phí của hành trình là nhỏ nhất.
Một hành trình của người du lịch là x = (x1, x2, …, xn) với {(x1, x2, …, xn)} là tập các hoán vị của n số tự nhiên 1, 2, …, n. Cần xác định được hành trình tối ưu để hàm mục tiêu
f(x) = C[x1, x2] + C[x2, x3]+ … + C[xn-1, xn]+ C[xn, x1] đạt giá trị nhỏ nhất.
Ý tưởng tham lam giải bài toán là:
1. Sắp xếp các cạnh theo thứ tự tăng dần của độ dài cạnh.
2. Xét các cạnh có độ dài từ nhỏ đến lớn để đưa vào phương án.
3. Một cạnh sẽ được đưa vào phương án nếu cạnh đó thoả mãn hai điều kiện sau:
Không tạo thành một đỉnh có cấp >= 3
Không tạo thành một chu trình thiếu
4. Lặp lại bước 3 cho đến khi chọn được n cạnh.
5. Tìm cạnh tạo thành chu trình với n cạnh đã chọn
1. Sắp xếp các cạnh theo thứ tự tăng dần của độ dài cạnh.
2. Xét các cạnh có độ dài từ nhỏ đến lớn để đưa vào phương án.
3. Một cạnh sẽ được đưa vào phương án nếu cạnh đó thoả mãn hai điều kiện sau:
Không tạo thành một đỉnh có bậc >= 3
Không tạo thành một chu trình thiếu
4. Lặp lại bước 3 cho đến khi chọn được n-1 cạnh
5. Tìm cạnh thứ n tạo thành chu trình với n-1 cạnh đã chọn
1. Sắp xếp các cạnh theo thứ tự tăng dần của độ dài cạnh.
2. Xét các cạnh có độ dài từ nhỏ đến lớn để đưa vào phương án.
3. Một cạnh sẽ được đưa vào phương án nếu cạnh đó thoả mãn hai điều kiện sau:
Không tạo thành một đỉnh có cấp >=2
Không tạo thành một chu trình thiếu .
4. Lặp lại bước 3 cho đến khi chọn được n-1 cạnh.
5. Tìm cạnh thứ n tạo thành chu trình với n-1 cạnh đã chọn
. Sắp xếp các cạnh theo thứ tự tăng dần của độ dài cạnh.
2. Xét các cạnh có độ dài từ nhỏ đến lớn để đưa vào phương án.
3. Một cạnh sẽ được đưa vào phương án nếu cạnh đó thoả mãn hai điều kiện sau:
Không tạo thành một đỉnh có cấp >=2.
Không tạo thành một chu trình thiếu.
4. Lặp lại bước 3 cho đến khi chọn được n cạnh.
5. Tìm cạnh thứ n tạo thành chu trình với n-1 cạnh đã chọn
Chia để trị
Quay lui
Nhánh cận
Tham lam
1. Tính đơn giá cho các loại đồ vật (đơn giá i = ci/ai ; i=1..n );
2. Xét các đồ vật theo thứ tự đơn giá từ lớn đến nhỏ;
3. Với mỗi đồ vật được xét sẽ lấy một số lượng tối đa mà trọng lượng còn lại của balô cho phép;
4. Xác định trọng lượng còn lại của balô và quay lại bước 3 cho đến khi không còn chọn được đồ vật nào nữa.
1. Tính đơn giá cho các loại đồ vật (đơn giá i = ai/ci ; i=1..n );2. Xét các đồ vật theo thứ tự đơn giá từ lớn đến nhỏ;3. Với mỗi đồ vật được xét sẽ lấy một số lượng tối đa mà trọng lượng còn lại của balô cho phép;4. Xác định trọng lượng còn lại của balô và quay lại bước 3 cho đến khi không còn chọn được đồ vật nào nữa.
1. Tính đơn giá cho các loại đồ vật (đơn giá i = ci/ai ; i=1..n );2. Xét các đồ vật theo thứ tự ngẫu nhiên;3. Với mỗi đồ vật được xét sẽ lấy một số lượng tối đa mà trọng lượng còn lại của balô cho phép;4. Xác định trọng lượng còn lại của balô và quay lại bước 3 cho đến khi không còn chọn được đồ vật nào nữa.
1. Tính đơn giá cho các loại đồ vật (đơn giá i = ci/ai ; i=1..n );2. Xét các đồ vật theo thứ tự đơn giá từ lớn đến nhỏ;3. Với mỗi đồ vật được xét sẽ lấy một số lượng tối thiểu mà trọng lượng còn lại của balô cho phép;4. Xác định trọng lượng còn lại của balô và quay lại bước 3 cho đến khi không còn chọn được đồ vật nào nữa.
(2, 0, 3, 0); 63; 0(2, 0, 1, 1); 57; 2
(2, 0, 1, 1); 57; 2
(2, 1, 0, 1); 65; 0
(3, 0, 1, 0); 70; 0
(2, 0, 1, 0); 62; 0
(1, 1, 0, 0); 56; 3
(1, 0, 0, 1); 53; 0
(2, 0, 0, 0); 50; 7
Tư tưởng và kỹ thuật chủ yếu của phương pháp quy hoạch động dựa vào:
Nguyên lý tối ưu Bellman
Tìm kiếm vét cạn
Lập bảng kết quả các bài toán con
Phân tích truy hồi
Kỹ thuật quy hoạch động hiệu quả hơn chia để trị trong trường hợp nào?
Không cần lưu lời giải bài toán con
Các bài toán con lặp lại nhiều lần
Có công thức truy hồi rõ ràng
Không có sự trùng lặp bài toán con
Đặc điểm chung giữa bài toán tổ hợp và xâu con chung:
. Có công thức quy hoạch động rõ ràng
. Sử dụng được cây Huffman
. Cần lưu bảng 2 chiều
. Tính toán dựa trên đơn giá
Trong bài toán xâu con chung dài nhất (LCS):
A. Độ phức tạp chỉ O(n)
B. Có thể có nhiều xâu có cùng độ dài cực đại
C. Áp dụng quy hoạch động với bảng 2 chiều
D. Phải vét cạn toàn bộ không gian nghiệm
Kỹ thuật quay lui (Backtracking) dùng để:
A. Giải các bài toán có không gian trạng thái hữu hạn, có thể vét cạn lời giải
B. Giải bài toán không gian trạng thái vô hạn
C. Giải bài toán không có cấu trúc ràng buộc
D. Giải bài toán tuyến tính
Khi dùng quay lui để tìm nghiệm, nếu phương án hiện tại không thể dẫn tới nghiệm đúng thì:
Tiếp tục đi sâu hơn
Quay lui để thử nhánh khác
Kết thúc thuật toán ngay
Chọn ngẫu nhiên một nhánh khác
So với vét cạn, kỹ thuật quay lui có ưu điểm:
Xét tất cả các khả năng như vét cạn
Loại bỏ được nhiều nhánh vô ích
Đảm bảo nhanh hơn trong mọi trường hợp
Có thể dừng sớm khi tìm thấy nghiệm
Bài toán lập lịch cuộc họp áp dụng kỹ thuật nào sau đây: (Chọn 2 phương án đúng)
Tham lam (Greedy)
Quy hoạch động (Dynamic Programming)
Quay lui (Backtracking)
Duyệt vét cạn (Brute-force / Exhaustive search)
Đặc điểm nổi bật của kỹ thuật tham lam là gì? (Chọn 2 phương án đúng)
Không cần lưu trữ lời giải các bước trước
Luôn đảm bảo nghiệm tối ưu toàn cục
Duyệt toàn bộ không gian nghiệm
Chọn lựa tối ưu cục bộ tại mỗi bước
Trong bài toán tính số tổ hợp C(n, k), kỹ thuật quy hoạch động sử dụng: (Chọn 2 phương án đúng nhất)
Mảng 2 chiều theo cấu trúc tam giác Pascal
Mệnh đề lựa chọn tối ưu tại mỗi bước như trong thuật toán tham lam
Hàm chọn dựa trên đơn giá từng phần tử
Mảng 1 chiều để tối ưu bộ nhớ
Trong bài toán tìm xâu con chung dài nhất (LCS): (Chọn 2 phương án đúng nhất)
Dùng quy hoạch động từ dưới lên để tránh đệ quy
Duyệt hết mọi xâu con để tìm đáp án
Dùng bảng 2 chiều để lưu độ dài L(i,j)
Kết quả cuối cùng là L[m,n]
Kết quả cuối cùng của kỹ thuật chia để trị được hình thành từ:
Hợp nhất các kết quả từ các nhánh nhỏ về gốc theo mô hình cây
Chọn ngẫu nhiên nghiệm từ các bài toán con
Tổng hợp kết quả của các bài toán con
. Dữ liệu đầu vào
Khi áp dụng kỹ thuật chia để trị trong bài toán nhân hai số nguyên lớn, việc chia nhỏ các số nhằm mục đích gì?
Chia số thành từng chữ số đơn để áp dụng nhân truyền thống dễ hơn
Chia số thành hai phần có số chữ số xấp xỉ nhau để thực hiện nhân các phần nhỏ hơn
Tìm các thừa số nguyên tố của số để giảm độ phức tạp nhân
Áp dụng nhân các phần nhỏ rồi tổng hợp kết quả dựa trên hệ số mũ của cơ số
Trong bài toán xếp lịch thi đấu thể thao, kỹ thuật chia để trị giúp:
Lập lịch thi đấu cho mọi số lượng vận động viên
Rút ngắn số ngày thi đấu
Giảm số trận mỗi ngày
Tăng độ khó của bài toán
Khi giải bài toán chiếc ba lô bằng nhánh cận:
Không cần xét các tổ hợp đã thử
Phải tính tổng giá trị và tổng trọng lượng tạm thời
Có thể dừng sớm nếu vượt quá dung lượng balô
Cần một hàm cận để đánh giá khả năng tiếp tục
Bài toán lập lịch cuộc họp áp dụng kỹ thuật nào sau đây?
Quy hoạch động
Tham lam
Quay lui
Duyệt vét cạn
Kỹ thuật quay lui hoạt động dựa trên:
Loại bỏ các cấu hình không thỏa mãn tính chất T
Duyệt tất cả phương án có thể theo đệ quy
Sinh ra lời giải bằng phương pháp ngẫu nhiên
Ưu tiên các phương án có giá trị mục tiêu cao
Trong kỹ thuật nhánh cận, khi nào có thể loại bỏ một nhánh?
Khi cận dưới bằng 0
Khi không còn giá trị để cử
Khi phương án không có lời giải
Khi cận dưới của phương án lớn hơn giá trị tối ưu hiện tại
Kỹ thuật quy hoạch động hiệu quả hơn chia để trị trong những trường hợp nào sau đây?
Các bài toán con lặp lại nhiều lần
Không cần lưu lời giải bài toán con
Không có sự trùng lặp bài toán con
Có công thức truy hồi rõ ràng
Thuật toán tham lam có điểm nào nổi bật?
Lựa chọn tại mỗi bước là quyết định cuối cùng
Luôn chính xác với mọi bài toán tối ưu
Phải lưu lại toàn bộ trạng thái trước đó
Không cần xét lại các lựa chọn trước đó
Trong bài toán tối ưu tuyến tính theo kỹ thuật tham lam, phương án nào sau đây là đúng? (Chọn 2 phương án)
Luôn tìm được nghiệm tối ưu
Có thể không đổi được nếu mệnh giá không phù hợp
Chọn tiên mệnh giá nhỏ trước
Chọn tiên mệnh giá lớn trước
Với bài toán ba lô giá trị nguyên, thuật toán tham lam sẽ hiệu quả khi: (Chọn 2 phương án)
Tỷ lệ giá trị/trọng lượng là tiêu chí chọn
Giá trị mỗi vật là như nhau
Không giới hạn số lượng mỗi loại vật
Trọng lượng ba lô thay đổi liên tục
Trong định lý Cook, bài toán nào được chứng minh đầu tiên là NPC? (Chọn 2 phương án)
Partition
3-SAT
TSP
CIRCUIT-SAT
Trong giải thuật Mergesort, các bước chính là: (Chọn 2 phương án)
Chia mảng thành hai nửa
Gọi đệ quy sắp xếp từng nửa
Duyệt tuần tự và chèn từng phần tử
Sắp xếp bằng cách chọn phần tử nhỏ nhất
Điểm khác biệt giữa kỹ thuật nhánh cận và quay lui là: (Chọn 2 phương án)
Quay lui luôn sinh toàn bộ không gian nghiệm
Quay lui không áp dụng được cho bài toán tối ưu
Nhánh cận sử dụng hàm cận để loại bỏ nhánh không cần thiết
Nhánh cận cho lời giải nhanh hơn trong mọi trường hợp
Trong kỹ thuật quay lui, điều kiện nào là bất buộc? (Chọn 2 phương án)
Không trùng lặp cấu hình
Không có điều kiện chấp nhận
Không sử dụng đệ quy
Không bỏ sót cấu hình
Đánh giá đúng về Heuristic:
Heuristic là các kỹ thuật dựa trên kinh nghiệm để giải quyết vấn đề, học hỏi hay khám phá nhằm đưa ra một giải pháp mà không được đảm bảo là tối ưu.
Heuristic là các kỹ thuật dựa trên việc xây dựng các bộ dữ liệu để đưa ra một giải pháp mà không được đảm bảo là tối ưu.
Heuristic là các kỹ thuật dựa trên học hỏi dữ liệu nhằm đưa ra một giải pháp được đảm bảo là tối ưu.
Heuristic là các kỹ thuật dựa trên khảo sát dữ liệu nhằm đưa ra một giải pháp được đảm bảo là tối ưu.
Giải thuật Heuristic là sự mở rộng của khái niệm thuật toán, nó thể hiện cách giải bài toán với đặc tính:
Thường tìm được lời giải tối ưu một cách đơn giản, nhanh chóng.Thường tìm được lời giải tối ưu và độc đáo.
Thường tìm được lời giải tối ưu và độc đáo.
. Thường tìm được lời giải không tốt .
. Thường tìm được lời giải tốt (nhưng không chắc là lời giải tốt nhất) hay gần tốt một cách đơn giản, nhanh chóng và đôi khi độc đáo so với những thuật toán tối ưu.
ID: 23431
Giải thuật Heuristic là sự mở rộng của khái niệm thuật toán, nó thể hiện cách giải bài toán với đặc tính:
Thể hiện độc lập với cách suy nghĩ và hành động của con người
Thể hiện khá tự nhiên
. Khá gần với cách suy nghĩ và hành động của con người.
Thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người.
Trong kỹ thuật Heuristic, thường sử dụng nguyên lý cơ bản:
Nguyên lý đếm cộng
Nguyên lý đếm nhân
Nguyên lý Dirichlet
Nguyên lý vét cạn thông minh
Trong kỹ thuật Heuristic, thường sử dụng nguyên lý cơ bản:
Nguyên lý đếm cộng
Nguyên lý đếm nhân
Nguyên lý Dirichlet
Nguyên lý tham lam
Trong kỹ thuật Heuristic, thường sử dụng nguyên lý cơ bản:
Nguyên lý đếm cộng
Nguyên lý đếm nhân
Nguyên lý Dirichlet
Nguyên lý thứ tự
Trong kỹ thuật Heuristic, thường sử dụng:
Thuật toán tìm ra nghiệm gần đúng của bài toán với độ chính xác nào đó nhưng đủ nhanh (độ phức tạp là đa thức).
Thuật toán tìm ra nghiệm đúng của bài toán với độ chính xác nào đó nhưng đủ nhanh (độ phức tạp là đa thức).
Thuật toán tìm ra nghiệm đúng của bài toán với độ chính xác nào đó và đủ nhanh (độ phức tạp là đa thức).
Thuật toán tìm ra nghiệm đúng của bài toán với độ chính xác nào đó nhưng độ phức tạp là trên đa thức.
Thuật toán tối ưu nhanh là:Thuật toán tối ưu nhanh là:
Thuật toán tìm nghiệm gần tối ưu và độ phức tạp là trên đa thức
Thuật toán tìm nghiệm gần tối ưu, nhưng nhanh (độ phức tạp là đa thức)
Thuật toán tìm nghiệm tối ưu và độ phức tạp là trên đa thức
Thuật toán tìm nghiệm tối ưu, nhưng nhanh (độ phức tạp là đa thức)
Thuật toán tối ưu chậm là:
Thuật toán tìm nghiệm gần tối ưu, nhưng chậm (độ phức tạp là hàm mũ)
Thuật toán tìm nghiệm gần tối ưu và độ phức tạp là đa thức
Thuật toán tìm nghiệm tối ưu và độ phức tạp là đa thức
Thuật toán tìm nghiệm tối ưu, nhưng chậm (độ phức tạp là hàm mũ)
Hàm Heuristic là:
Hàm đánh giá dựa trên “kinh nghiệm”
Hàm phụ thuộc vào trạng thái hiện tại của mỗi bước giải
Hàm cho phép chọn ra phương án hành động
Hàm đánh giá dựa trên “kinh nghiệm”, phụ thuộc vào trạng thái hiện tại của mỗi bước giải, từ giá trị của hàm có thể chọn ra phương án hành động
Có kích cỡ không lớn hơn 1 lần kích cỡ một phủ đỉnh tối ưu trong thời gian đa thức
Có kích cỡ không lớn hơn 2 lần kích cỡ một phủ đỉnh tối ưu trong thời gian đa thức
Có kích cỡ không lớn hơn 3 lần kích cỡ một phủ đỉnh tối ưu trong thời gian đa thức
Có kích cỡ không lớn hơn 4 lần kích cỡ một phủ đỉnh tối ưu trong thời gian đa thức
1-2-3-4-5-1
1-2-5-3-4-1
3-4-5-2-1-3
4-3-2-5-1-4
1-4-5-3-2-1
1-4-5-2-3-1
4-1-2-5-3-4
3-2-5-1-4-3
1-5-2-4-3-1
3-4-5-2-1-3
4-3-2-5-1-4
1-5-4-3-2-1
(2, 0, 2, 0)
(3, 0, 1, 0)
(4, 0, 1, 0)
(5, 0, 1, 0)
(4, 1, 1, 0)
(5, 1, 1, 0)
(6, 1, 1, 0)
(7, 1, 1, 0)
(3, 1, 0, 1)
(4, 1, 0, 1)
(5, 1, 0, 1)
(6, 1, 0, 1)
Bài toán lưu trữ tối đa số lượng chương trình (maximum program stored)Input : - n chương trình với dung lượng nhớ (độ dài) d1,d2,…, dn - Hai băng nhớ với dung lượng (độ dài) mỗi băng là L.Output: Hãy ghi các chương trình lên 2 băng nhớ với số lượng tối đa, mỗi chương trình chỉ được ghi trên một băng nhớ.Áp dụng kỹ thuật Heuristic với bộ dữ liệu: 9 chương trình với độ dài dung lượng tương ứng: 5, 3, 7, 2, 9, 4, 3, 5, 8; Hai băng nhớ với dung lượng mỗi băng là 27, kết quả nhận được là:
Băng1 = ( 2, 3, 5, 7, 9); Băng2 = (3, 4, 5, 8)
Băng1 = ( 5, 3, 7, 2, 9); Băng2 = (4, 3, 5, 8)
Băng1 = ( 2, 3, 3, 4, 5); Băng2 = (5, 7, 8, 9)
Băng1 = ( 5, 3, 7, 5, 8); Băng2 = (2, 9, 4, 3)
Bài toán lưu trữ tối đa số lượng chương trình (maximum program stored)Input : - n chương trình với dung lượng nhớ (độ dài) d1,d2,…, dn - Hai băng nhớ với dung lượng (độ dài) mỗi băng là L.Output: Hãy ghi các chương trình lên 2 băng nhớ với số lượng tối đa, mỗi chương trình chỉ được ghi trên một băng nhớ.Áp dụng kỹ thuật Heuristic với bộ dữ liệu: 9 chương trình với độ dài dung lượng tương ứng: 6, 2, 8, 6, 5, 8, 4, 2, 5; Hai băng nhớ với dung lượng mỗi băng là 25, kết quả nhận được là:
Băng1 = ( 2, 4, 5, 6); Băng2 = (2, 5, 6, 8)
Băng1 = (6, 2, 8, 6, 5); Băng2 = (8, 4, 2, 5)
Băng1 = (2, 2, 4, 5, 5); Băng2 = (6, 6, 8, 8)
Băng1 = (6, 2, 8, 2, 5); Băng2 = (6, 5, 8, 4)
Bài toán lưu trữ tối đa số lượng chương trình (maximum program stored)Input : - n chương trình với dung lượng nhớ (độ dài) d1,d2,…, dn - Hai băng nhớ với dung lượng (độ dài) mỗi băng là L.Output: Hãy ghi các chương trình lên 2 băng nhớ với số lượng tối đa, mỗi chương trình chỉ được ghi trên một băng nhớ.Áp dụng kỹ thuật Heuristic với bộ dữ liệu: 9 chương trình với độ dài dung lượng tương ứng: 7, 8, 5, 2, 7, 5, 4, 8, 3; Hai băng nhớ với dung lượng mỗi băng là 30, kết quả nhận được là:
Băng1 = (2 , 4, 5, 7, 8); Băng2 = (3, 5, 7, 8)
Băng1 = (7, 8, 5, 2, 7); Băng2 = (5, 4, 8, 3)
Băng1 = (2, 3, 4, 5, 5); Băng2 = (7, 7, 8, 8)
Băng1 = (7, 8, 5, 8, 3); Băng2 = (2, 7, 5, 4)
(2, 2, 1, 0)
(3, 1, 1, 0)
(4, 1, 1, 0)
(5, 1, 1, 0)
1-2-3-5-4-1
3-5-2-4-1-3
4-1-2-5-3-4
3-2-5-4-1-3
Bài toán lưu trữ tối đa số lượng chương trình (maximum program stored)Input : - n chương trình với dung lượng nhớ (độ dài) d1,d2,…, dn - Hai băng nhớ với dung lượng (độ dài) mỗi băng là L.Output: Hãy ghi các chương trình lên 2 băng nhớ với số lượng tối đa, mỗi chương trình chỉ được ghi trên một băng nhớ.Áp dụng kỹ thuật Heuristic với bộ dữ liệu: 9 chương trình với độ dài dung lượng tương ứng: 7, 5, 8, 3, 9, 5, 8, 6, 7; Hai băng nhớ với dung lượng mỗi băng là 33, nhận được kết quả là:
Băng1 = ( 3, 5, 7, 8, 9); Băng2 = (5, 6, 7, 8)
Băng1 = ( 7, 5, 8, 3, 9); Băng2 = (5, 8, 6, 7)
Băng1 = (3, 5, 5, 6, 7 ); Băng2 = (7, 8, 8, 9)
Băng1 = (7, 5, 8, 6, 7 ); Băng2 = (3, 9, 5, 8)
