Giáo án điện tử chuyên đề Khoa học máy tính 11 kết nối Bài 14: Thực hành kĩ thuật duyệt quay lui
Tải giáo án điện tử Chuyên đề học tập Tin học 11 - Khoa học máy tính (kết nối tri thức) Bài 14: Thực hành kĩ thuật duyệt quay lui. Bộ giáo án chuyên đề được thiết kế sinh động, đẹp mắt. Thao tác tải về đơn giản, dễ dàng sử dụng và chỉnh sửa. Thầy, cô kéo xuống để xem chi tiết.
Xem: => Giáo án tin học 11 theo định hướng khoa học máy tính kết nối tri thức
Click vào ảnh dưới đây để xem 1 phần giáo án rõ nét












Xem toàn bộ: Giáo án điện tử chuyên đề Tin học 11 - Khoa học máy tính Kết nối tri thức
CHÀO MỪNG CÁC EM ĐẾN VỚI
TIẾT HỌC NGÀY HÔM NAY!
KHỞI ĐỘNG
Theo em kĩ thuật duyệt quay lui thường được áp dụng cho những loại bài toán nào? Em có thể nêu ra một vài ví dụ không?
BÀI 14.
NHIỆM VỤ 1
Phân tử ADN gồm chuỗi các nucleotit thuộc bốn dạng A, T, G và X. Viết chương trình in ra tất cả các dạng mạch đơn của một đoạn phân tử ADN với chiều dài gồm n các nucleotit, trong đó n được người dùng nhập từ bàn phím. Lưu ý do sự bùng nổ của tổ hợp, chỉ nên kiểm thử chương trình với số n nhỏ hơn 10.
- Bài toán là dạng tổng quát của bài toán sinh các dãy nhị phân mà chúng ta đã biết. Điểm khác biệt là cần sinh tổ hợp của 4 phần tử "A", "T", "G", "X". Chúng ta định nghĩa dictDNA là xâu nhị phân "ATGX" lưu các kí tự từ điển DNA.
- Chúng ta sẽ thiết lập hàm sinh các dãy nucleotit này theo kĩ thuật quay lui, kết quả lưu trong dãy A. Dãy A ban đầu được khởi tạo bao gồm n kí tự rỗng. Hàm sinh dãy nucleotit là genDNASection(A,k) có tính năng sinh các phần tử tại vị trí thứ k.
PHÂN TÍCH
Chương trình 1 1 # Hàm đệ quy sinh chuỗi ADN 2 def genDNASection(A,k): 3 if k == n: 4 print(A) 5 else: 6 for i in range(4): 7 A[k] = dictDNA[i] 8 genDNASection(A,k+1) 9 # Chương trình chính 11 n = int(input(“Hãy nhập độ dài đoạn AND:”)) 12 dictDNA = “ATGX” 13 A = [‘ ‘]*n 14 genDNASection(A,0) |
- Tại dòng 13, khởi tạo mảng biểu diễn chuỗi AND gồm n kí tự rỗng, rồi gọi hàm đệ quy ở dòng 14.
- Trong hàm genDNASection, tham số k thể hiện vị trí nucleotit đã được thiết lập.
- Nếu k bằng chiều dài n thì đã hoàn thành 1 nghiệm bài toán (là chuỗi AND gồm n nucleotit) nên chương trình sẽ in ra ở dòng 4.
- Nếu k < n thì lần lượt gán phần tử thứ k cùng A với 4 loại nucleotit (ATGX) và gọi đệ quy hàm genDNASection để sinh phần tử tiếp theo.
NHIỆM VỤ 2
Một câu trong các ngôn ngữ tự nhiên được xây dựng bằng cách sắp xếp các từ vựng lại với nhau. Xét trường hợp đơn giản: cho một tập hợp từ vựng, hãy viết chương trình sinh ra các câu văn gồm tất cả các từ đó, mỗi từ chỉ xuất hiện một lần.
Chúng ta có thể giải quyết bài toán sinh ra các câu văn ở trên bằng cách bắt đầu với một câu gồm tất cả các từ đã cho trong từ điển, sau đó thực hiện duyệt quay lui để hoán vị tất cả các vị trí của các từ.
PHÂN TÍCH
1 # Định nghĩa hàm đệ quy duyệt quay lui sinh ra các câu 2 def genSentence(words, dictionary, k): 3 if k == len(dictionary, k): 4 sentence = ‘’.join(words) #Sinh câu từ danh sách từ vựng 5 print(sentence) 6 else: 7 for w in dictionary: 8 if not w in word: 9 words.append(w) 10 genSentence(words, dictionary, k + 1) 11 words.pop() Chương trình sẽ chạy như sau: 1 dictionary = [“tôi”, “quý”, “bạn”] 2 words = [] 3 genSentence(words, dictionary, 0) |
LUYỆN TẬP
Bài 1.
Sửa lại chương trình trong Nhiệm vụ 1 với yêu cầu thay đổi là cần in ra kết quả là các xâu kí tự chỉ bao gồm các kí tự “A”, “T”, “G”, “X”.
Bài 2.
Trong Nhiệm vụ 2, động tác "quay lui" nằm ở đâu? Việc hoán vị được thực hiện như thế nào?
HƯỚNG DẪN THỰC HIỆN
1
Để in ra kết quả chỉ gồm các xâu kí tự “A”, “T”, “G”, “X”, chúng ta cần sửa đoạn in kết quả tại dòng 4 của chương trình 1.
1 #Định nghĩa hàm đệ quy thêm các nucleotit vào chuỗi ADN 2 def genDNASection(A,k): 3 if k == n: 4 result = “.join(A) #Sinh kết quả từ danh sách phần tử 5 print(result) 6 else: 7 For i in range(4): 8 A[k] = dictDNA[i] 9 genDNASection(A,k+1) 10 11 #Nhập độ dài của choỗi DNA, khởi tại mảng, rồi gọi hàm genDNASection 12 n = int(input(“Hãy nhập độ dài đoạn DNA:”)) 13 dictDNA = “ATGX” 14 A = []*n
|
2
Trong Nhiệm vụ 2, động tác quay lui nằm ở dòng 11 vì dòng 11 nhằm khôi phục trạng thái danh sách các từ đã được lựa chọn (biến words) trước khi thực hiện dòng 9, sau đó thử nghiệm bằng việc thêm một từ khác chưa có trong danh sách từ đã lựa chọn.
10 11 #Nhập độ dài của chuỗi DNA, khởi tại mảng, rồi gọi hàm genDNASection 12 n = int(input(“Hãy nhập độ dài đoạn DNA:”)) 13 dictDNA = “ATGX” 14 A = []*n
|
VẬN DỤNG
--------------- Còn tiếp ---------------
Trên chỉ là 1 phần của giáo án. Giáo án khi tải về có đầy đủ nội dung của bài. Đủ nội dung của học kì I + học kì II
Hệ thống có đầy đủ các tài liệu:
- Giáo án word (350k)
- Giáo án Powerpoint (400k)
- Trắc nghiệm theo cấu trúc mới (200k)
- Đề thi cấu trúc mới: ma trận, đáp án, thang điểm..(200k)
- Phiếu trắc nghiệm câu trả lời ngắn (200k)
- Trắc nghiệm đúng sai (250k)
- Lý thuyết bài học và kiến thức trọng tâm (200k)
- File word giải bài tập sgk (150k)
- Phiếu bài tập để học sinh luyện kiến thức (200k)
Nâng cấp lên VIP đê tải tất cả ở tài liệu trên
- Phí nâng cấp VIP: 800k
=> Chỉ gửi 450k. Tải về dùng thực tế. Nếu hài lòng, 1 ngày sau mới gửi phí còn lại
Cách nâng cấp:
- Bước 1: Chuyển phí vào STK: 1214136868686 - cty Fidutech - MB(QR)
- Bước 2: Nhắn tin tới Zalo Fidutech - nhấn vào đây để thông báo và nhận tài liệu
Xem toàn bộ: Giáo án điện tử chuyên đề Tin học 11 - Khoa học máy tính Kết nối tri thức
ĐẦY ĐỦ GIÁO ÁN CÁC BỘ SÁCH KHÁC
GIÁO ÁN WORD LỚP 11 KẾT NỐI TRI THỨC
GIÁO ÁN POWERPOINT LỚP 11 KẾT NỐI TRI THỨC
GIÁO ÁN CHUYÊN ĐỀ LỚP 11 KẾT NỐI TRI THỨC
GIÁO ÁN DẠY THÊM 11 KẾT NỐI TRI THỨC
CÁCH ĐẶT MUA:
Liên hệ Zalo: Fidutech - nhấn vào đây