1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Lập trình ràng buộc

56 17 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 56
Dung lượng 1,02 MB

Nội dung

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN - - LÊ THANH DUNG LẬP TRÌNH RÀNG BUỘC KHĨA LUẬN TỐT NGHIỆP MỤC LỤC LỜI CẢM ƠN LỜI NÓI ĐẦU PHẦN I GIỚI THIỆU VỀ LẬP TRÌNH RÀNG BUỘC PHẦN II NHỮNG CƠ SỞ VỀ BÀI TOÁN THỎA MÃN RÀNG BUỘC 12 CHƯƠNG GIỚI THIỆU NHỮNG KHÁI NIỆM CƠ BẢN 12 1.1 Những định nghĩa quan trọng CSP 12 1.1.1 Định nghĩa miền nhãn 12 1.1.2 Định nghĩa ràng buộc 13 1.1.3 Định nghĩa thỏa mãn 14 1.1.4 Định nghĩa toán thỏa mãn ràng buộc (CSP) 14 1.2 CSP cho ràng buộc nhị phân 15 1.3 Ví dụ: Bài tốn N-qn hậu 15 CHƯƠNG GIẢI BÀI TOÁN THỎA MÃN RÀNG BUỘC 17 2.1 2.2 2.3 Rút gọn toán (Problem redution) 17 2.1.1 Các định nghĩa 17 2.1.2 Việc rút gọn toán 18 2.1.3 Bài toán tối thiểu 18 Tìm kiếm nghiệm 18 2.2.1 Thuật toán quay lui đơn giản (Simple Backtracking) 19 2.2.2 Đặc tính tổng qt khơng gian tìm kiếm CSPs 19 2.2.3 Kết hợp tìm kiếm rút gọn toán 20 2.2.4 Những điểm chọn tìm kiếm 21 Tổng hợp nghiệm 21 CHƯƠNG THUẬT TỐN NHẰM RÚT GỌN VÀ TÌM KIẾM LỜI GIẢI CHO BÀI TOÁN 23 3.1 Một số thuật toán nhằm rút gọn toán 23 3.2 Một số thuật tốn nhằm tìm kiếm lời giải cho tốn 24 PHẦN III BÀI TOÁN N-QUÂN HẬU 26 CHƯƠNG GIỚI THIỆU BÀI TOÁN 27 1.1 Giới thiệu toán 27 1.2 Lịch sử toán 29 1.3 Những vấn đề cần giải toán 30 CHƯƠNG SỰ ĐỐI XỨNG TRONG BÀI TOÁN N-QUÂN HẬU 31 2.1 2.2 Sự đối xứng toán lập trình ràng buộc 31 2.1.1 Định nghĩa đối xứng CSPs 31 2.1.2 Các phương pháp loại bỏ đối xứng 32 Sự đối xứng toán N-quân hậu 33 CHƯƠNG LOẠI BỎ ĐỐI XỨNG CHO BÀI TOÁN N-QUÂN HẬU 38 3.1 Loại bỏ đối xứng trước tìm kiếm nghiệm 38 3.1.1 Giới thiệu hình vng Latin trực giao 38 3.1.2 Liên hệ tốn N-qn hậu với hình vng Latin trực giao 41 3.1.3 Loại bỏ đối xứng phương pháp thêm ràng buộc trước tìm kiếm nghiệm 41 3.2 Loại bỏ đối xứng tìm kiếm nghiệm (Symmetry Breaking During Seach_SBDS) 42 3.3 3.2.1 Giới thiệu phương pháp SBDS 42 3.2.2 Phương pháp SBDS cho toán N-quân hậu 43 Loại bỏ đối xứng nhờ việc nhận ưu (Symmetry Breaking by Dominance Detection_SBDD) 47 3.3.1 Giới thiệu phương pháp SBDD 47 3.3.2 Phương pháp SBDD với DFS 50 3.3.3 Phương pháp SBDD cho toán N-quân hậu 51 PHẦN IV KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 55 Lời Cảm Ơn Em xin trân trọng cảm ơn quý Thầy cô khoa Tin trường Đại học Sư Phạm Đà Nẵng tận tình giảng dạy, truyền đạt kiến thức quý báu tạo điều kiện cho em thực Luận văn Em xin chân thành cảm ơn thầy Nguyễn Thanh Tuấn, người nhiệt tình hướng dẫn, bảo trực tiếp cho Em suốt trình làm Luận văn Xin chân thành cảm ơn giúp đỡ, động viên bảo anh chị trước tất bạn bè, người ln có mặt giúp đỡ thời điểm khó khăn nhất, tiếp thêm ý chí, động lực cho tơi hồn thành tốt luận văn Con xin gởi tất lòng biết ơn, kính trọng đến ơng bà, ba mẹ tồn thể gia đình, người sinh thành, dưỡng dục, thương yêu chúng con, cho niềm tin nghị lực để vượt qua khó khăn Vì kiến thức cịn hạn chế thời gian có hạn, cố gắng nỗ lực mình, song chắn luận văn hồn thành khơng tránh khỏi thiếu sót Tơi mong nhận thơng cảm bảo tận tình q Thầy bạn Đà Nẵng, ngày 02 tháng 02 năm 2012 Sinh viên thực Lê Thanh Dũng Lời Nói Đầu Ngày với phát triển không ngừng khoa học kỹ thuật giới phát triển vượt bậc ngành cơng nghệ thơng tin nói chung ngành Tin học nói riêng Ở nước ta nhằm góp phần vào cơng Cơng nghiệp hóa-hiện đại hóa đất nước, vấn đề tin học hóa triển khai.Việc ứng dụng tin học vào thực tế nhu cầu cần thiết Nhận thức điều nên ghế nhà trường, chúng tơi tìm hiểu qua số ứng dụng Tin học, cụ thể việc ứng dụng tin học vào giải số toán ứng dụng Để xây dựng ứng dụng tin học vào giải toán cụ thể, điều cần nắm vấn đề đặt toán Sau ta liên hệ với thực tế xem xét, đưa cách thức giải tốn tức tìm giải thuật tương ứng với vấn đề u cầu tốn Vì để đạt hiệu cao cần tìm cách thức, giải thuật chiều sâu rộng mang tính ưu việt Bài toán N-quân hậu bàn cờ toán ứng dụng tin học mà xung quanh nhiều thuật tốn để giải như: thuật toán quay lui, nhánh cận,… Được trí khoa Tin dẫn thầy Nguyễn Thanh Tuấn, Chúng nhận đề tài: “Lập trình ràng buộc với tốn N-qn hậu” Đề tài hoàn thành từ hiểu biết tích góp qua sách vở, từ kinh nghiệm học hỏi anh chị trước tài liệu trích dẫn rõ ràng Đề tài gồm nội dung sau: Phần I: Giới thiệu lập trình ràng buộc Phần II: Những sở toán thỏa mãn ràng buộc Chương 1: Giới thiệu khái niệm Chương 2: Giải toán thỏa mãn ràng buộc Chương 3: Thuật toán nhằm rút gọn tìm kiếm lời giải cho tốn Phần III: Bài toán N- quân hậu bàn cờ Chương 1: Giới thiệu toán Chương 2: Sự đối xứng toán N-quân hậu Chương 3: Loại bỏ đối xứng toán N-quân hậu Phần IV: Kết luận Song với lượng kiến thức có hạn, thời gian cịn hạn chế nên luận văn hồn thành khơng thể tránh khỏi sai sót khiếm khuyết Vì tơi mong bảo, truyền đạt quý thầy bạn nhằm tạo điều kiện giúp đỡ cho tơi hồn thành tốt luận văn Đà nẵng, ngày 02 tháng năm 2012 Sinh viên thực Lê Thanh Dũng PHẦN I GIỚI THIỆU VỀ LẬP TRÌNH RÀNG BUỘC Lập trình ràng buộc (Constraint Programming - CP) phát triển thú vị mạnh mẽ ngơn ngữ lập trình thập kỷ gần Được xây dựng sở lý thuyết tốn học vững chắc, phát triển đặc biệt thu hút quan tâm mạnh mẽ việc áp dụng vào lĩnh vực thương mại, trở thành phương pháp mơ hình hóa cho nhiều loại tốn tối ưu, cụ thể ràng buộc có hỗn tạp tốn tìm kiếm có tính tổ hợp Lý giải cho quan tâm CP thật đơn giản Ngơn ngữ lập trình đời với xu hướng mang lại tự cho người lập trình việc định nghĩa đối tượng thủ tục tương ứng với thực thể thao tác miền ứng dụng Ngơn ngữ lập trình hướng đối tượng (Object Oriented Programming Language) cung cấp kỹ thuật tốt cho việc khai báo thành phần để kiểm soát hành vi thực thể miền tốn cụ thể Tuy nhiên, ngơn ngữ lập trình truyền thống, bao gồm ngơn ngữ lập trình hướng đối tượng, cung cấp hỗ trợ với thực thể mà người lập trình muốn diễn tả ràng buộc quan hệ Người lập trình mong muốn vai trị ngơn ngữ để trì quan hệ tìm đối tượng thỏa mãn Ví dụ, xét định luật Ôm sau: U=I x R (1) (1) công thức mô tả mối quan hệ hiệu điện thế, cường độ dòng điện điện trở Trong ngơn ngữ lập trình truyền thống, người lập trình dùng quan hệ cách trực tiếp, thay vào phải mã hóa thành câu lệnh mà từ việc tính tốn giá trị thành phần dựa yếu tố lại Vì vậy, I suy từ U R công thức sau: I : U R Nhưng giá trị R tính từ hai thành phần cịn lại, cơng thức khác lại phát sinh: R : U I Việc đòi hỏi người lập trình mơ tả trì quan hệ đối tượng lập trình hợp lý cho ứng dụng có sử dụng Tuy nhiên nhiều ứng dụng, vấn đề quan trọng mơ hình quan hệ tìm đối tượng thỏa mãn Vì lý mà từ cuối năm 60, có nhiều chuyên gia quan tâm đến ngơn ngữ lập trình cho phép người lập trình đơn giản hóa quan hệ trạng thái đối tượng Nó vai trị thực thi nhằm đảm bảo quan hệ hay ràng buộc trì Những ngơn ngữ coi ngôn ngữ CP (Constraint programming) Ban đầu ngôn ngữ CP thành công với số phần Chúng bổ trợ cho ngôn ngữ truyền thống với việc giải ràng buộc kỹ thuật không định trước đơn giản Những ngôn ngữ phần lớn phụ thuộc vào phương pháp lan truyền cục (local propagation) Phương pháp “lan truyền cục bộ” dùng ràng buộc để gán giá trị vào biến chưa biết từ giá trị biết cho biến khác ràng buộc Ví dụ, định luật Ơm tính tốn giá trị R, I U từ hai giá trị biết Bài toán với lan truyền cục phương pháp giải ràng buộc quan hệ yếu.Ví dụ, khơng thể dùng để giải phương trình xảy đồng thời X= Y-Z X= 2Y+Z Như việc dựa lan truyền cục ngôn ngữ thời kỳ đầu có hai điểm yếu: Những thuận lợi giải ràng buộc không đủ mạnh ngơn ngữ khơng đủ mạnh để diễn tả ràng buộc Trong thập kỷ gần ngơn ngữ lập trình ràng buộc quan tâm mạnh mẽ Hơn nữa, ngôn ngữ khắc phục khó khăn ngơn ngữ trước Chúng hỗ trợ ràng buộc tích hợp triệt để vào ngơn ngữ lập trình, cho phép người lập trình làm việc với toán mức độ cao hơn, kỹ thuật thực thi mức sử dụng kỹ thuật thích hợp cho ràng buộc Việc đời ngơn ngữ lập trình ràng buộc hệ đáp ứng yêu cầu cho lượng lớn ứng dụng Một ví dụ đơn giản cho ứng dụng dùng ngôn ngữ lập trình ràng buộc, tưởng tượng bạn mua nhà muốn kiểm tra lựa chọn khác việc trả lãi Với khoảng trả lãi, tổng tiền lãi dồn lại PxI, P tổng số tiền vay I tỷ lệ lãi suất Lãi suất dồn lại cộng thêm với tiền vay để đạt số tiền vay NP Nếu bạn đem trả R số tiền bị trừ Như ta có phương trình ràng buộc: NP= P+P×I –R Sự cầm cố khoảng thời gian T mơ tả việc lặp lại việc tính tốn này, thời điểm, hết thời gian Tổng cuối gọi B cân Bài toán tóm gọn chương trình sau: mortgage(P, T, I, R, B) T=0, B=P mortgage(P, T, I, R, B) T>=1, NT= T-1, NP= P + P*I –R, mortgage(NP, NT, I, R, B) Ở đây, ràng buộc mortgage quan hệ tiền vốn ban đầu P, thời gian vay T, tỷ lệ lãi suất I, tổng số phải R điểm cân B Luật (3 dòng đầu) xử lý trường hợp kết thúc thời gian Trong trường hợp điểm cân số tiền vốn Luật thứ hai (5 dòng tiếp theo) xử lý trường hợp số khoảng thời gian lớn Trong trường hợp thời điểm (NT) trừ Khi việc thay đổi vốn tính lại Phần lại việc cho vay xác định lượng vay tổng vốn mà thời gian giảm Chương trình dường dễ viết ngơn ngữ lập trình truyền thống, ví dụ Pascal hay C Thuận lợi chương trình tất câu lệnh xem xét góc độ ràng buộc, diễn tả toán linh hoạt Thực thi chương trình khởi tạo cách đưa đích Ví dụ, việc mượn $1000 10 năm với lãi suất 10% với việc phải trả $150 năm Chúng ta viết sau: mortgage(1000, 10, 10/100, 150, B) Khi ta đưa đích trên, câu trả lời B=203.129, thời điểm cân $203.129 Một chương trình tương tự dùng nhiều cách khác Ví dụ việc mượn $150 đến hết hạn việc trả lãi thời điểm cân 0, đặt câu hỏi “Cần phải vay vòng 10 năm với lãi suất 10% với việc trả $150 năm” Câu hỏi viết: mortgage(P, 10, 10/100, 150, 0) Câu trả lời P= 921.685 Một câu hỏi phức tạp quan hệ vốn vây ban đầu, số tiền phải trả hàng năm 10 năm với lãi suất 10% Chúng ta đưa ra: mortgage(P, 10, 10/100, R, B) Câu trả lời ràng buộc P= 0.3855*B +6.1446*R, quan hệ biến P, B, R.Trong tất trường hợp chương trình giải Điều tương phản với lập trình truyền thống mà chương trình khác yêu cầu trả lời câu hỏi Thực vậy, việc viết chương trình trả lời câu hỏi cuối thực khó Lập trình ràng buộc cho phép toán cách tự nhiên, mức cao với việc dùng ràng buộc số học Nó cơng việc ngôn ngữ thực thi mức để giải ràng buộc công việc người lập trình Ví dụ đơn giản minh họa lập trình ràng buộc giải nhiều ứng dụng, toán đời sống thực với mơ hình phức tạp cách tự nhiên hiệu Người ta cho rằng, hầu hết ứng dụng quan trọng ngôn ngữ CP áp dụng cho tốn mang tính tổ hợp khó, mơ hình đầy sức mạnh cho việc giải tốn tối ưu tổ hợp Ví dụ việc phải giải liên quan đến lập bảng thời gian (timetabling), lập lịch (scheduling), định 10  N(n) ≤ N(m×n), cho m≤ n  N(m×n) ≤ n-1, cho 1< m ≤ n 3.1.2 Liên hệ tốn N-qn hậu với hình vng Latin trực giao Trong khái niệm, định lý tính chất nêu cách khái quát hình vng Latin Để liên hệ vào tốn n-qn hậu cách cụ thể dùng ký hiệu quân hậu đứng ô nằm hàng thứ i lời giải Qi Các số dòng cột đánh từ xuống dưới, trái sang phải theo cách đánh số ma trận Trong ma trận vng ta có:  Các phần tử nằm hàng có số hàng nhau;  Các phần tử nằm cột có số cột nhau;  Các phần tử nằm đường chéo song song với đường chéo có hiệu số hàng với số cột nhau; Các phần tử nằm đường chéo song song với đường  chéo phụ có tổng số hàng với số cột nhau; Vì ta gọi đường chéo song song với đường chéo đường chéo trừ (hay hiệu), đường chéo song song với đường chéo phụ đường chéo cộng (hay tổng) Như ta khẳng định tốn n-qn hậu hình vơng Latin trực giao với kích thước tùy thuộc vào giá trị n 3.1.3 Loại bỏ đối xứng phương pháp thêm ràng buộc trước tìm kiếm nghiệm Nắm yêu cầu tính chất tốn, với cách ký hiệu phân tích ta nhận thấy lời giải biểu diễn phải thỏa mãn điều kiện: - Các số cột quân hậu đơi khác nhau, hay chúng lập thành hốn vị số 1, 2, …, n - Tổng số dịng cột qn hậu đơi khác nhau; 42 - Hiệu số dòng cột quân hậu đôi khác Tuy nhiên đưa cách ràng buộc hàng, cột đường chéo Nhưng toán tìm đối xứng : phản xạ qua hàng ngang, cột, hai đường chéo, quay 900, 1800 2700 Để đáp ứng yêu cầu tốn đầy đủ chúng tơi đưa ràng buộc sau: 3.2 - x(Q[i] = j); Q[n-i+1] ≠ j // ràng buộc hàng - y(Q[i] = j); Q[i] ≠ n-j+1 // ràng buộc cột - d1(Q[i] = j); Q[j] ≠ i // ràng buộc hai đường chéo - d2(Q[i] = j); Q[n-j+1] ≠ n-i+1 - r90(Q[i] = j); Q[j] ≠ n-i+1 - r180(Q[i] = j); Q[n-i+1] ≠ n-j+1 - r270(Q[i] = j); Q[n-j+1] ≠ i // quay 900, 1800, 2700 Loại bỏ đối xứng thời gian tìm kiếm (Symmetry Breaking During Search - SBDS) 3.2.1 Giới thiệu phương pháp SBDS Trước tiên, tìm hiểu sơ qua phương pháp Chúng ta nhận thấy tính chất vơ quan trọng đối xứng bảo tồn nghiệm, có nghĩa là: với phép gán đầy đủ cho A đối xứng g nào, g(A) nghiệm A nghiệm Thông thường ta mở rộng cho phép gán thành phần từ A tới A+(var=val), đó: g(A+(var=val)) = g(A)+g(var=val) Nếu cố gắng mở rộng cho từ A tới A+(var=val) phép gán thành phần lỗi, việc tìm kiếm phải chuyển sang nhánh khác, nơi mà var ≠ val Chúng ta thêm vào nhánh ràng buộc g(A)→g(var ≠ val) cho đối xứng g Điều phát biểu lại sau: đối xứng tương đương phép gán A đúng, g(var ≠ val) tất nhánh Nếu ý việc mở rộng từ A tới A  A  vars i  j , g  A   g  A  g (vars i  j) Chúng ta xây dựng biến boolean cho 43 đối xứng g xem g(A) có thỏa mãn hay khơng Giá trị cho g(A+) kết hợp g(A) g(vars[i] = j ) Vì tính g(A) bước A phép gán thành phần var  val var= val +g(var  val) g(A) Hình 3.7: Phương pháp SBDS tìm kiếm nghiệm 3.2.2 Phương pháp SBDS cho toán N-quân hậu Chúng ta xem hoạt động phương pháp thông qua toán 8-quân hậu Giả sử phép gán Q1=2, có nghĩa quân hậu hàng cột số Trong tốn 8-qn hậu có đối xứng: quay 900 , 1800 , 2700, phản xạ theo chiều ngang, chiều dọc qua hai đường chéo Ví dụ Q1 =2, ta có nghiệm đối xứng tương ứng với đối xứng cách tương ứng Q2 =8, Q8=7, Q7=1, Q 8=2, Q1 =7, Q2=1 Q 7=8 Trong giá trị cuối tương thích với Q1 =2, nên chúng không xét nhánh (cắt nhánh dư thừa) Như biết đối xứng phép quay không bị loại bỏ phép gán Hình 3.8 sau minh họa nghiệm đối xứng toán 8-quân hậu, với phép gán ban đầu Q1= phép lấy đối xứng từ nghiệm ban đầu ta có: 44 Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Quay 90 Quay 1800 Quay 2700 Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Đối xứng cột Đối xứng đường chéo 45 Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Đối xứng hàng Đối xứng đường chéo Hình 3.8: Ứng với nghiệm tốn 8-qn hậu có nghiệm đối xứng với phép gán ban đầu Q1 =1 Xét phép gán ban đầu Q1=2 sau phép gán giả sử có phép gán thứ hai Q2 = nhánh (nhánh trái) lỗi, ràng buộc Q2 ≠ tạo Chúng ta thêm ràng buộc g(A)→g(var ≠ val) cho đối xứng cịn lại Ví dụ, cho đối xứng quay 90 , có g(Q1 = 2)→g(Q2 ≠ 4) điều tương đương với Q2 = 8→ Q4 ≠ 46 Q1= Q1 ≠2 • (Q1≠ 2) r90 ≡ Q2 ≠ Q2 = • (Q1≠ 2) r180 ≡ Q8 ≠7 Q2 ≠4 • Q1≠ 2) r270 ≡ Q7 ≠ • Q1= 2→ (Q2 ≠ 4) r90 ≡ Q4 ≠ • Q1≠ 2) x ≡ Q1 ≠ • Q1= 2→ (Q2 ≠ 4) r180 ≡ Q7 ≠ • Q1≠ 2) y ≡ Q8 ≠ • Q1= 2→ (Q2 ≠ 4) r270 ≡ Q5 ≠ • Q1≠ 2) d1 ≡ Q2 ≠ • Q1≠ 2) d2 ≡ Q7 ≠ Hình 3.9: SBDS cho toán 8-quân hậu Trong toán n-quân hậu, loại bỏ đối xứng thách thức, bàn cờ vua ta xét đối xứng Để loại bỏ nghiệm đối xứng, cần xem xét đối xứng trả lại nghiệm đại diện nhất, tương đương với đối xứng var[i] = j Hai số thể hình 3.9, var[i] = j tương ứng với Qi = j, n quân hậu biến toàn cục, cần khai báo chức đối xứng kết thể cụ thể đoạn code bảng Khi thực nó, số quay lui giảm đáng kể, thời gian tìm kiếm giảm đến 75% nghiệm tìm thấy tất nghiệm đối xứng riêng biệt Tuy nhiên, thực tế số đối xứng tồn sau thực nhiều phép gán, cịn vấn đề khơng thể giải Hãy xem xét phép quay 180 giả sử biến xếp theo 47 thứ tự: Q1, Q2, Q3 , …Chúng ta thêm ràng buộc Q1  n+1-Qn để ngăn chặn nhiều trường hợp tìm kiếm nghiệm tương đương Nhưng điều xảy Q = Qn = n-1 Để loại bỏ điều này, có thêm ràng buộc với điệu kiện: if Q1  n 1 Qn then Q2  n 1 Qn1 Chúng ta cần thêm ràng buộc: if Q1  n 1 Qn and Q2  n 1 Qn1 then Q3  n 1 Qn2 , … Để chắn loại bỏ hoàn toàn đối xứng này, xây dựng thêm n/2 ràng buộc với nhiều điều kiện trước Có hai thuận lợi việc dùng SBDS so với việc thêm ràng buộc vào mơ hình:  Nó có tính tồn diện: thêm hàm mô tả đối xứng, loại bỏ đối xứng đó, khó đạt hiệu tương tự nhờ việc thêm ràng buộc vào mơ hình  SBDS không tranh chấp, mâu thuẫn với chiến lược tìm kiếm (trật tự biến giá trị gán), làm nhiệm vụ ngăn giá trị đối xứng gán tiến hành quay lui Ngược lại, việc thêm ràng buộc vào mơ hình gây mâu thuẫn với chiến lược tìm kiếm 3.3 Loại bỏ đối xứng nhờ việc nhận ưu (Symmetry Breaking by Dominance Detection – SBDD) 3.3.1 Giới thiệu phương pháp SBDD SBDD phương pháp nhận đối xứng trình tìm kiếm Tại thời điểm thuật tốn tìm kiếm tạo nút mới, kiểm tra xem nút có phải đối xứng với nút xét hay khơng Nếu đúng, nhánh bị cắt Nếu khơng q trình tìm kiếm diễn bình thường Mục đích loại bỏ đối xứng tránh khám phá phần khơng gian Δ mà ánh xạ từ phần xét hàm đối xứng Bởi khơng chứa 48 nghiệm nào, Δ khơng chứa nghiệm Ngược lại, tất nghiệm Δ suy từ phần xét Trước hết, cần nêu số định nghĩa  Định nghĩa 3.8 Gọi X = {x1,…, xn} tập biến mơ hình, D(x) miền biến x  X Bộ P c = (Dc(x1), …, Dc(xn)) trạng thái chọn điểm c  Định nghĩa 3.9 Gọi P c = (Dc(x1),…, Dc(xn)), P c’= (Dc’(x1),…, Dc’(xn)) hai trạng thái xét o Nếu P c’bao gồm P c ta ký hiệu P c  P c’ nếu:  x  X: Dc  Dc’ o Chúng ta đặt MDc = Dc(x1) ×…×Dc(xn) o Một ánh xạ đối xứng φ: MDc →MDc, nói P c’ “Lấn át” (dominate) P c (với ánh xạ đối xứng φ) φ(P c ) P c’ Khi ký hiệu P c∠P c’  Hệ 3.10 Cho hai điểm chọn c c’, c’ hệ sau c tìm kiếm Khi có: P c’  Pc Giải pháp mà SBDD dùng để cắt bớt phần đối xứng khơng gian tìm kiếm dựa tích hợp sau: o Một sở liệu T dùng để chứa tồn thơng tin khơng gian tìm kiếm duyệt o Một hàm định: Φ: (PΔ, P􀂃) → {false, true} trả giá trị true PΔ bị “Lấn át” P􀂃 với số hàm đối xứng φ o Các đối xứng sử dụng thuật toán lan truyền, với biến x, việc loại bỏ giá trị b từ miền x cho Φ(PΔ[x=b], P􀂃) = true Ở điểm chọn, kiểm tra xem trạng thái PΔ có bị “Lấn át” số trạng thái T không Nếu vậy, trạng thái bỏ qua, 49 ngược lại dùng hàm Φ áp dụng thuật toán lan truyền Chúng ta xem hình 3.10, minh họa cho SBDD (a) (b) Hình 3.10: Minh họa cách thức hoạt động SBDD: Nút trắng nút đối xét, nút đen nút xét hồn tồn Hình vng trạng thái T, hình trịn thể khơng T T Hình tam giác nút xét (a) Ban đầu, trạng thái Δ phải kiểm tra thông qua toàn nút xét (b) Dùng DFS, nút cần so sánh với nút kề-trái (từ nút gốc tới Δ) Chúng ta có hai cách tìm kiếm áp dụng phương pháp này, là: tìm kiếm theo chiều sâu (DFS-Depth First Search) tìm kiếm tùy ý (theo cách thức khác) Tuy nhiên áp dụng tìm kiếm tùy ý, số trạng thái cần lưu trữ T tăng lên nhanh lớn Do SBDD phù hợp với DFS Phần giới thiệu cách thức thực SBDD 50 3.3.2 Phương pháp SBDD với DFS Với DFS, không cần lưu trữ tồn trạng thái phía trước Thay vào cần lưu trữ nút nút anh em bên trái T để quay lui Chúng ta xét bổ đề sau:  Bổ đề 3.11: Cho c điểm chọn với trạng thái P c = (Dc(x1),…, Dc(xi),…, Dc(xn)), i số biến nhánh c, Dc(xi)={v1, …, vn}  D(xi) Hơn nữa, ta ký hiệu P ck = (Dc(x1),…, {vi},…, Dck(xn)),  ≤ k ≤ l trạng thái c1, …, cn c Cuối cùng, coi P c’ trạng thái điểm chọn c’ với P c’ ∠P ck ứng với số  ≤ k ≤ n Khi đó: P c’ ∠P c Dùng bổ đề 4.3 kết hợp với DFS, ta thực cách hiệu sau: Chúng ta khởi đầu với T = ∅ tiếp tục trình cho điểm chọn sau: Kiểm tra trạng thái Phép chiếu điểm chọn c với tất trạng thái T Nếu  P T cho Φ(P c, P) = true sinh lỗi Quá trình diễn bình thường mà khơng có điểm chọn Khi quay lui: có nhiều nút anh em xét, thêm trạng thái vào T, khơng xóa tồn trạng thái nút anh em khác từ T Hiệu phương pháp phụ thuộc vào số trạng thái kiểm tra Số trạng thái nhiều độ sâu tìm kiếm số phần tử lớn miền 51 3.3.3 Phương pháp SBDD cho toán N-quân hậu Đối với toán n-quân hậu, nút p liệu n pi số cột quân hậu đặt hàng thứ i, trường hợp quân hậu nằm hàng thứ i chưa thiết lập, pi = * E.g., tương ứng với bàn cờ thứ thể hình 3.11 p = (1, 5, 2, 6, 3, 7, 4) Như tốn người chơi gơn, thực dựa xem xét đối xứng Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Hình 3.11: nghiệm cho toán 7-quân hậu Trong toán n-quân hậu này, chúng tơi sử dụng mơ hình theo tiêu chuẩn: - Mỗi cột i = 1, …, n đại diện biến số nguyên xi Gán xi = j tương ứng với cách đặt quân hậu hàng thứ i cột j - Bổ sung thêm biến số nguyên yi wi với i = 1, …, n dùng để kiểm tra đường chéo bàn cờ, đưa ràng buộc: yi  xi  i wi  xi - i - Miền giá trị x, y, w là: x (1, , n), y (1, , 2n), w (  n, , n) 52 - Tất ràng buộc x, y, w phải đảm bảo khơng có hai qn hậu ăn Ngược lại với thuật tốn mà phát triển sử dụng cắt tỉa đối xứng Một ràng buộc đưa mơ hình theo dõi suốt q trình tìm kiếm, chúng tơi lan truyền biến thay bó hẹp chúng lại hạn chế số lượng gọi lan truyền thơng thường 3.4 Cài đặt chương trình 3.5 Kết Minh họa với quân hậu : Minh họa với 20 quân hậu : 53 PHẦN IV KẾT LUẬN Bài tốn n-qn hậu tốn tổ hợp khó, để giải cần có thuật tốn thật phù hợp Như tìm hiểu có hai cách giải cách tiếp cận truyền thống: thực thủ cơng thuật tốn giải tốn cách xác lập trình truyền thống hai mơ hình tốn dùng thuật tốn có sẵn cho lớp ràng buộc số học cụ thể Hai cách tiếp cận hạn chế rõ rệt, cách thứ cịn hạn chế chi phí lớn thiết kế không dễ biến đổi tốn thay đổi cịn cách tiếp cận thứ hai hạn chế việc diễn tả cách hiệu ràng buộc Khi ngơn ngữ lập trình ràng buộc đại khắc phục điểm yếu cách cung cấp lập trình dựa việc giải ràng buộc cách tinh vi Chúng ta biết toán có ràng buộc, cơng việc người lập trình phải tìm giá trị biến cho phải thỏa mãn ràng buộc Lập trình ràng buộc tỏ rõ hiệu tốn mà u cầu ràng buộc mang tính mềm dẻo Và ngày lập trình ràng buộc thể rõ vai trị mạnh mẽ việc giải toán liên quan đến thực tế sống, ngày ứng dụng trở nên phong phú Chính thế, để giải tốn thỏa mãn ràng buộc địi hỏi người lập trình trang bị kiến thức tồn diện mặt lý thuyết lẫn kỹ phân tích Đối với sinh viên tơi chưa đạt đến trình độ nên luận văn mà tơi thực cịn gặp nhiều khó khăn Trong luận văn mà tơi hồn thành thực được: - Đưa kiến thức cô đọng CSPs: định nghĩa với tính chất quan trọng cho CSPs - Giới thiệu trình bày cách hệ thống phù hợp với tiêu chí cho việc giải toán n-quân hậu, phương pháp khác đưa để so sánh ưu nhược điểm phương pháp áp dụng cho tốn 54 - Cài đặt chạy chương trình theo thuật toán đệ quy quay lui Bài luận văn tạo tiền đề mong muốn cho nghiên cứu tương lai Vì thời gian có hạn hiểu biết cịn khiêm tốn, bên cạnh việc tra cứu tài liệu nước ngồi cịn hạn chế nên khơng thể tránh khỏi sai sót Vì mong góp ý, xây dựng chân thành thầy cô bạn để thân rút kinh nghiệm củng cố thêm kiến thức ngày hồn thiện Cuối tơi xin chân thành cảm ơn hướng dẫn tận tình thầy Nguyễn Thanh Tuấn giúp đỡ bạn giúp tơi hồn thành tốt Luận văn Đà Nẵng, ngày 10 tháng 05 năm 2012 Sinh viên thực Lê Thanh Dũng 55 TÀI LIỆU THAM KHẢO Tiếng Việt Nguyễn Văn Hậu, luận văn thạc sỹ: Lập trình ràng buộc với tốn người chơi gơn Tiếng Anh Cohen D., Jeavons P., Jefferson C., Karen E P and Smith B (2005) “Symmetry Definitions for Constraint Programming”, Proceeding of Principles and Practice of Constraint Programming - CP 2005 Constraint Programming online, http://www.cp-online.org/ Flener P., Frisch A., Hnich B., Kiziltan Z., Miguel I., Walsh T (2002), “Breaking row and column symmetry in matrix models”, Proceeding of Principles and Practice of Constraint Programming - CP 2002 Gent I.P., and Smith B (2000), “Symmetry breaking during search in contraint programming”, W Horn, editor, EACI’2000 Harvey W (2001), “Symmetry Breaking and the Social Golfer Problem”, Proceedings of SymCon-01: Symmetry in Constraints Kiziltan Z (2004), “Symmetry Breaking Ordering Constraints”, PhD thesis, Department of Information Science, Uppsala University Marriott K., and Stuckey P.J (1998), Programming with Constraints: An Introduction, MIT Press Sellmann M., and Van Hentenryck P (2005), “Structural symmetry breaking”, Proceeding of IJCAI'05 workshop on Modelling and Solving Problems with Constraints Puget J.F (2005), “Breaking symmetries in all different problems”, Proceeding of 19th IJCAI (2005), pp 272-277 56 ... ngôn ngữ lập trình ràng buộc nguyên mẫu Theo cảm nhận, chúng ngơn ngữ lập trình ràng buộc “tinh khiết” “nhỏ nhất” chất có thao tác người lập trình thực việc định nghĩa ràng buộc họ từ ràng buộc cở... truy vấn ràng buộc cho sở liệu, mở rộng sở liệu quan hệ cách cho phép chứa biến 11 ràng buộc; ngôn ngữ lập trình hàm ràng buộc, ngơn ngữ lập trình mệnh lệnh ràng buộc công cụ giải ràng buộc hướng... ngữ lập trình ràng buộc Đặc tính bật lập trình ràng buộc ràng buộc liên kết chặt chẽ cách tự nhiên Nó liên quan mật thiết với khía cạnh tốn học, khoa học máy tính truyền thống trí tuệ nhân tạo Lập

Ngày đăng: 08/05/2021, 21:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w