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

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

36 152 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 36
Dung lượng 307,56 KB

Nội dung

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

w