Skip to content

Trang Học trực tuyến

  • Môn Toán

Trang Học trực tuyến

  • Home » 
  • Tin học lớp 11

Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 13: Kĩ thuật duyệt quay lui

By admin 11/10/2023 0

Giải Chuyên đề Tin học 11 Bài 13: Kĩ thuật duyệt quay lui

Khởi động trang 56 Chuyên đề Tin học 11: 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.

Chúng ta đã biết từ bài trước, thiết lập thuật toán duyệt phụ thuộc vào mô hình và cấu trúc của miền dữ liệu

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ê cung

1. Kĩ thuật duyệt quay lui

Hoạt động 1 trang 57 Chuyên đề Tin học 11: Đọ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.

Đọ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

Câu hỏi 1 trang 57 Chuyên đề Tin học 11: 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 học 11: 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 học 11: 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>

2. Mô hình tổng quát của thuật toán duyệt quay lui

Hoạt động 2 trang 57 Chuyên đề Tin học 11: 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:

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

Câu hỏi 1 trang 59 Chuyên đề Tin học 11: 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 học 11: 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.

3. Bài toán sinh xâu nhị phân

Hoạt động 3 trang 59 Chuyên đề Tin học 11: 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:

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ước 2: Gọi hàm generate_binary_sequence với độ dài của dãy nhị phân cần sinh:

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

Thu được kết quả:

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

Câu hỏi 1 trang 60 Chuyên đề Tin học 11: 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 học 11: 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

Luyện tập 1 trang 60 Chuyên đề Tin học 11: 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.

Sửa các chương trình trên bổ sung thêm chức năng

Ví dụ n= 3:

Sửa các chương trình trên bổ sung thêm chức năng

Luyện tập 2 trang 60 Chuyên đề Tin học 11: 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:

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

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

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

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

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

Vận dụng

Vận dụng 1 trang 60 Chuyên đề Tin học 11: 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:

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

Ví dụ:

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

Kết quả:

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

Vận dụng 2 trang 60 Chuyên đề Tin học 11: 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

Viết chương trình sinh xâu nhị phân thực sự có độ dài n

Xem thêm lời giải bài tập Chuyên đề học tập Tin học lớp 11 Kết nối tri thức hay, chi tiết khác:

Bài 12: Thực hành kĩ thuật duyệt cho bài toán tìm kiếm

Bài 13: Kĩ thuật duyệt quay lui

Bài 14: Thực hành kĩ thuật duyệt quay lui

Bài 15: Bài toán xếp hậu

Bài 16: Thực hành thiết kế thuật toán theo kĩ thuật quay lui

Share
facebookShare on FacebooktwitterShare on TwitteremailShare on Email
Post navigation
Previous post

Tổng hợp từ vựng Tiếng anh 11 Friends Global đầy đủ nhất

Next post

Lý thuyết Địa lí 11 Bài 20 (Kết nối tri thức 2023): Vị trí địa lí, điều kiện tự nhiên, dân cư và xã hội Liên Bang Nga

Bài liên quan:

Giải SBT Tin học 11 Kết nối tri thức | Sách bài tập Tin học 11 Kết nối tri thức (hay, chi tiết)

Giải sgk Tin học 11 (KNTT, CD) | Giải bài tập Tin học 11 (hay, chi tiết) | Giải Tin 11 (sách mới)

Giải sgk Tin học 11 Kết nối tri thức | Giải bài tập Tin học 11 KNTT (hay, ngắn gọn) | Soạn Tin 11 KNTT

Giải SGK Tin học 11 Bài 4 (Kết nối tri thức): Bên trong máy tính

Giải SGK Tin học 11 Bài 5 (Kết nối tri thức): Kết nối máy tính với các thiết bị số

Giải SGK Tin học 11 Bài 6 (Kết nối tri thức): Lưu trữ và chia sẻ tệp tin trên internet

Giải SGK Tin học 11 Bài 7 (Kết nối tri thức): Thực hành tìm kiếm thông tin trên Internet

Giải SGK Tin học 11 Bài 8 (Kết nối tri thức): Thực hành nâng cao sử dụng thư điện tử và mạng xã hội

Leave a Comment Hủy

