Phân tích thiết kế thuật toán

67 207 0
Phân tích thiết kế thuật toán

Đ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

Chương Thiết kế thuật toán Kỹ thuật đệ quy Kỹ thuật chia để trị Kỹ thuật tham ăn Kỹ thuật quy hoạch động Kỹ thuật đệ quy • • • Đại cương Phương pháp thiết kế thuật toán đệ quy Xây dựng số thuật toán đệ quy danh sách liên kết đơn Đại cương • • Chương trình đệ quy chương trình gọi đến Một chương trình đệ quy khơng thể gọi đến mãi mà phải có điểm dừng (trường hợp suy biến) Phương pháp để thiết kế thuật toán đệ quy • • Tham số hố tốn Phân tích trường hợp chung (biểu diễn toán dạng tốn loại khác phạm vi giải quyết) • Xác định trường hợp suy biến Ví dụ: Sắp xếp mảng a gồm n phần tử • Tham số hố tốn: procedure Sort(dau, cuoi: word); • Phân tích trường hợp chung: Thủ tục Sort(dau, cuoi) có biểu diễn lệnh: Sort(dau+1, cuoi); if a[dau]>a[dau+1] then begin swap(a[dau],a[dau+1]); Sort(dau+1, cuoi); end; • Xác định trường hợp suy biến: dau = cuoi (khơng làm gì) procedure Sort(dau, cuoi: word); Begin If daucuoi then begin Sort(dau+1, cuoi); if a[dau]>a[dau+1] then begin swap(a[dau],a[dau+1]); Sort(dau+1, cuoi); end; end; End; • • Lời gọi từ chương trình chính: Sort(1,n); Độ phức tạp tính tốn: O(n ) Ví dụ: Tính a • n Tham số hố tốn: Function Power(a: real; n: byte):real; • Phân tích trường hợp chung: n n-1 a = a.a hay Power(a,n) = a* Power(a,n-1) • • Tr.hợp suy biến: n = ( Power(a,1) = a ) Độ phức tạp tính tốn: O(n) n Ví dụ: Tính a (một cách tính khác) • Phân tích trường hợp chung: Nếu n chẵn: Power(a,n) = sqr(Power(a,n div 2)) Nếu n lẻ: Power(a,n) = a*sqr(Power(a,n-1 div 2)) • • Trường hợp suy biến: n = (Power(a,1) = a) Độ phức tạp tính tốn: O(log2n) Xây dựng thuật tốn đệ quy danh sách liên kết đơn • Xét khai báo cho trước sau: Type TroNut = ^Nut; Nut = Record Info: Integer; Next: TroNut; End; Var F: TroNut; {danh sách F} Viết chương trình (hàm/thủ tục) • • Xem thử biểu diễn: CTC(F, ) CTC(F^.next, ) Ví dụ: Liệt giá trị trường Info nút thuộc danh sách F Procedure List(F: TroNut); Begin If Fnil then begin writeln(F^.Info); List(F^.Next); end; End; Tổng hợp • Để tìm xâu kết S – Đi ngược từ ô l[m,n] hướng l[0,0] – Nếu = bj đặt bj vào bên trái dãy S (ở đầu xâu), lùi L[i - 1, j-1] – Nếu bj • • lùi L[i - 1, j] trường hợp L[i - 1, j] > L[i, j – 1] ngược lại, lùi L[i, j – 1] trường hợp L[i - 1, j] ≤ L[i, j – 1] • Ví dụ : A=’XYACADK’và B=’ABCDAE’ J (A) (B) (C) (D) (A) (E) 0 0 0 0 (X) 0 0 0 (Y) 0 0 0 (A) 1 1 1 (C) 1 2 2 (A) 1 2 3 (D) 1 3 (K) 1 3 i Bài tập Bài toán du lịch: Một người từ thành phố đến thành phố n qua n-1 thành phố khác 1, 2, , n1, theo lộ trình: → i1 → i2 … → ik → n, đó: < i1 < i2 < …< ik < n,Giá vé xe từ thành phố i đến thành phố j c[i,j] Tìm lộ trình từ thành phố đến thành phố n cho tổng chi phí giá vé đạt cực tiểu Bài tốn sinh viên ơn thi: Một sinh viên m ngày để ơn thi n mơn Theo kinh nghiệm anh ta, ôn môn j i ngày điểm a[i,j] Giả sử cho biết a[i,j] (với a[i,j]0 – l[0] = – u[0] = -1 ( khơng có đỉnh kế cuối) – l[s] = (l[k] + c[k,s]) (0 – l[r,1] = a[r,1] – u[r,1] = r – l[r,s] = max (a[k,s] + l[r-k, s-1]) (0 ≤ k ≤ r) = a[k’,s] + l[r-k’, s-1] u[r,s] = k’ Procedure Lapbang; Begin for s:= to n for r:= to m if (s = 1) then Tính l[r,1] u[r,1] else Tính l[r,s] u[r,s] End; Tính l[r,s] u[r,s] Kmax:=0; Lmax:=0; for k:=0 to r begin tam:= a[k,s]+l[r-k,s-1]; if tam>Lmax then begin Lmax:=tam; Kmax:=k; end; end; l[r,s]:=Lmax; u[r,s]:=Kmax; procedure tonghop; begin r:=m; for s:=n downto begin x[s]:=u[r,s]; r:=r-x[s]; end; end; ... A[l] Else Begin MinMax(A, l , (l+r) div 2, GTMin1, GTMax1) MinMax(A, (l+r) div 2+ 1, r, GTMin2, GTMax2) GTMin:=min(GTMin1, GTMin2); GTMax:=max(GTMax1, GTMax2); End; Xếp lịch thi đấu thể thao: xét... chẵn: Power(a,n) = sqr(Power(a,n div 2) ) Nếu n lẻ: Power(a,n) = a*sqr(Power(a,n-1 div 2) ) • • Trường hợp suy biến: n = (Power(a,1) = a) Độ phức tạp tính tốn: O(log2n) Xây dựng thuật tốn đệ quy danh... •• • • Tổng số trận đấu toàn giải là:   Nếu n số chẵn (n=2k) n /2 cặp thi đấu ngày cần n-1 ngày Ngược lại n số lẻ n-1 số chẵn nên ta (n-1) /2 cặp thi đấu ngày ta cần n ngày • • Lịch thi đấu bảng

Ngày đăng: 12/05/2018, 09:25

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Đại cương

  • Phương pháp để thiết kế một thuật toán đệ quy

  • Ví dụ: Sắp xếp mảng a gồm n phần tử

  • procedure Sort(dau, cuoi: word);

  • Ví dụ: Tính an

  • Ví dụ: Tính an (một cách tính khác)

  • Xây dựng một thuật toán đệ quy trên một danh sách liên kết đơn

  • Viết chương trình con (hàm/thủ tục)

  • Bài tập

  • Sắp xếp một danh sách F

  • Slide 13

  • Slide 14

  • Phương pháp

  • Mô hình

  • Một số bài toán

  • Slide 18

  • Slide 19

  • Slide 20

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

Tài liệu liên quan