lập trình ràng buộc với bài toán n quân hậu

56 1K 2
lập trình ràng buộc với bài toán n quân hậu

Đ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

1 ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC SƢ PHẠM KHOA TIN    Đề tài: Lập trình ràng buộc với bài toán N- quân hậu. KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN KHOA HỌC GVHD : Nguyễn Thanh Tuấn SVTH : Nguyễn Thị Thu Hà Đà Nẵng năm:2012 2 MỤC LỤC LỜI CẢM ƠN 3 LỜI NÓI ĐẦU 4 PHẦN I. GIỚI THIỆU VỀ LẬP TRÌNH RÀNG BUỘC 6 PHẦN II. NHỮNG CƠ SỞ VỀ BÀI TOÁN THỎA MÃN RÀNG BUỘC 12 CHƢƠNG 1. GIỚI THIỆU NHỮNG KHÁI NIỆM CƠ BẢN 12 1.1. Những định nghĩa quan trọng trong CSP 12 1.1.1. Định nghĩa miền và nhãn 12 1.1.2. Định nghĩa ràng buộc 13 1.1.3. Định nghĩa sự thỏa mãn 14 1.1.4. Định nghĩa bài 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 toán N-quân hậu 15 CHƢƠNG 2. GIẢI BÀI TOÁN THỎA MÃN RÀNG BUỘC 17 2.1. Rút gọn bài toán (Problem redution) 17 2.1.1. Các định nghĩa 17 2.1.2. Việc rút gọn bài toán 18 2.1.3. Bài toán tối thiểu 18 2.2. Tìm kiếm bộ 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 quát của không gian tìm kiếm trong CSPs 19 2.2.3. Kết hợp tìm kiếm và rút gọn bài toán 20 2.2.4. Những điểm chọn trong tìm kiếm 21 2.3. Tổng hợp nghiệm 21 CHƢƠNG 3. THUẬT TOÁ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 bài toán 23 3.2. Một số thuật toán nhằm tìm kiếm lời giải cho bài toán 24 PHẦN III. BÀI TOÁN N-QUÂN HẬU 26 CHƢƠNG 1. GIỚI THIỆU BÀI TOÁN 27 3 1.1. Giới thiệu bài toán 27 1.2. Lịch sử bài toán 29 1.3. Những vấn đề cần giải quyết trong bài toán 30 CHƢƠNG 2. SỰ ĐỐI XỨNG TRONG BÀI TOÁN N-QUÂN HẬU 31 2.1. Sự đối xứng trong bài toán lập trình ràng buộc 31 2.1.1. Định nghĩa sự đối xứng trong CSPs 31 2.1.2. Các phƣơng pháp loại bỏ đối xứng 32 2.2. Sự đối xứng trong bài toán N-quân hậu 33 CHƢƠNG 3. 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 khi tìm kiếm nghiệm 38 3.1.1. Giới thiệu về hình vuông Latin trực giao 38 3.1.2. Liên hệ bài toán N-quân hậu với hình vuông Latin trực giao 41 3.1.3. Loại bỏ đối xứng bằng phƣơng pháp thêm ràng buộc trƣớc khi tìm kiếm nghiệm 41 3.2. Loại bỏ đối xứng trong khi tìm kiếm nghiệm (Symmetry Breaking During Seach_SBDS) 42 3.2.1. Giới thiệu về phƣơng pháp SBDS 42 3.2.2. Phƣơng pháp SBDS cho bài toán N-quân hậu 43 3.3. Loại bỏ đối xứng nhờ việc nhận ra sự ƣu thế (Symmetry Breaking by Dominance Detection_SBDD) 47 3.3.1. Giới thiệu về 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 bài toán N-quân hậu 51 PHẦN IV. KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 55 4 Lời Cảm Ơn Em xin trân trọng cảm ơn quý Thầy cô trong khoa Tin trƣờng Đại học Sƣ Phạm Đà Nẵng đã tận tình giảng dạy, truyền đạt những kiến thức quý báu và tạo điều kiện cho em đƣợc thực hiện Luận văn này. 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, chỉ bảo trực tiếp cho Em trong suốt quá trình làm Luận văn. Xin chân thành cảm ơn sự giúp đỡ, động viên và chỉ bảo của các anh chị đi trƣớc và tất cả bạn bè, những ngƣời luôn có mặt giúp đỡ trong thời điểm khó khăn nhất, tiếp thêm ý chí, động lực cho tôi hoàn thành tốt bài luận văn. Con xin gởi tất cả lòng biết ơn, sự kính trọng đến ông bà, ba mẹ cùng toàn thể gia đình, những ngƣời đã sinh thành, dƣỡng dục, thƣơng yêu chúng con, đã cho con niềm tin và nghị lực để vƣợt qua mọi khó khăn. Vì kiến thức còn hạn chế và thời gian có hạn, mặc dù đã cố gắng nỗ lực hết sức mình, song chắc chắn bài luận văn hoàn thành không tránh khỏi thiếu sót. Tôi mong nhận đƣợc sự thông cảm và chỉ bảo tận tình của quý Thầy cô cùng các bạn. Đà Nẵng, ngày 02 tháng 02 năm 2012 Sinh viên thực hiện Nguyễn Thị Thu Hà 5 Lời Nói Đầu Ngày nay cùng với sự phát triển không ngừng của nền khoa học kỹ thuật thế giới là sự phát triển vƣợt bậc của ngành công nghệ thông tin nói chung và ngành Tin học nói riêng. Ở nƣớc ta nhằm góp phần vào công cuộc Công nghiệp hóa-hiện đại hóa đất nƣớc, vấn đề tin học hóa đã và đang đƣợc triển khai.Việc ứng dụng tin học vào thực tế là một nhu cầu rất cần thiết. Nhận thức đƣợc điều này nên khi còn trên ghế nhà trƣờng, chúng tôi đã đƣợc tìm hiểu qua một số ứng dụng Tin học, cụ thể là việc ứng dụng tin học vào giải quyết một số bài toán ứng dụng. Để xây dựng một ứng dụng tin học vào giải quyết các bài toán cụ thể, điều đầu tiên là cần nắm đƣợc vấn đề đặt ra của bài toán đó. Sau đó ta liên hệ với thực tế xem xét, đƣa ra cách thức giải quyết bài toán đó tức là tìm giải thuật tƣơng ứng với vấn đề yêu cầu của bài toán đó. Vì vậy để đạt đƣợc hiệu quả cao thì cần tìm những cách thức, giải thuật mới cả chiều sâu và rộng mang tính ƣu việt nhất. Bài toán N-quân hậu trên bàn cờ là một trong những bài toán ứng dụng tin học mà xung quanh nó rất nhiều thuật toán để giải quyết nhƣ: thuật toán quay lui, nhánh cận,… Đƣợc sự nhất trí của khoa Tin và sự chỉ dẫn của thầy Nguyễn Thanh Tuấn, Chúng tôi đã đƣợc nhận đề tài: “Lập trình ràng buộc với bài toán N-quân hậu”. Đề tài này đƣợc hoàn thành từ những hiểu biết tích góp qua sách vở, từ những kinh nghiệm học hỏi anh chị đi trƣớc và những tài liệu sẽ đƣợc trích dẫn rõ ràng. Đề tài gồm những nội dung chính sau: 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 Chƣơng 1: Giới thiệu những khái niệm cơ bản Chƣơng 2: Giải bài toán thỏa mãn ràng buộc Chƣơng 3: Thuật toán nhằm rút gọn và tìm kiếm lời giải cho bài toán 6 Phần III: Bài toán N- quân hậu trên bàn cờ Chƣơng 1: Giới thiệu bài toán Chƣơng 2: Sự đối xứng trong bài toán N-quân hậu Chƣơng 3: Loại bỏ đối xứng trong bài 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 đƣợc hoàn thành không thể tránh khỏi những sai sót và khiếm khuyết. Vì vậy tôi rất mong đƣợc sự chỉ bảo, truyền đạt của quý thầy cùng các bạn nhằm tạo điều kiện giúp đỡ cho tôi hoàn thành tốt bài luận văn này. Đà nẵng, ngày 02 tháng 2 năm 2012 Sinh viên thực hiện Nguyễn Thị Thu Hà 7 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) là một trong những phát triển thú vị và mạnh mẽ nhất của ngôn ngữ lập trình trong thập kỷ gần đây. Đƣợc xây dựng trên cơ sở lý thuyết toán học vững chắc, nó đang phát triển và đặc biệt là nó cũng đang thu hút sự quan tâm mạnh mẽ trong việc áp dụng vào lĩnh vực thƣơng mại, nó trở thành phƣơng pháp mô hình hóa cho nhiều loại bài toán tối ƣu, cụ thể là trong các ràng buộc có sự hỗn tạp và các bài toán tìm kiếm có tính tổ hợp. Lý giải cho sự quan tâm trong CP thật đơn giản. Ngôn ngữ lập trình ra đời với xu hƣớng chính là mang lại sự tự do cho ngƣời lập trình đối với việc định nghĩa các đối tƣợng và thủ tục tƣơng ứng với các thực thể và thao tác trong miền ứng dụng. Ngôn ngữ lập trình hƣớng đối tƣợng (Object Oriented Programming Language) cung cấp một kỹ thuật tốt cho việc khai báo các thành phần để kiểm soát hành vi của thực thể trong một miền bài toá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 rất ít sự hỗ trợ với các thực thể mà ngƣời lập trình muốn diễn tả những ràng buộc và những quan hệ. Ngƣời lập trình mong muốn vai trò của ngôn ngữ để duy trì những quan hệ và tìm ra những đối tƣợng thỏa mãn. Ví dụ, xét định luật Ôm sau: U=I x R (1) (1) là công thức mô tả mối quan hệ giữa hiệu điện thế, cƣờng độ dòng điện và điện trở. Trong ngôn ngữ lập trình truyền thống, ngƣời lập trình không thể dùng quan hệ này một cách trực tiếp, thay vào đó nó phải đƣợc mã hóa thành câu lệnh mà từ đó việc tính toán giá trị của một thành phần dựa trên 2 yếu tố còn lại. Vì vậy, I có thể đƣợc suy ra từ U và R bằng công thức sau: : U I R  8 Nhƣng nếu giá trị của R đƣợc tính từ hai thành phần còn lại, một công thức khác lại phát sinh: : U R I  Việc đòi hỏi ngƣời lập trình mô tả và duy trì các quan hệ giữa các đối tƣợng trong lập trình là hợp lý cho các ứng dụng có sử dụng. Tuy nhiên trong nhiều ứng dụng, vấn đề quan trọng là mô hình các quan hệ và tìm ra các đối tƣợng thỏa mãn. Vì lý do đó mà từ cuối những năm 60, đã có nhiều chuyên gia quan tâm đến các ngôn ngữ lập trình cho phép ngƣời lập trình đơn giản hóa các quan hệ giữa các trạng thái của đối tƣợng. Nó là vai trò thực thi cơ bản nhằm đảm bảo rằng những quan hệ đó hay những ràng buộc đƣợc duy trì. Những ngôn ngữ nhƣ vậy đƣợc coi là ngôn ngữ CP (Constraint programming). Ban đầu những ngôn ngữ CP chỉ thành công với một số phần. Chúng bổ trợ cho một ngôn ngữ truyền thống với việc giải quyết các ràng buộc bằng các kỹ thuật không định trƣớc đơn giản. Những ngôn ngữ này phần lớn phụ thuộc vào phƣơng pháp lan truyền cục bộ (local propagation). Phƣơng pháp “lan truyền cục bộ” dùng một ràng buộc để gán một giá trị vào một biến chƣa biết từ các giá trị đã biết cho các biến khác trong ràng buộc. Ví dụ, trong định luật Ôm có thể tính toán một giá trị R, I hoặc U từ hai giá trị đã biết. Bài toán với lan truyền cục bộ là phƣơng pháp giải quyết ràng buộc giữa các quan hệ yếu.Ví dụ, nó không thể dùng để giải các phƣơng trình xảy ra đồng thời nhƣ X= Y-Z và X= 2Y+Z. Nhƣ vậy việc dựa trên lan truyền cục bộ của những ngôn ngữ thời kỳ đầu có hai điểm yếu: Những thuận lợi giải quyết những ràng buộc là không đủ mạnh và chính những ngôn ngữ này không đủ mạnh để diễn tả những ràng buộc. Trong thập kỷ gần đây ngôn ngữ lập trình ràng buộc đƣợc quan tâm mạnh mẽ. Hơn nữa, các ngôn ngữ đã khắc phục đƣợc những khó khăn của những ngôn ngữ trƣớc. Chúng hỗ trợ ràng buộc và tích hợp triệt để vào ngôn ngữ lập trình, nó cho phép ngƣời lập trình làm việc với bài toán ở mức độ cao hơn, trong khi các kỹ thuật thực thi ở mức dƣới cũng sử dụng kỹ thuật thích hợp cho ràng buộc. Việc ra đời các ngôn ngữ lập trình ràng buộc thế hệ mới đáp ứng đƣợc những yêu cầu cho một lƣợng lớn các ứng dụng. 9 Một ví dụ đơn giản cho ứng dụng trong khi dùng ngôn ngữ lập trình ràng buộc, hãy tƣởng tƣợng rằng bạn đang mua một ngôi nhà và muốn kiểm tra những lựa chọn khác nhau đối với việc trả lãi. Với mỗi khoảng trả lãi, tổng tiền lãi dồn lại là PxI, trong đó P là tổng số tiền vay và I là tỷ lệ lãi suất. Lãi suất dồn lại đƣợc cộng thêm với tiền vay để đạt đƣợc một số tiền vay mới NP. Nếu bạn đem trả R thì đó chính là số tiền bị trừ đi. Nhƣ vậy ta có phƣơng trình ràng buộc: NP= P+P×I –R Sự cầm cố trong khoảng thời gian T có thể đƣợc mô tả bởi việc lặp lại việc tính toán này, ở mỗi thời điểm, cho đến khi hết thời gian. Tổng cuối cùng gọi là B cân bằng. Bài toán này có thể tóm gọn trong 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 chỉ ra quan hệ giữa tiền vốn ban đầu P, thời gian vay T, tỷ lệ lãi suất I, tổng số phải là R và điểm cân bằng là B. Luật đầu tiên (3 dòng đầu) xử lý trƣờng hợp khi kết thúc thời gian. Trong trƣờng hợp này điểm cân bằng chính là số tiền vốn hiện tại. Luật thứ hai (5 dòng tiếp theo) xử lý trƣờng hợp khi số khoảng thời gian lớn hơn hoặc bằng 1. Trong trƣờng hợp này một thời điểm mới (NT) sẽ trừ đi 1. Khi đó việc thay đổi vốn cũng đƣợc tính lại. Phần còn lại của việc cho vay đƣợc xác định trên một lƣợng vay mới và tổng vốn mới khi mà thời gian giảm đi 1. Chƣơng trình trên dƣờng nhƣ có thể dễ viết trên ngôn ngữ lập trình truyền thống, ví dụ Pascal hay C. Thuận lợi của chƣơng trình là bởi vì tất cả các câu lệnh đƣợc xem xét dƣới góc độ ràng buộc, nó diễn tả bài toán rất linh hoạt. 10 Thực thi chƣơng trình đƣợc khởi tạo bằng cách đƣa ra một đích. Ví dụ, nếu việc mƣợn $1000 trong 10 năm với lãi suất 10% cùng với việc phải trả $150 một năm. Chúng ta có thể viết nhƣ sau: mortgage(1000, 10, 10/100, 150, B). Khi ta đƣa ra đích nhƣ trên, câu trả lời sẽ là B=203.129, chỉ ra thời điểm cân bằng là $203.129. Một chƣơng trình tƣơng tự có thể đƣợc dùng trong nhiều cách khác nhau. Ví dụ việc mƣợn $150 và đến khi hết hạn việc trả lãi tại thời điểm cân bằng là 0, chúng ta có thể đặt câu hỏi “Cần phải vay bao nhiêu trong vòng 10 năm với lãi suất 10% với việc trả $150 một năm”. Câu hỏi này có thể đƣợc viết: mortgage(P, 10, 10/100, 150, 0). Câu trả lời là P= 921.685. Một câu hỏi phức tạp hơn giữa quan hệ vốn vây ban đầu, số tiền phải trả hàng năm trong 10 năm với lãi suất 10%. Chúng ta có thể đƣa ra: mortgage(P, 10, 10/100, R, B). Câu trả lời là một ràng buộc P= 0.3855*B +6.1446*R, một quan hệ giữa các biến P, B, và R.Trong tất cả các trƣờng hợp đều đƣợc cùng một chƣơng trình giải. Điều này tƣơng phản với lập trình truyền thống khi mà trong một chƣơng trình khác nhau có thể yêu cầu trả lời một trong các 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 cùng quả thực là khó. Lập trình ràng buộc cho phép chúng ta chỉ ra bài toán một cách rất tự nhiên, và ở mức cao với việc dùng các ràng buộc số học. Nó là công việc của ngôn ngữ thực thi mức dƣới để giải những ràng buộc này hơn là công việc của ngƣời lập trình. Ví dụ này tuy đơn giản nhƣng cũng minh họa tại sao lập trình ràng buộc giải quyết đƣợc nhiều ứng dụng, bài toán trong đời sống thực với mô hình phức tạp một cách tự nhiên và hiệu quả. Ngƣời ta cũng cho rằng, hầu hết các ứng dụng quan trọng của ngôn ngữ CP đƣợc áp dụng cho các bài toán mang tính tổ hợp khó, và nó cũng là một mô hình đầy sức mạnh cho việc giải những bài toán tối ƣu tổ hợp. Ví dụ nhƣ việc phải giải quyết liên quan đến lập bảng thời gian (timetabling), lập lịch (scheduling), định [...]... tử (agents); ng n ngữ truy v n ràng buộc cho cơ sở dữ liệu, n mở rộng cơ sở dữ liệu quan hệ bằng cách cho phép các bộ chứa các bi n đã 11 đƣợc 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 và bộ công cụ giải ràng buộc hƣớng đối tƣợng Tuy nhi n, ng n ngữ CLP là ng n ngữ lập trình ràng buộc nguy n mẫu Theo cảm nh n, chúng là ng n ngữ lập trình ràng buộc “tinh khiết”... g n thành ph n hợp lý Bài to n n- qu n hậu có độ phức tạp là N N Chính vì vậy mà chi phí cho việc tính to n sẽ tăng l n rất nhanh khi n tăng Nguy n nh n chính là các bài to n trong lập trình ràng buộc mang tính đối xứng cao, do vậy việc xử lý tính đối xứng là phổ bi n và vô cùng quan trọng trong quá trình tìm nghiệm cho bài to n 31 CHƢƠNG 2 SỰ ĐỐI XỨNG TRONG BÀI TO N N-QU N HẬU 2.1 Sự đối xứng trong bài. .. khác mà chúng ta sẽ cùng tìm hiểu trong những n i dung sau Từ bài to n n y ngƣời ta tổng quát thành bài to n n- qu n hậu và có thể giải bằng nhiều thuật to n, phƣơng pháp khác nhau Ở bài Lu n v n này, chúng tôi sẽ cố gắng ph n tích, trình bày bài to n phù hợp với việc giải bài to n thỏa m n ràng buộc( CSPs), đồng thời so sánh với các phƣơng pháp khác Trong ph n này chúng tôi thực hi n những n i dung sau:... khỏi ràng buộc N u mi n của bất kỳ bi n hoặc ràng buộc n o là rỗng, thì có thể kết lu n rằng bài to n vô nghiệm Rút g n bài to n yêu cầu c n có khả n ng nh n ra những giá trị và nh n kết hợp dƣ thừa (redundant) Những thông tin nhƣ vậy có thể đƣợc lấy từ các ràng buộc Thuật to n rút g n sẽ đƣợc thảo lu n ở chƣơng 3 Cũng c n phải n i thêm rằng việc rút g n bài to n thƣờng li n quan đ n việc bảo to n sự nhất... tr n đƣờng dọc, đƣờng ngang, đƣờng chéo của các qu n hậu trƣớc Từ đó, với bài to n tám qu n hậu thì ngƣời ta đã tìm ra 92 lời giải khác nhau Một trong những lời giải n y là: Q Q Q Q Q Q Q Q Hình 3.3: Một trong những lời giải bài to n tám qu n hậu Bài to n chƣa dừng lại ở đó Chúng ta có đƣợc bài to n tối ƣu tổng quát h n là bài to n n- qu n hậu đƣợc phát biểu: “Đặt n qu n hậu tr n b n cờ kích thƣớc n n. .. Quay lui định hƣớng phụ thuộc (BackJumping - BJ)  Thuật to n học từ ph n không gian đã xét (Learningnogood compound labels- LNCL) 26 PH N III BÀI TO N N-QU N HẬU TR N B N CỜ Chắc h n mọi ngƣời không lạ gì với bài to n 8-qu n hậu, ở đây ta xét bài to n tr n “b n cờ vua” đƣợc mô tả nhƣ hình sau: Hình 3: B n cờ vua Bài to n giống nhƣ một trò chơi vui h n thế xung quanh bài to n c n có nhiều v n đề thú... cho bài to n n- qu n hậu với n bất kỳ 34 Rõ ràng, tập các nghiệm của bài to n n- qu n hậu là bất bi n với đối xứng hình học tr n b n cờ Do đó, từ một nghiệm ban đầu khi qua đối xứng hình học trở thành một nghiệm mới của bài to n n- qu n hậu với n bất kỳ Và sẽ có thể có nhiều nghiệm mới đƣợc tạo ra từ một nghiệm ban đầu qua những đối xứng hình học n y Tùy theo giá trị n của bài to n, nhiều khi không c n. .. tự động, đ n lý thuyết và việc thực thi cơ sở dữ liệu 12 PH N II NHỮNG CƠ SỞ VỀ BÀI TO N THỎA M N RÀNG BUỘC Bài to n thỏa m n ràng buộc (Constraint Satisfaction Problem – CSP) đang ngày càng trở n n phổ bi n trong cộng đồng khoa học máy tính cũng nhƣ trí tuệ nh n tạo Mục đích chính của ph n này là giới thiệu những ki n thức cô đọng nhất cho CSPs: Những định nghĩa cùng với những khái niệm quan trọng cho... nhiều nhà to n học, trong đó có Gauss và Georg Cantor, có các công trình về bài to n n y và tổng quát n thành bài to n xếp hậu Các lời giải đầu ti n đƣợc đƣa ra bởi Franz Nauck n m 1850 Nauck cũng đã tổng quát bài to n thành bài to n n qu n hậu N m 1874, S.Gunther đƣa ra phƣơng pháp tìm lời giải bằng cách sử dụng định thức và J.W.L.Glaisher ho n chỉnh phƣơng pháp n y Bài to n n y cũng đƣợc ứng dụng... “nhỏ nhất” do về b n chất chỉ có thao tác ngƣời lập trình có thể thực hi n là việc định nghĩa các ràng buộc mới của họ từ những ràng buộc cở sở đã đƣợc trang bị Vì lý do n y, việc hiểu CP là công việc li n quan đ n bất kỳ ng n ngữ lập trình ràng buộc n o Đặc tính n i bật của lập trình ràng buộc là các ràng buộc đƣợc li n kết chặt chẽ một cách tự nhi n Nó li n quan mật thiết với các khía cạnh của toán . lệnh ràng buộc và bộ công cụ giải ràng buộc hƣớng đối tƣợng. Tuy nhi n, ng n ngữ CLP là ng n ngữ lập trình ràng buộc nguy n mẫu. Theo cảm nh n, chúng là ng n ngữ lập trình ràng buộc “tinh. của ng n ngữ lập trình ràng buộc. Trong thập ni n 80, những ng n ngữ CP đầu ti n đã ra đời. Việc quan trọng là những ng n ngữ n y đều dựa tr n những nguy n lý Lập trình Logic. Chính điều n y. xứng trong bài to n N- qu n hậu Chƣơng 3: Loại bỏ đối xứng trong bài 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 đƣợc ho n thành

Ngày đăng: 26/04/2015, 11:42

Từ khóa liên quan

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

Tài liệu liên quan