1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Trần Đăng Hưng

25 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 1,02 MB

Nội dung

Nội dung chương 2 của Bài giảng Cấu trúc dữ liệu và giải thuật cung cấp cho sinh viên các kiến thức về đệ quy và giải thuật đệ quy. Tham khảo nội dung bài giảng để nắm bắt nội dung chi tiết.

BÀI GIẢNG CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Trần Đăng Hưng Khoa CNTT - ĐHSPHN Nội dung  Chương 1: Giới thiệu  Chương 2: Đệ quy Giải thuật đệ quy  Chương 3: Quy hoạch động  Chương 4: Danh sách móc nối  Chương 5: Stack Queue  Chương 6: Cây Ứng dụng  Chương 7: Đồ thị Ứng dụng  Chương 8: Các thuật toán xếp  Chương 9: Các thuật tốn tìm kiếm CTDL> - Trần Đăng Hưng September 2015 Nội dung  Chương 1: Giới thiệu  Chương 2: Đệ quy Giải thuật đệ quy  Chương 3: Quy hoạch động  Chương 4: Danh sách móc nối  Chương 5: Stack Queue  Chương 6: Cây Ứng dụng  Chương 7: Đồ thị Ứng dụng  Chương 8: Các thuật toán xếp  Chương 9: Các thuật tốn tìm kiếm CTDL> - Trần Đăng Hưng September 2015 Đệ quy  Mơt đối tượng đệ quy định nghĩa qua đối tượng khác dạng với  Ví dụ: Hình ảnh phát viên ngồi hình, …  Trong tốn học gặp nhiều cơng thức dạng đệ quy  Ví dụ: Tính N!, Tìm USCLN,… CTDL> - Trần Đăng Hưng September 2015 Giải thuật đệ quy  Lời giải toán P gọi đệ quy thực thơng qua lời giải tốn P’ dạng với  P’ thường nhỏ P việc giải P’ không cần dùng đến P  Hàm đệ quy gồm hai phần:  Phần neo: Được thực lời giải đơn giản, tìm mà khơng cần đến toán  Phần đệ quy: Khi tốn chưa giải phần neo, xác định toán gọi đệ quy giải tốn này, có lời giải tốn phối hợp lại để lời giải  Phần đệ quy thể tính quy nạp, phần neo thể hữu hạn giải thuật Sau số lần gọi đệ quy tiến đến phần neo CTDL> - Trần Đăng Hưng September 2015 Ví dụ giải thuật đệ quy (1/2)  Tìm ước số chung lớn số nguyên dương  Tính giai thừa: CTDL> - Trần Đăng Hưng September 2015 Ví dụ giải thuật đệ quy (2/2)  Dãy số fibonaxi (bài toán sinh sản Thỏ) CTDL> - Trần Đăng Hưng September 2015 Trò chơi Tháp Hà Nội (1/2)  Có n đĩa, cọc, ban đầu tất đĩa xếp cọc, cần di chuyển số đĩa sang cọc khác theo nguyên tắc: CTDL> - Trần Đăng Hưng September 2015 Trò chơi Tháp Hà Nội (2/2) CTDL> - Trần Đăng Hưng September 2015 Đệ quy hỗ tương  Việc gọi hàm không tự gọi mà cịn có gọi đến hàm khác, hàm có khả gọi lại hàm ban đầu  Cứ tạo vòng lặp xen kẽ nhau, tất nhiên dù lặp dạng cần có điểm dừng  Ví dụ: 10 CTDL> - Trần Đăng Hưng September 2015 Nhận xét  Đệ quy công cụ mạnh để giải toán  Thiết kế giải thuật đệ quy thường đơn giản, dễ viết  Tuy nhiên, nhược điểm tốn nhớ phải gọi đệ quy nhiều lần, thường không làm việc với liệu lớn  Một số thuật tốn khử đệ quy cách sử dụng vòng lặp  Đệ quy quy nạp toán học quan hệ chặt chẽ, nên tốn có tính chất quy nạp giải đệ quy  Thường dùng đệ quy khơng cịn phương án khác 11 CTDL> - Trần Đăng Hưng September 2015 ĐỆ QUY QUAY LUI (Backtracking) 12 CTDL> - Trần Đăng Hưng September 2015 Giới thiệu  Thực tế có nhiều tốn cần trả lời câu hỏi dạng  Có khả năng…?  Có tồn hay khơng khả năng…?  …  Kỹ thuật quay lui kỹ thuật sử dụng để tìm nghiệm tốn có khơng gian nghiệm lớn cách thử-sai loại bỏ khả  Thông thường, ứng viên nghiệm tốn có dạng x = (x1, x2, x3,…, xn); xi thành phần thứ i  Ý tưởng thuật toán quay lui: sinh tất khả có nghiệm kiểm tra khả xem có thoả mãn điều kiện tốn khơng 13 CTDL> - Trần Đăng Hưng September 2015 Thuật toán quay lui  G/s nghiệm tốn có dạng véc-tơ: x = (x1, x2,…,xn)  Ý tưởng xây dựng nghiệm: véc-tơ nghiệm xây dựng cách xây dựng phần tử, phần tử chọn cách thử khả phần tử  Cụ thể, bước thực hiện:  Xét tất giá trị x1 nhận, thử cho x1 nhận giá trị đó, với giá trị thử gán cho x1 thì:  Xét tất giá trị x2 nhận, thử cho x2 nhận giá trị đó, với giá trị thử gán cho x2 thì:  …… o Xét tất giá trị xn nhận, thử cho xn nhận giá trị đó, kiểm tra xem nghiệm (x1, x2,…, xn) thời có thỏa mãn ràng buộc khơng Nếu có thơng báo nghiệm 14 CTDL> - Trần Đăng Hưng September 2015 Mơ hình thuật tốn quay lui 15 CTDL> - Trần Đăng Hưng September 2015 MỘT SỐ VÍ DỤ KINH ĐIỂN 16 CTDL> - Trần Đăng Hưng September 2015 Bài toán liệt kê dãy nhị phân  Hãy liệt kê tất dãy nhị phân có độ dài n  Ví dụ: n = 000 001 010 011 100 101 110 111 17 CTDL> - Trần Đăng Hưng x[i] nhận giá trị 0, đưa dãy x hình September 2015 Bài tốn liệt kê hốn vị  Liệt kê tất hoán vị độ dài n  Ví dụ: n = 123 132 213 231 312 321 Lưu ý: mảng x để lưu cấu hình tại, cần thêm mảng C để đánh dấu số chọn Vì mảng để số từ 0, nên lời gọi thủ tục Try(0) 18 CTDL> - Trần Đăng Hưng September 2015 Bài toán liệt kê tổ hợp  Liệt kê tổ hợp chập k n phần tử  Ví dụ: n = 5, k = 123 124 125 234 235 245 345 19 CTDL> - Trần Đăng Hưng Nhận xét: x[1] < x[2] < x[3]

Ngày đăng: 09/05/2021, 18:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN