Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

22 4 0
Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

Đ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

Một số vấn ñề sở Tin học Buổi 3: Cấu trúc liệu thuật giải Giáo viên: Tạ Thúc Nhu Khoa CNTT trường ĐH Lạc Hồng ĐỆ QUI RECURVE Khái niệm Đệ Qui Một khái niệm X ñược ñịnh nghĩa theo kiểu ñệ qui định nghĩa X có sử dụng trực tiếp gián tiếp lại khái niệm X Ví dụ Định nghiã giai thừa số tự nhiên N, ký hiệu N! a) N! = N = b) N! = N*(N-1)! N > Định nghiã UCLN số M N, ký hiệu: UCLN(M, N) a) UCLN(M, N) = M N = b) UCLN(M, N) = UCLN(M, phần dư M/N) N0 Dãy số Fibonacci ñược ñịnh nghĩa sau: a) F(0) = F(1)= b) F(n) =F(n - 2) + F(n - 1) với n>=2 Một định nghiã đệ qui phải có thành phần: • Thành phần dừng: Khơng chứa khái niệm ñang ñịnh nghiã Ví dụ: N! = N = • Thành phần đệ qui: có chứa khái niệm định nghiã Chương trình đệ qui • Một chương trình đệ qui chương trình có lời gọi thực lại Ví dụ: Định nghĩa hàm tính N! theo đệ qui int Fac(int N) { if (N == 0) return 1; return N * Fac(N - 1); } Ví dụ: Tính UCLN(M, N) theo thuật tốn Euclide • (a)UCLN(M, N) = M N = • (b)UCLN(M, N) = UCLN(N, M mod N) N>0 int UCLN(int M, int N) { if (N == 0) return M; return UCLN(N, M % N); } Một số dạng ñệ qui thường gặp 1- Đệ qui tuyến tính Hàm F { Nếu (thỏa điều kiện dừng) Ngược lại } Với S thao tác khơng đệ qui 2- Đệ qui nhị phân Hàm F { Nếu (thỏa ñiều kiện dừng) Ngược lại { gọi hàm F ; gọi hàm F } } • Với S thao tác khơng đệ qui Ví dụ: Hàm tìm giá trị phần tử F(n) dãy Fibonacci int Fibo(int n) { if ( n < ) return ; return Fibo(n -1) + Fibo(n -2) ; } 3- Đệ qui phi tuyến: Lời gọi ñệ qui ñược thực bên vòng lặp Hàm F() { for (giá tri ñầu tới giá trị cuối) { Nếu (thỏa ñiều kiện dừng) Ngược lại < gọi ñệ qui F > } } 10 THUẬT GIẢI QUAY LUI BACK TRACKING 11 Cơng dụng: • Giải toán liệt kê tất lời giải thỏa yêu cầu tốn Ví dụ: Liệt kê dãy nhị phân có độ dài N Liệt kê tập k phần tử tập S={1, 2, , n} Liệt kê chỉnh hợp không lặp chập k tập S={1, 2, , n} 12 Tổng quan thuật giải Quay lui (BackTracking) • Cấu trúc lời giải tập hợp có N phần tử kiểu • Xác định giá trị phần tử, dựa tập giá trị đề cử • Để tìm lời giải khác, ta quay lui chọn giá trị khác cho phần tử Cấu hình lời giải Tập giá trị ñề cử X1 v1 X2 X3 v2 … … Xn … vm 13 Thuật giải 1: Xác ñịnh giá trị phần tử i lời giải void Try( int i ) { for ( v thuộc tập giá trị ñề cử cho Xi ) { Xi = v ; if ( Xi phần tử cuối cùng) < Thơng báo lời giải tìm được>; else Try( i+1); //G i ñ qui ñ xác ñ nh ph n t X[ i+1 ] } } 14 Bài toán: Liệt kê dãy nhị phân có độ dài n Phân tích: • Cấu trúc lời giải dãy có n phần tử: X[1] X[n] • Mỗi phần tử X[ i ] nhận giá trị tập {0, 1} Cấu trúc lời giải 0 … 15 Xác ñịnh giá trị phần tử X[i] dãy nhị phân void Try(int i) { for (int v =0; v

Ngày đăng: 31/03/2022, 23:36

Hình ảnh liên quan

Cấu hình một lời giải - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

u.

hình một lời giải Xem tại trang 7 của tài liệu.
Thuật giải 1: Xác ñịnh giá trị phần tử i của lời giải - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

hu.

ật giải 1: Xác ñịnh giá trị phần tử i của lời giải Xem tại trang 7 của tài liệu.
Công dụngCông dụng - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

ng.

dụngCông dụng Xem tại trang 18 của tài liệu.
Mô hình ñánh giá nhánh cận - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

h.

ình ñánh giá nhánh cận Xem tại trang 18 của tài liệu.
12. Cho một bản gA có M hàng ,N cột (3 ≤ M, N≤ 50), Mỗi phần tử của bảng là - Một số vấn đề sở Tin học Buổi 3: Cấu trúc liệu thuật giải

12..

Cho một bản gA có M hàng ,N cột (3 ≤ M, N≤ 50), Mỗi phần tử của bảng là Xem tại trang 22 của tài liệu.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan