Cấu trúc dữ liệu - Phần 5 pps

36 152 0
Cấu trúc dữ liệu - Phần 5 pps

Đ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

GVGD: Trng Phc Hi Gii thut quay lui (back tracking) 2 Ni dung 1. K thut quay lui 3. Bài toán 8 hu 4. Bài toán mã đi tun 2. Bài toán lit kê 3 K thut quay lui  K thut quay lui là quá trình ln ngc tr li con đng đã qua đ th tìm mt li gii khác cho bài toán start end 4 K thut quay lui  c đim  K thut quay lui thng đc dùng đ gii các bài toán lit kê cu hình có dng là tp các thành phn (X 0 , X 1 , …, X N-1 )  T tng  Xây dng dn cu hình bng cách th tt c kh nng (giá tr) cho mi phn t ca cu hình  Khi đn phn t cui cùng ca cu hình thì ta tìm đc 1 nghim ca bài toán 5 K thut quay lui  Ý tng thc hin  Thành phn X[i] có tp các kh nng {1, 2, …, N i }. Th ln lt tng kh nng cho X[i] (X[i] = j, vi j  {1, 2, …, N i })  Trng hp chn đc kh nng j cho X[i]  Nu X[i] là phn t cui thì tìm đc mt cu hình  Ngc li xét đn thành phn tip theo X[i+1]  Trng hp không tìm đc kh nng nào cho X[i]: quay li bc trc đ th kh nng khác cho X[i-1] 6 K thut quay lui  Mô hình tng quát ca gii thut quay lui Try(i) For (j  {1, 2, …, n j }) Th chn kh nng j cho X[i] If (X[i]  cui cùng cu hình) then <thông báo cu hình tìm đc> Else Try(i + 1) <b chn j đ th kh nng khác> Cui If Cui for Cui Try 7 Ni dung 1. K thut quay lui 3. Bài toán 8 hu 4. Bài toán mã đi tun 2. Bài toán lit kê 8 Bài toán lit kê  Bài toán 1  Lit kê tt c dãy nh phân có đ dài N bit  Ví d  Các dãy nh phân có đ dài 3 bit: 000, 001, 010, 011, 100, 101, 110, 111 9 Bài toán lit kê  T chc d liu  Biu din dãy nh phân N bit di dng mng mt chiu X[0], X[1], …, X[N-1]  Phn t ca mng X[i] có tp giá tr {0, 1} 10 Bài toán lit kê  Ý tng  Th gán cho X[i] ln lt mang các giá tr {0, 1}  Vi mi giá tr chn đc cho X[i], th các giá tr có th có cho X[i + 1]  Tip tc thc hin cho đn phn t cui cùng X[N – 1], khi đó ta tìm đc mt dãy nh phân cho bài toán [...]... {1, 2, , N} cách k N Ví Cho 5 {1, 2, 3, 4, 5} , các cách ra 3 này là: {123, 124, 1 25, 134, 1 35, 1 45, 234, 2 35, 2 45, 3 45} 14 Phân tích bài toán cách là x 1 < x2 < xk dãy các có (x1x2 < xk N xk-1 xk 1 N => xi N k+i => x1 N 1 k+1 => xi-1 + 1 xi N k+i 15 1 i k (x0 = 0) xk) Dùng k + 1 (X[0], X[1], , X[k]) cách Ý Ban X[0] = 0 X[i] (i {1, , k}), gán giá X[i] Khi cách giá X[i]: X[i-1] + 1 16 giá trong k thì... For (j = Xi-1 + 1; j X[i] = j If (i = k) then X là Else Try(i + 1) If for Try 17 N k + i) cách tìm Cài ngôn void Try(int X[], int N, int k, int i) { for (int j = X[i-1]+1; j Cài ngôn void Try(int X[], int N, int i) { for (int j = 0; j . …, N}  Ví d  Cho tp gm 5 phn t {1, 2, 3, 4, 5} , các cách chn ra 3 phn t t tp này là: {123, 124, 1 25, 134, 1 35, 1 45, 234, 2 35, 2 45, 3 45} 15 Bài toán lit kê  Phân tích. < x 2 < … < x k  x k ≤ N  x k-1 ≤ x k – 1 ≤ N – 1  => x i ≤ N – k + i  => x 1 ≤ N – k + 1  => x i-1 + 1 ≤ x i ≤ N – k + i vi 1 ≤ i ≤ k (x 0 =. cách chn  Min giá tr ca X[i]: X[i-1] + 1 ≤ X[i] ≤ N – k + i 17 Bài toán lit kê  Gii thut th tc Try ca bài toán Try(i) For (j = X i-1 + 1; j ≤ N – k + i) X[i] = j If

Ngày đăng: 08/08/2014, 04:21

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

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

Tài liệu liên quan