Giao diện mới của VnDoc Pro: Dễ sử dụng hơn - chỉ tập trung vào lớp bạn quan tâm. Vui lòng chọn lớp mà bạn quan tâm: Lưu và trải nghiệm
Đóng
Điểm danh hàng ngày
  • Hôm nay +3
  • Ngày 2 +3
  • Ngày 3 +3
  • Ngày 4 +3
  • Ngày 5 +3
  • Ngày 6 +3
  • Ngày 7 +5
Bạn đã điểm danh Hôm nay và nhận 3 điểm!
Nhắn tin Zalo VNDOC để nhận tư vấn mua gói Thành viên hoặc tải tài liệu Hotline hỗ trợ: 0936 120 169

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Lớp: Lớp 11
Môn: Tin Học
Dạng tài liệu: Chuyên đề
Bộ sách: Kết nối tri thức với cuộc sống
Loại File: PDF
Phân loại: Tài liệu Tính phí

Giải Chuyên đề Tin học 11 bài 13: Kĩ thuật duyệt quay lui được VnDoc.com sưu tầm và xin gửi tới bạn đọc cùng tham khảo. Mời các bạn cùng tham khảo thêm tại mục Tin học 11 nhé.

Khởi động trang 56 Chuyên đề Tin 11 Kết nối

Chúng ta đã biết từ bài học trước, thiết lập các thuật toán duyệt sẽ phụ thuộc hoàn toàn vào mô hình và cấu trúc của miền dữ liệu cần tìm kiếm. Từ lâu các nhà khoa học đã nhìn thấy rất nhiều bài toán khó không tìm được cách duyệt hữu hiệu, điển hình nhất là bài toán tìm đường đi trong mê cung.

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Hình 13.1. Mê cung

Trong trò chơi mê cung (xem hình) em cần tìm một đường đi xuất phát từ lối vào và ra khỏi mê cung tại lối ra. Em có đề xuất gì để giải bài toán này.

Lời giải:

Đề xuất: Xuất phát từ vị trí gốc, thuật toán sẽ gọi hàm tìm bước đi tiếp theo. Nếu thực hiện được một bước đi thì gọi lại hàm để tìm bước đi tiếp theo. Nếu không tìm thấy đường đi thì cần "quay lui" về vị trí trước đó để tìm đường đi khác. Cứ như vậy cho đến khi ra được khỏi mê cũng

Hoạt động 1 trang 57 Chuyên đề Tin 11 Kết nối

Đọc, trao đổi và thảo luận về ý tưởng thuật toán quay lui của bài toán tìm đường đi trong mê cung.

Lời giải:

Ý tưởng của thuật toán duyệt quay lui là luôn tìm cách đi tiếp theo. Xuất phát từ vị trí gốc, thuật toán sẽ gọi hàm tìm bước đi tiếp theo. Nếu thực hiện được một bước đi thì gọi lại hàm để tìm bước đi tiếp theo. Nếu không tìm thấy đường đi thì cần "quay lui" về vị trí trước đó để tìm đường đi khác. Thuật toán sẽ sử dụng kĩ thuật đệ quy khi gọi hàm cho bước đi tiếp theo.

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Câu hỏi 1 trang 57 Chuyên đề Tin 11 Kết nối

Khi đã thực hiện hết các bước lặp tại dòng 2 ở trên thì hàm có dừng không?

Lời giải:

Khi đã thực hiện hết các bước lặp tại dòng 2 ở trên thì hàm không dừng. Nếu đã đến đích thì thông báo tìm thấy thấy nghiệm tại dòng thứ 7, nếu chưa tìm thấy thì gọi đệ quy lại hàm gốc để đi tiếp tại dòng 10. Nếu không thể đi tiếp thì quay lui tại dòng 11, xóa dấu vết và quay lại vòng lặp 2.

Câu hỏi 2 trang 57 Chuyên đề Tin 11 Kết nối

Lệnh gọi hàm chính của chương trình trên là gì?

Lời giải:

Lệnh gọi hàm chính của chương trình trên là dòng số 2, lặp trên tập hợp các khả năng có thể đi tiếp

Câu hỏi 3 trang 57 Chuyên đề Tin 11 Kết nối

Nếu yêu cầu bổ sung thêm 1 lệnh “Nếu thấy <lối ra="" style="box-sizing: border-box;">thì thông báo và dừng chương trình” thì lệnh này sẽ đặt ở đâu trong chương trình trên?</lối>

Lời giải:

Lệnh “Nếu thấy <lối ra="" style="box-sizing: border-box;">thì thông báo và dừng chương trình” đặt ở trước dòng lệnh số 9.</lối>

Hoạt động 2 trang 57 Chuyên đề Tin 11 Kết nối

Quan sát, thực hiện và thảo luận các bước thiết kế mô hình tổng quát của kĩ thuật duyệt quay lui

Lời giải:

Mô hình thuật toán quay lui tổng quát quy định việc tìm trên các dãy số nguyên x1, x2,...xk sử dụng lệnh gọi đệ quy để mô tả bước đi tiếp theo với k + 1, nếu không tìm được bước đi tiếp theo thì quay lui để tìm hướng đi khác.

Mô hình tổng quát duyệt quay lui sử dụng đệ quy như sau:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Câu hỏi 1 trang 59 Chuyên đề Tin 11 Kết nối

Trạng thái "quay lui" của thuật toán trên nằm ở đâu?

Lời giải:

