GIÁO TRÌNH LẬP TRÌNH - CHƯƠNG 3 - PHÂN RÃ BÀI TOÁN - TÌM KIẾM LỜI GIẢI TRÊN ĐỒ THỊ VÀ/ HOẶC pdf

17 521 1
GIÁO TRÌNH LẬP TRÌNH - CHƯƠNG 3 - PHÂN RÃ BÀI TOÁN - TÌM KIẾM LỜI GIẢI TRÊN ĐỒ THỊ VÀ/ HOẶC pdf

Đ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 3 PHÂN RÃ BÀI TOÁN - TÌM KIẾM LỜI GIẢI TRÊN ĐỒ THỊ VÀ/ HOẶC 1. Đặt vấn đề. Trong chương 2, chúng ta đã nghiên cứu việc biểu diễn bài toán thông qua các trạng thái và các toán tử. Khi đó việc tìm lời giải của bài toán được quy về việc tìm đường đi trong không gian trạng thái. Trong chương này chúng ta sẽ nghiên cứu một phương pháp luận khác để giải quyết vấn đề, dựa trên việc quy vấn đề về các vấn đề con. Ý tưởng chủ yếu là xuất phát từ bài toán ban đầu, tách ra các bài toán con, quá trình này tiếp tục đối với các bài toán con cho đến khi gặp các bài toán sơ cấp (bài toán có lời giải ngay). Ví dụ 1. Xét bài toán tính tích phân dxxxx )(ln 2 ∫ + . Thông thường để tính tích phân bất định, chúng ta thường sử dụng các quy tắc tính tích phân: tích phân của tổng, quy tắc tích phân từng phần hay các phép biến đổi v.v… để đưa tích phân cần tính về tích phân của các hàm số sơ cấp mà chúng ta đã biết cách tính. Đối với tích phân trên, áp dụng quy tắc tích phân của tổng ta đưa về hai tích phân ∫xlnxdx và tích phân ∫x 3 dx. Áp dụng quy tắc tích phân từng phần ta đưa tích phân ∫xlnx về tích phân ∫xdx. Quá trình trên có thể biểu diễn bởi đồ thị trong Hình 1. Hình 1. 90 ∫x(lnx+x 2 )dx ∫xlnxdx ∫x 3 dx ∫xdx Trong bài toán tích phân, các tích phân cơ bản là các trạng thái kết thúc. Ví dụ 2. Bài toán tìm đường đi trên bản đồ giao thông. Bài toán này đã được phát biểu như bài toán tìm đương đi trong không gian trạng thái, trong đó mỗi trạng thái ứng với một thành phố, mỗi toán tử ứng với một con đường, nối thành phố này với thành phố khác. Bây giờ ta đưa ra một cách bểu diễn khác dựa trên việc quy vấn đề về các vấn đề con Xét bản đồ giao thông giữa các thành phố trong Hình 2. A C D H F E G I B K Hình 2. Giả sử ta cần tìm đường đi từ thành phố A đến thành phố B. Có một con sông chảy qua hai thành phố E và G và có cầu qua sông ở mỗi thành phố đó. Như vậy mọi đường đi từ A đến B đều phải đi qua E hoặc G. Khi đó bài toán tìm đường đi từ A đến B được quy về một trong hai bài toán: 1) Bài toán tìm đường đi từ A đến B qua E 2) Bài toán tìm đường đi từ A đến B qua G Mỗi một bài toán trên lại có thể phân nhỏ như sau: 1) Bài toán tìm đường đi từ A đến B qua E được quy về: 1.1. Tìm đường đi từ A đến E và 1.2. Tìm đường đi từ E đến B 91 2) Bài toán tòm đường đi từ A đến B qua G được quy về: 2.1. Tìm đường đi từ A đến G và 2.2. Tìm đường đi từ G đến B Tổng quát, từ bài toán P ta đưa về một trong các trường hợp: - Đưa P về các bài toán tương đương: P1, P2, , Pk - Đưa P về các bài toán con: P1, P2, , Pk Phương pháp phân chia bài toán ban đầu như trên đã gặp trong lập trình truyền thống với cách gọi “chia để trị” , “Modul hoá”. 2. Đồ thị VÀ/HOẶC: Không gian trạng thái mô tả việc quy vấn đề về các vấn đề con có thể biểu diễn dưới dạng đồ thị định hướng đặc biệt gọi là đồ thị và/hoặc. Đồ thị này được xây dựng như sau: Mỗi bài toán ứng với một đỉnh của đồ thị. Nếu có một toán tử quy bài toán về các bài toán tương đương thì sẽ có các cung đi từ bài toán xuất phát đến các bài toán tương đương đó. Nếu một toán tử quy bài toán về các bài toán con thì cũng có các cung nối từ bài toán xuất phát đến các bài toán con, ngoài ra giữa các cung này cũng có đường nới với nhau Chẳng hạn, giả sử bài toán A được đưa về hai bài táon tương đương A1 và A2. Bài toán A1 lại được quy về hai bài toán con B1 và B2, ta có biểu diễn như hình 3. A A1 A2 B1 B2 Hình 3 92 Một cách hình thức ta có thể định nghĩa đồ thị và/hoặc như sau: Đồ thị G = (V, E) được gọi là đồ thị VÀ/HOẶC nếu Vn ∈∀ , T(n) hoặc các bài toán con của n (n gọi là các đỉnh VÀ) hoặc là tập các bài toán tương đương với n (n gọi là đỉnh HOẶC). Cách biểu diễn như sau: n n 1 n 2 n k n được gọi là đỉnh HOẶC (n⇔ n 1 ⇔ ⇔ n k ) n n 1 n 2 n k n được gọi là đỉnh VÀ (n⇔ n 1 ∩ ∩ n k ) Khi đó để giải bài toán n ta phải tìm đồ thị con của G là một cây có gốc là đỉnh xuất phát n sao cho mọi đỉnh trên đồ thị con này đưa về được các bài toán sơ cấp (đỉnh kết thúc). Nhận xét: Gọi VA: tập các đỉnh VÀ VO: tập các đỉnh HOẶC • Nếu VA= ∅ ⇒ tìm lời giải trên đồ thị biểu diễn bằng không gian trạng thái Khi đó: - Bài toán n được gọi là giải được nếu: + hoặc n là đỉnh kết thúc + hoặc T(n)={n 1 , n 2 , , n k } và nếu n là đỉnh HOẶC ) 1( ki ∈∃⇒ sao cho n i giải được, ngược lại n i giải được ki 1 =∀ . - Bài toán n được gọi là không giải được nếu: 93 + hoặc n là đỉnh lá và n không phải là đỉnh kết thúc. + hoặc T(n)={n 1 , n 2 , , n k }và nếu n là đỉnh HOẶC ) 1( ki ∈∃⇒ sao cho n j không giải được, ngược lại n i không giải được ki 1=∀ . • Để tìm lời giải của bài toán khi được phân rã về đồ thị VÀ/HOẶC không phải tìm đường đi mà phải đi tìm đồ thị con gọi là đồ thị con lời giải (hay cây lời giải) Cây lời giải là đồ thị con G’ của G thoả: - Đỉnh gốc (xuất phát) ' 0 Vn ∈ - 'Vn ∈∀ , n giải được. • Ta có sự tương quan: Phân rã bài toán Đồ thị VÀ/HOẶC Bài toán Đỉnh Chuyển bài toán thành các bài toán con Cung Bài toán sơ cấp Đỉnh cuối Các bài toán con phụ Đỉnh VÀ Các bài toán con độc lập Đỉnh HOẶC Giải bài toán Tìm đồ thị con lời giải bài toán 3. Các phương pháp tìm kiếm lời giải trên đồ thị và/hoặc. Sau khi lựa chọn mô tả bài toán và các toán tử quy bài toán về bài toán con, ta có thể xây dựng đồ thị Và/hoặc để giải quyết bài toán ban đầu hoặc chứng tỏ tính không giải được của nó. Cũng như đồ thị trong không gian trạng thái, đồ thị và/hoặc có thể cho dưới dạng tường minh hoặc không tường minh trên cơ sở toán tử xây dựng. Các phương pháp tìm kiếm trên đồ thị và/hoặc khác nhau chủ yếu ở phương pháp lựa chọn và sắp xếp đỉnh trước khi tháo chúng. Tương tự như trong không gian trạng thái, ta cung có các phương pháp sau: - Tìm kiếm theo chiều rộng. 94 - Tìm kiếm theo chiều sâu. - Tìm kiếm cây lời giải có giá nhỏ nhất. Các quá trình này khác hẳn với các quá trình lựa chọn trong không gian trạng thái. Sự khác biệt chủ yếu là do việc kiểm tra tính kết thúc của quá trình tìm kiếm và các phương pháp sắp xếp và lựa chọn đỉnh để xét phức tạp hơn nhiều Thay cho việc tìm kiếm đỉnh thoả mãn điều kện đích, chúng ta phải tiến hành tìm kiếm đồ thị lời giải. Do đó, ở những thời điểm nhất định, ta phải kiểm tra xem đỉnh đầu có giải được hay không, nếu đỉnh đầu giải được thì kết thúc công việc, trong trường hợp ngược lại thì tiếp tục xét các nút. Nếu đỉnh đang xét không phải là đỉnh kết thúc và nó là đỉnh lá, tức là đỉnh không giải được. Lúc này phải kiểm tra đỉnh đàu có phải không giải được hay không, nếu đúng thì dừng, ngược lại, tiếp tục tìm kiếm. Trước khi tìm kiếm lời giải trong đồ thị VÀ/HOẶC, chúng ta xây dựng các hàm kiểm tra một đỉnh n nào đó tại thời điểm đang xét có giải được hay không giải được không? Function giaiduoc(n):boolean; Begin If <n so cap> then giaiduoc:=true else if T(n)<>null then if T(n)⊂V A then )( ))(( nTm mgiaiduocandgiaiduoc ∈ = else )( ))(( nTm mgiaiduocorgiaiduoc ∈ = else giaiduoc:=false; 95 End; Function khonggd(n):boolean; Begin If T(n)<>null then if T(n)⊂V A then )( ))(( nTm mkhonggdorkhonggd ∈ = else )( ))(( nTm mkhonggdandkhonggd ∈ = else if <T(n) khong so cap> then khonggd:=true else khonggd:=false; End; 3.1. Phương pháp tìm kiếm chiều rộng: Procedure TKR; Begin Push(n 0 , MO); While MO<>null do begin n:=pop(MO); push(DONG, n); if T(n)<>null then for )(nTm ∈ do begin push(m, MO); 96 if T(m)=null then if giaiduoc(m) then if giaiduoc(n 0 ) then exit else for k∈MO do if giaiduoc(k) then MO:=MO-[k] Else If khonggd(m) then If khonggd(n 0 ) then Exit Else For k∈MO do if khonggd(k) then MO:=MO-[k] end; end; write(‘Khong ket luan’); End; • Nhận xét: Nếu tồn tại cây lời giải thì thủ tục tìm kiếm rộng sẽ dừng và cho kết quả là cây lời giải có độ cao nhỏ nhất. Ví dụ. Xét đồ thị Hình 3. A B C D E * F G H * I 97 J K L * M * N O * Hình 3 Các đỉnh kết thúc là các đỉnh đánh dấu *. Quá trình tìm kiếm lời giải của đò thị trên bằng phương pháp tìm kiếm rộng có thể trình bày ở bảng sau n T(n) MO DONG A A B, C, D B C D A B E * , F C D F A B C G D F G A B C D H * , I F G I A B C D F J G I J A B C D F G K 0 I J A B C D F G I L * Dừng Cây lời giải ở Hình 4. A D H * I L * Hình 4 3.2. Tìm kiếm theo chiều sâu: Hoàn toàn tương tự tìm kiếm theo chiều rộng, chỉ khác thứ tự lấy các đỉnh trong danh sách MO ra xét. Ở đây MO được truy xuất theo nguyên tắc LIFO. Ví dụ. Xét đồ thị ở Hình 5. 98 A B C D E F * G H * I * J * K * L * M * Hình 5. Quá trình tìm theo chiều sâu tiến hành như sau: n T(n) MO DONG A A B, C B C C F * , G BG G L*, M* : giải được ⇒ A giải được Cây lời giải ở Hình 6. A C F * G L * M * Hình 6. 99 [...]... trong giải thuật tìm kiếm trên đồ thị biểu diễn bài toán trong không gian trạng thái ) Ta gọi các cây này là cây lời giải tiềm tàng gốc n 0 Như vậy bài toán tìm kiếm cây lời giải cực tiểu có thể đưa về hai bài toán con: Bài toán 1 Xác định ước lượng h0(n) 1) n là đỉnh lá - Nếu n là đỉnh kết túc thì h0(n) = 0 - Nếu n không phải là đỉnh kết thúc thì h0(n) không xác đinh (có thể gán giá trị ∞ ) - Nếu.. .3. 3 Tìm kiếm cây lời giải cực tiểu: Cây G=(V, E) biểu diễn sự phân rã của bài toán gốc n0 Ứng với mỗi phép chuyển bài toán n sang bài toán v tốn chi phí c(u,v) R+ c: E (u,v) c(u,v) Vấn đề đặt ra tìm cây lời giải có tổng chi phí bé nhất Đối với không gian trạng thái, ta đã sử dụng hàm đánh giá để sắp thứ... dựa trên thông tin về bài toán (thưòng tham khảo ý kiến chuyên gia) 2) n không phải là đỉnh lá, T(n) = {n1,…,nk} - Nếu n là đỉnh Hoặc thì h0(n) = min(c(n,ni)+h(ni)) - Nếu n là đỉnh Và thì k - Đối với giá tổng cộng h 0 (n) = ∑ (c (n, ni ) + h 0 (n i )) i =1 101 - Đối với giá cực đại h0(n) = Max(c(n,ni)+h0(ni)) Bài toán 2 Xây dựng cây lời giải tiềm tàng G’ mô tả quá trình chuyển bài toán n0 về bài toán. .. n→DICH Trong cây VÀ/HOẶC đó chính là khái niệm giá tối ưu của cây lời giải với gốc là đỉnh n đã cho Đối với đỉnh n∈V, giá của n được tính phụ thuộc vào quy ước chọn giá chung của đồ thị Có 2 loại giá: giá cực đại (max) và giá tổng cộng (∑) Định nghĩa giá tối ưu của cây lời giải có gốc n như sau: - Nếu n là đỉnh kết thúc thì h(n) = 0 - Nếu n không phải là đỉnh kết thúc và n là đỉnh hoặc có tập T(n)... đỉnh không giải được Cây lời giải được xây dựng dần dần trong quá trình mở rộng cây lựa chọn, tại mỗi thời điểm các nút lá của nó thuộc một trong ba dạng sau: - Các đỉnh kết thúc - Các đỉnh lá không phải là đỉnh kết thúc - Các đỉnh chưa được xử lý Trong cây tìm kiếm, ở mỗi bước có thể chứa một tập các cây con có gốc n 0 sao cho chúng có thể trở thành phần trên của cây lời giải đầy đủ (cũng giống như... với các đỉnh Và, Hoặc được gọi là các α-giá trị và β-giá trị tương ứng Thủ tục alpha-beta bắt đầu từ nút gốc với giá trị alpha là - và beta là +∞ Thủ tục alpha-beta gọi đệ quy với dãy số giữa alpha và beta Để thực hiện tìm kiếm minimax bằng thủ tục alpha – beta, có các bước sau: 1) Nếu mức của cây là gốc, lấy giá trị alpha là - và gia trị beta là +∞ 2) Nếu đã đến bước kết thúc tìm kiếm, tính giá trị... do if khonggd(k) then MO:= MO - {k}; 1 03 for m ∈ DONG do Tính lại h0(m) end; writeln(‘khong co loi giai’); end; 4 Cây tìm kiếm và các đấu thủ Trong nhiều trò chơi trên máy tính có thể sinh ra các cây ứng với các nước đi của đấu thủ Đặc thù của loại trò chơi này là chúng thể hiện sụ luân phiên giữa hai đấu thủ Việc chọn các nước đi cho mỗi đấu thủ tương ứng với việc tìm kiếm cây Để quyết định một trong... toán n0 về bài toán n Gọi G’ = (V’, E’) là đồ thị con của G với tập đỉnh V” xác định như sau: - n0 ∈ V’ - Với mỗi n ∈ V’ có các đỉnh con n1,…, nk Nếu n là đỉnh hoặc thì chọn đỉnh con ni vào V’ sao cho c(n,ni) + h0(ni) nhỏ nhất và khonggd(ni) = false Nếu n là đỉnh và thì chọn tất cả các đỉnh n i vào V’ nếu khonggd(ni) = false với mọi i Thuật toán Input: Cây và hoặc G = (V,E) với gốc n0 Giá trị ước lương... những lựa chọn có thể được, người ta phải nhớ nhiều tình huống của bài toán Tuy nhiên không thể lưu trữ quá nhiều thông tin và cũng không xử lý tất cả trạng thái của bài toán được Do vậy người ta có thể dùng một chiến thuật phù hợp, chỉ quyết định trên tập tình huống hạn chế 4.1 Thủ tục minimax Xét trò chơi với hai đấu thủ Max và Min, Max tìm cách làm cực đại giá trị hàm ước lượng thông qua việc xác định... nước đi có thể và chọn nước đi tương ứng với giá trị lớn nhất, tiếp theo đó đối thủ Min tìm cách làm cực tiểu giá trị ước lượng này Diễn đạt theo ngôn ngữ đồ thị Và /Hoặc, Mỗi đỉnh tương ứng với nước đi của Max, giá trị của đỉnh này sẽ lấy giá trị cực đại của các giá trị của các đỉnh con và đỉnh này quy ước gọi là đỉnh Hoặc Một đỉnh tương ứng với nước đi của Min sẽ lấy giá trị cực tiểu trong số các giá . các bài toán con Cung Bài toán sơ cấp Đỉnh cuối Các bài toán con phụ Đỉnh VÀ Các bài toán con độc lập Đỉnh HOẶC Giải bài toán Tìm đồ thị con lời giải bài toán 3. Các phương pháp tìm kiếm lời giải. không giải được ki 1=∀ . • Để tìm lời giải của bài toán khi được phân rã về đồ thị VÀ/HOẶC không phải tìm đường đi mà phải đi tìm đồ thị con gọi là đồ thị con lời giải (hay cây lời giải) Cây lời. trên đồ thị và /hoặc. Sau khi lựa chọn mô tả bài toán và các toán tử quy bài toán về bài toán con, ta có thể xây dựng đồ thị Và /hoặc để giải quyết bài toán ban đầu hoặc chứng tỏ tính không giải

Ngày đăng: 01/08/2014, 23:20

Từ khóa liên quan

Mục lục

  • Đồ thị VÀ/HOẶC

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

Tài liệu liên quan