Mục lục

  1. Giải SBT Tin học 11 Kết nối tri thức | Sách bài tập Tin học 11 Kết nối tri thức (hay, chi tiết)
  2. Giải sgk Tin học 11 (KNTT, CD) | Giải bài tập Tin học 11 (hay, chi tiết) | Giải Tin 11 (sách mới)
  3. Giải sgk Tin học 11 Kết nối tri thức | Giải bài tập Tin học 11 KNTT (hay, ngắn gọn) | Soạn Tin 11 KNTT
  4. Giải SGK Tin học 11 Bài 4 (Kết nối tri thức): Bên trong máy tính
  5. Giải SGK Tin học 11 Bài 5 (Kết nối tri thức): Kết nối máy tính với các thiết bị số
  6. Giải SGK Tin học 11 Bài 6 (Kết nối tri thức): Lưu trữ và chia sẻ tệp tin trên internet
  7. Giải SGK Tin học 11 Bài 7 (Kết nối tri thức): Thực hành tìm kiếm thông tin trên Internet
  8. Giải SGK Tin học 11 Bài 8 (Kết nối tri thức): Thực hành nâng cao sử dụng thư điện tử và mạng xã hội
  9. Giải SGK Tin học 11 Bài 9 (Kết nối tri thức): Giao tiếp an toàn trên internet
  10. Giải SGK Tin học 11 Bài 10 (Kết nối tri thức): Lưu trữ dữ liệu và khai thác thông tin phục vụ quản lí
  11. Giải SGK Tin học 11 Bài 11 (Kết nối tri thức): Cơ sở dữ liệu
  12. Giải SGK Tin học 11 Bài 12 (Kết nối tri thức): Hệ quản trị cơ sở dữ liệu và hệ cơ sở dữ liệu
  13. Giải SGK Tin học 11 Bài 13 (Kết nối tri thức): Cơ sở dữ liệu quan hệ
  14. Giải SGK Tin học 11 Bài 14 (Kết nối tri thức): SQL – Ngôn ngữ truy vấn có cấu trúc
  15. Giải SGK Tin học 11 Bài 15 (Kết nối tri thức): Bảo mật và an toàn hệ cơ sở dữ liệu
  16. Giải SGK Tin học 11 Bài 16 (Kết nối tri thức): Công việc quản trị cơ sở dữ liệu
  17. Giải SGK Tin học 11 Bài 17 (Kết nối tri thức): Dữ liệu mảng một chiều và hai chiều
  18. Giải SGK Tin học 11 Bài 18 (Kết nối tri thức): Thực hành dữ liệu mảng một chiều và hai chiều
  19. Giải SGK Tin học 11 Bài 19 (Kết nối tri thức): Bài toán tìm kiếm
  20. Giải SGK Tin học 11 Bài 20 (Kết nối tri thức): Thực hành bài toán tìm kiếm
  21. Giải SGK Tin học 11 Bài 21 (Kết nối tri thức): Các thuật toán sắp xếp đơn giản
  22. Giải SGK Tin học 11 Bài 22 (Kết nối tri thức): Thực hành bài toán sắp xếp
  23. Giải SGK Tin học 11 Bài 23 (Kết nối tri thức): Kiểm thử và đánh giá chương trình
  24. Giải SGK Tin học 11 Bài 24 (Kết nối tri thức): Đánh giá độ phức tạp thời gian thuật toán
  25. Giải SGK Tin học 11 Bài 25 (Kết nối tri thức): Thực hành xác định độ phức tạp thời gian thuật toán
  26. Giải SGK Tin học 11 Bài 26 (Kết nối tri thức): Phương pháp làm mịn dần trong thiết kế chương trình
  27. Giải SGK Tin học 11 Bài 27 (Kết nối tri thức): Thực hành thiết kế chương trình theo phương pháp làm mịn dần
  28. Giải SGK Tin học 11 Bài 28 (Kết nối tri thức): Thiết kế chương trình theo mô đun
  29. Giải SGK Tin học 11 Bài 29 (Kết nối tri thức): Thực hành thiết kế chương trình theo mô đun
  30. Giải SGK Tin học 11 Bài 30 (Kết nối tri thức): Thiết lập thư viện cho chương trình
  31. Giải SGK Tin học 11 Bài 31 (Kết nối tri thức): Thực hành thiết lập thư viện chương trình
  32. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 5: Thực hành thiết kế thuật toán theo kĩ thuật đệ quy
  33. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 4: Tháp Hà Nội
  34. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 3: Thực hành giải toán theo kĩ thuật đệ quy
  35. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 2: Thiết kế thuật toán đệ quy
  36. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 1: Đệ quy và hàm đệ quy
  37. Chuyên đề Tin học 11 Kết nối tri thức | Giải Chuyên đề học tập Tin học 11 KNTT (hay, ngắn gọn)
  38. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 10: Thực hành giải toán bằng kĩ thuật chia để trị
  39. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 9: Sắp xếp trộn
  40. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 8: Thực hành thiết thuật toán tìm kiếm theo kĩ thuật chia để trị
  41. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 7: Thiết kế thuật toán theo kĩ thuật chia để trị
  42. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 6: Ý tưởng và kĩ thuật chia để trị
  43. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 16: Thực hành thiết kế thuật toán theo kĩ thuật quay lui
  44. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 15: Bài toán xếp hậu
  45. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 14: Thực hành kĩ thuật duyệt quay lui
  46. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 12: Thực hành kĩ thuật duyệt cho bài toán tìm kiếm
  47. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 11: Bài toán tìm kiếm theo kĩ thuật duyệt
  48. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 5: Thiết kế sản phẩm trang trí hoàn chỉnh
  49. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 4: Chỉnh sửa, ghép nối, kết nối các đối tượng đồ họa
  50. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 3: Làm việc với đối tượng đường
  51. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 2: Làm việc với đối tượng hình khối
  52. Giải Chuyên đề Tin học 11 Kết nối tri thức Bài 1: Giới thiệu phần mềm vẽ trang trí

Copyright © 2025 Trang Học trực tuyến
  • Sach toan
  • Giới thiệu
  • LOP 12
  • Liên hệ
  • Sitemap
  • Chính sách
Back to Top
Menu
  • Môn Toán