Giáo án ppt chuyên đề KHMT 11 kết nối: Bài 14 Thực hành kĩ thuật duyệt quay lui
Giáo án ppt chuyên đề Tin học khoa học máy tính 11 kết nối tri thức: Bài 14 Thực hành kĩ thuật duyệt quay lui. Bài giảng thiết kế hiện đại, sáng tạo giúp tiết học thêm phần thú vị, giúp giáo viên tiết kiệm thời gian nhưng vẫn có thể ứng dụng công nghệ vào công tác giảng dạy.
Nội dung chi tiết











... Còn nữa ...
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 ---------------
Tài liệu cùng môn học
- Trắc nghiệm khoa học máy tính 11 kết nối tri thức
- Giáo án word tin học khoa học máy tính 11 kết nối tri thức
- Giáo án ppt tin học khoa học máy tính 11 kết nối tri thức
- Giáo án chuyên đề tin học khoa học máy tính 11 kết nối tri thức
- Giáo án ppt chuyên đề tin học khoa học máy tính 11 kết nối tri thức
- Giải tin học khoa học máy tính 11 kết nối tri thức
- Phiếu bài tập tin học khoa học máy tính 11 kết nối tri thức
- Lý thuyết khoa học máy tính 11 kết nối tri thức
- Bài tập củng cố Khoa học máy tính 11 kết nối tri thức
- Trắc nghiệm trả lời ngắn khoa học máy tính 11 kết nối tri thức
- Trắc nghiệm đúng sai khoa học máy tính 11 kết nối tri thức
- Đề thi tin học khoa học máy tính 11 kết nối tri thức
- Giải chuyên đề khoa học máy tính 11 kết nối tri thức
- Ppt trò chơi AI Tin học KHMT 11 Kết nối tri thức
- Ppt trò chơi AI Tin học 11 Khoa học máy tính Kết nối tri thức
- Video AI mở đầu Tin học 11 Khoa học máy tính Kết nối tri thức
Tài liệu khác
- Trắc nghiệm văn 11 kết nối tri thức
- Trắc nghiệm địa lí 11 kết nối tri thức
- Trắc nghiệm hóa học 11 kết nối tri thức
- Trắc nghiệm KTPL 11 kết nối tri thức
- Trắc nghiệm lịch sử 11 kết nối tri thức
- Trắc nghiệm sinh học 11 kết nối tri thức
- Trắc nghiệm toán 11 kết nối tri thức
- Trắc nghiệm quốc phòng 11 kết nối tri thức
- => Xem nhiều môn hơn