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

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

67 207 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

Cấu trú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

  • Slide 21

  • Slide 23

  • Slide 24

  • Slide 25

  • Slide 26

  • Slide 27

  • Slide 28

  • 3. Phương pháp tham lam

  • Slide 30

  • Slide 31

  • Slide 32

  • Slide 33

  • Slide 34

  • Slide 35

  • Phương pháp

  • 4. Quy hoạch động

  • Slide 38

  • Slide 39

  • Slide 40

  • Phương pháp thực hiện

  • Ví dụ tính dãy số Fibonaci

  • Ví dụ tính C(k,n)

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

  • Bài toán chiếc túi xách

  • Slide 46

  • Lập bảng

  • Tính u[r, s] và l[r, s] khi s>1

  • Tổng hợp kết quả

  • Slide 50

  • Slide 51

  • Slide 52

  • Slide 53

  • Slide 54

  • Slide 55

  • Bài tập

  • Bài toán: người du lịch

  • Slide 58

  • Slide 59

  • Slide 60

  • Slide 61

  • Slide 62

  • Bài toán sinh viên ôn thi

  • Slide 64

  • Slide 65

  • Slide 66

  • Slide 67

  • Slide 68

Nội dung

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

w