Trong quá trình thực hiện thuật toán, khi tìm được một giải pháp không hợp lệ hoặc không có giải pháp, chương trình sẽ quay lui ngược trở về trạng thái trước đó và tiếp tục thử các giá trị khác cho các biến trạng thái. Khi quay lui, chương trình sẽ trả lại các giá trị đã được duyệt trước đó và trở về trạng thái trước đó để thử các giá trị khác. Quá trình quay lui này sẽ tiếp tục cho đến khi tìm được giải pháp hoặc đã thử tất cả các giá trị khả dĩ cho các biến trạng thái.

Câu hỏi 2 trang 59 Chuyên đề Tin 11 Kết nối

Có cách nào đếm được tất cả các nghiệm từ thuật toán trên được không? Nếu có thì làm cách nào?

Lời giải:

Có thể đếm tất cả các nghiệm từ thuật toán duyệt quay lui dùng đệ quy bằng cách sử dụng biến đếm và tăng giá trị của biến này mỗi khi tìm được một nghiệm hợp lệ. Khi kết thúc thuật toán, giá trị của biến đếm sẽ là số lượng nghiệm tìm được.

Hoạt động 3 trang 59 Chuyên đề Tin 11 Kết nối

Cùng thực hiện, trao đổi, thảo luận thiết kế chương trình sinh tất cả các dãy nhị phân độ dài n bằng kĩ thuật quay lui.

Lời giải:

Để thiết kế chương trình sinh tất cả các dãy nhị phân độ dài n bằng kĩ thuật quay lui, ta có thể sử dụng đệ quy để thêm lần lượt các số 0 và 1 vào dãy nhị phân.

Bước 1: Viết hàm để sinh dãy nhị phân độ dài n:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Bước 2: Gọi hàm generate_binary_sequence với độ dài của dãy nhị phân cần sinh:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Thu được kết quả:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Câu hỏi 1 trang 60 Chuyên đề Tin 11 Kết nối

Trong chương trình 1, động tác “quay lui” nằm ở đâu?

Lời giải:

Trong chương trình 1, động tác “quay lui” nằm ở dòng 7: genBinary (A, k+1)

Câu hỏi 2 trang 60 Chuyên đề Tin 11 Kết nối

Giải thích ý nghĩa của lệnh A.pop() tại dòng 8 của chương trình 2. Vì sao lệnh này không có trong chương trình 1?

Lời giải:

- Lệnh A.pop() tại dòng 8 của chương trình 2 nhằm xóa phần tử đã nhập từ bước trước khi quay lui

- Vì ở chương trình 1, dãy A được thiết lập từ trước có đủ n phần tử nên tại bước này chỉ là lệnh gán giá trị và không cần dùng lệnh pop()

- Ở Chương trình 2, dãy A ban đầu là dãy rộng, do đó A được bổ sung dần. Sau khi kết thúc lệnh gọi đệ quy ở dòng 7 cần gọi lệnh pop() ở dòng 8.

Luyện tập 1 trang 60 Chuyên đề Tin 11 Kết nối

Sửa các chương trình trên bổ sung thêm chức năng: sau khi in ra tất cả các xâu nhị phân thi thông báo tổng số nghiệm

Lời giải:

Biến count được sử dụng để đếm số lượng xâu nhị phân được sinh ra, và được khởi tạo là 0. Khi một xâu nhị phân được in ra, giá trị của count sẽ được tăng lên 1. Cuối cùng, in ra giá trị của biến count để hiển thị tổng số nghiệm.

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Ví dụ n= 3:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Luyện tập 2 trang 60 Chuyên đề Tin 11 Kết nối

Viết chương trình sinh tất cả các xâu (hoặc dãy) bao gồm n kí tự dạng “R”, “G” và "B"

Lời giải:

Có thể sử dụng thuật toán quay lui như sau:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Ví dụ, nếu ta chạy đoạn code sau:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Kết quả sẽ là tất cả các xâu bao gồm 3 kí tự "R", "G" và "B":

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Vận dụng 1 trang 60 Chuyên đề Tin 11 Kết nối

Viết chương trình sinh tất cả các số hex (hệ đếm 16) có 3 chỉ số

Lời giải:

- Có thể sử dụng một hàm đệ quy, trong đó mỗi lần đệ quy, ta thêm một ký tự hex vào chuỗi kết quả và gọi đệ quy tiếp tục với số chỉ số còn lại.

Dưới đây là một ví dụ về cách thực hiện điều này bằng Python:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Ví dụ:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Kết quả:

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Vận dụng 2 trang 60 Chuyên đề Tin 11 Kết nối

Viết chương trình sinh xâu nhị phân thực sự có độ dài n, tức là kết quả in ra phải là các xâu kí tự chứ không phải là danh sách (list) như trong các chương trình trên

Lời giải:

Sử dụng phép cộng chuỗi để có kết quả là chuỗi xâu nhị phân cần tìm

Giải Chuyên đề Tin học 11 Kết nối tri thức bài 13

Chọn file muốn tải về:
Đóng Chỉ thành viên VnDoc PRO/PROPLUS tải được nội dung này!
Đóng
79.000 / tháng
Đặc quyền các gói Thành viên
PRO
Phổ biến nhất
PRO+
Tải tài liệu Cao cấp 1 Lớp
30 lượt tải tài liệu
Xem nội dung bài viết
Trải nghiệm Không quảng cáo
Làm bài trắc nghiệm không giới hạn
Mua cả năm Tiết kiệm tới 48%

Có thể bạn quan tâm

Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
Sắp xếp theo
🖼️

Tin học 11 Kết nối tri thức

Xem thêm
🖼️

Gợi ý cho bạn

Xem thêm