SlideShare a Scribd company logo
1 of 65
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN QUÂN
PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG GIẢI CÁC RÀNG BUỘC
KHÔNG TUYẾN TÍNH
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội - 2016
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN VĂN QUÂN
PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG GIẢI CÁC RÀNG BUỘC
KHÔNG TUYẾN TÍNH
Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60480103
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. TÔ VĂN KHÁNH
Hà Nội – 2016
LỜI CAM ĐOAN
Tôi xin cam đoan rằng, luận văn thạc sĩ công nghệ thông tin “Phương
pháp tính toán khoảng giải các ràng buộc không tuyến tính.” là sản phẩm nghiên
cứu của riêng cá nhân tôi dưới sự giúp đỡ rất lớn của Giảng viên hướng dẫn là
TS. Tô Văn Khánh, không sao chép lại của người khác. Những điều đã được
trình bày trong toàn bộ nội dung của luận văn này hoặc là của chính cá nhân tôi,
hoặc là được tổng hợp từ nhiều nguồn tài liệu. Tất cả các tài liệu tham khảo đều
có nguồn gốc rõ ràng và được trích dẫn hợp pháp.
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy
định cho lời cam đoan của mình.
Hà nội, tháng 10 năm 2016
Học viên
Nguyễn Văn Quân
LỜI CẢM ƠN
Trước tiên tôi xin bày tỏ lòng biết ơn chân thành và sâu sắc đến thầy giáo,
TS. Tô Văn Khánh - người đã dành nhiều tâm huyết, tận tình chỉ bảo và giúp đỡ
tôi trong suốt quá trình bắt đầu thực hiện đề tài cho đến khi tôi hoàn thành đề tài.
Tôi xin gửi lời cảm ơn chân thành tới các thầy cô giáo khoa Công nghệ
thông tin, trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội - nơi tôi đã
theo học trong thời gian qua. Các thầy cô đã cung cấp cho tôi những kiến thức
quý báu, tạo điều kiện tốt nhất cho tôi trong suốt quá trình học tập và nghiên cứu
tại trường.
Cuối cùng tôi xin chân thành cảm ơn những người thân trong gia đình,
đặc biệt là bố mẹ tôi là nguồn động viên và ủng hộ tôi. Xin cảm ơn bạn bè cùng
khóa, đồng nghiệp trong cơ quan đã giúp đỡ tôi trong quá trình học tập và
nghiên cứu thực hiện luận văn này.
Tuy rằng, tôi đã cố gắng hết sức trong quá trình làm luận văn nhưng
không thể tránh khỏi thiếu sót, tôi rất mong nhận được những góp ý của thầy cô
và các bạn.
Hà nội, tháng 11 năm 2016
Học viên
Nguyễn Văn Quân
MỤC LỤC
LỜI CAM ĐOAN
LỜI CẢM ƠN
BẢNG CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
DANH MỤC HÌNH VẼ
DANH MỤC BẢNG
MỞ ĐẦU.........................................................................................................................1
Chương 1. GIỚI THIỆU...............................................................................................3
1.1. Giải các ràng buộc đa thức....................................................................................3
1.2. Ứng dụng của giải các ràng buộc đa thức.............................................................4
1.3. Các SMT giải ràng buộc toán học.........................................................................5
Chương 2. PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG .............................................7
2.1. Giới thiệu về phương pháp tính toán khoảng........................................................7
2.2. Phương pháp tính toán khoảng CI ........................................................................8
2.3. Phương pháp tính toán khoảng Affine Interval...................................................10
2.3.1. Dạng AF...........................................................................................................11
2.3.2. Dạng AF1.........................................................................................................13
2.3.2. Dạng AF2.........................................................................................................15
2.4. Phương pháp tính toán khoảng C AI...................................................................18
Chương 3. SMT SOLVER VÀ SMT SOLVER raSAT ...........................................23
3.1. SAT Solver..........................................................................................................23
3.2. SMT Solver .........................................................................................................24
3.3. Thủ tục DPLL .....................................................................................................26
3.3.1 Thủ tục DPLL cho SAT....................................................................................26
3.3.1 Thủ tục DPLL cho SMT ...................................................................................30
3.4. SMT Solver raSAT .............................................................................................32
Chương 4. CẢI TIẾN KỸ THUẬT KIỂM THỬ TRÊN SMT SOLVER raSAT..41
4.1. Kiểm thử trên raSAT...........................................................................................41
4.2. Kiểm thử cặp đôi.................................................................................................45
4.3 Kiểm thử cặp đôi trên raSAT...............................................................................47
4.4 Thực nghiệm ........................................................................................................49
4.4.1 Kết quả raSAT tại các cuộc thi SMT – COMP .............................................49
4.4.2 raSAT 0.2.......................................................................................................50
4.4.3 Benchmarks ...................................................................................................50
4.4.4 Kết quả thực nghiệm......................................................................................51
KẾT LUẬN ..................................................................................................................53
TÀI LIỆU THAM KHẢO...........................................................................................54
BẢNG CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
STT Thuật ngữ viết tắt Thuật ngữ đầy đủ
1 SAT Satisfiability
2 SMT Satisfiability Modulo Theories
3 DPLL Davis Putnam Logemann Loveland
4 CNF Conjunctive Normal Form
5 CA Classical Interval
6 AI Affine Interval
7 AF Affine Form
8 AF1 Affine Form1
9 AF2 Affine Form2
10 CAI Chebyshev Approximation Interval
11 IA Interval Arithmetic
12 PID Proportional Integral Derivative
13 QE-CAD
Quantifier elimination - Cylindrical Algebraic
Decomposition
14 CAD Cylindrical algebraic decomposition
15 RAHD Real Algebra in High Dimensions
16 ICP Interval constraint propagation
17 VS Virtual substitution
18 APC Atomic polynomial constraint
19 ICC Interval constraint contraction
DANH MỤC HÌNH VẼ
STT Số hiệu Tên hình vẽ
1 Hình 1 Đồ thị biểu diễn giá trị xấp xỉ Chebyshev của x2
và x|x|.
2 Hình 2 Mô hình giải quyết vấn đề bằng SAT.
3 Hình 3 Phương pháp “Eager approach”.
4 Hình 4 Phương pháp “Lazy approach”.
5 Hình 5 Sơ đồ cơ chế hoạt động của thủ tục DPLL.
6 Hình 6 Kết quả của ràng buộc đa thức.
7 Hình 7 Kết quả kiểm thử của ràng buộc đa thức.
8 Hình 8 Kiến trúc của SMT Solver raSat.
9 Hình 9 Kết quả kiểm thử của ràng buộc đa thức.
10 Hình 10 Kiểm thử trong SMT Solver raSat.
DANH MỤC BẢNG
STT Số hiệu Tên bảng
1 Bảng 1 Chọn giá trị cho biến trong khoảng dựa vào hệ số ưu tiên.
2 Bảng 2 Bảng giá trị đầu vào của các biến.
3 Bảng 3 Các ca kiểm thử sử dụng kỹ thuật kiểm thử cặp đôi.
4 Bảng 4 Các ca kiểm thử cặp đôi của 2 biến đầu vào.
5 Bảng 5 Các ca kiểm thử cặp đôi thêm các giá trị biến thứ ba.
6 Bảng 6 Các ca kiểm thử cặp đôi của ba biến lặp theo chiều dọc.
7 Bảng 7 Các ca kiểm thử cặp đôi của ba biến lặp theo chiều ngang.
8 Bảng 8
Bảng so sánh raSAT 0.2 và raSAT áp dụng kiểm thử cặp
đôi.
9 Bảng 9 Kết quả raSAT 0.1 tại cuộc thi SMT - COMP 2014.
10 Bảng 10 Kết quả raSAT 0.2 tại cuộc thi SMT - COMP 2015.
11 Bảng 11 Kết quả raSAT 0.3 và 0.4 tại cuộc thi SMT - COMP 2016.
12 Bảng 12
Kết quả thực nghiệm của raSAT 0.2 và raSAT0.2 –
Pairwise testing.
1
MỞ ĐẦU
Với sự phát triển của công nghệ thông tin các sản phẩm phần mềm được
xây dựng với các yêu cầu khắt khe về chất lượng và độ tin cậy. Đặc biệt là các
hệ thống ứng dụng trong các ngành công nghệ cao như hàng không, vận tải, y
tế... cần độ tin cậy và chính xác cao. Bởi chỉ một sai sót nhỏ của hệ thống có thể
gây ra những tổn thất to lớn về tính mạng con người và thiệt hại kinh tế. Với nhu
cầu như vậy các công cụ kiểm thử và kiểm chứng tự động ra đời sẽ giúp các nhà
phát triển đảm bảo độ tin cậy và giảm chi phí sản xuất phần mềm.
Hiện nay rất nhiều kỹ thuật được nghiên cứu và sử dụng để đảm bảo chất
lượng của phần mềm. Hai kỹ thuật truyền thống đã và đang được sử dụng để
đảm bảo chất lượng phần mềm là kiểm thử phần mềm (Software testing) và
kiểm chứng phần mềm (Software verification). Tuy nhiên việc sử dụng các
phương pháp kiểm thử chỉ làm giảm bớt lỗi của hệ thống mà không thể kết luận
được hệ thống không có lỗi. Các phương pháp kiểm chứng đang được quan tâm
số một trong việc chứng minh tính đúng đắn của hệ thống. Hiện nay các hướng
nghiên cứu về SMT solver đang được quan tâm rộng rãi bởi chúng đóng vai trò
quan trọng trong bài toán kiểm chứng phần mềm. SMT solver đóng vai trò là
công cụ nền (backend engine) trong các công cụ kiểm chứng phần mềm. Các bài
toán kiểm chứng được đưa về giải tính thỏa mãn (SAT/UNSAT) của các công
thức logic bằng các công cụ SMT solver.
Giải các ràng buộc đa thức toán học (Polynomial constraint) được ứng
dụng nhiều trong phân tích hệ thống, kiểm chứng phần cứng và phần mềm, cụ
thể như chứng minh tính bất biến của một chương trình hoặc phân tích kết quả
của các hệ thống. Tất cả các ứng dụng trên cần được tự động và cần có công cụ
để hỗ trợ để giải quyết bài toán. Giải các ràng buộc đa thức toán học là đưa ra
kết luận ràng buộc đó là SAT hoặc UNSAT.
2
Ở luận văn này chúng tôi sẽ tập trung nghiên cứu về các kỹ thuật giải các ràng
buộc phi tuyến tính (non-linear constraints) bằng phương pháp tính toán xấp xỉ
(approximation methods) và thực nghiệm trên công cụ SMT Solver raSAT. Cụ
thể mục tiêu của luận văn là nghiên cứu về các phương pháp tính toán khoảng
(Interval Arithmetic) để giải các ràng buộc phi tuyến tính. Đồng thời luận văn
cũng đề xuất áp dụng phương pháp kiểm thử cặp đôi vào SMT Solver raSAT và
đã cho kết quả cải tiến đáng kể hiệu quả của raSAT.
Luận văn bao gồm 4 chương, trong đó phần giới thiệu về giải các ràng buộc
toán học và ứng dụng của giải các ràng buộc toán học sẽ nằm ở Chương 1.
Chương 2: Giới thiệu về phương pháp tính toán khoảng và các kĩ thuật tính
xấp xỉ (over approximation) gồm Classical Interval (CA), Affine Interval (AI)
và Chebyshev Approximation Interval (CIA).
Chương 3: Giới thiệu về SAT Solver và SMT Solver. Trình bày các kĩ
thuật trong SMT Solver raSAT trong việc giải các ràng buộc đa thức.
Chương 4: Trình bày về các kĩ thuật kiểm thử trong raSAT. Đề xuất kỹ
thuật kiểm thử cặp đôi (pairwise) áp dụng cho raSAT.
Phần kết luận: Kết luận và hướng nghiên cứu dự định trong tương lai.
3
Chương 1. GIỚI THIỆU
1.1. Giải các ràng buộc đa thức
Giải các đa thức đóng vai trò quan trọng trong các lĩnh vực kiểm chứng
(verification) phần mềm, chứng minh tính dừng (proving termination), tính bất
biến của chương trình (loop invariant generation) [28]. Do vậy việc đưa ra các
phương pháp và công cụ để giải tự động các ràng buộc đa thức là yêu cầu thiết
yếu. Kiểm thử không thể kiểm tra được tất cả các trường hợp có thể xảy ra của
chương trình, do vậy việc chứng minh tính đúng của chương trình là một giải
pháp thay thế. Để chứng minh chương trình không có lỗi có thể chuyển sang bài
toán giải ràng buộc toán học. Sau đó sẽ thực hiện giải các ràng buộc toán học đó
để đưa ra kết luận là chương trình có lỗi hoặc không có lỗi. Ràng buộc toán học
có thể là đơn thức, đa thức tuyến tính hoặc phi tuyến tính.
Đơn thức (Monomial): Một đơn thức được biểu diễn gồm v1
p1
… vm
pm
với các
điều kiện m > 0, vi là biến, pi > 0 𝑣ới i ∈ {1 … m} và vi # vj với i , j ∈ {1 … m},
i # j . Một đơn thức là một hàm tuyến tính (linear) nếu m=1 và p=1.
Đa thức (Polynomial): Định nghĩa Polynomial Atom, Constraint, Clause
và CNF:
 Một nguyên tử đa thức (polynomial atom) được xây dựng từ những
toán tử quan hệ như ≥ , > 𝑣à = giữa các biểu thức toán học được
xây dựng bằng cách áp dụng các phép cộng, trừ qua các biến và các
số học.
 Một ràng buộc đa thức (polynomial constraint) là một kết hợp logic
của các nguyên tử đa thức.
 Một mệnh đề là một ràng buộc đa thức bao gồm các phép tuyển hay
phép phủ định của các đa thức nguyên tử. Một ràng buộc đa thức
thuộc CNF nếu nó là một mệnh đề chuẩn tắc hội
.
4
1.2. Ứng dụng của giải các ràng buộc đa thức
Giải các ràng buộc đa thức ứng dụng trong việc phân tích, chứng minh tính đúng
đắn của chương trình. Các ứng dụng cụ thể của giải các ràng buộc đa thức gồm:
 Tự động phát hiện lỗi làm tròn và lỗi tràn số [3]: Trong khoa học
máy tính số thực thường được sử dụng để xử lý. Tuy nhiên trong các
hệ thống phần cứng cần tiếc kiệm bộ nhớ để có chi phí thấp và tốc độ
cao nên các xử lý sẽ sử dụng số nhị phân để xử lý các tính toán. Việc
chuyển đổi các thuật toán trên số thực về số nhị phân rất dễ cho các
kết quả khác nhau do các lỗi làm tròn và tràn số. Do vậy việc kiểm
soát các lỗi làm tròn, tràn số và các lỗi ở biên là vô cùng cần thiết. Ví
dụ các ứng dụng sử lý tín hiệu số như bộ giải mã Mpeg, các thư viện
OpenGL...
 Chứng minh tính tự động [23]: Giải các ràng buộc toán học ứng
dụng trong việc chứng minh tính dừng của thuật toán. Chứng minh
tự động tính dừng của thuật toán là việc đánh giá thuật toán sẽ dừng
trong bất kể trường hợp nào hoặc ngược lại thuật toán có thể là sẽ
chạy mãi mãi.
 Chứng minh tính đúng của chương trình [14]: Giải các ràng buộc
tuyến tính hoặc phi tuyến tính ứng dụng trong việc chứng minh tính
đúng của một chương trình. Chứng minh tính đúng của một chương
trình là đi khẳng định chương trình luôn đúng với mọi thay đổi của
các biến trong chương trình. Chuyển đổi một chương trình về các
ràng buộc toán học và đi chứng minh ràng buộc đó là một cách gián
tiếp đi chứng minh tính đúng của một chương trình.
 Thiết kế bộ điều khiển cơ khí [15]: Bộ điều khiển (PID -
Proportional Integral Derivative) được ứng dụng rộng rãi trong các
điều khiển công nghiệp. Giải các ràng buộc toán học có thể ứng dụng
trong việc thiết kế các bộ điều khiển phức tạp và cần độ tin cậy cao.
5
Ví dụ như công ty Fujitsu đã ứng dụng giải các ràng buộc phi tuyến
tính trong việc thiết kế bộ điều khiển đọc/ghi của ổ cứng.
Ví dụ 1.2.1: Phân tích tính dừng của chương trình sau:
Biểu diễn chương trình trên thành các biểu thức logic như sau.
 pt1 : 𝑦 ≥ 1 , 𝑥′
= 𝑥 − 1, 𝑦′
= 𝑦, 𝑧′
= 𝑧
 pt2 : 𝑦 < 𝑧 , 𝑥′
= 𝑥 − 1, 𝑦′
= 𝑦, 𝑧′
= 𝑧 − 1
 pt3 : 𝑦 ≥ 𝑧 , 𝑥′
= 𝑥, 𝑦′
= 𝑧 + 1, 𝑧′
= 𝑧
Nếu có thể giải được đa thức pt1 ˄ pt2 ˄ pt3 là UNSAT thì kết luận
chương trình trên không bị lặp vô hạn.
1.3. Các SMT giải ràng buộc toán học
Hiện nay các SMT giải các ràng buộc toán học có thể chia thành năm loại
như sau:
 QE-CAD: RAHD [19] (Real Algebra in High Dimensions) là một
công cụ giải các ràng buộc phi tuyến tính trên tập số thực. RAHD
phát triển dựa vào lý thuyết QE-CAD (Quantifier Elimination -
Cylindrical Algebraic Decomposition) đề xuất bởi tác giả Tarski.
6
 Interval constraint propagation (ICP): ICP sử dụng phương pháp
tính toán khoảng để tính sấp xỉ để phân tích xung đột. Các công cụ
phát triển dựa vào ICP gồm RSOLVER [21], iSAT [4].
 Bit-blasting: Là phương pháp chuyển đổi bài toán về các công thức
logic mệnh đề và sử dụng SAT Solver để giải. Các công cụ phát triển
dựa vào Bit-blasting gồm MiniSMT [5], UCLID [1].
 Linearization: Là phương pháp chuyển đổi các ràng buộc đa thức về
ràng buộc tuyến tính và sử dụng một SMT Solver để giải ràng buộc
tuyến tính này. Các công cụ phát triển dựa vào phương pháp này
gồm Barcelogic [9], CORD [2].
 Virtual substitution (VS) [6]: Là thủ tục được sử dụng để nhúng
với SMT Solver. Các công cụ phát triển dựa vào phương pháp này
gồm SMT-RAT [13], Z3 [8]. Trong đó Z3 là công cụ kết hợp hai
phương pháp VS và ICP để giải các ràng buộc tuyến tính.
7
Chương 2. PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG
2.1. Giới thiệu về phương pháp tính toán khoảng
Trong các tính toán số học đôi khi việc tìm được kết quả chính xác là việc
vô cùng khó khăn, do vậy việc tính toán các giá trị gần đúng với kết quả thực tế
là một giải pháp được đưa ra. Phương pháp tính toán khoảng (Interval
Arithmetic - IA) sử dụng để tìm cận trên và cận dưới của các ràng buộc dựa trên
phương pháp tính xấp xỉ (approximation methods). Phương pháp này được áp
dụng cho giải các bài toán để tìm ra kết quả gần đúng với mức độ lỗi có thể chấp
nhận được.
Ví dụ: Với phương trình x2
+ x − 6 = 0 ta dễ dàng sử dụng công thức
biến đổi trong trương trình trung học cơ sở để tìm được nghiệm của phương
trình là x1 = −3 và x2 = +2. Tuy nhiên với một số bài toán không thể tìm
được nghiệm chính xác của bài toán, ví dụ với phương trình x2
− 2 = 0 thì
nghiệm được biểu diễn √2. Như vậy nếu chỉ sử dụng các kiểu số cơ bản thì
không thể biểu diễn chính xác tất cả các giá trị của bài toán mà bắt buộc phải
làm tròn để lấy giá trị xấp xỉ. Do vậy các nhà khoa học đã đưa ra lý thuyết tính
toán khoảng (Interval Arithmetic -IA) để kiểm soát lỗi làm tròn trong các tính
toán, do vậy kết quả thu được sẽ được kiểm soát về độ tin cậy.
Các số thực x, y trong phương pháp tính toán khoảng được biểu diễn như sau:
 x = [ x , x ], y = [ y , y ], Trong đó x = min( x ∈ x ) , y = min( y ∈
y ) là cận dưới lần lượt của x và y, x = max ( x ∈ x ), y = max ( y ∈ y)
là cận trên lần lượt của x và y .
 x = y nếu x = y và x = y
 x < 𝑦 nếu x < y
 x > 𝑦 nếu y > y
 x là số thực đơn (single real number) nếu x = x. Ví dụ 0 = [ 0 , 0 ]
8
Trong phương pháp tính toán khoảng có hai kĩ thuật chính gồm Classical
Interval (CI) [20] và Affine Arithmetic (AF) [24]. Ngoài ra còn một số kĩ thuật
được phát triển từ hai kĩ thuật trên gồm AF, AF1, AF2 [17] và Chebyshev
Affine Interval (C AI) [27]. Chi tiết các kĩ thuật sẽ được trình bày lần lượt ở
phần tiếp theo của luận văn.
2.2. Phương pháp tính toán khoảng CI
Kĩ thuật tính toán khoảng Classical Interval (CI) [20] được tác giả Ramnon
E.Moore giới thiệu vào năm 1960. Ý tưởng chính của kĩ thuật này là đặt giới hạn
lỗi làm tròn trong các tính toán số học bằng cách biểu diễn mỗi giá trị trong CI
bởi một khoảng giới hạn. Các khoảng giới hạn này sẽ được sử dụng để tính toán
thay thế cho giá trị gốc. Kĩ thuật Classical Interval được định nghĩa như sau.
Định nghĩa 2.2.1: Một Classical Interval của x là một khoảng x =
[ xl , xu] trong đó xl ≤ x ≤ xu .
Định nghĩa 2.2.2: Các phép toán cơ bản trong Classical Interval gồm ☉= {
+ , − , × ,÷ } được định nghĩa như sau.
 [ xl , xu] + [ yl , yu] = [ xl + yl , xu + yu ]
 [ xl , xu] − [ yl , yu] = [ xl − yu , xu − yl]
 [xl , xu ] × [ yl , yu ] = [min(xlyl, xlyu , xuyl, xuyu),
max(xl yl, xlyu, xuyl, xuyu) ]
 [xl , xu] ÷ [ yl , yu] = [ xl , xu] × [
1
yl
,
1
yu
] nếu 0 ∉ [ yl , yu]
Bổ đề 2.2.3:Với x = [ xl , xu ], y = [ yl , yu ] thì z = x ☉ y ∈ [ xl , xu ] ☉
[ yl , yu ] , trong đó ☉= { + , − , × ,÷ }.
Ví dụ 2.2.4:Cho x = [ 1 ,4 ] , y = [ 3 ,6 ] tính z = x ☉ y với ☉={ + , − ,
× ,÷ }.
 Phép cộng z = x + y :
z = [ 1 ,4 ] + [ 3 , 6 ] = [ −1 + 3 , 4 + 6] = [ 2 , 10]
9
Kết luận 𝑧 = [ 2 , 10]
 Phép trừ z = x − y :
z = [ 1 ,4 ] − [ 3 , 6 ] = [ −1 − 6 , 4 − 3] = [ −7 , 1]
Kết luận 𝑧 = [ −7 , 1]
 Phép nhân z = x × y :
z = [ 1 ,4 ] × [ 3 , 6 ]
= [ min (−1 × 3, −1 × 6, 4 × 3, 4 × 6),
max(−1 × 3, −1 × 6, 4 × 3, 4 × 6) ]
= [ min(−3, −6, 12, 24), max(−3, −6, 12, 24)]
= [ −6 , 24 ]
Kết luận z = [ −6 , 24 ]
 Phép chia z = x ÷ y :
z = [ 1 ,4 ] ÷ [ 3 , 6 ]
= [ 1 ,4 ] × [
1
3
,
1
6
]
= [ min (−
1
3
, −
1
6
,
4
3
,
2
3
) , max (−
1
3
, −
1
6
,
4
3
,
2
3
)]
= [ −
1
6
,
4
3
]
Kết luận z = [ −
1
6
,
4
3
]
Hạn chế của Classical Interval là kết quả tính toán có thể rộng hơn kết quả
thực tế mong muốn trong các phép tính lớn. Khi mà kết quả ở một trạng thái là
đầu vào của trạng thái tiếp theo. Nguyên nhân là do các đầu vào ban đầu của CI
là độc lập và không phục thuộc nhau do đó trong trường hợp các tính toán có
liên quan tới các đầu vào phục thuộc nhau sẽ làm kết quả của phép toán sai lệnh
so với kết quả thực tế.
Ví dụ với phép toán trừ ( − ) , sử dụng công thức ở 2.2.2 với x = [2 , 5]
kết quả thu được là x − x = [2 , 5] − [2 , 5] = [−3 , 3] . Do kĩ thuật CI không
thể nhận biết được hai đầu vào là giống nhau nên sẽ biểu diễn hai giá trị với
10
cùng một khoảng do vậy dẫn đến kết quả là [−3 , 3] thay vì kết quả chính xác
là [0 , 0] .
Ví dụ với các phép toán nhiều hơn hai đầu vào cho x = [4 , 6] tính
x(10 − x) . Sử dụng các công thức ở 2.2.2 như sau :
10 − x = [10 , 10] − [4 , 6] = [4 , 6]
x(10 − x) = [4 , 6] × [4 , 6] = [16 , 36]
Kết quả chính xác là [24 , 25] thay vì [16 , 36]. Do kĩ thuật Classical
Interval không nhận biết được hai đầu vào của phép nhân là x và (10 − x) phụ
thuộc nhau nên dẫn đến khoảng kết quả thu được rộng hơn rất nhiều so với
khoảng kết quả thực tế của phép toán.
Như vậy với các phép tính có nhiều hơn hai đầu vào không độc lập nhau
sẽ dẫn đến lỗi tính toán và kết quả thu được rộng hơn mong muốn. Để khắc phục
nhược điểm này của Classical Interval phần tiếp theo của luận văn sẽ giới thiệu
phương pháp tính toán khoảng Affine Interval (AI).
2.3. Phương pháp tính toán khoảng Affine Interval
Kĩ thuật tính toán khoảng Affine Interval (AI) [24] được giới thiệu bởi hai
tác giả Comba và Stolfi vào năm 1993. Kĩ thuật AI được phát triển từ kĩ thuật CI
bằng cách tự động theo dõi việc làm tròn số để giảm thiểu các lỗi trong mỗi
bước tính toán. Ngoài ra để khắc phục nhược điểm các đầu vào độc lập của CI
như ở trên, AI có thể theo dõi mỗi tương tác giữa các thành phần của đa thức.
Mục đích của AI là cung cấp các giới hạn tính toán để đảm bảo cho các kết
quả tính toán có lỗi đủ nhỏ, đặc biệt trong các chuỗi tính toán lớn kĩ thuật AI sẽ
phát huy được lợi thế này. AI được đánh giá là kĩ thuật có độ chính xác cao, tuy
nhiên kĩ thuật này phức tạp và tốn nhiều chi phí cho việc áp dụng vào các ứng
dụng thực tế.
Các biến trong Affine Interval được biểu diễn bởi số thực ɛ (noise
symbols) có giá trị trong khoảng [−1 , 1]. Các tính toán trong Affine Interval
11
cho phép giữ giá trị ban đầu của các tính toán dựa trên kí tự ɛ và cải thiện độ
chính xác khi thực hiện phép trừ (−).
Ví dụ x ∈ (1 , 3), x được biểu diễn x = 2 + ɛ, khi đó x = (2 + ɛ) − (2 +
ɛ) có giá trị hợp lý bằng 0.
Affine Interval được phát triển dưới các dạng Affine Forms (AF) bằng cách
xác định số lượng biến để theo dõi mức độ lỗi khi thực hiện lấy xấp xỉ hoặc làm
tròn trong phép nhân. Phần tiếp theo của luận văn sẽ giới thiệu các dạng của
Affine Interval gồm AF, AF1, AF2.
2.3.1. Dạng AF
Định nghĩa 2.3.1: Dạng AF [17] của biến x biểu diễn như sau:
ẍ = a0 + ∑ aiɛi
n
i=1
Với x ∈ ( a0 − ∑|ai|
n
i=0
, a0 + ∑|ai|
n
i=0
) , ɛi ∈ [−1 , 1] (noise symbols)
Định nghĩa 2.3.2: Cho x, y biểu diễn lần lượt dưới dạng AF như sau:
ẍ = a0 + ∑ aiɛi
n
i=1
ÿ = b0 + ∑ biɛi
n
i=1
Các phép toán của dạng AF gồm ☉={ + , − , × ,÷ } như sau:
ẍ + ÿ = (a0 + b0 ) + ∑(ai + bi)ɛi
n
i=1
ẍ − ÿ = (a0 − b0 ) + ∑(ai − bi)ɛi
n
i=1
ẍ × ÿ = (a0b0 ) + ∑(a0bi − b0ai)ɛi
n
i=1
+ ( ∑|ai|
n
i=1
) ( ∑|bi|
n
i=1
) ɛn+1
12
ẍ ÷ ÿ = ẍ ×
1
ÿ
nếu 0 ∉ (b0 − ∑|bi|
n
i=0
, b0 + ∑|bi|
n
i=0
))
Với ɛn+1 là một noise symbols mới và
1
ÿ
được tính bằng phương pháp xấp xỉ
Chebyshev.
Chuyển đổi giữa CI và AF [24]:
Với x ở dạng CI x = [ xl , xu ] chuyển thành AF Form của biến x như sau:
ẍ =
xu + xl
2
+
xu − xl
2
ɛx
Với x ở dạng AF Form ẍ
= a0 + ∑ aiɛi chuyển thành CI của biến x như sau:
n
i=1
x = [ a0 − ∑|ai|
n
i=0
, a0 + ∑|ai|
n
i=0
]
Ví dụ 2.3.3: Với hai giá trị x = [−1 , 5] , y = [ 3 , 7] được biểu diễn bằng
AF như sau:
x = 2 + 3ɛ1
y = 5 + 2ɛ2
Tính z = x ☉ y với ☉ = { + , − , × ,÷ }.
 Phép cộng z = x + y :
z̈ = ẍ + ÿ
= 2 + 3ɛ1 + 5 + 2ɛ2
= 7 + 3ɛ1 + 2ɛ2
Kết quả z̈ = (7 − 3 − 2 , 7 + 3 + 2 ) = (2 , 12) nên kết luận z ∈ [ 2 , 10 ].
 Phép trừ z = x − y :
z̈ = ẍ − ÿ
= 2 + 3ɛ1 − 5 − 2ɛ2
13
= − 3 + 3ɛ1 − 2ɛ2
Kết quả z̈ = (−3 − 3 + 2 , −3 + 3 − 2 ) = (−4 , −2 ) nên kết luận
z ∈ [−4 , −20 ].
 Phép nhân z = x × y :
z̈ = ẍ × ÿ
= (2 + 3ɛ1) × (5 − 2ɛ2)
= 10 − 4ɛ2 + 15ɛ1 − 6ɛ1ɛ2
= 10 − 4ɛ2 + 15ɛ1 − 6ɛ3 với ɛ3 = ɛ1ɛ2
Kết quả z̈ = (10 + 4 − 15 + 6, 10 − 4 + 15 − 6) = (5 , 15 ) nên kết luận
z ∈ [5 , 15] . Và ɛ3 là một noise symbols mới được tạo ra từ phép nhân z̈ = ẍ ×
ÿ.
 Phép chia z = x ÷ y :
z̈ = ẍ ÷ ÿ
= (2 + 3ɛ1) ×
1
(5 − 2ɛ2)
=
2 + 3ɛ1
5 − 2ɛ2
Kết quả z̈ = (
2 − 3
5 + 2
,
2 + 3
5 − 2
) = (
1
7
,
5
3
) nên kết luận z ∈ [
1
7
,
5
3
].
Dạng AF có hạn chế là khi tính toán với các ràng buộc phi tuyến tính lớn sẽ
làm gia tăng noise symbols mới.
2.3.2. Dạng AF1
Dạng AF1 [17] được mở rộng từ dạng AF bằng cách thêm một số thực ɛ⫨
(fixed error noise symbol) có giá trị trong khoảng [−1 , 1], để kiểm soát lỗi tính
toán xấp xỉ của các toán hạng phi tuyến tính. Tất cả các toán hạng phi tuyến tính
sẽ sử dụng biến này để tính toán.
14
Định nghĩa 2.3.4: Dạng AF1 của biến x biểu diễn như sau:
x̂ = a0 + ∑ aiɛi
n
i=1
+ an+1ɛ⫨
Với x ∈ (a0 − ∑|ai|
n
i=0
− an+1, a0 + ∑|ai| + an+1
n
i=0
) , ɛi
∈ [−1 , 1] (noise symbols)
, ɛ⫨ ∈ [−1 , 1] (fixed error noise symbol), an+1 ≥ 0.
Định nghĩa 2.3.5: Biểu diễn x, y dưới dạng AF1 :
x̂ = a0 + ∑ aiɛi
n
i=1
+ an+1ɛ⫨
ŷ = b0 + ∑ biɛi + bn+1ɛ⫨
n
i=1
Các phép toán của dạng AF1 gồm ☉ = { + , − , × ,÷ } như sau :
x̂ + ŷ = (a0 + b0 ) + ∑(ai + bi)ɛi
n
i=1
+ (an+1 + bn+1)ɛ⫨
x̂ − ŷ = (a0 − b0 ) + ∑(ai − bi)ɛi
n
i=1
+ (an+1 + bn+1)ɛ⫨
x̂ × ŷ = (a0b0 ) + ∑(a0bi − b0ai)ɛi + (|a0|bn+1 + |b0|an+1)
n
i=1
+ ( ∑|ai|
n
i=1
) ( ∑|bi|
n
i=1
) ɛ⫨
x̂ ÷ ŷ = x̂ ×
1
ŷ
nếu 0 ∉ (b0 − ∑|bi|
n
i=0
− bn+1, b0 + ∑|bi|
n
i=0
+ bn+1))
Với
1
ŷ
được tính bằng phương pháp xấp xỉ Chebyshev,
an+1 ≥ 0 , bn+1 ≥ 0 và hệ số của ɛ⫨ là (an+1 + bn+1) với phép toán trừ (−) .
15
Ví dụ 2.3.6: Với hai giá trị x = 2 + 3ɛ1, y = 5 + 2ɛ2 tính z = x ☉ y với
☉= { + , − , × ,÷ }.
Phép cộng, trừ và chia có kết quả tương tự với AF ở ví dụ 2.2.7
Phép nhân z = x × y :
ẑ = x̂ × ŷ
= (2 + 3ɛ1) × (5 − 2ɛ2)
= 10 − 4ɛ2 + 15ɛ1 − 6ɛ1ɛ2
= 10 − 4ɛ2 + 15ɛ1 − 6ɛ⫨ với ɛ⫨ = ɛ1ɛ2
Kết quả thu được tương tự với dạng AF z ∈ [5 , 15 ] và các phép toán phi
tuyến tính được gán vào biến ɛ⫨.
Như vậy kĩ thuật AF1 đã giải quyết được hạn chế gia tăng noise symbols
mới bằng cách sử dụng duy nhất một noise symbols ɛ⫨ vào các toán hạng phi
tuyến tính của ràng buộc.
2.3.2. Dạng AF2
Dạng AF2 [17] được mở rộng từ dạng AF1 bằng cách thêm hai số thực
ɛ− ∈ [−1 ,0] (negative noise symbol) và ɛ+ ∈ [0 , 1] (positive noise symbol
để cải thiện độ chính xác của kết quả trong các biểu thức có hai noise symbol trở
lên. Các noise symbol có hệ số hai trở lên sẽ được thay thế bằng ɛ− hoặc ɛ+ phụ
thuộc vào hệ số của noise symbol đó trong ràng buộc.
Định nghĩa 2.3.7: Dạng AF2 của biến x biểu diễn như sau :
x̆ = a0 + ∑ aiɛi
2n
i=1
+ an+1ɛ+ + an+2ɛ− + an+3ɛ⫨
Với x ∈ ( a0 − ∑|ai|
n
i=0
− an+2 − an+3 , a0 + ∑|ai| + an+1 + an+3
n
i=0
) ,
ɛi ∈ [−1 , 1] (noise symbols), ɛ− ∈ [−1 ,0] (negative noise symbol), ɛ+ ∈
[0 , 1] (positive noise symbol) , ɛ⫨ ∈ [ −1 , 1] (fixed error noise symbol)
và an+1 ≥ 0, an+2 ≥ 0, an+3 ≥ 0.
16
Định nghĩa 2.3.8: Biểu diễn hai số x, y dưới dạng AF2 như sau:
x̆ = a0 + ∑ aiɛi
n
i=1
+ an+1ɛ+ + an+2ɛ− + an+3ɛ⫨
y̆ = b0 + ∑ bɛi
n
i=1
+ bn+1ɛ+ + bn+2ɛ− + bn+3ɛ⫨
Các phép toán của AF2 form gồm ☉= { + , − , × ,÷ } như sau :
x̆ + y̆ = (a0 + b0 ) + ∑(ai + bi)ɛi
n
i=1
+ (an+1 + bn+1)ɛ+
+ (an+2 + bn+2)ɛ− + (an+3 + bn+3)ɛ⫨
x̆ − y̆ = (a0 − b0 ) + ∑(ai − bi)ɛi
n
i=1
+ (an+1 + bn+2)ɛ+
+ (an+2 + bn+1)ɛ− + (an+3 + bn+3)ɛ⫨
x̆ × y̆ = (a0b0 ) + ∑(a0bi − b0ai)ɛi +
n
i=1
K1ɛ+ + K2ɛ− + K3ɛ⫨
Với
K1 = ∑ aibi
n+2
i=1,aibi >0
+
{
a0bn+1 + b0an+1 nếu a0 ≥ 0, b0 ≥ 0
a0bn+1 − b0an+2 nếu a0 > 0, 𝑏0 < 0
−a0bn+2 − b0an+1 nếu a0 < 0, 𝑏0 > 0
−a0bn+2 − b0an+2 nếu a0 < 0, 𝑏0 < 0
K2 = ∑ aibi
n+2
i=1,aibi <0
+
{
a0bn+2 + b0an+2 nếu a0 ≥ 0, b0 ≥ 0
a0bn+2 − b0an+1 nếu a0 > 0, 𝑏0 < 0
−a0bn+1 − b0an+2 nếu a0 < 0, 𝑏0 > 0
−a0bn+1 − b0an+1 nếu a0 < 0, 𝑏0 < 0
K3 = ∑ ∑ |aibj|
n+3
j=1,i # j
n+3
i=1
+ ( |a0|bn+3 + |b0|an+3) + (an+3 + bn+3)
17
x̆ ÷ y̆ = x̆ ×
1
y̆
nếu 0 ∉ (b0 − ∑|bi|
n
i=0
− bn+2 − bn+3 , b0 + ∑|bi| +
n
i=0
bn+1 + bn+3).
Với
1
y̆
được tính bằng phương pháp xấp xỉ Chebyshev.
Ví dụ 2.3.9: Với hai giá trị x ∈ ( 0 , 2 ), y = (2 − x) được biểu diễn bằng
dạng AF2 :
x̆ = 1 + ɛ1 ,
y̆ = 1 − ɛ1
tính z = x ☉ y với ☉ = { + , − , × ,÷ }.
Phép cộng z = x + y :
z̆ = x̆+ y̆
= 1 + ɛ1 + 1 − ɛ1
= 2
Kết quả z̆ = 2
Phép trừ z = x − y
z̆ = x̆ − y̆
= 1 + ɛ1 − 1 + ɛ1
= 2ɛ1
Kết quả z̆ ∈ [−2 , 2 ]
Phép nhân z = x × y ∶
z̆ = x̆ × y̆
= (1 + ɛ1) × (1 − ɛ1 )
= 1 − ɛ1 + ɛ1 − ɛ1ɛ1
= 1 + ɛ−
Kết quả z̆ ∈ [0,1 ] vì ɛ− ∈ [−1 ,0]
18
Như vậy kết quả của AF2 được cải thiện độ chính xác hơn các kĩ thuật CI,
AF và AF1 khi có nhiều hơn hai noise symbol trong một biểu thức. Cụ thể kết
quả của các kĩ thuật CI, AF, AF1 và AF2 như sau
CI : z ∈ ( 0 , 4 )
AF : z ∈ ( 0 , 2 )
AF1 : z ∈ ( 0 , 2 )
AF2 : z ∈ ( 0 , 1 )
2.4. Phương pháp tính toán khoảng C AI
Phương pháp tính toán khoảng Chebyshev Approximation Interval (C AI)
[26] được hai tác giả Tô Văn Khánh (UET/VNU-HN) và Mizuhito Ogawa
(JAIST) giới thiệu vào năm 2012. Phương pháp tính toán khoảng C AI là một
dạng mới của phương pháp tính toán khoảng Affine Interval được phát triển dựa
trên phương pháp tính xấp xỉ Chebyshev.
Định nghĩa 2.4.1: C AI của biến x biểu diễn dưới dạng sau:
ẋ = a̅0 + ∑ a̅iɛi
n
i=1
+ ∑ a̅i+nɛi+n
n
i=1
+ a̅2n+1ɛ⫨
Với ɛi ∈ [−1 , 1] (noise symbols), ɛ⫨ ∈ [−1 , 1] (fixed error noise
symbols), ɛi+1 ∈ [0 , 1] sử dụng biểu diễn cho giá trị tuyệt đối |ɛi| của ɛi ,
a̅i được biểu diễn dưới dạng CI.
Ý tưởng chính của phương pháp này như sau:
 Sử dụng một noise symbols mới ɛi+1 ∈ [0 , 1] để thay cho giá trị tuyệt
đối của |ɛi| (ɛi+1 = |ɛi| ).
 Giá trị xấp xỉ của x2
theo phương pháp tính xấp xỉ Chebyshev sẽ được
tính bằng giá trị tuyệt đối của các noise symbols.
 Với x ∈ (−1,1) , Giá trị sấp xỉ Chebyshev của x2
và x|x| lần lượt như
sau:
 |x| −
1
4
≤ x2
= |x2| < |x|
19
 x −
1
4
≤ x|x| ≤ x +
1
4
Giá trị sấp xỉ Chebyshev của x2
và x|x| được mô tả cụ thể ở biểu đồ ở hình
1. Tương tự nếu áp dụng cho noise symbols ɛ sẽ tìm được giá trị xấp xỉ ɛ 2
và
ɛ|ɛ| lần lượt như sau:
 ɛ 2
= |ɛ||ɛ| = |ɛ| + (−
1
4
, 0)
 ɛ|ɛ| = ɛ + (−
1
4
,
1
4
)
Hình 1: Đồ thị biểu diễn giá trị xấp xỉ Chebyshev của x2
và x|x| [28].
Định nghĩa 2.4.2: Biểu diễn hai số x, y dưới dạng C IA như sau:
ẋ = a̅0 + ∑ a̅iɛi
n
i=1
+ ∑ a̅i+nɛi+n
n
i=1
+ a̅2n+1ɛ⫨
ẏ = b̅0 + ∑ b̅iɛi
n
i=1
+ ∑ b̅i+nɛi+n
n
i=1
+ b̅2n+1ɛ⫨
Với c̅ ∈ [−1 , 1]. Các phép toán của C IA gồm { + , − , × ,÷ } như sau :
ẋ + ẏ = (a̅0 + b̅0) + ∑(a̅i + b̅i)ɛi
2n
i=1
+ (c̅ a̅2n+1 + c̅ b̅2n+1) ɛ⫨
ẋ − ẏ = (a̅0 − b̅0) + ∑(a̅i − b̅i)ɛi
2n
i=1
+ (c̅ a̅2n+1 + c̅ b̅2n+1) ɛ⫨
20
ẋ × ẏ = K0 + K1ɛi + K2ɛi+n + Kɛ⫨ .Với { + , − , × } sử dụng của CI
và K0, K1, K2, K được tính theo công thức sau :
K0 = a̅0b̅0 + ∑(a̅ib̅i (−
1
4
, 0) + a̅ib̅i+n(−
1
4
,
1
4
)
n
i=1
+ b̅ia̅i+n (−
1
4
,
1
4
)
+ a̅i+nb̅i+n(0,
1
4
))
K1 = ∑(a̅0b̅i + a̅ib̅0 + b̅ia̅i+n + a̅i+nb̅i)
n
i=1
K2 = ∑(a̅0b̅i+n + a̅i+nb̅0 + a̅ib̅i + a̅i+nb̅i+1)
n
i=1
K = (c̅ a̅0b̅2n+1 + c̅ b̅0a̅2n+1) + ∑ ∑ c̅ a̅ib̅i
n
j=1,i # j
n
i=1
+ ∑ ∑ c̅ a̅ib̅i+n
n
j=1,i # j
+ ∑ c̅ a̅ib̅2n+1
n
i=1
n
i=1
+ ∑ ∑ c̅ a̅i+nb̅i
n
j=1,i # j
n
i=1
+ ∑ ∑ c̅ a̅i+nb̅i+n
n
j=1,i # j
n
i=1
+ ∑ c̅ a̅i+nb̅2n+1 + c̅ a̅2n+1b̅2n+1
n
i=1
ẋ ÷ ẏ = ẋ ×
1
ẏ
nếu 0 ∉ tham chiếu của ẏ
21
Chú ý chỉ số ɛ⫨ được lan truyền từ nguồn không xác định trước và hệ số
của nó được tính bằng cách nhân với hệ số khác với c̅ = [−1,1]. Và
1
ẏ
được tính
bằng phương pháp xấp xỉ Chebyshev.
Nhận xét: Phương pháp tính sấp xỉ Chebyshev được nhiều tác giả giới thiệu
trước đây như Stolfy, Miyajima ..., áp dụng không chỉ với một chỉ số noise
symbols mà mới nhiều chỉ số noise symbols khác nhau. Với phương pháp này
giá trị của x2
sẽ được tính bằng giá trị trị tuyệt đối của các noise symbols. C IA
phát huy được hiệu quả trong các tính toán sử dụng cùng một biểu tượng noise
symbols để tăng hiệu quả trong các tính toán lớn như các đa thức Taylor.
Ví dụ 2.4.3 Với x ∈ ( −3 , 1) tính f = x3
− 3x + x2
. Biến x được biểu
diễn dưới dạng C IA như sau: ẋ = −1 + 2ɛ
ḟ = x3̇ − 3ẋ + x2̇
= (−1 + 2ɛ) × (−1 + 2ɛ) × (−1 + 2ɛ) − 3(−1 + 2ɛ) + (−1 + 2ɛ) × (−1 + 2ɛ)
= (1 − 4ɛ + 4ɛ2) × (−1 + 2ɛ) − (3 + 6ɛ) + (1 − 4ɛ + 4ɛ2)
= (1 − 4ɛ + 4(|ɛ| + (−
1
4
, 0))) × (−1 + 2ɛ) − (3 + 6ɛ)
+ (1 − 4ɛ + 4(|ɛ| + (−
1
4
, 0)))
= (1 − 4ɛ + 4|ɛ| + (−1,0)) × (−1 + 2ɛ) − (3 + 6ɛ) + (1 − 4ɛ + 4|ɛ| + (−1,0))
= ((0,1) − 4ɛ + 4|ɛ|) × (−1 + 2ɛ) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|)
= ((−1,0) + (0,2)ɛ + 4ɛ − 8ɛ2
− 4|ɛ| + 8|ɛ|ɛ) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|)
= ((−1; 0) + (0; 2)ɛ + 4ɛ − 8 (|ɛ| + (−
1
4
, 0)) − 4|ɛ| + 8 (ɛ + (−
1
4
,
1
4
)))
− (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|)
= ((−1,0) + (0,2)ɛ + 4ɛ − 8|ɛ| + (−2; 0) − 4|ɛ| + 8ɛ + (−2; 2)) − (3 + 6ɛ)
+ ((0,1) − 4ɛ + 4|ɛ|)
= ((−3,4) + (12,4)ɛ − 12|ɛ| ) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|)
= (0,8) + (2,4)ɛ − 8|ɛ|
22
Áp dụng cách tính giá trị của |ɛ| trong hai khoảng lần lượt là ɛ ∈ [−1 ,0]
và ɛ ∈ [0 , 1] :
 Với ɛ ∈ [−1, 0], ḟ = (0, 8) + (2, 4)ɛ + (8, 8)ɛ = (0, 8) +
(10, 12)ɛ. Kết quả của ḟ = (−12, 8)
 Với ɛ ∈ [0 , 1], ḟ = (0, 8) + (2, 4)ɛ − (8, 8)ɛ = (0, 8) +
(−6, −4)ɛ. Kết quả của ḟ = (−6, 8)
 Với ɛ ∈ [−1 ,1] kết quả của ḟ = (−6; 8) ∪ (−12; 8) = (−12; 8) .
Trong khi đó kết quả của CI, AF1 và AF2 lần lượt như sau:
CI: f ∈ (−33,27)
AF1: f ∈ (−25, 31)
AF2: f ∈ (−13 ,19)
Khi tính f = x3
− 3x + x2
với x = −1 + 2ɛ với kĩ thuật AF2 thì x3
sẽ được
đưa vào ɛ⫨. Trong khi với kĩ thuật C IA sẽ được tính xấp xỉ bằng ɛ để cho phép
giữ được giá trị ban đầu của x. Như vậy C IA sẽ giữ được giá trị ban đầu với các
biểu thức có bậc số lớn (...bậc ≥ 3) , còn AF2 chỉ giữ được giá trị ban đầu của
các biểu thức có bậc bằng hai.
23
Chương 3. SMT SOLVER VÀ SMT SOLVER raSAT
Kiểm chứng các hệ thống phần mềm hoặc phần cứng bằng cách tự động
phân tích và chứng minh cần các công cụ hiệu quả và có khả năng giải quyết
được các bài toán phức tạp. SAT Solver là công cụ tốt cho việc giải logic mệnh
đề. SAT Solver có thể giải hiệu quả với hàng triệu biến trong một mệnh đề và có
thể tìm được lời giải tốt nhất. SMT Solver được coi là sự mở rộng của SAT đối
với từng lý thuyết (Theory) nhất định. SMT Solver ứng dụng trong việc giải các
công thức biểu diễn dưới dạng logic vị từ (First order logic – FOL) thay vì logic
mệnh đề của SAT Solver. Cả SAT Solver và SMT Solver đều đóng vai trò là
công cụ nền (backed engine) trong các công cụ kiểm chứng phần mềm. Phần
tiếp theo của luận văn sẽ trình bày cụ vể SAT Solver và SMT Solver.
3.1. SAT Solver
SAT (satisfiability) là công cụ chứng minh một bài toán logic mệnh đề là
SAT hoặc UNSAT [11]. Bài toán SAT là bài toán chứng minh tính thỏa mãn
hay không thỏa mãn (SAT/UNSAT) của một công thức mệnh đề logic. Các công
cụ chứng minh tự động cho bài toán này gọi là SAT Solver. SAT Solver được
ứng dụng trong việc giải các bài toán trí tuệ nhân tạo và xây dựng các công cụ
kiểm thử tự động trong các phần mềm. SAT Solver đóng vai trò như các công cụ
nền hỗ trợ cho các SMT Solver (SAT Modul Thoeries), là các công cụ chứng
minh tính thỏa mãn của các công thức logic xây dựng trên lý thuyết logic vị từ
cấp 1. SAT Solver có thể giải được biểu thức logic với hàng trăm ngàn hoặc
thậm chí hàng triệu biến trong một mệnh đề dưới dạng chuẩn tắc hội (CNF-
Conjunctive Normal Form) với khoảng thời gian hợp lý. Những vấn đề cần thiết
lập khi sử dụng SAT để giải quyết bao gồm:
 Mã hóa bài toán theo biểu thức logic mệnh đề.
 Chuyển đổi biểu thức sang dạng CNF(conjunctive normal form).
 Sử dụng SAT Solver để tìm mối quan hệ của các biến logic.
24
 Đưa vào một bộ giải mã để tạo ra lời giải.
Problem
Encoder
CNF
SAT Solver
satisfying
assigment
Decoder
Solution
Hình 2: Mô hình giải quyết vấn đề bằng SAT.
Ví dụ 3.1.1: Cho một công thức mệnh đề dưới dạng chuẩn tắc hội như sau
F =(P ˅ Q ˅ R)˄ (¬P ˅ Q ˅ R ) trong đó P, Q, R là các biến logic mệnh đề
(mang giá trị True hoặc False). Một công thức logic mệnh đề là SAT
(satisfiability) khi tồn tại một bộ giá trị (true/false) trên các biến logic mệnh đề
làm cho công thức đó là True. Ngược lại công thức đó là UNSAT
(unsatisfiability) khi và chỉ khi mọi bộ giá trị (true/false) công thức mệnh đề đó
luôn nhận giá trị False. Như ví dụ trên công thức F là SAT với bộ giá trị
P=True, Q=False, R= True thì kết quả F= True.
3.2. SMT Solver
Các hệ thống hiện nay được thiết kế ngày càng phức tạp, do đó cần có công
cụ hiệu quả và phức tạp hơn để đảm bảo tính chính xác là cần thiết. SMT Solver
(satisfiability modulo theories) là một giải pháp hiệu quả cho vấn đề trên. SMT
Solver được sử dụng giải quyết nhiều vấn đề thực tế như các bài toán sinh ca
kiểm thử tự động, bài toán lập lịch, kiểm thử mô hình...
SMT là vấn đề quyết định tính thỏa mãn của công thức được biểu diễn trên
nền tảng lý thuyết Logic vị từ cấp I (First order logic) [11]. Có thể coi SMT là phần
mở rộng của SAT trong lý thuyết logic vị từ cấp I. Để duy trì quá trình quyết định
lý thuyết bậc nhất thường được giới hạn không chứa các phép toán lượng tử tồn tại
(∃) và với mọi (∀). Cũng tương tự SAT, việc chỉ ra một phép gán M thỏa mãn
công thức đầu vào F trên nền tảng Logic vị từ cấp I được gọi là SMT solver.
25
Ví dụ 3.2.1: Cho công thức sau. Chứng minh F là giải được (SAT) hoặc
không giải được (UNSAT).
F = (x ∈ (−1,3) ˄ y ∈ (−1,3 ))˄ (𝑥3
− 𝑥2
+ 𝑦 − 1.99)
F là SAT khi tồn tại giá trị x và y thoải mãn công thức trên. Ngược lại nếu
mọi giá trị x, y đều không thoải mãn công thức trên thì kết luận F là UNSAT .
Khác với SAT chỉ tập chung vào giải các mệnh đề logic thì SMT lại tập
trung vào giải các bài toán tự nhiên hơn như các ràng buộc, công thức tính
toán... Các bước để giải bài toán SMT gồm:
 Giải công thức dạng trừu tượng của SMT với SAT solver.
 Quyết định thủ tục cho nền tảng lý thuyết T- ký hiệu là DPT bằng
cách kiểm tra tính nhất quán (consistency) của các atoms được giải
bởi SAT solver hoặc suy luận kết quả từ các atoms này.
Cụ thể có 2 cách tiếp cận để giải các bài toán ở mức cao là “Eager
approach” và “Lazy approach”.
Trong đó “Eager approach” giải bằng cách chuyển đổi bài toán ở dạng
SMT Solver về bài toán ở dạng SAT Solver, bài toán sẽ được chuyển về dạng
mệnh đề logic và sử dụng SAT Solver để tìm lời giải. Cách tiếp cận này có thể
tìm được tất cả các lời giải có thể, đặc biệt có thể tìm được lời giải tốt nhất cho
bài toán. Tuy nhiên việc chuyển đổi sẽ vô cùng phức tạp và khó khăn, chi phí
cho việc chuyển đổi với các bài toán lớn và phức tạp sẽ rất tốn kém.
SMT formular F
Encoder SAT- Solver
F’
Sat / UnSat
Hình 3: Phương pháp “Eager approach”.
26
Trong khi đó “Lazy approach” là cách tiếp cận khác bằng cách gắn một thủ
thục ra quyết định vào SAT solver gọi là T-Solver để đưa ra các quyết định để
giải bài toán. Đặc điểm của cách tiệp cận này là modul hóa và mềm dẻo để giải
các bài toán. Phương pháp tìm kiếm không theo một quy định nhất định. Một số
công cụ sử dụng phương pháp này gồm: raSat, OpenSMT, Sateen, SVC,
Simplify, tSAT, veriT, Yices, Z3...
SMT formular F
Extra struct
SAT- Solver T- Solver
Not good
Candidate model
UnSat Sat
Hình 4: Phương pháp “Lazy approach” .
3.3. Thủ tục DPLL
3.3.1 Thủ tục DPLL cho SAT
Thủ tục DPLL là viết tắt của Davis–Putnam–Logemann–Loveland (DPLL)
[22]. Được đặt theo tên của bốn tác giả Martin Davis, Hilary Putnam, George
Logemann, Donald W. Loveland được giới thiệu vào năm 1960. Thủ tục DPLL
sử dụng để mô tả các bước để giải bài toán SAT. Thủ tục DPLL sử dụng tìm lời
giải cho các công thức logic mệnh đề dạng chuẩn tắc hội (CNF).
Thuật toán DPLL là thuật toán khá phổ biến và được sử dụng trong hầu hết
các máy giải SAT. Mục đích chính của nó là tìm ra một phép gán M thỏa mãn
công thức F tồn tại ở dạng CNF. Trong đó:
 Một literal l là được định nghĩa trong M nếu l nhận giá trị đúng hoặc
sai trong M. Ngược lại, l không được định nghĩa trong M.
27
 Một mệnh đề là đúng trong M nếu tồn tại một literal thuộc mệnh đề
nhận giá trị đúng trong M.
 Một công thức F là đúng trong M hoặc SAT trong M nếu tất cả các
mệnh đề trong của F đều nhận giá trị đúng trong M. Khi đó ta nói M
là mô hình của F ký kiệu là M M ⊨ F.
Tư tưởng chính của thủ tục DPLL phát triển dựa trên thuật toán tìm kiếm
quay lui theo chiều sâu. Thuật toán tìm kiếm quay lui là chiến lược tìm kiếm lời
giải cho các bài toán có ràng buộc bằng cách thử từng khả năng cho tới khi tìm
được lời giải đúng. Khi tới một bước thấy không thỏa mãn thì thực hiện quay
lui lại bước trước để lựa chọn bước tiếp theo. Kết thúc tìm kiếm khi không tìm
thấy lựa chọn nào thỏa mãn. Thủ tục DPLL mô tả biểu thức logic dưới dạng cây
trong đó mỗi mệnh đề con của biểu thức là một lá (note) của cây. Tiến hành gán
giá trị cho mỗi note, giá trị này sẽ sử dụng để tìm kiếm các giá trị cho các lá
(note) tiếp theo của cây.
Thuật toán:
Input: S = C0 = {C1; . . . ; Ck} với Ci = L1 ˅ L2 ˅ . . . ˅ Li .
 Set C0 là gốc (Root) của cây
 Áp dụng các suy luận (rules) tại mỗi lá để mở rộng cây.
 Một nhánh của cây không thể mở rộng khi hoặc □ ∈ Si . □ là mệnh
đề rỗng.
 Nếu Si = { } thì S giải được (satisfiable) và dừng thuật toán
 Nếu □ ∈ Si ở mọi nhánh của cây thì kết luận không giải được
(unsatisfiable)
28
Cơ chế hoạt động của thủ tục DPLL được mô tả ở hình dưới.
Hình 5: Sơ đồ cơ chế hoạt động của thủ tục DPLL.
Trong đó, dl là biến kiểm tra để quyết định có quay lui không.
Thủ tục DPLL áp dụng luật unit propagate để suy luận phép gán tiếp theo
từ phép gán M hiện tại và công thức CNF hiện tại F. Luật decide được áp dụng
khi không thể xác định được giá trị của một literal trong công thức F thông qua
luật unit propagate. Luật Fail và luật backtrack được áp dụng khi xảy ra trường
hợp không thỏa mãn khi một hoặc nhiều mệnh đề của công thức CNF F nhận giá
trị sai trong phép gán hiện tại M. Nếu công thức dạng CNF F là UNSAT luật fail
được áp dụng khi toàn bộ các literal trong công thức F đều được xác định.
Ngược lại thì ta áp dụng luật backtrack.
Các luật được sử dụng trong thuật toán gồm:
 Luật Unit Propagate
M ║F, C ˅ l ⟹ M l ║F , C ˅ l Nếu {
M ⊨ ¬C
l được định nghĩa trong M
Luật Unit Decide
M║F ⟹ M l 𝑑
║F Nếu {
l hoặc ¬l xuất hiện trong một mệnh đề F
l chưa được định nghĩa trong M
29
Luật Fail
M ║F, C ⟹ FailState Nếu {
M ⊨ ¬C
M không còn chứa literal quyết định nào
Ví dụ 3.1.3: Cho công thức F = (¬l1˅ l2 ) ˄ (¬l3˅ ¬l4 ) ˄ (l2˅ ¬l3 ˅ l4 ) .
Áp dụng thủ tục DPLL để tìm một mô hình M thỏa mãi công thức F:
Ѳ ║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Decide)
𝑙1
𝑑
║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Unit Propagate)
𝑙1
𝑑
l2║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Decide)
𝑙1
𝑑
l2 𝑙3
𝑑
║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Unit Propagate)
𝑙1
𝑑
l2 𝑙3
𝑑
║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Decide)
𝑙1
𝑑
l2 𝑙3
𝑑
¬l4║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Backjump)
𝑙1
𝑑
l2 ¬𝑙3
𝑑
║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ Final state
Như vậy với phép gán M ( l1 = true , l2 = true , l3 = false , l4 = tùy ý)
thì tất cả các mệnh đề trong F đều đúng.
Ngoài 4 luật cơ bản kể trên, thuật toán DPLL với việc học mệnh đề (clause
learning) còn bổ sung thêm hai luật mới luật learn và luật forget. Trong đó luật
learn dùng để đưa ra các luật mới dựa theo các literal được lưu trong stack để
giải quyết xung đột. Và luật forget dùng để quên các luật không cần thiết.
Luật Learn
M ║F ⟹ M ║F ˄C Nếu {
F ⊨ ¬C
Tất cả các phần tử của C đề xuất hiện trong F
Luật Forget
M ║F ˄C ⟹ M ║F Nếu F ⊨ ¬C
Trong luật Backtrack mệnh đề C ˅ l′
là mệnh đề xung đột (conflict). Thì
mệnh đề xung đột được học bằng luật learn để tránh xảy ra trường hợp xung đột
tương tự. Luật forget được áp dụng để giải phóng bộ nhớ bằng cách loại bỏ mệnh
đề C trong trường hợp nhiều lần mệnh đề C là nguyên nhân xảy ra xung đột.
Ví dụ 3.1.4: Cho công thức F = (¬l1˅ l2 ) ˄ (l2˅ ¬l3 ˅ l4 ) ˄ (¬l3˅ ¬l4 ) .
Áp dụng thủ tục DPLL để tìm một mô hình M thỏa mãi công thức F:
30
Ѳ ║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Decide )
𝑙1
𝑑
║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Unit Propagate)
𝑙1
𝑑
l2║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Decide)
𝑙1
𝑑
l2 𝑙3
𝑑
║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Unit Propagate)
𝑙1
𝑑
l2 𝑙3
𝑑
║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Decide)
𝑙1
𝑑
l2 𝑙3
𝑑
¬l4║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Backjump)
𝑙1
𝑑
l2║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ), (¬l1˅ l3 ) ⟹ (Learn)
𝑙1
𝑑
l2 l3 ║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ), (¬l1˅ l3 ) Final
state
Như vậy với phép gán M ( l1 = true , l2 = true , l3 = false , l4 = tùy ý)
thì tất cả các mệnh đề trong F đều đúng
3.3.1 Thủ tục DPLL cho SMT
Thủ tục DPLL để giải các bài toán SMT là một biến thể của thủ tục DPLL
cho SAT trên một nền tảng lý thuyết T nào đó và được viết tắt là DPLL(T) [7].
Thủ tục DPLL(T) là giải pháp cải thiện tốc độ bằng cách thực hiện bước quay
lui hiệu quả, sử dụng để tìm lời giải cho các bất đẳng thức hoặc đẳng thức tuyến
tính được phát triển dựa trên thuật toán DPLL. Trong DPLL(T) sử dụng T–
solver là một thủ tục cho phép tìm kiếm các hạn chế (ràng buộc) của các phần tử
trong một biểu thức T. T–Solver duy trì trạng thái của các phần tử trong biểu
thức T nhằm tạo ra các trạng thái mới của mỗi phần tử trong T. Hiệu quả của
DPLL(T) phụ thuộc vào hiệu quả của T – Solver.
T – Solver sẽ kiểm tra trạng thái mới có phù hợp không và thực hiện quay
lui nếu không phù hợp. Để tìm trạng thái mới của các phần tử trong T cần sử
dụng phương pháp lan truyền (theory propagation). Phương pháp lan truyền sử
dụng trạng thái hiện tại để tìm trạng thái mới. Để đánh giá được trạng thái mới
có phù hợp không cần phải đánh giá được sự xung đột (conflict) giữa các trạng
thái hiện tại và trạng thái cần mới (trạng thái cần kiểm tra phù hợp). Các trạng
31
thái phù hợp sẽ được lưu vào stack được kí hiệu là tập α, tập này dùng để thực
hiện quay lui (backtrack) khi cần.
Các bước chính thực hiện của T-Solver gồm :
 Assert(γ) xác nhận trạng thái hiện tại đã giải được hay chưa
Xác nhận trạng thái γ là tập con của Γ. Khi đó có thể SAT(Γ) hoặc
UNSAT(Γ) với Γ là một phần tử trong α. Khi đó (γ) được thêm vào tập α (tập
các trạng thái phù hợp ) mà không có xung đột hoặc không được thêm vào khi
xảy ra xung đột .
 Check() kiểm tra phù hợp
Kiểm tra tập α (tập các trạng thái phù hợp) có phù hợp không. Nếu phù hợp
kết luận SAT, ngược lại trả kết quả UNSAT. Phần tử Γ ở bước Assert được
thêm vào tập α khi đó nếu tập α được check nếu kết quả phù hợp Γ sẽ được thêm
vào tập α và ngược lại Γ sẽ không được thêm vào tập α .
 Backtrack() quy lui lại trạng thái phù hợp
Quay lui từ trạng thái không phù hợp về trạng thái ở đầu(top) của stack Ѳ.
 Propagate() lan truyền, tìm các trạng thái phù hợp
Cho phép thực hiện lan truyền (propagation) tới các trạng thái mới.
T –Solver sẽ chia bài toán ban đầu thành các bài toán nhỏ hơn bằng cách sử
dụng các luật. Công việc chia nhỏ bài toán sẽ kết thúc khi không thể chia được
nữa. Cách chia bài toán sẽ sử dụng các luật cụ thể cho từng bài toán cụ thể. Mỗi
khi thêm một bài toán nhỏ vào stack sẽ kiểm tra có xung đột với bài toán đã
được thêm vào stack trước đó không. Nếu có xung đột sẽ thực hiện quay lui tới
trạng thái trước đó. Công việc kết thúc khi chứng minh bài toán là SAT hoặc
UNSAT. Các bước cụ thể gồm:
 Bước 1: Khởi tạo trạng thái của stack : Ѳ
 Bước 2: Thêm từng bài toán con vào stack và kiểm tra xung đột.
 Bước 3: Nếu không có xung đột thêm bài toán con đó vào stack.
 Bước 4: Nếu có xung đột thì thực hiện quay lui lại trạng thái trước.
32
 Bước 5: T-Solver kết thúc khi tất cả các phần tử trong stack không có
xung đột.
3.4. SMT Solver raSAT
SMT Solver raSAT [26] giới thiệu vào năm 2012. raSAT ứng dụng trong
việc giải các ràng buộc bằng phương pháp tính xấp xỉ dựa trên các kĩ thuật tính
toán khoảng (Interval Arithmetic) và kiểm thử kết quả dựa trên thủ tục DPLL(T)
đã được giới thiệu ở phần 3.3.1.
SMT Solver raSAT ứng dụng trong việc giải các ràng buộc trên tập số thực,
với các ràng buộc số nguyên raSAT dễ dàng ứng dụng bằng một số thay đổi như
chặn việc phân rã khoảng với giới hạn là 1. raSAT đã tham gia cuộc thi “SMT
Competition 2016” dành cho các công cụ SMT Solver và SAT Solver với hai
dạng là QF NRA và QF NIA.
Đầu vào của raSAT là các ràng buộc biểu diễn dưới dạng F = I ˄ P. Trong
đó I là các ràng buộc tính toán khoảng I = ( x1 ∈ ( a1, b1) ˄ … ˄ xn ∈ ( an, bn).
Và ràng buộc đa thức P biểu diễn dưới dạng ⋀ 𝑓𝑖( x1, … , xn)m
i=1 > 0 , P là
phép hội của các hàm 𝑓𝑖. Ràng buộc tính toán khoảng I sẽ được phân rã thành các
ràng buộc nhỏ hơn hoặc loại bỏ các miền UNSAT bằng cách sử dụng SAT
Solver. Sau quá trình trên ràng buộc tính toán khoảng I sẽ ở dưới dạng chuẩn tắc
hội (CNF). Các giá trị 𝑓𝑖
𝑢
, 𝑓𝑖
𝑙
lần lượt là giá trị cận trên và cận dưới được tính bởi
các kĩ thuật tính toán khoảng. Giá trị của P được định nghĩa như sau:
 P kết luận là 𝐼𝐴 − 𝑉𝐴𝐿𝐼𝐷 trên I nếu ∀𝑖 ∈ (1, 𝑚), 𝑓𝑖
𝑙
( x1, … , xn) > 0
 P kết luận là 𝐼𝐴 − 𝑈𝑁𝑆𝐴𝑇 trên I nếu ∃𝑖 ∈ (1, 𝑚), 𝑓𝑖
𝑢
( x1, … , xn) ≤ 0
 P kết luận là 𝐼𝐴 − 𝑆𝐴𝑇 trên I nếu (∃𝑖 ∈ (1, 𝑚), 𝑓𝑖
𝑢
( x1, … , xn) ≤ 0)
˄ (⋀ 𝑓𝑖( x1, … , xn)m
i=1 ) > 0
Ví dụ 3.4.1: Cho ràng buộc tính toán khoảng I = x ∈ (0,2) ˄ y ∈ (1,3) và
ba ràng buộc đa thức:
 (𝑓1 = 𝑥5
− 3𝑥2
𝑦 + 𝑦3
+ 20) > 0
33
 (𝑓2 = 𝑥𝑦2
− 2𝑥𝑦 − 𝑦3
− 7) > 0
 (𝑓3 = 𝑥2
𝑦3
− 𝑦4) > 0
Áp dụng phương pháp tính toán khoảng C AI được khoảng giá trị của các
đa thức như sau:
 𝑓1 ∈ (0.9375, 67.75)
 𝑓2 ∈ (−38.75, 0)
 𝑓3 ∈ (−131.5, 94.125)
Như vậy có thể kết luận:
 𝑓1 > 0 𝐼𝐴 − 𝑉𝐴𝐿𝐼𝐷 𝑡𝑟ê𝑛 𝐼
 𝑓2 > 0 𝐼𝐴 − 𝑈𝑁𝑆𝐴𝑇 𝑡𝑟ê𝑛 𝐼
 𝑓3 > 0 𝐼𝐴 − 𝑆𝐴𝑇 𝑡𝑟ê𝑛 𝐼
Kết quả của ràng buộc đa thức P được mô tả như hình dưới:
Khoảng giá trị của đa thức tính
bằng phương pháp tính toán khoảng
kxxxf n ),...,,( 21
k
k
k
IA-UNSAT
IA-VALID
IA-SAT
Hình 6: Kết quả của ràng buộc đa thức.
Giá trị cận trên fi
u
và cận dưới fi
l
được tính bằng các kĩ thuật tính toán
khoảng đã được giới thiệu ở phần trên gồm AF, AF1, AF2 và C AI. Nếu P có
giá trị là IA-VALID hoặc IA-UNSAT thì kết luận P lần lượt là SAT hoặc
UNSAT. Tuy nhiên nếu P là IA-SAT thì chỉ có thể kết luận là không giải được
và chuyển sang bước kiểm thử để tìm kết quả.
34
Kiểm thử kết quả bằng cách sinh ra bộ dữ liệu kiểm thử ⊝i từ dải giá trị
đầu vào ban đầu x1 ∈ ( a1, b1) ˄ … ˄ xn ∈ ( an, bn) .Với Ѳ(I) = ( a1, b1) ×
. . .× ( an, bn) thì giá trị của P được định nghĩa như dưới.
 P kết luận là Test-SAT trên I nếu trong P tồn tại Ѳ ∈ ⊝
 P kết luận là Test-UNSAT trên I nếu trong P không tồn tại Ѳ nào ∈ ⊝
Ví dụ 3.4.2: Trong ví dụ 3.4.1 I = x ∈ (0,2) ˄ y ∈ (1,3) và (f3 = x2
y3
−
y4) > 0 là IA –SAT nên chuyển sang bước kiểm thử với hai bộ dữ liệu kiểm thử
⊝1 và ⊝2 như dưới:
 Với bộ dữ liệu kiểm thử ⊝1 { x = 0.5, x = 1.2, 𝑦 = 1.5, 𝑦 = 2.5 }
x = 0.5, 𝑦 = 1.5 f3 = −4.21875
x = 0.5, 𝑦 = 2.5 f3 = −35.15625
x = 1.2, 𝑦 = 1.5 f3 = −0.2025
x = 1.2, 𝑦 = 2.5 f3 = −16.5625
Như vậy f3 > 0 𝑇𝑒𝑠𝑡 − 𝑈𝑁𝑆𝐴𝑇 với bộ dữ liệu ⊝1
 Với bộ dữ liệu kiểm thử ⊝2 { x = 0.8, x = 1.7, 𝑦 = 1.5, 𝑦 = 2.5 }
x = 0.8, 𝑦 = 1.5 f3 = −2.9025
x = 0.8, 𝑦 = 2.5 f3 = −29.0625
x = 1.7, 𝑦 = 1.5 f3 = 𝟐. 𝟓𝟑𝟏𝟐𝟓
x = 1.7, 𝑦 = 2.5 f3 = −3.90625
Như vậy f3 > 0 𝑇𝑒𝑠𝑡 − 𝑆𝐴𝑇 với bộ dữ liệu x = 1.7, 𝑦 = 1.5 . Có thể kết
luận x ∈ (0,2) ˄ y ∈ (1,3) ˄ (f3 = x2
y3
− y4) > 0 là SAT.
35
Kết quả kiểm thử của ràng buộc đa thức P được mô tả như hình dưới:
Ca kiểm thử SAT
Ca kiểm thử UNSAT
r
r
Test-UNSAT
Test-SAT
rxxxf n ),...,,( 21
Hình 7: Kết quả kiểm thử của ràng buộc đa thức.
Như vậy bước kiểm thử sẽ dừng lại khi kết quả là Test-SAT và kết luận là
SAT. Ngược lại nếu kết quả là Test-UNSAT raSat sẽ sử dụng bộ Domain
Decomposition để phân rã dải giá trị hiện tại thành các dải giá trị nhỏ hơn. Có ba
cách thức phân rã từ giải giá trị ban đầu thành các dải giá trị nhỏ hơn gồm:
 Phân rã cân bằng (balanced)
 Phân rã đơn hiệu (monotonic)
 Phân rã đánh dấu (tick).
Phân rã cân bằng (balanced) sẽ thực hiện tách từ một khoảng ban đầu
thành hai khoảng nhỏ hơn. Với khoảng ban đầu x ∈ (a, b) sẽ được phân rã thành
hai khoảng con gồm 𝑥1 ∈ (a,
𝑏+𝑎
2
) và 𝑥1 ∈ (
𝑏+𝑎
2
, 𝑏).
Ví dụ 3.4.3: x ∈ (0,2) phân rã thành hai khoảng con 𝑥1 ∈ (0,1) và 𝑥2 ∈
(1,2). Các mệnh đề được thêm mới vào SAT Solver từ hai khoảng con này gồm:
x ∈ (0,2) ⟹ x ∈ (0,1) ˅ x ∈ (1,2)
˄ x ∈ (0,1) ⟹ x ∈ (0,2)
˄ x ∈ (1,2) ⟹ x ∈ (0,2)
˄ (¬( x ∈ (0,1))˅ ¬( x ∈ (1,2))
Phân rã đơn điệu (monotonic) bằng cách sử dụng một hệ số biến đổi δ để
thực hiện các bước nhảy từ khoảng ban đầu thành các khoảng con. Có hai
36
phương thức phân rã đơn điệu gồm phân rã đơn điệu tăng dần kí hiệu là
𝑃𝑜𝑠𝑓 và phân rã đơn hiệu giảm dần kí hiệu là 𝑁𝑒𝑡𝑓. Cho ràng buộc đa thức
𝑓( x1, … , xn) với biến xi (1 ≤ 𝑖 ≤ 𝑘)
 Phân rã đơn điệu tăng dần 𝑃𝑜𝑠𝑓
∀𝑖 𝑥𝑖
′
≥ 𝑥𝑖
′′
thì 𝑓( x1, … , 𝑥𝑖
′
, … , xn) ≥ 𝑓( x1, … , 𝑥𝑖
′′
, … , xn)
 Phân rã đơn hiệu giảm dần 𝑁𝑒𝑡𝑓
∀𝑖 𝑥𝑖
′
≤ 𝑥𝑖
′′
thì 𝑓( x1, … , 𝑥𝑖
′
, … , xn) ≤ 𝑓( x1, … , 𝑥𝑖
′′
, … , xn)
Ví dụ 3.4.4: x ∈ (0,2) và δ=0.25 phân rã đơn điệu giảm dần thành hai
khoảng con gồm 𝑥1 ∈ (0,0.25) và 𝑥2 ∈ (0.25,2) hoặc phân rã đơn điệu tăng
dần thành hai khoảng con gồm 𝑥1 ∈ (0,1.75) và 𝑥2 ∈ (1.75,2). Các mệnh đề
được thêm mới vào SAT Solver từ hai khoảng con này gồm
x ∈ (0, 2) ⟹ x ∈ (0, 0.25) ˅ x ∈ (0.25, 2)
˄ x ∈ (0, 0.25) ⟹ x ∈ (0,2)
˄ x ∈ (0.25, 2) ⟹ x ∈ (0,2)
˄ (¬( x ∈ (0, 0.25))˅ ¬( x ∈ (0.25, 2))
Hoặc
x ∈ (0, 2) ⟹ x ∈ (0, 1.75) ˅ x ∈ (1.75, 2)
˄ x ∈ (0, 1.75) ⟹ x ∈ (0,2)
˄ x ∈ (1.75, 2) ⟹ x ∈ (0,2)
˄ (¬( x ∈ (0, 1.75))˅ ¬( x ∈ (1.75, 2))
Nhận xét: Với cách thức phân rã cân bằng thì khoảng phân rã mới không
thể kiểm xoát được mà phụ thuộc vào giới hạn của khoảng ban đầu. Còn với
phân rã đơn điệu có thể điều chỉnh được khoảng thu được bằng cách điều chỉnh
hệ số biển đổi δ để thu được nhiều khả năng dẫn đến SAT hơn.
Phân rã đánh dấu (tick): Phân rã khoảng ban đầu thành hai hoặc ba
khoảng con dựa vào điểm dánh đấu k trong khoảng ban đầu và số biến đổi δ . Từ
khoảng ban đầu x ∈ (a, b), điểm đánh đấu t ∈ (a, b) và hệ số biến đổi δ sẽ được
phân rã thành các khoảng con 𝑑 𝑝 , 𝑑 𝑛, 𝑑 𝑝𝑛 như sau:
37
𝑑 𝑝(x ∈ (a, b)) = {
(x ∈ (a, t) ˅ x ∈ (t, t + δ)˅ x ∈ (t + δ, b) ) 𝑛ế𝑢 𝑡 + δ < 𝑏
x ∈ (a, t)˅ x ∈ (t, b)
𝑑 𝑛(x ∈ (a, b)) = {
(x ∈ (a, t − δ) ˅ x ∈ (t − δ, t)˅ x ∈ (t, b) ) 𝑛ế𝑢 𝑡 − δ > 𝑎
x ∈ (a, t)˅ x ∈ (t, b)
𝑑 𝑝𝑛(x ∈ (a, b)) =
{
( x ∈ (a, t + 0.5δ)˅ x ∈ (t + 0.5δ, b) ) 𝑛ế𝑢 𝑡 − 0.5δ ≤ a
( x ∈ (a, t − 0.5δ)˅ x ∈ (t − 0.5δ, b) ) 𝑛ế𝑢 𝑡 + 0.5δ ≥ b
( x ∈ (a, t − 0.5δ)˅ x ∈ (t − 0.5δ, t + 0.5δ) ˅ x ∈ (t + 0.5δ, b) )
Ví dụ 3.4.5: x ∈ (0,2), t=1.2 và δ = 0,25 sẽ được phân rã thành các khoảng
con như sau x1 ∈ (0,1.2) , x2 ∈ (1.2, 1.45) , x32 ∈ (1.45, 2). Các mệnh đề
được thêm mới vào SAT Solver từ hai khoảng con này gồm
x ∈ (0, 2) ⟹ x ∈ (0, 1.2) ˅ x ∈ (1.2, 1.45) ˅ x ∈ (1.45, 2)
˄ x ∈ (0,1.2) ⟹ x ∈ (0,2)
˄ x ∈ (1.2, 1.45) ⟹ x ∈ (0,2)
˄ x ∈ (1.45, 2) ⟹ x ∈ (0,2)
˄ (¬( x ∈ (0, 1.2))˅ ¬( x ∈ (1.2, 1.45))
˄ (¬( x ∈ (0, 1.2))˅ ¬( x ∈ (1.45,2))
˄ (¬( x ∈ (1.2, 1.45))˅ ¬( x ∈ (1.45,2))
Nhận xét: Với cách thức phân rã đánh dấu cho phép SAT Solve sử dụng giá
trị đánh dấu t như là một cách thử nghiệm để thu nhỏ tối đã các khoảng tìm kiếm
bằng trực quan.
Nếu sau khi áp dụng bộ Domain Decomposition được các dải giá trị mới
quá nhỏ sẽ áp dụng các luật dựa vào kinh nghiệm trong bộ Heuristic để loại bỏ
các dải giá trị này. Heuristic được áp dụng bằng cách sử dụng các quy tắc
heuristic để loại bỏ hộp. Một khi các quy tắc heuristic được sử dụng, raSAT kết
38
luận unknown khi SAT solver đưa ra UNSAT. Nếu chúng không bao giờ được
sử dụng, raSAT kết luận UNSAT khi điều tương tự xảy ra.
Kiến trúc của SMT Solver raSAT mô tả ở hình dưới:
Hình 8: Kiến trúc của SMT Solver raSat [26]
SMT Solver raSat sử dụng MiniSat2.2 là công cụ nền để giải bài toán SAT.
Mục đính của việc sử dụng SAT Solver là tìm được dải giá trị được kết hợp từ
các khoảng giá trị đầu vào của tất cả các biến ban đầu. Tiếp theo dải giá trị thu
được từ các biến đầu và sẽ được đánh giá bởi lý thuyết tính toán khoảng
(Interval Arithmetic - IA). Nếu IA đánh giá là IA-UNSAT thì dải giá trị này sẽ
gửi về bộ không giải được (UNSAT Core) trong lý thuyết lan truyền (Theory
Propagation) để tính toán lại dải giá trị nhỏ nhất để kết quả là IA-UNSAT. Các
dải giá trị thu được từ UNSAT Core sử dụng để loại bỏ các khoảng có kết quả
UNSAT khỏi dải giá trị hiện tại, kết quả sẽ được một dải giá trị mới đã loại bỏ
các miền là UNSAT. Nếu AI cho kết quả là IA-VALID thì raSAT sẽ kết thúc và
kết luận là SAT. Nếu kết quả là IA-SAT sẽ chuyển sang bước kiểm thử.
Ví dụ 3.4.3: Giải ràng buộc đa thức sau:
F = (x ∈ (−1,3) ˄ y ∈ (−1,3 ))˄ (𝑥3
− 𝑥2
+ 𝑦 − 1.99)
raSat sẽ bắt đầu tìm kiếm từ dải giá trị ban đầu là x ∈ (−1,3) , y ∈ (−1,3 )
và thực hiện một vòng lặp để tìm kiếm ra các dải giá trị con từ dải giá trị ban
39
đầu. Với I = x ∈ (−1,3) ˄ y ∈ (−1,3 ) là các ràng buộc biểu diễn dưới dạng tính
toán khoảng, P = x3
− x2
+ y − 1.99 là ràng buộc đa thức. raSat sử dụng hai
cách thức phân rã khoảng gồm phân rã cân bằng (balanced) và phân rã đơn điệu
(monotonic) bằng cách sử dụng các luật trong thủ tục DPLL(T) để sàng lọc ra
các khoảng xấp xỉ mới.
Kí hiệu ⟹VL (SAT Solver) là các luật của SAT Solver để gán giá trị cho
các biến từ dải giá trị hiện tại. Ví dụ với x ∈ (−1,3) được phân rã thành hai
khoảng x ∈ (−1,1) ˅ x ∈ (1,3). Cụ thể ta sẽ thêm bốn mệnh đề dưới đây vào
trong SAT Solver:
x ∈ (−1,3) ⟹ x ∈ (−1,1) ˅ x ∈ (1,3)
˄ x ∈ (−1,1) ⟹ x ∈ (−1,3)
˄ x ∈ (1,3) ⟹ x ∈ (−1,3)
˄ (¬( x ∈ (−1,1))˅ ¬( x ∈ (1,3))
Phân rã cân bằng (Balanced decomposition):
Ѳ║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ⟹VL (SAT Solver)
M0║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ˄ P ⟹VL (refinement)
Ѳ║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,1) ˅ y ∈ (1,3) )˄ P ⟹VL (SAT Solver)
M1║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,1) ˅ y ∈ (1,3) )˄ P ⟹VL (refinement)
Ѳ║ … ˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄(y ∈ (−1,0) ˅ y ∈ (0,1) )˄ P ⟹VL (SAT Solver)
M2║ … ˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄(y ∈ (−1,0) ˅ y ∈ (0,1) )˄ ⟹VL (Learning)
Ѳ ║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (−1,0))) ˄ P ⟹VL (SAT Solver)
M3║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (−1,0)))˄ P ⟹VL (Learning)
Ѳ║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (SAT Solver)
M4 ║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (Learning)
Ѳ ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (−1,0)) )˄ P ⟹VL (SAT Solver)
M5 ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (−1,0)) )˄ P ⟹VL (Learning)
Ѳ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (SAT Solver)
M6 ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (refinement)
40
Ѳ║ … ˄(x ∈ (1,2) ˅ x ∈ (2,3) )˄(y ∈ (1,2) ˅ y ∈ (2,3) )˄ P ⟹VL (SAT Solver)
M7 ║ … ˄(x ∈ (1,2) ˅ x ∈ (2,3) )˄(y ∈ (1,2) ˅ y ∈ (2,3) )˄ P ⟹VL (SAT rule)
SAT Model found
Bộ giá trị Mi được chọn bởi SAT Solver qua mỗi bước lặp như sau:
 M0 = (x ∈ (−1,3) ˄ y ∈ (−1,3 ) )
 M1 = (x ∈ (−1,1) ˄ y ∈ (−1,1 ) )
 M2 = (x ∈ (−1,0) ˄ y ∈ (−1,0 ) )
 M3 = (x ∈ (−1,0) ˄ y ∈ (0,1 ) )
 M4 = (x ∈ (0,1) ˄ y ∈ (−1,0 ) )
 M5 = (x ∈ (0,1) ˄ y ∈ (0,1 ) )
 M6 = (x ∈ (1,3) ˄ y ∈ (1,3 ) )
 M7 = (x ∈ (1,2) ˄ y ∈ (1,2 ) )
Với bộ giá trị M7 = (x ∈ (1,2) ˄ y ∈ (1,2 ) ) đưa vào bộ kiểm thử sẽ cho
kết quả x = 1.49217901342 và y = 1.3984060087 .
Phân rã đơn điệu (Monotonic decomposition): Các bước lặp tương tự như
phân rã cân đối tuy nhiên giá trị nhảy tại mỗi bước lặp là δ=0.25.
Ѳ║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ⟹VL (SAT Solver)
M0║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ˄ P ⟹VL (refinement)
Ѳ║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄ P ⟹VL (SAT Solver)
M1║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄ P ⟹VL (refinement)
Ѳ║ … ˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄ P ⟹VL (SAT Solver)
M2║ … ˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄ P ⟹VL (SAT rule)
SAT Model found
Bộ giá trị Mi được chọn bởi SAT Solver qua mỗi bước lặp như sau :
 M0 = (x ∈ (−1,3) ˄ y ∈ (−1,3 ) )
 M1 = (x ∈ (−1,1) ˄ y ∈ (2.75,3 ) )
 M2 = (x ∈ (0,1) ˄ y ∈ (2.75,3 ) )
Với bộ giá trị M2 = (x ∈ (0,1) ˄ y ∈ (2.75,3) ) đưa vào bộ kiểm thử sẽ cho
kết quả x = 0.991800094431 và y = 2.75151227326 .
41
Chương 4. CẢI TIẾN KỸ THUẬT KIỂM THỬ TRÊN
SMT SOLVER raSAT
Ở chương này luận văn sẽ trình bày kĩ thuật kiểm thử trong SMT Solver
raSAT và kĩ thuật kiểm thử cặp đôi (pairwise testing). Qua đó thực hiện cải tiến
raSAT bằng áp dụng kĩ thuật kiểm thử cặp đôi (pairwise) trên SMT Solver
raSAT. Cuối cùng sẽ đánh giá và so sánh hiệu quả của kĩ thuật kiểm thử cặp đôi
trên SMT Solver raSAT.
4.1. Kiểm thử trên raSAT
Như đã trình bày hoạt động của SMT Solver raSAT ở Chương 3. Nếu sau
khi đầu vào được đánh giá bởi lý thuyết tính toán khoảng (Interval Arithmetic -
IA) cho kết quả là IA- SAT thì sẽ chuyển sang bước kiểm thử để tiếp tục giải
ràng buộc đa thức. Kiểm thử kết quả bằng cách sinh ra bộ dữ liệu kiểm thử từ
dải giá trị đầu vào ban đầu. Bản chất của bước kiểm thử là đi tìm giá trị có kết
quả là SAT trong dải giá trị của đầu vào. Nếu tìm được một điểm trong dải giá
trị cho kết quả là SAT thì kết luận ràng buộc đó là SAT.
Kiểm thử kết quả bằng cách sinh ra bộ dữ liệu kiểm thử ⊝i từ dải giá trị
đầu vào ban đầu x1 ∈ ( a1, b1) ˄ … ˄ xn ∈ ( an, bn) .Với Ѳ(I) = ( a1, b1) ×
. . .× ( an, bn) thì giá trị của P được định nghĩa như dưới.
 P kết luận là Test-SAT trên I nếu trong P tồn tại Ѳ ∈ ⊝
 P kết luận là Test-UNSAT trên I nếu trong P không tồn tại Ѳ nào ∈ ⊝
42
Kết quả kiểm thử của ràng buộc đa thức P được mô tả như hình dưới:
Ca kiểm thử SAT
Ca kiểm thử UNSAT
r
r
Test-UNSAT
Test-SAT
rxxxf n ),...,,( 21
Hình 9: Kết quả kiểm thử của ràng buộc đa thức.
Như vậy bước kiểm thử sẽ dừng lại khi kết quả là Test-SAT và kết luận là
SAT. Ngược lại nếu kết quả là Test-UNSAT raSat sẽ sử dụng bộ Domain
Decomposition để phân rã dải giá trị hiện tại thành các dải giá trị nhỏ hơn và
tiếp tục kiểm thử trên các giải giá trị mới.
Hình 10: Kiểm thử trong SMT Solver raSat [29]
43
Tuy nhiên để thử tất cả các giá trị trong dải giá trị là điều không thể. Do
vậy cần có chiến lược chọn giá trị kiểm thử cho các biến hiệu quả thay vì thử tất
cả các giá trị. Số lượng các ca kiểm thử ảnh hưởng rất lớn hiệu quả của raSAT.
Cụ thể với các ràng buộc cần giải SAT nếu chọn số lượng ca kiểm thử ít sẽ dẫn
đến có thể bỏ qua các giá trị SAT. Ngược lại với các ràng buộc cần giải UNSAT
nếu chọn số ca kiểm thử nhiều sẽ dẫn đến mất nhiều thời gian. raSAT hiện tại
chọn tối đa 210
ca kiểm thử. raSAT chọn 10 biến có mức độ ảnh hướng tới kết
quả bằng các luật kinh ngiệm (heuristic) để chọn hai giá trị ngẫu nhiên, các biến
còn lại sẽ chọn một giá trị ngẫu nhiên. Sau đó sẽ thực hiện sinh các ca kiểm thử
bằng phương pháp tổ hợp.
raSAT sử dụng phương pháp kiểm thử từng bước (test - inrementally) để
tăng hiệu quả. Với kiểm thử thông thường sẽ sinh ra một bộ ca kiểm thử sau đó
sẽ thực hiện kiểm thử trên bộ các ca kiểm thử đó. Tuy nhiên trong trường hợp
kết quả cho là SAT tại một ca kiểm thử thì các ca kiểm thử phía sau sinh ra là
không cần thiết. Trong khi đó kiểm thử từng bước (test - inrementally) không
sinh ra tất cả các ca kiểm thử một lúc mà thực hiện sau khi sinh ra một ca kiểm
thử sẽ thực hiện kiểm thử luôn. Nếu kết quả kiểm thử là SAT thì sẽ dừng kiểm
thử, ngược lại nếu kết quả là UNSAT sẽ sinh ca kiểm thử tiếp theo và tiếp tục
thực hiện kiểm thử tương tự. Như vậy kiểm thử từng bước sẽ giúp tăng hiệu quả
kiểm thử trên raSAT.
raSAT sử dụng các luận kinh nghiệm (heuristic) cho phép chọn 10 biến có
mức độ ảnh hưởng tới kết quả nhất để chọn ngẫu nhiên hai giá trị .Và chọn các
nguyên tử đa thức (APC) có khả năng SAT (SAT-likelihood) lớn nhất để giải
trước.
Phương pháp tính toán khoảng giúp đánh giá khoảng giá trị của đa thức g
trên giải giá trị B bằng biến đổi đa thứ về dạng [𝑐1, 𝑑1]ɛ1 + ⋯ + [𝑐 𝑛, 𝑑 𝑛]ɛ 𝑛 với
ɛ𝑖 = [−1,1] bằng kĩ thuật AF2 đã được giới thiệu ở chương 2.
44
Định nghĩa 4.1.1: Khả năng SAT (SAT-likelihood) của APC g trong giải
giá trị B ◇0 với ◇= { > , ≥ , < , ≤ , = , ≠ } được tính bằng công thức sau
|ICC(g ◇ 0 , G(B)|
|G(B)|
Trong đó ICC (interval constraint contraction), ICC (g ◇ 0 , I) là khoảng
nhỏ nhất 𝐼′ được tính bằng {𝑟 ∈ 𝐼 , 𝑟 ◇ 0} ⊆ 𝐼′
Ví dụ: ICC(g > 0, [−2, 5] ) = [0, 5]
ICC(g > 0, [2, 5] ) = [2, 5]
ICC(g > 0, [−2,−5] ) = ∅
Định nghĩa 4.1.2: Hệ số ưu tiên (sensitivity) của biến 𝑥𝑖 trong đa thức g
được tính bằng max(|𝑑𝑖| , |𝑐𝑖|).
Ví dụ: g(x1 , x2) = x1
3
− 2x1x2, x1 = [0,2] = 1 + ɛ1 , x2 = [1,3] = 2 +
ɛ2. Sử dụng kĩ thuật AF2 g(x1 , x2) = −3 − ɛ1 − 2ɛ2 + 3ɛ+ + 3ɛ± = [−9 ,6 ].
Khả năng SAT của g(x1 , x2) > 0 là
6
9 −(−6)
= 0.4 và hệ số ưu tiên của các biến
lần lượt là x1 = 1 và x2 = 2.
Ngoài ra chọn giá trị cho một biến 𝑥𝑖 trong khoảng giá trị để sinh ca kiểm
thử dựa hệ số của biến 𝑥𝑖 và thực hiện chọn giá trị theo bảng sau :
Hệ số của biến 𝑥𝑖 gi > 0 , gi ≥ 0 gi < 0 , gi ≤ 0 gi = 0
-1 Cận trên Cận dưới Ngẫu nhiên
1 Cận dưới Cận trên Ngẫu nhiên
0 Ngẫu nhiên Ngẫu nhiên Ngẫu nhiên
Bảng 1: Chọn giá trị cho biến trong khoảng dựa vào hệ số ưu tiên
Ví dụ: g(x1 , x2) = x1
3
− 2x1x2, x1 = [0,2] = 1 + ɛ1 , x2 = [1,3] = 2 +
ɛ2. Sử dụng kĩ thuật AF2 g(x1 , x2) = −3 − ɛ1 − 2ɛ2 + 3ɛ+ + 3ɛ± .Hệ số của
x1 = −1 . Với g > 0 thì theo bảng trên x1 = 2.
45
4.2. Kiểm thử cặp đôi
Kiểm thử cặp đôi (pairwise testing) [30] là một trường hợp đặc biệt của
kiểm thử tất cả các tổ hợp đầu vào. Kiểm thử cặp đôi yêu cầu mỗi cặp giá trị của
( xi, xj), 1 ≤ i ≠ i ≤ n xuất hiện trong một ca kiểm thử nào đó. Một ca kiểm
thử thường có nhiều cặp giá trị này với các i, j khác nhau nên dễ thấy số lượng ca
kiểm thử sẽ giảm đáng kể so với tổ hợp tất cả các ca kiểm thử. Kiểm thử cặp đôi
được ứng dụng rất nhiều trong quá trình đảm bảo chất lượng của phần mềm. Với
một dự án phần mềm chi phí cho việc đảm bảo chất lượng thường chiếm hơn
50% chi phí của dự án. Do vậy kiểm thử cặp đôi sử dụng trong việc đảm bảo
chất lượng phần mềm với chi phí hợp lý hơn.
Lý do sử dụng kĩ thuật kiểm thử cặp đôi:
 Nguyên nhân lỗi của phần mềm thường sảy ra khi kết hợp hai đầu
vào. Kiểm thử cặp đôi có thể đảm bảo 92% độ phủ của source code,
85% bao phủ quyết định.
 Không cần kiểm thử tổ hợp tất cả đầu vào của hệ thống. Với hệ
thống có m đầu vào và với mỗi đầu vào có n giá trị. Như vậy sẽ cần
m×n trường hợp cần kiểm thử. Với hệ thống có số lượng đầu vào lớn
thì kiểm thử tổ hợp sẽ tốn rất nhiều chi phí.
 Sử dụng kiểm thử tổ hợp có thể sảy ra nhiều ca kiểm thử cùng phát
hiện một lỗi, do vậy việc sẽ gây ra lãng phí ca kiểm thử. Hạn chế này
của kiểm thử tổ hợp sẽ được khắc khục ở kĩ thuật kiểm thử cặp đôi.
Ví dụ: Với hệ thống có 4 đầu vào là A, B, C, D với mỗi đầu vào có 3 giá trị
lần lượt như sau:
A B C D
A1 B1 C1 D1
A2 B2 C2 D2
A3 B3 C3 D3
Bảng 2: Bảng giá trị đầu vào của các biến
46
Nếu sử dụng kiểm thử tổ hợp sẽ cần số lượng test case là: 3×3×3×3 =81 ca
kiểm thử. Trong khi nếu sử dụng kĩ thuật kiểm thử cặp đôi số lượng ca kiểm thử
sẽ giảm đi còn 9 ca kiểm thử như bảng dưới:
TC A B C D
1 A1 B1 C1 D1
2 A1 B2 C2 D2
3 A1 B3 C3 D3
4 A2 B1 C2 D3
5 A2 B3 C1 D2
6 A2 B2 C3 D1
7 A3 B1 C3 D2
8 A3 B2 C1 D3
9 A3 B3 C2 D1
Bảng 3: Các ca kiểm thử sử dụng kỹ thuật kiểm thử cặp đôi
Cách sinh ma trận trực giao để sinh các ca kiểm thử cho kĩ thuật kiểm thử
cặp đôi. Giả sử đầu vào có 3 biến lần lượt A, B, C, D như dưới:
 A: A1 , A2
 B: B1 , B2
 C: C1 , C2 ,C3
Bước 1: Sinh các ca kiểm thử cho hai biến đầu vào A, B
TC A B
1 A1 B1
2 A1 B2
3 A2 B1
4 A2 B2
Bảng 4: Các ca kiểm thử cặp đôi của 2 biến đầu vào
Bước 2: Thực hiện lặp từ đầu vào thứ C
Bước 2.1: Lặp theo chiều dọc
Thêm một cột và điền lần lượt các giá trị của C (C1, C2, C3)
47
TC A B C
1 A1 B1 C1
2 A1 B2 C2
3 A2 B1 C3
4 A2 B2
Bảng 5: Các ca kiểm thử cặp đôi thêm các giá trị biến thứ ba
Các cặp còn nhiếu gồm (A2, C1) ,(A2 ,C2) , (A1 ,C3) ,(B1 ,C2) ,(B2 ,C1) ,(B2
C3).Xét các trường hợp của đầu vào C.
 Nếu thêm C1 số cặp còn thiếu 4
 Nếu thêm C2 số cặp còn thiếu 4
 Nếu thêm C3 số cặp còn thiếu 4
 Chọn C1 như ma trận dưới :
TC A B C
1 A1 B1 C1
2 A1 B2 C2
3 A2 B1 C3
4 A2 B2 C1
Bảng 6: Các ca kiểm thử cặp đôi của ba biến lặp theo chiều dọc
Bước 2.2: Lặp theo chiều ngang
Các cặp còn thiếu gồm (A2,C2) , (A1,C3) ,(B1,C2) ,(B2,C3). Lần lượt sinh các
test case cho các cặp còn thiếu như dưới:
TC A B C
1 A1 B1 C1
2 A1 B2 C2
3 A2 B1 C3
4 A2 B2 C1
5 A2 B1 C2
5 A1 B2 C3
Bảng 7: Các ca kiểm thử cặp đôi của ba biến lặp theo chiều ngang
4.3 Kiểm thử cặp đôi trên raSAT
raSAT hiện tại chỉ cho phép chọn tối đa hai giá trị cho mỗi biến để sinh các
ca kiểm thử. Nguyên nhân do nếu lựa chọn nhiều giá trị sẽ ảnh hưởng tới hiệu
48
năng của raSAT. Do vậy chúng tôi cải tiến raSAT bằng cách áp dụng kĩ thuật
kiểm thử cặp đôi cho các biến của ràng buộc để sinh ra bộ kiểm thử. Với kĩ thuật
kiểm thử cặp đôi sẽ sinh ra số lượng ca kiểm thử không lớn mà cho phép chọn
nhiều giá trị cho mỗi biến. Khi raSAT cho phép chọn nhiều giá trị cho một biến
thì khả năng tìm được giá trị SAT sẽ tăng lên. Cụ thể cách áp dụng kĩ thuật kiểm
thử cặp đôi vào raSAT như sau:
 Áp dụng sinh bộ kiểm thử bằng kĩ thuật kiểm thử cặp đôi cho các biến ở
mỗi ràng buộc.
 Với mỗi biến sẽ chọn ngẫu nhiên 4 ca kiểm thử ở 4 khoảng giá trị khác
nhau trong dải giá trị của biến. Ví dụ x1 = [−10,10] sẽ chọn ngẫu nhiên
một ca kiểm thử ở 4 khoảng gồm [−10, −5] , [−4, 0] , [1, 5] và [6,10].
 Kiểm thử cặp đôi vẫn giữ nguyên cách chọn APC theo khả năng SAT, độ
ưu tiên của biến và kiểm thử từng bước (test - inrementally) như mục 4.2
đã trình bày.
Bảng so sánh raSAT 0.2 và raSAT áp dụng kiểm thử cặp đôi :
raSAT 0.2 raSAT 0.2 + Kiểm thử cặp đôi (Pairwise testing)
 Chọn ngẫu nhiên 2 giá trị cho 10
biến.
 Và chọn ngẫu nhiên 1 giá trị cho
các biến còn lại.
 Thực hiện kiểm thử tổ hợp.
 Chọn ngẫu nhiên 4 giá trị cho tất cả các biến.
 Sinh ca kiểm thử theo kĩ thuật kiểm thử cắp đôi.
 Thực hiện kiểm thử theo ca kiểm thử cặp đôi.
 Ưu điểm :
 Mỗi cặp giá trị đều xuất hiện ở tất cả các ca kiểm
thử.
 Tăng số lượng giá trị chọn từ 1, 2 lên 4.
 Số lượng ca kiểm thử không quá lớn.
Bảng 8: Bảng so sánh raSAT 0.2 và raSAT áp dụng kiểm thử cặp đôi
49
4.4 Thực nghiệm
4.4.1 Kết quả raSAT tại các cuộc thi SMT – COMP
raSAT đã tham gia các cuộc thi SMT – COMP 2014, 2015 và 2016 . Đây là
cuộc thi của các SMT Solver trên toàn thế giới. Trong phần này luận văn sẽ giới
thiệu kết quả của raSAT tại các cuộc thi SMT – COMP.
 Kết quả raSAT 0.1 tại cuộc thi SMT - COMP 2014 :
http://smtcomp.sourceforge.net/2014/resultsQF_NRA.shtml?v=1403902163
Bảng 9: Kết quả raSAT 0.1 tại cuộc thi SMT - COMP 2014
 Kết quả raSAT 0.2 tại cuộc thi SMT - COMP 2015 :
http://smtcomp.sourceforge.net/2015/results-QF_NRA.shtml?v=1446209369
Bảng 10: Kết quả raSAT 0.2 tại cuộc thi SMT - COMP 2015
50
 Kết quả raSAT 0.3 và 0.4 tại cuộc thi SMT - COMP 2016 :
http://smtcomp.sourceforge.net/2016/results-QF_NRA.shtml?v=1467876482
Bảng 11: Kết quả raSAT 0.3 và 0.4 tại cuộc thi SMT - COMP 2016
Trong đó raSAT 0.4 gồm chạy song song raSAT 0.2 và raSAT 0.3
4.4.2 raSAT 0.2
 raSAT 0.2 là phiên bản thứ hai của raSAT được phát hành vào 06/2015.
 raSAT sử dụng hai ngôn ngữ để phát triển gồm C++ và Ocaml và sử dụng
kết hợp với MiniSat2.2.
 raSAT giải các bài toán dạng QF_NRA và QF_NIA dưới định dạng SMT-
LIB (.smt 2).
 Môi trường phát triển: iRRAM, make, automake, gcc, ocaml, zlib, curses và
hệ điều hành 64 bit systems (cygwin 64 bit, linux systems)
4.4.3 Benchmarks
SMT Benchmark là bộ các bài toán dưới định dạng SMT-LIB (.smt 2) là
đầu vào của các SMT Solver được xây dựng bởi cộng đồng SMT. Hiện nay có
bốn bộ SMT Benchmark gồm :
 SMT- LIB 2013 -03-07
 SMT- LIB 2014 -06-03
 SMT- LIB 2015 -06-01
51
 SMT- LIB 2016 -05-23
Các SMT Benchmark được tải về tại địa chỉ: https://www.starexec.org
4.4.4 Kết quả thực nghiệm
Để đánh giá hiệu quả của kĩ thuật kiểm kiểm thử cặp đôi trong raSAT,
thực hiện thực nghiệm raSAT 0.2 và raSAT0.2 – Pairwise testing trên bộ các
ràng buộc “SMT- LIB 2015 -06-01” được tải ở địa chỉ sau :
http://smtcomp.sourceforge.net/2015/benchmarks.shtml
Với thông số môi trường như sau :
 Timeout 2500s
 Bộ vi xử lý Intel Xeon E5-4655v3
 Ram 8GB
Kết quả thực nghiệm của raSAT 0.2 và raSAT0.2 – Pairwise testing như sau :
Bảng 12: Kết quả thực nghiệm của raSAT 0.2 và raSAT0.2 – Pairwise testing
STT Loại ràng buộc
raSAT0.2 – Pairwise
testing
raSAT 0.2
1 zankl (SAT) 33 41
2 zankl (UNSAT) 12 14
3 meti-tarski (SAT) 4801 4597
4 meti-tarski (UNSAT) 1772 1750
5 hong (SAT) 0 0
6 hong (UNSAT) 4 5
7 LassoRanker (SAT) 45 5
8 LassoRanker (UNSAT) 0 0
9 kissing (SAT) 17 12
10 kissing (UNSAT) 0 0
11 hycomp (SAT) 128 6
12 hycomp (UNSAT) 1724 1720
Total 8536 8150
Time(s) 7500302.763 8562351.838
52
Nhận xét: Số lượng bài toán raSAT mới giải được tăng lên 386 bài. Đặc
biệt với loại ràng buộc meti-tarski số lượng ràng buộc SAT tăng lên khá lớn
(204 bài) hay loại hycomp (SAT) tăng lên 122 bài. Tuy nhiên với loại ràng buộc
có số lượng biến lớn như zankl số lượng giải được bị giảm đi (10 bài) nguyên
nhân là do tốn nhiều thời gian cho testing dẫn đến thời gian cho phân rã khoảng
ít đi. Về mặt thời gian raSAT mới cũng đã cải thiện được 1062049.075(giây) =
17,500(phút), tức là cải thiệu được 12.4% về mặt thời gian. Như vậy xét về
tổng thể raSAT áp dụng kiểm thử cặp đôi đã cải thiệt được hai tiêu chí gồm tăng
số lượng bài toán giải được và giảm tổng thời gian cho tất cả các loại ràng buộc.
53
KẾT LUẬN
Giải các ràng buộc đa thức toán học (Polynomial constraint) được ứng
dụng nhiều trong phân tích hệ thống, kiểm chứng phần cứng và phần mềm, cụ
thể như chứng minh tính bất biến của một chương trình hoặc phân tích kết quả
của các hệ thống. Tất cả các ứng dụng trên cần được tự động và cần có công cụ
để hỗ trợ để giải quyết bài toán. Luận văn đã nghiên cứu và trình bày các kỹ thuật
giải các ràng buộc phi tuyến tính (non-linear constraints) bằng phương pháp tính
toán xấp xỉ (approximation methods). Cụ thể luận văn đã nghiên cứu và trình bày
về các phương pháp tính toán khoảng (Interval Arithmetic) để giải các ràng buộc
phi tuyến tính. Ngoài ra luận văn trình bày kiến trúc và các kỹ thuật áp dụng trong
SMT Solver raSAT. Một công cụ giải tự động ràng buộc toán học trên tập số thực
và số nguyên dựa trên phương pháp tính toán khoảng và kiểm thử.
Luận văn đề xuất áp dụng phương pháp kiểm thử cặp đôi (pairwise testing)
thực hiện kiểm thử tăng dần (test - inrementally) vào bước kiểm thử của raSAT để
cải thiện hiệu quả. Kết quả đạt được đã tốt hơn như mục tiêu ban đầu của luận văn.
Cụ thể kết quả đạt được như sau:
 Cải thiện số lượng bài toán giải được và thời gian. Cụ thể giải nhiều
hơn 386 bài toán với thời gian cải thiện được khoảng 12.4% (17,500
phút).
 Mở ra các phương pháp cải tiến raSAT trên các ràng buộc có số biến
lớn. Hiện tại với các ràng buộc có số biến lớn vẫn là thách thức của các
SMT Solver mạnh như Z3…
Hiện tại kiểm thử cặp đôi mới giải quyết được vấn đề chọn nhiều giá trị cho
mỗi biến nhưng chưa tìm được cách tìm giá trị SAT nhanh hơn. Trong tương lai
chúng tôi sẽ nghiên cứu tìm ra các chiến lược chọn giá trị cho các biến để tìm
được giá trị SAT nhanh hơn. Ngoài ra raSAT hiện tại mới giải được cho ràng
buộc bất đẳng thức, trong tương lai chúng tôi sẽ nghiên cứu để giải cho các ràng
buộc đa thức đẳng thức và ứng dụng raSAT vào kiểm chứng phần mềm.
54
TÀI LIỆU THAM KHẢO
[1] Borralleras, C., Lucas, S., Navarro-Marset, R., Rodr´ ıguez-Carbonell, E.,
and Rubio, A. Solving non-linear polynomial arithmetic via sat modulo linear
arithmetic. In Proceedings of the 22nd International Conference on Automated
Deduction (2009), CADE-22, Springer-Verlag, pp. 294–305
[2] Bryant, R. E., Kroening, D., Ouaknine, J., Seshia, S. A., Strichman, O., and
Brady, B. Deciding bit-vector arithmetic with abstraction. In Proceedings of the
13th international conference on Tools and algorithms for the construction and
analysis of systems (2007), TACAS’07, Springer-Verlag, pp. 358–372.
[3] Đỗ Thị Bích Ngọc and Mizuhito Ogawa, Overflow and roundoff error
analysis via model checking, Proceedings of the IEEE/ACM international
conference on software engineering and formal methods. SEFM ’09, IEEE
computer society, 2009, pp. 105-114.
[4] Franzle, M., Herde, C., Teige, T., Ratschan, S., and Schubert, T. Effi-cient
solving of large non-linear arithmetic constraint systems with complex
booleanstructure. Journal on Satisfiability, Boolean Modeling and Computation
1 (2007), 209–236.
[5] Franzle, M., Herde, C., Teige, T., Ratschan, S., and Schubert, T. Effi-cient
solving of large non-linear arithmetic constraint systems with complex
booleanstructure. Journal on Satisfiability, Boolean Modeling and Computation
1 (2007), 209–236.
[6] Ganai, M., and Ivancic, F. Efficient decision procedure for non-linear
arithmetic constraints using cordic. In Formal Methods in Computer-Aided
Design, 2009 FMCAD 2009 (2009), pp. 61 –68.
[7] Harald Ganzinger, George Hagen, Robert Nieuwenhuis, Albert Oliveras,
Cesare Tinelli. DPLL(T): Fast Decision Procedures ,16th International
Conference on Computer Aided Verification (CAV), July 2004, Boston (USA)
[8] Microsoft. Z3.
[9] Miquel Bofill, Robert Nieuwenhuis, Albert Oliveras, Enric Rodríguez-
Carbonell Albert Rubio. The Barcelogic SMT Solver, 20th International
Conference on Computer Aided Verification (CAV), July 2008, Princeton
(USA).
55
[10] A. Blass and Y. Gurevich. Pairwise Testing, Bulletin of the European
Association for Theoretical Computer Science Number 78, October 2002, 100
132
[11] Armin Biere, Marijn Heule, Hans van Maaren, Toby Walsch IOS Press
(2008), Handbook of Satisfiability, Dimitris Achlioptas
[12] Comba, J. L. D., and Stolfi, J. Affine arithmetic and its applications to
computer graphics. In Proceedings of VI SIBGRAPI. (1993)
[13] Corzilius, F., and ´ Abrah´ am, E. Virtual substitution for SMT- solving. In
Pro-ceedings of the 18th international conference on Fundamentals of
computation theory (2011), FCT’11, Springer-Verlag, pp. 360–371.
[14] Cristina Borralleras, Salvador Lucas, Albert Oliveras, Enric Rodríguez-
Carbonell, Albert Rubio. SAT Modulo Linear Arithmetic for Solving Polynomial
Constraints
[15] H. Anai, Algebraic. Methods for solving real polynomial constraints and
their applications in biology, Algebraic biology computer algebra in biology,
2005, pp. 139-147.
[16]J. Czerwonka. Pairwise Testing in Real World, Proceedings of 24th Pacific
Northwest Software Quality Conference, 2006
[17] Messine, F. Extensions of affine arithmetic: Application to unconstrained
globaloptimization. Journal of Universal Computer Science 8, 2 (2002)
[18] Nieuwenhuis, R., Oliveras ,Tinelli (2005), Abstract DPLL and abstract
DPLL modulo theories. In Logic for Programming, Articial Intelligence, and
Reasoning, F. Baader and A. Voronkov, Eds., vol. 3452 of Lecture Notes in
Computer Science. Springer-Verlag
[19] Passmore, G. O., and Jackson, P. B. Combined decision techniques for
theexistential theory of the reals. In Proceedings of the 16th Symposium, 8th
Interna-tional Conference. Held as Part of CICM ’09 on Intelligent Computer
Mathematics (2009), Calculemus ’09/MKM ’09, Springer-Verlag, pp. 122–137
[20] R.E. Moore , Interval Analysis. Prentice-Hall, 1966.
[21] Ratschan, S. Efficient solving of quantified inequality constraints over the
realnumbers. ACM Trans. Comput. Logic 7, 4 (Oct. 2006), 723–748.
56
[22] Robert Nieuwenhuis, Albert Oliveras, Cesare Tinelli. Abstract DPLL and
Abstract DPLL Modulo Theories, 11th International Conference on Logic for
Programming, Artificial Intelligence and Reasoning (LPAR). March 2005,
Montevideo (Uruguay).
[23] S. Lucas and R. Navarro-Marset, Comparing CSP and SAT solvers for
polynomial constraints in termination provers, Notes theory computer science,
2008, pp. 75-90.
[24] Stolfi, Figueiredo. An Introduction to Affine Arithmetic
[25] Stolfi, J. Self-Validated Numerical Methods and Applications. PhD thesis,
PhD. Dissertation, Computer Science Department, Stanford University, 1997.
[26] Tô Văn Khánh and Mizuhito Ogawa, raSAT: SMT for Polynomial
Inequality, Technical report School of Information Science Japan Advance
Institute of Science and Technology, 2013.
[27] Tô Văn Khánh and Mizuhito Ogawa, SMT for polynomial constraints on
real numbers, Notes theory computer science, 2012, pp. 27-40.
[28] Tô Văn Khánh, SMT for Polynomial Constraints and Its Applications, PHD
thesis, School of Information Science Japan Advance Institute of Science and
Technology, 2013.
[29] Vu Xuan Tung, To Van Khanh, Mizuhito Ogawa. raSAT: An SMT Solver
for Polynomial Constraints, International Joint Conference on Automated
Reasoning 2016. IJCAR 2016: Volume 9706 Pages 228-237
[30] Y.Lei and K.C.Tai In-parameter-order: a test generation strategy for
pairwise testing. Proceedings Third IEEE Intl. High-Assurance Systems
Engineering Symp., 1998, pp. 254-261

More Related Content

What's hot

ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2nataliej4
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên nataliej4
 
Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...
Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...
Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...The Boss
 
Xây dựng hệ thống hỗ trợ thi trắc nghiệm
Xây dựng hệ thống hỗ trợ thi trắc nghiệmXây dựng hệ thống hỗ trợ thi trắc nghiệm
Xây dựng hệ thống hỗ trợ thi trắc nghiệmVcoi Vit
 
Bài giảng quản lý mạng viễn thông tel 1414
Bài giảng quản lý mạng viễn thông tel 1414Bài giảng quản lý mạng viễn thông tel 1414
Bài giảng quản lý mạng viễn thông tel 1414nataliej4
 
Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...
Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...
Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...Viết thuê trọn gói ZALO 0934573149
 
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...nataliej4
 
Đề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quan
Đề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quanĐề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quan
Đề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quanViết thuê trọn gói ZALO 0934573149
 

What's hot (20)

Ứng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoa
Ứng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoaỨng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoa
Ứng dụng khai phá dữ liệu xây dựng hệ hỗ trợ chẩn đoán y khoa
 
Tính cận trên bộ nhớ Log của chương trình sử dụng giao dịch, 9đ
Tính cận trên bộ nhớ Log của chương trình sử dụng giao dịch, 9đTính cận trên bộ nhớ Log của chương trình sử dụng giao dịch, 9đ
Tính cận trên bộ nhớ Log của chương trình sử dụng giao dịch, 9đ
 
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
 
Luận văn: Nhận dạng và phân loại hoa quả trong ảnh màu, HAY
Luận văn: Nhận dạng và phân loại hoa quả trong ảnh màu, HAYLuận văn: Nhận dạng và phân loại hoa quả trong ảnh màu, HAY
Luận văn: Nhận dạng và phân loại hoa quả trong ảnh màu, HAY
 
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng rất hay
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng  rất hayChuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng  rất hay
Chuyên đề Xây dựng hệ thống thông tin lập đơn đặt hàng rất hay
 
Tiếp cận dựa trên học máy cho bài toán trích xuất thông tin, HAY
Tiếp cận dựa trên học máy cho bài toán trích xuất thông tin, HAYTiếp cận dựa trên học máy cho bài toán trích xuất thông tin, HAY
Tiếp cận dựa trên học máy cho bài toán trích xuất thông tin, HAY
 
Đề tài: Xây dựng hệ thống thi trắc nghiệm, HAY
Đề tài: Xây dựng hệ thống thi trắc nghiệm, HAYĐề tài: Xây dựng hệ thống thi trắc nghiệm, HAY
Đề tài: Xây dựng hệ thống thi trắc nghiệm, HAY
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
 
Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...
Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...
Báo cáo đồ án tốt nghiệp "Ứng dụng trí tuệ nhân tạo nhận dạng chữ viết tay xâ...
 
Xây dựng hệ thống hỗ trợ thi trắc nghiệm
Xây dựng hệ thống hỗ trợ thi trắc nghiệmXây dựng hệ thống hỗ trợ thi trắc nghiệm
Xây dựng hệ thống hỗ trợ thi trắc nghiệm
 
Báo cáo
Báo cáoBáo cáo
Báo cáo
 
Luận văn: Nghiên cứu mô hình phân lớp câu hỏi và ứng dụng, 9đ
Luận văn: Nghiên cứu mô hình phân lớp câu hỏi và ứng dụng, 9đLuận văn: Nghiên cứu mô hình phân lớp câu hỏi và ứng dụng, 9đ
Luận văn: Nghiên cứu mô hình phân lớp câu hỏi và ứng dụng, 9đ
 
Bài giảng quản lý mạng viễn thông tel 1414
Bài giảng quản lý mạng viễn thông tel 1414Bài giảng quản lý mạng viễn thông tel 1414
Bài giảng quản lý mạng viễn thông tel 1414
 
Luận văn: Nhận dạng cảm xúc khuôn mặt người, HAY, 9đ
Luận văn: Nhận dạng cảm xúc khuôn mặt người, HAY, 9đLuận văn: Nhận dạng cảm xúc khuôn mặt người, HAY, 9đ
Luận văn: Nhận dạng cảm xúc khuôn mặt người, HAY, 9đ
 
Do an tot nghiep
Do an tot nghiepDo an tot nghiep
Do an tot nghiep
 
Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...
Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...
Đề tài: Ứng dụng xử lý ảnh nhận dạng cử chỉ bàn tay điều khiển ro...
 
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
 
Luận văn: Thiết kế bài giảng điện tử môn Mạch điện tử hệ cao đẳng
Luận văn: Thiết kế bài giảng điện tử môn Mạch điện tử hệ cao đẳngLuận văn: Thiết kế bài giảng điện tử môn Mạch điện tử hệ cao đẳng
Luận văn: Thiết kế bài giảng điện tử môn Mạch điện tử hệ cao đẳng
 
Đề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quan
Đề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quanĐề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quan
Đề tài: Xây dựng phần mềm thi, đánh giá câu hỏi, đề thi trắc nghiệm khách quan
 
Đề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đ
Đề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đĐề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đ
Đề tài: Hệ thống phân loại cà chua theo màu sắc, HAY, 9đ
 

Similar to Luận văn: Tính toán khoảng giải các ràng buộc không tuyến tính

03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdf03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdfNguyễn Thái
 
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...Man_Ebook
 
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...Man_Ebook
 
Luận văn thạc sĩ
Luận văn thạc sĩLuận văn thạc sĩ
Luận văn thạc sĩssuser499fca
 
Điều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdfĐiều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdfMan_Ebook
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.ssuser499fca
 
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424jackjohn45
 

Similar to Luận văn: Tính toán khoảng giải các ràng buộc không tuyến tính (20)

Kiểm chứng các chương trình phần mềm hướng khía cạnh, HAY
Kiểm chứng các chương trình phần mềm hướng khía cạnh, HAYKiểm chứng các chương trình phần mềm hướng khía cạnh, HAY
Kiểm chứng các chương trình phần mềm hướng khía cạnh, HAY
 
Kiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAY
Kiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAYKiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAY
Kiểm chứng các hệ thống thời gian thực sử dụng uppaal, HAY
 
Luận văn: Phương pháp sinh dữ liệu kiểm thử tự động từ biểu đồ
Luận văn: Phương pháp sinh dữ liệu kiểm thử tự động từ biểu đồLuận văn: Phương pháp sinh dữ liệu kiểm thử tự động từ biểu đồ
Luận văn: Phương pháp sinh dữ liệu kiểm thử tự động từ biểu đồ
 
Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ
Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ
Đề tài: Mô phỏng kênh truyền vô tuyến số bằng matlab, 9đ
 
03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdf03 - LUANVAN_NopQuyen.pdf
03 - LUANVAN_NopQuyen.pdf
 
Đề tài: Kỹ thuật xác định các ca kiểm thử nhờ ma trận kiểm thử
Đề tài: Kỹ thuật xác định các ca kiểm thử nhờ ma trận kiểm thửĐề tài: Kỹ thuật xác định các ca kiểm thử nhờ ma trận kiểm thử
Đề tài: Kỹ thuật xác định các ca kiểm thử nhờ ma trận kiểm thử
 
Luận văn: Kỹ thuật xác định các ca kiểm thử nhờ ma trận, HAY
Luận văn: Kỹ thuật xác định các ca kiểm thử nhờ ma trận, HAYLuận văn: Kỹ thuật xác định các ca kiểm thử nhờ ma trận, HAY
Luận văn: Kỹ thuật xác định các ca kiểm thử nhờ ma trận, HAY
 
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAYLuận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
Luận văn: Xác định các ca kiểm thử và dữ liệu kiểm thử, HAY
 
Xây dựng chức năng giám định tự động về bảo hiểm xã hội, 9đ
Xây dựng chức năng giám định tự động về bảo hiểm xã hội, 9đXây dựng chức năng giám định tự động về bảo hiểm xã hội, 9đ
Xây dựng chức năng giám định tự động về bảo hiểm xã hội, 9đ
 
Đề tài: Xây dựng công cụ kiểm thử tự động cho chương trình C
Đề tài: Xây dựng công cụ kiểm thử tự động cho chương trình CĐề tài: Xây dựng công cụ kiểm thử tự động cho chương trình C
Đề tài: Xây dựng công cụ kiểm thử tự động cho chương trình C
 
Luận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đ
Luận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đLuận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đ
Luận văn: Xây dựng công cụ hỗ trợ sinh ca kiểm thử cặp, 9đ
 
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
 
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
Nghiên cứu xây dựng mô hình đo và điều khiển nhiệt độ theo thuật toán pid với...
 
Xây dựng qui trình chuẩn hóa dữ liệu quan trắc môi trường, HAY
Xây dựng qui trình chuẩn hóa dữ liệu quan trắc môi trường, HAYXây dựng qui trình chuẩn hóa dữ liệu quan trắc môi trường, HAY
Xây dựng qui trình chuẩn hóa dữ liệu quan trắc môi trường, HAY
 
Luận văn: Chất lượng dịch vụ cho truyền thông đa phương tiện, 9đ
Luận văn: Chất lượng dịch vụ cho truyền thông đa phương tiện, 9đLuận văn: Chất lượng dịch vụ cho truyền thông đa phương tiện, 9đ
Luận văn: Chất lượng dịch vụ cho truyền thông đa phương tiện, 9đ
 
Luận văn thạc sĩ
Luận văn thạc sĩLuận văn thạc sĩ
Luận văn thạc sĩ
 
Điều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdfĐiều khiển cân bằng hệ con lắc ngược.pdf
Điều khiển cân bằng hệ con lắc ngược.pdf
 
Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.Luận văn thạc sĩ máy tính.
Luận văn thạc sĩ máy tính.
 
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
đáNh giá hiệu quả một số thuật toán trong phát hiện xâm nhập mạng 6732424
 
Luận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCH
Luận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCHLuận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCH
Luận văn: Tìm hiểu về đối sánh lược đồ và xây dựng ứng dụng VNMATCH
 

More from Dịch vụ viết bài trọn gói ZALO 0917193864

Danh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏi
Danh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏiDanh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏi
Danh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏiDịch vụ viết bài trọn gói ZALO 0917193864
 

More from Dịch vụ viết bài trọn gói ZALO 0917193864 (20)

200 de tai khoa luạn tot nghiep nganh tam ly hoc
200 de tai khoa luạn tot nghiep nganh tam ly hoc200 de tai khoa luạn tot nghiep nganh tam ly hoc
200 de tai khoa luạn tot nghiep nganh tam ly hoc
 
Danh sách 200 đề tài luận văn tốt nghiệp ngành khách sạn,10 điểm
Danh sách 200 đề tài luận văn tốt nghiệp ngành khách sạn,10 điểmDanh sách 200 đề tài luận văn tốt nghiệp ngành khách sạn,10 điểm
Danh sách 200 đề tài luận văn tốt nghiệp ngành khách sạn,10 điểm
 
Danh sách 200 đề tài luận văn thạc sĩ ngân hàng, hay nhất
Danh sách 200 đề tài luận văn thạc sĩ ngân hàng, hay nhấtDanh sách 200 đề tài luận văn thạc sĩ ngân hàng, hay nhất
Danh sách 200 đề tài luận văn thạc sĩ ngân hàng, hay nhất
 
Danh sách 200 đề tài luận văn thạc sĩ ngữ văn, hay nhất
Danh sách 200 đề tài luận văn thạc sĩ ngữ văn, hay nhấtDanh sách 200 đề tài luận văn thạc sĩ ngữ văn, hay nhất
Danh sách 200 đề tài luận văn thạc sĩ ngữ văn, hay nhất
 
Danh sách 200 đề tài luận văn thạc sĩ ô tô, 10 điểm
Danh sách 200 đề tài luận văn thạc sĩ ô tô, 10 điểmDanh sách 200 đề tài luận văn thạc sĩ ô tô, 10 điểm
Danh sách 200 đề tài luận văn thạc sĩ ô tô, 10 điểm
 
Danh sách 200 đề tài luận văn thạc sĩ quản lý giáo dục mầm non, mới nhất
Danh sách 200 đề tài luận văn thạc sĩ quản lý giáo dục mầm non, mới nhấtDanh sách 200 đề tài luận văn thạc sĩ quản lý giáo dục mầm non, mới nhất
Danh sách 200 đề tài luận văn thạc sĩ quản lý giáo dục mầm non, mới nhất
 
Danh sách 200 đề tài luận văn thạc sĩ quản trị rủi ro, hay nhất
Danh sách 200 đề tài luận văn thạc sĩ quản trị rủi ro, hay nhấtDanh sách 200 đề tài luận văn thạc sĩ quản trị rủi ro, hay nhất
Danh sách 200 đề tài luận văn thạc sĩ quản trị rủi ro, hay nhất
 
Danh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏi
Danh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏiDanh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏi
Danh sách 200 đề tài luận văn thạc sĩ tài chính ngân hàng, từ sinh viên giỏi
 
Danh sách 200 đề tài luận văn thạc sĩ tiêm chủng mở rộng, 10 điểm
Danh sách 200 đề tài luận văn thạc sĩ tiêm chủng mở rộng, 10 điểmDanh sách 200 đề tài luận văn thạc sĩ tiêm chủng mở rộng, 10 điểm
Danh sách 200 đề tài luận văn thạc sĩ tiêm chủng mở rộng, 10 điểm
 
danh sach 200 de tai luan van thac si ve rac nhua
danh sach 200 de tai luan van thac si ve rac nhuadanh sach 200 de tai luan van thac si ve rac nhua
danh sach 200 de tai luan van thac si ve rac nhua
 
Kinh Nghiệm Chọn 200 Đề Tài Tiểu Luận Chuyên Viên Chính Trị Hay Nhất
Kinh Nghiệm Chọn 200 Đề Tài Tiểu Luận Chuyên Viên Chính Trị Hay NhấtKinh Nghiệm Chọn 200 Đề Tài Tiểu Luận Chuyên Viên Chính Trị Hay Nhất
Kinh Nghiệm Chọn 200 Đề Tài Tiểu Luận Chuyên Viên Chính Trị Hay Nhất
 
Kho 200 Đề Tài Bài Luận Văn Tốt Nghiệp Ngành Kế Toán, 9 điểm
Kho 200 Đề Tài Bài Luận Văn Tốt Nghiệp Ngành Kế Toán, 9 điểmKho 200 Đề Tài Bài Luận Văn Tốt Nghiệp Ngành Kế Toán, 9 điểm
Kho 200 Đề Tài Bài Luận Văn Tốt Nghiệp Ngành Kế Toán, 9 điểm
 
Kho 200 Đề Tài Luận Văn Ngành Thủy Sản, từ các trường đại học
Kho 200 Đề Tài Luận Văn Ngành Thủy Sản, từ các trường đại họcKho 200 Đề Tài Luận Văn Ngành Thủy Sản, từ các trường đại học
Kho 200 Đề Tài Luận Văn Ngành Thủy Sản, từ các trường đại học
 
Kho 200 đề tài luận văn ngành thương mại điện tử
Kho 200 đề tài luận văn ngành thương mại điện tửKho 200 đề tài luận văn ngành thương mại điện tử
Kho 200 đề tài luận văn ngành thương mại điện tử
 
Kho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểm
Kho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểmKho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểm
Kho 200 đề tài luận văn tốt nghiệp ngành điện tử viễn thông, 9 điểm
 
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Giáo Dục Tiểu Học
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Giáo Dục Tiểu HọcKho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Giáo Dục Tiểu Học
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Giáo Dục Tiểu Học
 
Kho 200 đề tài luận văn tốt nghiệp ngành luật, hay nhất
Kho 200 đề tài luận văn tốt nghiệp ngành luật, hay nhấtKho 200 đề tài luận văn tốt nghiệp ngành luật, hay nhất
Kho 200 đề tài luận văn tốt nghiệp ngành luật, hay nhất
 
Kho 200 đề tài luận văn tốt nghiệp ngành quản trị văn phòng, 9 điểm
Kho 200 đề tài luận văn tốt nghiệp ngành quản trị văn phòng, 9 điểmKho 200 đề tài luận văn tốt nghiệp ngành quản trị văn phòng, 9 điểm
Kho 200 đề tài luận văn tốt nghiệp ngành quản trị văn phòng, 9 điểm
 
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Sư Phạm Tin Học
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Sư Phạm Tin HọcKho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Sư Phạm Tin Học
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Sư Phạm Tin Học
 
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Xuất Nhập Khẩu
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Xuất Nhập KhẩuKho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Xuất Nhập Khẩu
Kho 200 Đề Tài Luận Văn Tốt Nghiệp Ngành Xuất Nhập Khẩu
 

Recently uploaded

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANGPHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANGhoinnhgtctat
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANGPHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
PHÁT TRIỂN DU LỊCH BỀN VỮNG Ở TUYÊN QUANG
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 

Luận văn: Tính toán khoảng giải các ràng buộc không tuyến tính

  • 1. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN QUÂN PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG GIẢI CÁC RÀNG BUỘC KHÔNG TUYẾN TÍNH LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội - 2016
  • 2. ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN QUÂN PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG GIẢI CÁC RÀNG BUỘC KHÔNG TUYẾN TÍNH Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. TÔ VĂN KHÁNH Hà Nội – 2016
  • 3. LỜI CAM ĐOAN Tôi xin cam đoan rằng, luận văn thạc sĩ công nghệ thông tin “Phương pháp tính toán khoảng giải các ràng buộc không tuyến tính.” là sản phẩm nghiên cứu của riêng cá nhân tôi dưới sự giúp đỡ rất lớn của Giảng viên hướng dẫn là TS. Tô Văn Khánh, không sao chép lại của người khác. Những điều đã được trình bày trong toàn bộ nội dung của luận văn này hoặc là của chính cá nhân tôi, hoặc là được tổng hợp từ nhiều nguồn tài liệu. Tất cả các tài liệu tham khảo đều có nguồn gốc rõ ràng và được trích dẫn hợp pháp. Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình. Hà nội, tháng 10 năm 2016 Học viên Nguyễn Văn Quân
  • 4. LỜI CẢM ƠN Trước tiên tôi xin bày tỏ lòng biết ơn chân thành và sâu sắc đến thầy giáo, TS. Tô Văn Khánh - người đã dành nhiều tâm huyết, tận tình chỉ bảo và giúp đỡ tôi trong suốt quá trình bắt đầu thực hiện đề tài cho đến khi tôi hoàn thành đề tài. Tôi xin gửi lời cảm ơn chân thành tới các thầy cô giáo khoa Công nghệ thông tin, trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội - nơi tôi đã theo học trong thời gian qua. Các thầy cô đã cung cấp cho tôi những kiến thức quý báu, tạo điều kiện tốt nhất cho tôi trong suốt quá trình học tập và nghiên cứu tại trường. Cuối cùng tôi xin chân thành cảm ơn những người thân trong gia đình, đặc biệt là bố mẹ tôi là nguồn động viên và ủng hộ tôi. Xin cảm ơn bạn bè cùng khóa, đồng nghiệp trong cơ quan đã giúp đỡ tôi trong quá trình học tập và nghiên cứu thực hiện luận văn này. Tuy rằng, tôi đã cố gắng hết sức trong quá trình làm luận văn nhưng không thể tránh khỏi thiếu sót, tôi rất mong nhận được những góp ý của thầy cô và các bạn. Hà nội, tháng 11 năm 2016 Học viên Nguyễn Văn Quân
  • 5. MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN BẢNG CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC HÌNH VẼ DANH MỤC BẢNG MỞ ĐẦU.........................................................................................................................1 Chương 1. GIỚI THIỆU...............................................................................................3 1.1. Giải các ràng buộc đa thức....................................................................................3 1.2. Ứng dụng của giải các ràng buộc đa thức.............................................................4 1.3. Các SMT giải ràng buộc toán học.........................................................................5 Chương 2. PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG .............................................7 2.1. Giới thiệu về phương pháp tính toán khoảng........................................................7 2.2. Phương pháp tính toán khoảng CI ........................................................................8 2.3. Phương pháp tính toán khoảng Affine Interval...................................................10 2.3.1. Dạng AF...........................................................................................................11 2.3.2. Dạng AF1.........................................................................................................13 2.3.2. Dạng AF2.........................................................................................................15 2.4. Phương pháp tính toán khoảng C AI...................................................................18 Chương 3. SMT SOLVER VÀ SMT SOLVER raSAT ...........................................23 3.1. SAT Solver..........................................................................................................23 3.2. SMT Solver .........................................................................................................24 3.3. Thủ tục DPLL .....................................................................................................26 3.3.1 Thủ tục DPLL cho SAT....................................................................................26 3.3.1 Thủ tục DPLL cho SMT ...................................................................................30 3.4. SMT Solver raSAT .............................................................................................32 Chương 4. CẢI TIẾN KỸ THUẬT KIỂM THỬ TRÊN SMT SOLVER raSAT..41 4.1. Kiểm thử trên raSAT...........................................................................................41 4.2. Kiểm thử cặp đôi.................................................................................................45 4.3 Kiểm thử cặp đôi trên raSAT...............................................................................47
  • 6. 4.4 Thực nghiệm ........................................................................................................49 4.4.1 Kết quả raSAT tại các cuộc thi SMT – COMP .............................................49 4.4.2 raSAT 0.2.......................................................................................................50 4.4.3 Benchmarks ...................................................................................................50 4.4.4 Kết quả thực nghiệm......................................................................................51 KẾT LUẬN ..................................................................................................................53 TÀI LIỆU THAM KHẢO...........................................................................................54
  • 7. BẢNG CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT STT Thuật ngữ viết tắt Thuật ngữ đầy đủ 1 SAT Satisfiability 2 SMT Satisfiability Modulo Theories 3 DPLL Davis Putnam Logemann Loveland 4 CNF Conjunctive Normal Form 5 CA Classical Interval 6 AI Affine Interval 7 AF Affine Form 8 AF1 Affine Form1 9 AF2 Affine Form2 10 CAI Chebyshev Approximation Interval 11 IA Interval Arithmetic 12 PID Proportional Integral Derivative 13 QE-CAD Quantifier elimination - Cylindrical Algebraic Decomposition 14 CAD Cylindrical algebraic decomposition 15 RAHD Real Algebra in High Dimensions 16 ICP Interval constraint propagation 17 VS Virtual substitution 18 APC Atomic polynomial constraint 19 ICC Interval constraint contraction
  • 8. DANH MỤC HÌNH VẼ STT Số hiệu Tên hình vẽ 1 Hình 1 Đồ thị biểu diễn giá trị xấp xỉ Chebyshev của x2 và x|x|. 2 Hình 2 Mô hình giải quyết vấn đề bằng SAT. 3 Hình 3 Phương pháp “Eager approach”. 4 Hình 4 Phương pháp “Lazy approach”. 5 Hình 5 Sơ đồ cơ chế hoạt động của thủ tục DPLL. 6 Hình 6 Kết quả của ràng buộc đa thức. 7 Hình 7 Kết quả kiểm thử của ràng buộc đa thức. 8 Hình 8 Kiến trúc của SMT Solver raSat. 9 Hình 9 Kết quả kiểm thử của ràng buộc đa thức. 10 Hình 10 Kiểm thử trong SMT Solver raSat.
  • 9. DANH MỤC BẢNG STT Số hiệu Tên bảng 1 Bảng 1 Chọn giá trị cho biến trong khoảng dựa vào hệ số ưu tiên. 2 Bảng 2 Bảng giá trị đầu vào của các biến. 3 Bảng 3 Các ca kiểm thử sử dụng kỹ thuật kiểm thử cặp đôi. 4 Bảng 4 Các ca kiểm thử cặp đôi của 2 biến đầu vào. 5 Bảng 5 Các ca kiểm thử cặp đôi thêm các giá trị biến thứ ba. 6 Bảng 6 Các ca kiểm thử cặp đôi của ba biến lặp theo chiều dọc. 7 Bảng 7 Các ca kiểm thử cặp đôi của ba biến lặp theo chiều ngang. 8 Bảng 8 Bảng so sánh raSAT 0.2 và raSAT áp dụng kiểm thử cặp đôi. 9 Bảng 9 Kết quả raSAT 0.1 tại cuộc thi SMT - COMP 2014. 10 Bảng 10 Kết quả raSAT 0.2 tại cuộc thi SMT - COMP 2015. 11 Bảng 11 Kết quả raSAT 0.3 và 0.4 tại cuộc thi SMT - COMP 2016. 12 Bảng 12 Kết quả thực nghiệm của raSAT 0.2 và raSAT0.2 – Pairwise testing.
  • 10. 1 MỞ ĐẦU Với sự phát triển của công nghệ thông tin các sản phẩm phần mềm được xây dựng với các yêu cầu khắt khe về chất lượng và độ tin cậy. Đặc biệt là các hệ thống ứng dụng trong các ngành công nghệ cao như hàng không, vận tải, y tế... cần độ tin cậy và chính xác cao. Bởi chỉ một sai sót nhỏ của hệ thống có thể gây ra những tổn thất to lớn về tính mạng con người và thiệt hại kinh tế. Với nhu cầu như vậy các công cụ kiểm thử và kiểm chứng tự động ra đời sẽ giúp các nhà phát triển đảm bảo độ tin cậy và giảm chi phí sản xuất phần mềm. Hiện nay rất nhiều kỹ thuật được nghiên cứu và sử dụng để đảm bảo chất lượng của phần mềm. Hai kỹ thuật truyền thống đã và đang được sử dụng để đảm bảo chất lượng phần mềm là kiểm thử phần mềm (Software testing) và kiểm chứng phần mềm (Software verification). Tuy nhiên việc sử dụng các phương pháp kiểm thử chỉ làm giảm bớt lỗi của hệ thống mà không thể kết luận được hệ thống không có lỗi. Các phương pháp kiểm chứng đang được quan tâm số một trong việc chứng minh tính đúng đắn của hệ thống. Hiện nay các hướng nghiên cứu về SMT solver đang được quan tâm rộng rãi bởi chúng đóng vai trò quan trọng trong bài toán kiểm chứng phần mềm. SMT solver đóng vai trò là công cụ nền (backend engine) trong các công cụ kiểm chứng phần mềm. Các bài toán kiểm chứng được đưa về giải tính thỏa mãn (SAT/UNSAT) của các công thức logic bằng các công cụ SMT solver. Giải các ràng buộc đa thức toán học (Polynomial constraint) được ứng dụng nhiều trong phân tích hệ thống, kiểm chứng phần cứng và phần mềm, cụ thể như chứng minh tính bất biến của một chương trình hoặc phân tích kết quả của các hệ thống. Tất cả các ứng dụng trên cần được tự động và cần có công cụ để hỗ trợ để giải quyết bài toán. Giải các ràng buộc đa thức toán học là đưa ra kết luận ràng buộc đó là SAT hoặc UNSAT.
  • 11. 2 Ở luận văn này chúng tôi sẽ tập trung nghiên cứu về các kỹ thuật giải các ràng buộc phi tuyến tính (non-linear constraints) bằng phương pháp tính toán xấp xỉ (approximation methods) và thực nghiệm trên công cụ SMT Solver raSAT. Cụ thể mục tiêu của luận văn là nghiên cứu về các phương pháp tính toán khoảng (Interval Arithmetic) để giải các ràng buộc phi tuyến tính. Đồng thời luận văn cũng đề xuất áp dụng phương pháp kiểm thử cặp đôi vào SMT Solver raSAT và đã cho kết quả cải tiến đáng kể hiệu quả của raSAT. Luận văn bao gồm 4 chương, trong đó phần giới thiệu về giải các ràng buộc toán học và ứng dụng của giải các ràng buộc toán học sẽ nằm ở Chương 1. Chương 2: Giới thiệu về phương pháp tính toán khoảng và các kĩ thuật tính xấp xỉ (over approximation) gồm Classical Interval (CA), Affine Interval (AI) và Chebyshev Approximation Interval (CIA). Chương 3: Giới thiệu về SAT Solver và SMT Solver. Trình bày các kĩ thuật trong SMT Solver raSAT trong việc giải các ràng buộc đa thức. Chương 4: Trình bày về các kĩ thuật kiểm thử trong raSAT. Đề xuất kỹ thuật kiểm thử cặp đôi (pairwise) áp dụng cho raSAT. Phần kết luận: Kết luận và hướng nghiên cứu dự định trong tương lai.
  • 12. 3 Chương 1. GIỚI THIỆU 1.1. Giải các ràng buộc đa thức Giải các đa thức đóng vai trò quan trọng trong các lĩnh vực kiểm chứng (verification) phần mềm, chứng minh tính dừng (proving termination), tính bất biến của chương trình (loop invariant generation) [28]. Do vậy việc đưa ra các phương pháp và công cụ để giải tự động các ràng buộc đa thức là yêu cầu thiết yếu. Kiểm thử không thể kiểm tra được tất cả các trường hợp có thể xảy ra của chương trình, do vậy việc chứng minh tính đúng của chương trình là một giải pháp thay thế. Để chứng minh chương trình không có lỗi có thể chuyển sang bài toán giải ràng buộc toán học. Sau đó sẽ thực hiện giải các ràng buộc toán học đó để đưa ra kết luận là chương trình có lỗi hoặc không có lỗi. Ràng buộc toán học có thể là đơn thức, đa thức tuyến tính hoặc phi tuyến tính. Đơn thức (Monomial): Một đơn thức được biểu diễn gồm v1 p1 … vm pm với các điều kiện m > 0, vi là biến, pi > 0 𝑣ới i ∈ {1 … m} và vi # vj với i , j ∈ {1 … m}, i # j . Một đơn thức là một hàm tuyến tính (linear) nếu m=1 và p=1. Đa thức (Polynomial): Định nghĩa Polynomial Atom, Constraint, Clause và CNF:  Một nguyên tử đa thức (polynomial atom) được xây dựng từ những toán tử quan hệ như ≥ , > 𝑣à = giữa các biểu thức toán học được xây dựng bằng cách áp dụng các phép cộng, trừ qua các biến và các số học.  Một ràng buộc đa thức (polynomial constraint) là một kết hợp logic của các nguyên tử đa thức.  Một mệnh đề là một ràng buộc đa thức bao gồm các phép tuyển hay phép phủ định của các đa thức nguyên tử. Một ràng buộc đa thức thuộc CNF nếu nó là một mệnh đề chuẩn tắc hội .
  • 13. 4 1.2. Ứng dụng của giải các ràng buộc đa thức Giải các ràng buộc đa thức ứng dụng trong việc phân tích, chứng minh tính đúng đắn của chương trình. Các ứng dụng cụ thể của giải các ràng buộc đa thức gồm:  Tự động phát hiện lỗi làm tròn và lỗi tràn số [3]: Trong khoa học máy tính số thực thường được sử dụng để xử lý. Tuy nhiên trong các hệ thống phần cứng cần tiếc kiệm bộ nhớ để có chi phí thấp và tốc độ cao nên các xử lý sẽ sử dụng số nhị phân để xử lý các tính toán. Việc chuyển đổi các thuật toán trên số thực về số nhị phân rất dễ cho các kết quả khác nhau do các lỗi làm tròn và tràn số. Do vậy việc kiểm soát các lỗi làm tròn, tràn số và các lỗi ở biên là vô cùng cần thiết. Ví dụ các ứng dụng sử lý tín hiệu số như bộ giải mã Mpeg, các thư viện OpenGL...  Chứng minh tính tự động [23]: Giải các ràng buộc toán học ứng dụng trong việc chứng minh tính dừng của thuật toán. Chứng minh tự động tính dừng của thuật toán là việc đánh giá thuật toán sẽ dừng trong bất kể trường hợp nào hoặc ngược lại thuật toán có thể là sẽ chạy mãi mãi.  Chứng minh tính đúng của chương trình [14]: Giải các ràng buộc tuyến tính hoặc phi tuyến tính ứng dụng trong việc chứng minh tính đúng của một chương trình. Chứng minh tính đúng của một chương trình là đi khẳng định chương trình luôn đúng với mọi thay đổi của các biến trong chương trình. Chuyển đổi một chương trình về các ràng buộc toán học và đi chứng minh ràng buộc đó là một cách gián tiếp đi chứng minh tính đúng của một chương trình.  Thiết kế bộ điều khiển cơ khí [15]: Bộ điều khiển (PID - Proportional Integral Derivative) được ứng dụng rộng rãi trong các điều khiển công nghiệp. Giải các ràng buộc toán học có thể ứng dụng trong việc thiết kế các bộ điều khiển phức tạp và cần độ tin cậy cao.
  • 14. 5 Ví dụ như công ty Fujitsu đã ứng dụng giải các ràng buộc phi tuyến tính trong việc thiết kế bộ điều khiển đọc/ghi của ổ cứng. Ví dụ 1.2.1: Phân tích tính dừng của chương trình sau: Biểu diễn chương trình trên thành các biểu thức logic như sau.  pt1 : 𝑦 ≥ 1 , 𝑥′ = 𝑥 − 1, 𝑦′ = 𝑦, 𝑧′ = 𝑧  pt2 : 𝑦 < 𝑧 , 𝑥′ = 𝑥 − 1, 𝑦′ = 𝑦, 𝑧′ = 𝑧 − 1  pt3 : 𝑦 ≥ 𝑧 , 𝑥′ = 𝑥, 𝑦′ = 𝑧 + 1, 𝑧′ = 𝑧 Nếu có thể giải được đa thức pt1 ˄ pt2 ˄ pt3 là UNSAT thì kết luận chương trình trên không bị lặp vô hạn. 1.3. Các SMT giải ràng buộc toán học Hiện nay các SMT giải các ràng buộc toán học có thể chia thành năm loại như sau:  QE-CAD: RAHD [19] (Real Algebra in High Dimensions) là một công cụ giải các ràng buộc phi tuyến tính trên tập số thực. RAHD phát triển dựa vào lý thuyết QE-CAD (Quantifier Elimination - Cylindrical Algebraic Decomposition) đề xuất bởi tác giả Tarski.
  • 15. 6  Interval constraint propagation (ICP): ICP sử dụng phương pháp tính toán khoảng để tính sấp xỉ để phân tích xung đột. Các công cụ phát triển dựa vào ICP gồm RSOLVER [21], iSAT [4].  Bit-blasting: Là phương pháp chuyển đổi bài toán về các công thức logic mệnh đề và sử dụng SAT Solver để giải. Các công cụ phát triển dựa vào Bit-blasting gồm MiniSMT [5], UCLID [1].  Linearization: Là phương pháp chuyển đổi các ràng buộc đa thức về ràng buộc tuyến tính và sử dụng một SMT Solver để giải ràng buộc tuyến tính này. Các công cụ phát triển dựa vào phương pháp này gồm Barcelogic [9], CORD [2].  Virtual substitution (VS) [6]: Là thủ tục được sử dụng để nhúng với SMT Solver. Các công cụ phát triển dựa vào phương pháp này gồm SMT-RAT [13], Z3 [8]. Trong đó Z3 là công cụ kết hợp hai phương pháp VS và ICP để giải các ràng buộc tuyến tính.
  • 16. 7 Chương 2. PHƯƠNG PHÁP TÍNH TOÁN KHOẢNG 2.1. Giới thiệu về phương pháp tính toán khoảng Trong các tính toán số học đôi khi việc tìm được kết quả chính xác là việc vô cùng khó khăn, do vậy việc tính toán các giá trị gần đúng với kết quả thực tế là một giải pháp được đưa ra. Phương pháp tính toán khoảng (Interval Arithmetic - IA) sử dụng để tìm cận trên và cận dưới của các ràng buộc dựa trên phương pháp tính xấp xỉ (approximation methods). Phương pháp này được áp dụng cho giải các bài toán để tìm ra kết quả gần đúng với mức độ lỗi có thể chấp nhận được. Ví dụ: Với phương trình x2 + x − 6 = 0 ta dễ dàng sử dụng công thức biến đổi trong trương trình trung học cơ sở để tìm được nghiệm của phương trình là x1 = −3 và x2 = +2. Tuy nhiên với một số bài toán không thể tìm được nghiệm chính xác của bài toán, ví dụ với phương trình x2 − 2 = 0 thì nghiệm được biểu diễn √2. Như vậy nếu chỉ sử dụng các kiểu số cơ bản thì không thể biểu diễn chính xác tất cả các giá trị của bài toán mà bắt buộc phải làm tròn để lấy giá trị xấp xỉ. Do vậy các nhà khoa học đã đưa ra lý thuyết tính toán khoảng (Interval Arithmetic -IA) để kiểm soát lỗi làm tròn trong các tính toán, do vậy kết quả thu được sẽ được kiểm soát về độ tin cậy. Các số thực x, y trong phương pháp tính toán khoảng được biểu diễn như sau:  x = [ x , x ], y = [ y , y ], Trong đó x = min( x ∈ x ) , y = min( y ∈ y ) là cận dưới lần lượt của x và y, x = max ( x ∈ x ), y = max ( y ∈ y) là cận trên lần lượt của x và y .  x = y nếu x = y và x = y  x < 𝑦 nếu x < y  x > 𝑦 nếu y > y  x là số thực đơn (single real number) nếu x = x. Ví dụ 0 = [ 0 , 0 ]
  • 17. 8 Trong phương pháp tính toán khoảng có hai kĩ thuật chính gồm Classical Interval (CI) [20] và Affine Arithmetic (AF) [24]. Ngoài ra còn một số kĩ thuật được phát triển từ hai kĩ thuật trên gồm AF, AF1, AF2 [17] và Chebyshev Affine Interval (C AI) [27]. Chi tiết các kĩ thuật sẽ được trình bày lần lượt ở phần tiếp theo của luận văn. 2.2. Phương pháp tính toán khoảng CI Kĩ thuật tính toán khoảng Classical Interval (CI) [20] được tác giả Ramnon E.Moore giới thiệu vào năm 1960. Ý tưởng chính của kĩ thuật này là đặt giới hạn lỗi làm tròn trong các tính toán số học bằng cách biểu diễn mỗi giá trị trong CI bởi một khoảng giới hạn. Các khoảng giới hạn này sẽ được sử dụng để tính toán thay thế cho giá trị gốc. Kĩ thuật Classical Interval được định nghĩa như sau. Định nghĩa 2.2.1: Một Classical Interval của x là một khoảng x = [ xl , xu] trong đó xl ≤ x ≤ xu . Định nghĩa 2.2.2: Các phép toán cơ bản trong Classical Interval gồm ☉= { + , − , × ,÷ } được định nghĩa như sau.  [ xl , xu] + [ yl , yu] = [ xl + yl , xu + yu ]  [ xl , xu] − [ yl , yu] = [ xl − yu , xu − yl]  [xl , xu ] × [ yl , yu ] = [min(xlyl, xlyu , xuyl, xuyu), max(xl yl, xlyu, xuyl, xuyu) ]  [xl , xu] ÷ [ yl , yu] = [ xl , xu] × [ 1 yl , 1 yu ] nếu 0 ∉ [ yl , yu] Bổ đề 2.2.3:Với x = [ xl , xu ], y = [ yl , yu ] thì z = x ☉ y ∈ [ xl , xu ] ☉ [ yl , yu ] , trong đó ☉= { + , − , × ,÷ }. Ví dụ 2.2.4:Cho x = [ 1 ,4 ] , y = [ 3 ,6 ] tính z = x ☉ y với ☉={ + , − , × ,÷ }.  Phép cộng z = x + y : z = [ 1 ,4 ] + [ 3 , 6 ] = [ −1 + 3 , 4 + 6] = [ 2 , 10]
  • 18. 9 Kết luận 𝑧 = [ 2 , 10]  Phép trừ z = x − y : z = [ 1 ,4 ] − [ 3 , 6 ] = [ −1 − 6 , 4 − 3] = [ −7 , 1] Kết luận 𝑧 = [ −7 , 1]  Phép nhân z = x × y : z = [ 1 ,4 ] × [ 3 , 6 ] = [ min (−1 × 3, −1 × 6, 4 × 3, 4 × 6), max(−1 × 3, −1 × 6, 4 × 3, 4 × 6) ] = [ min(−3, −6, 12, 24), max(−3, −6, 12, 24)] = [ −6 , 24 ] Kết luận z = [ −6 , 24 ]  Phép chia z = x ÷ y : z = [ 1 ,4 ] ÷ [ 3 , 6 ] = [ 1 ,4 ] × [ 1 3 , 1 6 ] = [ min (− 1 3 , − 1 6 , 4 3 , 2 3 ) , max (− 1 3 , − 1 6 , 4 3 , 2 3 )] = [ − 1 6 , 4 3 ] Kết luận z = [ − 1 6 , 4 3 ] Hạn chế của Classical Interval là kết quả tính toán có thể rộng hơn kết quả thực tế mong muốn trong các phép tính lớn. Khi mà kết quả ở một trạng thái là đầu vào của trạng thái tiếp theo. Nguyên nhân là do các đầu vào ban đầu của CI là độc lập và không phục thuộc nhau do đó trong trường hợp các tính toán có liên quan tới các đầu vào phục thuộc nhau sẽ làm kết quả của phép toán sai lệnh so với kết quả thực tế. Ví dụ với phép toán trừ ( − ) , sử dụng công thức ở 2.2.2 với x = [2 , 5] kết quả thu được là x − x = [2 , 5] − [2 , 5] = [−3 , 3] . Do kĩ thuật CI không thể nhận biết được hai đầu vào là giống nhau nên sẽ biểu diễn hai giá trị với
  • 19. 10 cùng một khoảng do vậy dẫn đến kết quả là [−3 , 3] thay vì kết quả chính xác là [0 , 0] . Ví dụ với các phép toán nhiều hơn hai đầu vào cho x = [4 , 6] tính x(10 − x) . Sử dụng các công thức ở 2.2.2 như sau : 10 − x = [10 , 10] − [4 , 6] = [4 , 6] x(10 − x) = [4 , 6] × [4 , 6] = [16 , 36] Kết quả chính xác là [24 , 25] thay vì [16 , 36]. Do kĩ thuật Classical Interval không nhận biết được hai đầu vào của phép nhân là x và (10 − x) phụ thuộc nhau nên dẫn đến khoảng kết quả thu được rộng hơn rất nhiều so với khoảng kết quả thực tế của phép toán. Như vậy với các phép tính có nhiều hơn hai đầu vào không độc lập nhau sẽ dẫn đến lỗi tính toán và kết quả thu được rộng hơn mong muốn. Để khắc phục nhược điểm này của Classical Interval phần tiếp theo của luận văn sẽ giới thiệu phương pháp tính toán khoảng Affine Interval (AI). 2.3. Phương pháp tính toán khoảng Affine Interval Kĩ thuật tính toán khoảng Affine Interval (AI) [24] được giới thiệu bởi hai tác giả Comba và Stolfi vào năm 1993. Kĩ thuật AI được phát triển từ kĩ thuật CI bằng cách tự động theo dõi việc làm tròn số để giảm thiểu các lỗi trong mỗi bước tính toán. Ngoài ra để khắc phục nhược điểm các đầu vào độc lập của CI như ở trên, AI có thể theo dõi mỗi tương tác giữa các thành phần của đa thức. Mục đích của AI là cung cấp các giới hạn tính toán để đảm bảo cho các kết quả tính toán có lỗi đủ nhỏ, đặc biệt trong các chuỗi tính toán lớn kĩ thuật AI sẽ phát huy được lợi thế này. AI được đánh giá là kĩ thuật có độ chính xác cao, tuy nhiên kĩ thuật này phức tạp và tốn nhiều chi phí cho việc áp dụng vào các ứng dụng thực tế. Các biến trong Affine Interval được biểu diễn bởi số thực ɛ (noise symbols) có giá trị trong khoảng [−1 , 1]. Các tính toán trong Affine Interval
  • 20. 11 cho phép giữ giá trị ban đầu của các tính toán dựa trên kí tự ɛ và cải thiện độ chính xác khi thực hiện phép trừ (−). Ví dụ x ∈ (1 , 3), x được biểu diễn x = 2 + ɛ, khi đó x = (2 + ɛ) − (2 + ɛ) có giá trị hợp lý bằng 0. Affine Interval được phát triển dưới các dạng Affine Forms (AF) bằng cách xác định số lượng biến để theo dõi mức độ lỗi khi thực hiện lấy xấp xỉ hoặc làm tròn trong phép nhân. Phần tiếp theo của luận văn sẽ giới thiệu các dạng của Affine Interval gồm AF, AF1, AF2. 2.3.1. Dạng AF Định nghĩa 2.3.1: Dạng AF [17] của biến x biểu diễn như sau: ẍ = a0 + ∑ aiɛi n i=1 Với x ∈ ( a0 − ∑|ai| n i=0 , a0 + ∑|ai| n i=0 ) , ɛi ∈ [−1 , 1] (noise symbols) Định nghĩa 2.3.2: Cho x, y biểu diễn lần lượt dưới dạng AF như sau: ẍ = a0 + ∑ aiɛi n i=1 ÿ = b0 + ∑ biɛi n i=1 Các phép toán của dạng AF gồm ☉={ + , − , × ,÷ } như sau: ẍ + ÿ = (a0 + b0 ) + ∑(ai + bi)ɛi n i=1 ẍ − ÿ = (a0 − b0 ) + ∑(ai − bi)ɛi n i=1 ẍ × ÿ = (a0b0 ) + ∑(a0bi − b0ai)ɛi n i=1 + ( ∑|ai| n i=1 ) ( ∑|bi| n i=1 ) ɛn+1
  • 21. 12 ẍ ÷ ÿ = ẍ × 1 ÿ nếu 0 ∉ (b0 − ∑|bi| n i=0 , b0 + ∑|bi| n i=0 )) Với ɛn+1 là một noise symbols mới và 1 ÿ được tính bằng phương pháp xấp xỉ Chebyshev. Chuyển đổi giữa CI và AF [24]: Với x ở dạng CI x = [ xl , xu ] chuyển thành AF Form của biến x như sau: ẍ = xu + xl 2 + xu − xl 2 ɛx Với x ở dạng AF Form ẍ = a0 + ∑ aiɛi chuyển thành CI của biến x như sau: n i=1 x = [ a0 − ∑|ai| n i=0 , a0 + ∑|ai| n i=0 ] Ví dụ 2.3.3: Với hai giá trị x = [−1 , 5] , y = [ 3 , 7] được biểu diễn bằng AF như sau: x = 2 + 3ɛ1 y = 5 + 2ɛ2 Tính z = x ☉ y với ☉ = { + , − , × ,÷ }.  Phép cộng z = x + y : z̈ = ẍ + ÿ = 2 + 3ɛ1 + 5 + 2ɛ2 = 7 + 3ɛ1 + 2ɛ2 Kết quả z̈ = (7 − 3 − 2 , 7 + 3 + 2 ) = (2 , 12) nên kết luận z ∈ [ 2 , 10 ].  Phép trừ z = x − y : z̈ = ẍ − ÿ = 2 + 3ɛ1 − 5 − 2ɛ2
  • 22. 13 = − 3 + 3ɛ1 − 2ɛ2 Kết quả z̈ = (−3 − 3 + 2 , −3 + 3 − 2 ) = (−4 , −2 ) nên kết luận z ∈ [−4 , −20 ].  Phép nhân z = x × y : z̈ = ẍ × ÿ = (2 + 3ɛ1) × (5 − 2ɛ2) = 10 − 4ɛ2 + 15ɛ1 − 6ɛ1ɛ2 = 10 − 4ɛ2 + 15ɛ1 − 6ɛ3 với ɛ3 = ɛ1ɛ2 Kết quả z̈ = (10 + 4 − 15 + 6, 10 − 4 + 15 − 6) = (5 , 15 ) nên kết luận z ∈ [5 , 15] . Và ɛ3 là một noise symbols mới được tạo ra từ phép nhân z̈ = ẍ × ÿ.  Phép chia z = x ÷ y : z̈ = ẍ ÷ ÿ = (2 + 3ɛ1) × 1 (5 − 2ɛ2) = 2 + 3ɛ1 5 − 2ɛ2 Kết quả z̈ = ( 2 − 3 5 + 2 , 2 + 3 5 − 2 ) = ( 1 7 , 5 3 ) nên kết luận z ∈ [ 1 7 , 5 3 ]. Dạng AF có hạn chế là khi tính toán với các ràng buộc phi tuyến tính lớn sẽ làm gia tăng noise symbols mới. 2.3.2. Dạng AF1 Dạng AF1 [17] được mở rộng từ dạng AF bằng cách thêm một số thực ɛ⫨ (fixed error noise symbol) có giá trị trong khoảng [−1 , 1], để kiểm soát lỗi tính toán xấp xỉ của các toán hạng phi tuyến tính. Tất cả các toán hạng phi tuyến tính sẽ sử dụng biến này để tính toán.
  • 23. 14 Định nghĩa 2.3.4: Dạng AF1 của biến x biểu diễn như sau: x̂ = a0 + ∑ aiɛi n i=1 + an+1ɛ⫨ Với x ∈ (a0 − ∑|ai| n i=0 − an+1, a0 + ∑|ai| + an+1 n i=0 ) , ɛi ∈ [−1 , 1] (noise symbols) , ɛ⫨ ∈ [−1 , 1] (fixed error noise symbol), an+1 ≥ 0. Định nghĩa 2.3.5: Biểu diễn x, y dưới dạng AF1 : x̂ = a0 + ∑ aiɛi n i=1 + an+1ɛ⫨ ŷ = b0 + ∑ biɛi + bn+1ɛ⫨ n i=1 Các phép toán của dạng AF1 gồm ☉ = { + , − , × ,÷ } như sau : x̂ + ŷ = (a0 + b0 ) + ∑(ai + bi)ɛi n i=1 + (an+1 + bn+1)ɛ⫨ x̂ − ŷ = (a0 − b0 ) + ∑(ai − bi)ɛi n i=1 + (an+1 + bn+1)ɛ⫨ x̂ × ŷ = (a0b0 ) + ∑(a0bi − b0ai)ɛi + (|a0|bn+1 + |b0|an+1) n i=1 + ( ∑|ai| n i=1 ) ( ∑|bi| n i=1 ) ɛ⫨ x̂ ÷ ŷ = x̂ × 1 ŷ nếu 0 ∉ (b0 − ∑|bi| n i=0 − bn+1, b0 + ∑|bi| n i=0 + bn+1)) Với 1 ŷ được tính bằng phương pháp xấp xỉ Chebyshev, an+1 ≥ 0 , bn+1 ≥ 0 và hệ số của ɛ⫨ là (an+1 + bn+1) với phép toán trừ (−) .
  • 24. 15 Ví dụ 2.3.6: Với hai giá trị x = 2 + 3ɛ1, y = 5 + 2ɛ2 tính z = x ☉ y với ☉= { + , − , × ,÷ }. Phép cộng, trừ và chia có kết quả tương tự với AF ở ví dụ 2.2.7 Phép nhân z = x × y : ẑ = x̂ × ŷ = (2 + 3ɛ1) × (5 − 2ɛ2) = 10 − 4ɛ2 + 15ɛ1 − 6ɛ1ɛ2 = 10 − 4ɛ2 + 15ɛ1 − 6ɛ⫨ với ɛ⫨ = ɛ1ɛ2 Kết quả thu được tương tự với dạng AF z ∈ [5 , 15 ] và các phép toán phi tuyến tính được gán vào biến ɛ⫨. Như vậy kĩ thuật AF1 đã giải quyết được hạn chế gia tăng noise symbols mới bằng cách sử dụng duy nhất một noise symbols ɛ⫨ vào các toán hạng phi tuyến tính của ràng buộc. 2.3.2. Dạng AF2 Dạng AF2 [17] được mở rộng từ dạng AF1 bằng cách thêm hai số thực ɛ− ∈ [−1 ,0] (negative noise symbol) và ɛ+ ∈ [0 , 1] (positive noise symbol để cải thiện độ chính xác của kết quả trong các biểu thức có hai noise symbol trở lên. Các noise symbol có hệ số hai trở lên sẽ được thay thế bằng ɛ− hoặc ɛ+ phụ thuộc vào hệ số của noise symbol đó trong ràng buộc. Định nghĩa 2.3.7: Dạng AF2 của biến x biểu diễn như sau : x̆ = a0 + ∑ aiɛi 2n i=1 + an+1ɛ+ + an+2ɛ− + an+3ɛ⫨ Với x ∈ ( a0 − ∑|ai| n i=0 − an+2 − an+3 , a0 + ∑|ai| + an+1 + an+3 n i=0 ) , ɛi ∈ [−1 , 1] (noise symbols), ɛ− ∈ [−1 ,0] (negative noise symbol), ɛ+ ∈ [0 , 1] (positive noise symbol) , ɛ⫨ ∈ [ −1 , 1] (fixed error noise symbol) và an+1 ≥ 0, an+2 ≥ 0, an+3 ≥ 0.
  • 25. 16 Định nghĩa 2.3.8: Biểu diễn hai số x, y dưới dạng AF2 như sau: x̆ = a0 + ∑ aiɛi n i=1 + an+1ɛ+ + an+2ɛ− + an+3ɛ⫨ y̆ = b0 + ∑ bɛi n i=1 + bn+1ɛ+ + bn+2ɛ− + bn+3ɛ⫨ Các phép toán của AF2 form gồm ☉= { + , − , × ,÷ } như sau : x̆ + y̆ = (a0 + b0 ) + ∑(ai + bi)ɛi n i=1 + (an+1 + bn+1)ɛ+ + (an+2 + bn+2)ɛ− + (an+3 + bn+3)ɛ⫨ x̆ − y̆ = (a0 − b0 ) + ∑(ai − bi)ɛi n i=1 + (an+1 + bn+2)ɛ+ + (an+2 + bn+1)ɛ− + (an+3 + bn+3)ɛ⫨ x̆ × y̆ = (a0b0 ) + ∑(a0bi − b0ai)ɛi + n i=1 K1ɛ+ + K2ɛ− + K3ɛ⫨ Với K1 = ∑ aibi n+2 i=1,aibi >0 + { a0bn+1 + b0an+1 nếu a0 ≥ 0, b0 ≥ 0 a0bn+1 − b0an+2 nếu a0 > 0, 𝑏0 < 0 −a0bn+2 − b0an+1 nếu a0 < 0, 𝑏0 > 0 −a0bn+2 − b0an+2 nếu a0 < 0, 𝑏0 < 0 K2 = ∑ aibi n+2 i=1,aibi <0 + { a0bn+2 + b0an+2 nếu a0 ≥ 0, b0 ≥ 0 a0bn+2 − b0an+1 nếu a0 > 0, 𝑏0 < 0 −a0bn+1 − b0an+2 nếu a0 < 0, 𝑏0 > 0 −a0bn+1 − b0an+1 nếu a0 < 0, 𝑏0 < 0 K3 = ∑ ∑ |aibj| n+3 j=1,i # j n+3 i=1 + ( |a0|bn+3 + |b0|an+3) + (an+3 + bn+3)
  • 26. 17 x̆ ÷ y̆ = x̆ × 1 y̆ nếu 0 ∉ (b0 − ∑|bi| n i=0 − bn+2 − bn+3 , b0 + ∑|bi| + n i=0 bn+1 + bn+3). Với 1 y̆ được tính bằng phương pháp xấp xỉ Chebyshev. Ví dụ 2.3.9: Với hai giá trị x ∈ ( 0 , 2 ), y = (2 − x) được biểu diễn bằng dạng AF2 : x̆ = 1 + ɛ1 , y̆ = 1 − ɛ1 tính z = x ☉ y với ☉ = { + , − , × ,÷ }. Phép cộng z = x + y : z̆ = x̆+ y̆ = 1 + ɛ1 + 1 − ɛ1 = 2 Kết quả z̆ = 2 Phép trừ z = x − y z̆ = x̆ − y̆ = 1 + ɛ1 − 1 + ɛ1 = 2ɛ1 Kết quả z̆ ∈ [−2 , 2 ] Phép nhân z = x × y ∶ z̆ = x̆ × y̆ = (1 + ɛ1) × (1 − ɛ1 ) = 1 − ɛ1 + ɛ1 − ɛ1ɛ1 = 1 + ɛ− Kết quả z̆ ∈ [0,1 ] vì ɛ− ∈ [−1 ,0]
  • 27. 18 Như vậy kết quả của AF2 được cải thiện độ chính xác hơn các kĩ thuật CI, AF và AF1 khi có nhiều hơn hai noise symbol trong một biểu thức. Cụ thể kết quả của các kĩ thuật CI, AF, AF1 và AF2 như sau CI : z ∈ ( 0 , 4 ) AF : z ∈ ( 0 , 2 ) AF1 : z ∈ ( 0 , 2 ) AF2 : z ∈ ( 0 , 1 ) 2.4. Phương pháp tính toán khoảng C AI Phương pháp tính toán khoảng Chebyshev Approximation Interval (C AI) [26] được hai tác giả Tô Văn Khánh (UET/VNU-HN) và Mizuhito Ogawa (JAIST) giới thiệu vào năm 2012. Phương pháp tính toán khoảng C AI là một dạng mới của phương pháp tính toán khoảng Affine Interval được phát triển dựa trên phương pháp tính xấp xỉ Chebyshev. Định nghĩa 2.4.1: C AI của biến x biểu diễn dưới dạng sau: ẋ = a̅0 + ∑ a̅iɛi n i=1 + ∑ a̅i+nɛi+n n i=1 + a̅2n+1ɛ⫨ Với ɛi ∈ [−1 , 1] (noise symbols), ɛ⫨ ∈ [−1 , 1] (fixed error noise symbols), ɛi+1 ∈ [0 , 1] sử dụng biểu diễn cho giá trị tuyệt đối |ɛi| của ɛi , a̅i được biểu diễn dưới dạng CI. Ý tưởng chính của phương pháp này như sau:  Sử dụng một noise symbols mới ɛi+1 ∈ [0 , 1] để thay cho giá trị tuyệt đối của |ɛi| (ɛi+1 = |ɛi| ).  Giá trị xấp xỉ của x2 theo phương pháp tính xấp xỉ Chebyshev sẽ được tính bằng giá trị tuyệt đối của các noise symbols.  Với x ∈ (−1,1) , Giá trị sấp xỉ Chebyshev của x2 và x|x| lần lượt như sau:  |x| − 1 4 ≤ x2 = |x2| < |x|
  • 28. 19  x − 1 4 ≤ x|x| ≤ x + 1 4 Giá trị sấp xỉ Chebyshev của x2 và x|x| được mô tả cụ thể ở biểu đồ ở hình 1. Tương tự nếu áp dụng cho noise symbols ɛ sẽ tìm được giá trị xấp xỉ ɛ 2 và ɛ|ɛ| lần lượt như sau:  ɛ 2 = |ɛ||ɛ| = |ɛ| + (− 1 4 , 0)  ɛ|ɛ| = ɛ + (− 1 4 , 1 4 ) Hình 1: Đồ thị biểu diễn giá trị xấp xỉ Chebyshev của x2 và x|x| [28]. Định nghĩa 2.4.2: Biểu diễn hai số x, y dưới dạng C IA như sau: ẋ = a̅0 + ∑ a̅iɛi n i=1 + ∑ a̅i+nɛi+n n i=1 + a̅2n+1ɛ⫨ ẏ = b̅0 + ∑ b̅iɛi n i=1 + ∑ b̅i+nɛi+n n i=1 + b̅2n+1ɛ⫨ Với c̅ ∈ [−1 , 1]. Các phép toán của C IA gồm { + , − , × ,÷ } như sau : ẋ + ẏ = (a̅0 + b̅0) + ∑(a̅i + b̅i)ɛi 2n i=1 + (c̅ a̅2n+1 + c̅ b̅2n+1) ɛ⫨ ẋ − ẏ = (a̅0 − b̅0) + ∑(a̅i − b̅i)ɛi 2n i=1 + (c̅ a̅2n+1 + c̅ b̅2n+1) ɛ⫨
  • 29. 20 ẋ × ẏ = K0 + K1ɛi + K2ɛi+n + Kɛ⫨ .Với { + , − , × } sử dụng của CI và K0, K1, K2, K được tính theo công thức sau : K0 = a̅0b̅0 + ∑(a̅ib̅i (− 1 4 , 0) + a̅ib̅i+n(− 1 4 , 1 4 ) n i=1 + b̅ia̅i+n (− 1 4 , 1 4 ) + a̅i+nb̅i+n(0, 1 4 )) K1 = ∑(a̅0b̅i + a̅ib̅0 + b̅ia̅i+n + a̅i+nb̅i) n i=1 K2 = ∑(a̅0b̅i+n + a̅i+nb̅0 + a̅ib̅i + a̅i+nb̅i+1) n i=1 K = (c̅ a̅0b̅2n+1 + c̅ b̅0a̅2n+1) + ∑ ∑ c̅ a̅ib̅i n j=1,i # j n i=1 + ∑ ∑ c̅ a̅ib̅i+n n j=1,i # j + ∑ c̅ a̅ib̅2n+1 n i=1 n i=1 + ∑ ∑ c̅ a̅i+nb̅i n j=1,i # j n i=1 + ∑ ∑ c̅ a̅i+nb̅i+n n j=1,i # j n i=1 + ∑ c̅ a̅i+nb̅2n+1 + c̅ a̅2n+1b̅2n+1 n i=1 ẋ ÷ ẏ = ẋ × 1 ẏ nếu 0 ∉ tham chiếu của ẏ
  • 30. 21 Chú ý chỉ số ɛ⫨ được lan truyền từ nguồn không xác định trước và hệ số của nó được tính bằng cách nhân với hệ số khác với c̅ = [−1,1]. Và 1 ẏ được tính bằng phương pháp xấp xỉ Chebyshev. Nhận xét: Phương pháp tính sấp xỉ Chebyshev được nhiều tác giả giới thiệu trước đây như Stolfy, Miyajima ..., áp dụng không chỉ với một chỉ số noise symbols mà mới nhiều chỉ số noise symbols khác nhau. Với phương pháp này giá trị của x2 sẽ được tính bằng giá trị trị tuyệt đối của các noise symbols. C IA phát huy được hiệu quả trong các tính toán sử dụng cùng một biểu tượng noise symbols để tăng hiệu quả trong các tính toán lớn như các đa thức Taylor. Ví dụ 2.4.3 Với x ∈ ( −3 , 1) tính f = x3 − 3x + x2 . Biến x được biểu diễn dưới dạng C IA như sau: ẋ = −1 + 2ɛ ḟ = x3̇ − 3ẋ + x2̇ = (−1 + 2ɛ) × (−1 + 2ɛ) × (−1 + 2ɛ) − 3(−1 + 2ɛ) + (−1 + 2ɛ) × (−1 + 2ɛ) = (1 − 4ɛ + 4ɛ2) × (−1 + 2ɛ) − (3 + 6ɛ) + (1 − 4ɛ + 4ɛ2) = (1 − 4ɛ + 4(|ɛ| + (− 1 4 , 0))) × (−1 + 2ɛ) − (3 + 6ɛ) + (1 − 4ɛ + 4(|ɛ| + (− 1 4 , 0))) = (1 − 4ɛ + 4|ɛ| + (−1,0)) × (−1 + 2ɛ) − (3 + 6ɛ) + (1 − 4ɛ + 4|ɛ| + (−1,0)) = ((0,1) − 4ɛ + 4|ɛ|) × (−1 + 2ɛ) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|) = ((−1,0) + (0,2)ɛ + 4ɛ − 8ɛ2 − 4|ɛ| + 8|ɛ|ɛ) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|) = ((−1; 0) + (0; 2)ɛ + 4ɛ − 8 (|ɛ| + (− 1 4 , 0)) − 4|ɛ| + 8 (ɛ + (− 1 4 , 1 4 ))) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|) = ((−1,0) + (0,2)ɛ + 4ɛ − 8|ɛ| + (−2; 0) − 4|ɛ| + 8ɛ + (−2; 2)) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|) = ((−3,4) + (12,4)ɛ − 12|ɛ| ) − (3 + 6ɛ) + ((0,1) − 4ɛ + 4|ɛ|) = (0,8) + (2,4)ɛ − 8|ɛ|
  • 31. 22 Áp dụng cách tính giá trị của |ɛ| trong hai khoảng lần lượt là ɛ ∈ [−1 ,0] và ɛ ∈ [0 , 1] :  Với ɛ ∈ [−1, 0], ḟ = (0, 8) + (2, 4)ɛ + (8, 8)ɛ = (0, 8) + (10, 12)ɛ. Kết quả của ḟ = (−12, 8)  Với ɛ ∈ [0 , 1], ḟ = (0, 8) + (2, 4)ɛ − (8, 8)ɛ = (0, 8) + (−6, −4)ɛ. Kết quả của ḟ = (−6, 8)  Với ɛ ∈ [−1 ,1] kết quả của ḟ = (−6; 8) ∪ (−12; 8) = (−12; 8) . Trong khi đó kết quả của CI, AF1 và AF2 lần lượt như sau: CI: f ∈ (−33,27) AF1: f ∈ (−25, 31) AF2: f ∈ (−13 ,19) Khi tính f = x3 − 3x + x2 với x = −1 + 2ɛ với kĩ thuật AF2 thì x3 sẽ được đưa vào ɛ⫨. Trong khi với kĩ thuật C IA sẽ được tính xấp xỉ bằng ɛ để cho phép giữ được giá trị ban đầu của x. Như vậy C IA sẽ giữ được giá trị ban đầu với các biểu thức có bậc số lớn (...bậc ≥ 3) , còn AF2 chỉ giữ được giá trị ban đầu của các biểu thức có bậc bằng hai.
  • 32. 23 Chương 3. SMT SOLVER VÀ SMT SOLVER raSAT Kiểm chứng các hệ thống phần mềm hoặc phần cứng bằng cách tự động phân tích và chứng minh cần các công cụ hiệu quả và có khả năng giải quyết được các bài toán phức tạp. SAT Solver là công cụ tốt cho việc giải logic mệnh đề. SAT Solver có thể giải hiệu quả với hàng triệu biến trong một mệnh đề và có thể tìm được lời giải tốt nhất. SMT Solver được coi là sự mở rộng của SAT đối với từng lý thuyết (Theory) nhất định. SMT Solver ứng dụng trong việc giải các công thức biểu diễn dưới dạng logic vị từ (First order logic – FOL) thay vì logic mệnh đề của SAT Solver. Cả SAT Solver và SMT Solver đều đóng vai trò là công cụ nền (backed engine) trong các công cụ kiểm chứng phần mềm. Phần tiếp theo của luận văn sẽ trình bày cụ vể SAT Solver và SMT Solver. 3.1. SAT Solver SAT (satisfiability) là công cụ chứng minh một bài toán logic mệnh đề là SAT hoặc UNSAT [11]. Bài toán SAT là bài toán chứng minh tính thỏa mãn hay không thỏa mãn (SAT/UNSAT) của một công thức mệnh đề logic. Các công cụ chứng minh tự động cho bài toán này gọi là SAT Solver. SAT Solver được ứng dụng trong việc giải các bài toán trí tuệ nhân tạo và xây dựng các công cụ kiểm thử tự động trong các phần mềm. SAT Solver đóng vai trò như các công cụ nền hỗ trợ cho các SMT Solver (SAT Modul Thoeries), là các công cụ chứng minh tính thỏa mãn của các công thức logic xây dựng trên lý thuyết logic vị từ cấp 1. SAT Solver có thể giải được biểu thức logic với hàng trăm ngàn hoặc thậm chí hàng triệu biến trong một mệnh đề dưới dạng chuẩn tắc hội (CNF- Conjunctive Normal Form) với khoảng thời gian hợp lý. Những vấn đề cần thiết lập khi sử dụng SAT để giải quyết bao gồm:  Mã hóa bài toán theo biểu thức logic mệnh đề.  Chuyển đổi biểu thức sang dạng CNF(conjunctive normal form).  Sử dụng SAT Solver để tìm mối quan hệ của các biến logic.
  • 33. 24  Đưa vào một bộ giải mã để tạo ra lời giải. Problem Encoder CNF SAT Solver satisfying assigment Decoder Solution Hình 2: Mô hình giải quyết vấn đề bằng SAT. Ví dụ 3.1.1: Cho một công thức mệnh đề dưới dạng chuẩn tắc hội như sau F =(P ˅ Q ˅ R)˄ (¬P ˅ Q ˅ R ) trong đó P, Q, R là các biến logic mệnh đề (mang giá trị True hoặc False). Một công thức logic mệnh đề là SAT (satisfiability) khi tồn tại một bộ giá trị (true/false) trên các biến logic mệnh đề làm cho công thức đó là True. Ngược lại công thức đó là UNSAT (unsatisfiability) khi và chỉ khi mọi bộ giá trị (true/false) công thức mệnh đề đó luôn nhận giá trị False. Như ví dụ trên công thức F là SAT với bộ giá trị P=True, Q=False, R= True thì kết quả F= True. 3.2. SMT Solver Các hệ thống hiện nay được thiết kế ngày càng phức tạp, do đó cần có công cụ hiệu quả và phức tạp hơn để đảm bảo tính chính xác là cần thiết. SMT Solver (satisfiability modulo theories) là một giải pháp hiệu quả cho vấn đề trên. SMT Solver được sử dụng giải quyết nhiều vấn đề thực tế như các bài toán sinh ca kiểm thử tự động, bài toán lập lịch, kiểm thử mô hình... SMT là vấn đề quyết định tính thỏa mãn của công thức được biểu diễn trên nền tảng lý thuyết Logic vị từ cấp I (First order logic) [11]. Có thể coi SMT là phần mở rộng của SAT trong lý thuyết logic vị từ cấp I. Để duy trì quá trình quyết định lý thuyết bậc nhất thường được giới hạn không chứa các phép toán lượng tử tồn tại (∃) và với mọi (∀). Cũng tương tự SAT, việc chỉ ra một phép gán M thỏa mãn công thức đầu vào F trên nền tảng Logic vị từ cấp I được gọi là SMT solver.
  • 34. 25 Ví dụ 3.2.1: Cho công thức sau. Chứng minh F là giải được (SAT) hoặc không giải được (UNSAT). F = (x ∈ (−1,3) ˄ y ∈ (−1,3 ))˄ (𝑥3 − 𝑥2 + 𝑦 − 1.99) F là SAT khi tồn tại giá trị x và y thoải mãn công thức trên. Ngược lại nếu mọi giá trị x, y đều không thoải mãn công thức trên thì kết luận F là UNSAT . Khác với SAT chỉ tập chung vào giải các mệnh đề logic thì SMT lại tập trung vào giải các bài toán tự nhiên hơn như các ràng buộc, công thức tính toán... Các bước để giải bài toán SMT gồm:  Giải công thức dạng trừu tượng của SMT với SAT solver.  Quyết định thủ tục cho nền tảng lý thuyết T- ký hiệu là DPT bằng cách kiểm tra tính nhất quán (consistency) của các atoms được giải bởi SAT solver hoặc suy luận kết quả từ các atoms này. Cụ thể có 2 cách tiếp cận để giải các bài toán ở mức cao là “Eager approach” và “Lazy approach”. Trong đó “Eager approach” giải bằng cách chuyển đổi bài toán ở dạng SMT Solver về bài toán ở dạng SAT Solver, bài toán sẽ được chuyển về dạng mệnh đề logic và sử dụng SAT Solver để tìm lời giải. Cách tiếp cận này có thể tìm được tất cả các lời giải có thể, đặc biệt có thể tìm được lời giải tốt nhất cho bài toán. Tuy nhiên việc chuyển đổi sẽ vô cùng phức tạp và khó khăn, chi phí cho việc chuyển đổi với các bài toán lớn và phức tạp sẽ rất tốn kém. SMT formular F Encoder SAT- Solver F’ Sat / UnSat Hình 3: Phương pháp “Eager approach”.
  • 35. 26 Trong khi đó “Lazy approach” là cách tiếp cận khác bằng cách gắn một thủ thục ra quyết định vào SAT solver gọi là T-Solver để đưa ra các quyết định để giải bài toán. Đặc điểm của cách tiệp cận này là modul hóa và mềm dẻo để giải các bài toán. Phương pháp tìm kiếm không theo một quy định nhất định. Một số công cụ sử dụng phương pháp này gồm: raSat, OpenSMT, Sateen, SVC, Simplify, tSAT, veriT, Yices, Z3... SMT formular F Extra struct SAT- Solver T- Solver Not good Candidate model UnSat Sat Hình 4: Phương pháp “Lazy approach” . 3.3. Thủ tục DPLL 3.3.1 Thủ tục DPLL cho SAT Thủ tục DPLL là viết tắt của Davis–Putnam–Logemann–Loveland (DPLL) [22]. Được đặt theo tên của bốn tác giả Martin Davis, Hilary Putnam, George Logemann, Donald W. Loveland được giới thiệu vào năm 1960. Thủ tục DPLL sử dụng để mô tả các bước để giải bài toán SAT. Thủ tục DPLL sử dụng tìm lời giải cho các công thức logic mệnh đề dạng chuẩn tắc hội (CNF). Thuật toán DPLL là thuật toán khá phổ biến và được sử dụng trong hầu hết các máy giải SAT. Mục đích chính của nó là tìm ra một phép gán M thỏa mãn công thức F tồn tại ở dạng CNF. Trong đó:  Một literal l là được định nghĩa trong M nếu l nhận giá trị đúng hoặc sai trong M. Ngược lại, l không được định nghĩa trong M.
  • 36. 27  Một mệnh đề là đúng trong M nếu tồn tại một literal thuộc mệnh đề nhận giá trị đúng trong M.  Một công thức F là đúng trong M hoặc SAT trong M nếu tất cả các mệnh đề trong của F đều nhận giá trị đúng trong M. Khi đó ta nói M là mô hình của F ký kiệu là M M ⊨ F. Tư tưởng chính của thủ tục DPLL phát triển dựa trên thuật toán tìm kiếm quay lui theo chiều sâu. Thuật toán tìm kiếm quay lui là chiến lược tìm kiếm lời giải cho các bài toán có ràng buộc bằng cách thử từng khả năng cho tới khi tìm được lời giải đúng. Khi tới một bước thấy không thỏa mãn thì thực hiện quay lui lại bước trước để lựa chọn bước tiếp theo. Kết thúc tìm kiếm khi không tìm thấy lựa chọn nào thỏa mãn. Thủ tục DPLL mô tả biểu thức logic dưới dạng cây trong đó mỗi mệnh đề con của biểu thức là một lá (note) của cây. Tiến hành gán giá trị cho mỗi note, giá trị này sẽ sử dụng để tìm kiếm các giá trị cho các lá (note) tiếp theo của cây. Thuật toán: Input: S = C0 = {C1; . . . ; Ck} với Ci = L1 ˅ L2 ˅ . . . ˅ Li .  Set C0 là gốc (Root) của cây  Áp dụng các suy luận (rules) tại mỗi lá để mở rộng cây.  Một nhánh của cây không thể mở rộng khi hoặc □ ∈ Si . □ là mệnh đề rỗng.  Nếu Si = { } thì S giải được (satisfiable) và dừng thuật toán  Nếu □ ∈ Si ở mọi nhánh của cây thì kết luận không giải được (unsatisfiable)
  • 37. 28 Cơ chế hoạt động của thủ tục DPLL được mô tả ở hình dưới. Hình 5: Sơ đồ cơ chế hoạt động của thủ tục DPLL. Trong đó, dl là biến kiểm tra để quyết định có quay lui không. Thủ tục DPLL áp dụng luật unit propagate để suy luận phép gán tiếp theo từ phép gán M hiện tại và công thức CNF hiện tại F. Luật decide được áp dụng khi không thể xác định được giá trị của một literal trong công thức F thông qua luật unit propagate. Luật Fail và luật backtrack được áp dụng khi xảy ra trường hợp không thỏa mãn khi một hoặc nhiều mệnh đề của công thức CNF F nhận giá trị sai trong phép gán hiện tại M. Nếu công thức dạng CNF F là UNSAT luật fail được áp dụng khi toàn bộ các literal trong công thức F đều được xác định. Ngược lại thì ta áp dụng luật backtrack. Các luật được sử dụng trong thuật toán gồm:  Luật Unit Propagate M ║F, C ˅ l ⟹ M l ║F , C ˅ l Nếu { M ⊨ ¬C l được định nghĩa trong M Luật Unit Decide M║F ⟹ M l 𝑑 ║F Nếu { l hoặc ¬l xuất hiện trong một mệnh đề F l chưa được định nghĩa trong M
  • 38. 29 Luật Fail M ║F, C ⟹ FailState Nếu { M ⊨ ¬C M không còn chứa literal quyết định nào Ví dụ 3.1.3: Cho công thức F = (¬l1˅ l2 ) ˄ (¬l3˅ ¬l4 ) ˄ (l2˅ ¬l3 ˅ l4 ) . Áp dụng thủ tục DPLL để tìm một mô hình M thỏa mãi công thức F: Ѳ ║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Decide) 𝑙1 𝑑 ║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Unit Propagate) 𝑙1 𝑑 l2║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Decide) 𝑙1 𝑑 l2 𝑙3 𝑑 ║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Unit Propagate) 𝑙1 𝑑 l2 𝑙3 𝑑 ║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Decide) 𝑙1 𝑑 l2 𝑙3 𝑑 ¬l4║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ (Backjump) 𝑙1 𝑑 l2 ¬𝑙3 𝑑 ║(¬l1˅ l2 ), (¬l3˅ ¬l4 ), (¬l2˅ ¬l3 ˅ l4 ) ⟹ Final state Như vậy với phép gán M ( l1 = true , l2 = true , l3 = false , l4 = tùy ý) thì tất cả các mệnh đề trong F đều đúng. Ngoài 4 luật cơ bản kể trên, thuật toán DPLL với việc học mệnh đề (clause learning) còn bổ sung thêm hai luật mới luật learn và luật forget. Trong đó luật learn dùng để đưa ra các luật mới dựa theo các literal được lưu trong stack để giải quyết xung đột. Và luật forget dùng để quên các luật không cần thiết. Luật Learn M ║F ⟹ M ║F ˄C Nếu { F ⊨ ¬C Tất cả các phần tử của C đề xuất hiện trong F Luật Forget M ║F ˄C ⟹ M ║F Nếu F ⊨ ¬C Trong luật Backtrack mệnh đề C ˅ l′ là mệnh đề xung đột (conflict). Thì mệnh đề xung đột được học bằng luật learn để tránh xảy ra trường hợp xung đột tương tự. Luật forget được áp dụng để giải phóng bộ nhớ bằng cách loại bỏ mệnh đề C trong trường hợp nhiều lần mệnh đề C là nguyên nhân xảy ra xung đột. Ví dụ 3.1.4: Cho công thức F = (¬l1˅ l2 ) ˄ (l2˅ ¬l3 ˅ l4 ) ˄ (¬l3˅ ¬l4 ) . Áp dụng thủ tục DPLL để tìm một mô hình M thỏa mãi công thức F:
  • 39. 30 Ѳ ║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Decide ) 𝑙1 𝑑 ║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Unit Propagate) 𝑙1 𝑑 l2║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Decide) 𝑙1 𝑑 l2 𝑙3 𝑑 ║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Unit Propagate) 𝑙1 𝑑 l2 𝑙3 𝑑 ║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Decide) 𝑙1 𝑑 l2 𝑙3 𝑑 ¬l4║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ) ⟹ (Backjump) 𝑙1 𝑑 l2║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ), (¬l1˅ l3 ) ⟹ (Learn) 𝑙1 𝑑 l2 l3 ║(¬l1˅ l2 ), (¬l2˅ ¬l3 ˅ l4 ), (¬l3˅ ¬l4 ), (¬l1˅ l3 ) Final state Như vậy với phép gán M ( l1 = true , l2 = true , l3 = false , l4 = tùy ý) thì tất cả các mệnh đề trong F đều đúng 3.3.1 Thủ tục DPLL cho SMT Thủ tục DPLL để giải các bài toán SMT là một biến thể của thủ tục DPLL cho SAT trên một nền tảng lý thuyết T nào đó và được viết tắt là DPLL(T) [7]. Thủ tục DPLL(T) là giải pháp cải thiện tốc độ bằng cách thực hiện bước quay lui hiệu quả, sử dụng để tìm lời giải cho các bất đẳng thức hoặc đẳng thức tuyến tính được phát triển dựa trên thuật toán DPLL. Trong DPLL(T) sử dụng T– solver là một thủ tục cho phép tìm kiếm các hạn chế (ràng buộc) của các phần tử trong một biểu thức T. T–Solver duy trì trạng thái của các phần tử trong biểu thức T nhằm tạo ra các trạng thái mới của mỗi phần tử trong T. Hiệu quả của DPLL(T) phụ thuộc vào hiệu quả của T – Solver. T – Solver sẽ kiểm tra trạng thái mới có phù hợp không và thực hiện quay lui nếu không phù hợp. Để tìm trạng thái mới của các phần tử trong T cần sử dụng phương pháp lan truyền (theory propagation). Phương pháp lan truyền sử dụng trạng thái hiện tại để tìm trạng thái mới. Để đánh giá được trạng thái mới có phù hợp không cần phải đánh giá được sự xung đột (conflict) giữa các trạng thái hiện tại và trạng thái cần mới (trạng thái cần kiểm tra phù hợp). Các trạng
  • 40. 31 thái phù hợp sẽ được lưu vào stack được kí hiệu là tập α, tập này dùng để thực hiện quay lui (backtrack) khi cần. Các bước chính thực hiện của T-Solver gồm :  Assert(γ) xác nhận trạng thái hiện tại đã giải được hay chưa Xác nhận trạng thái γ là tập con của Γ. Khi đó có thể SAT(Γ) hoặc UNSAT(Γ) với Γ là một phần tử trong α. Khi đó (γ) được thêm vào tập α (tập các trạng thái phù hợp ) mà không có xung đột hoặc không được thêm vào khi xảy ra xung đột .  Check() kiểm tra phù hợp Kiểm tra tập α (tập các trạng thái phù hợp) có phù hợp không. Nếu phù hợp kết luận SAT, ngược lại trả kết quả UNSAT. Phần tử Γ ở bước Assert được thêm vào tập α khi đó nếu tập α được check nếu kết quả phù hợp Γ sẽ được thêm vào tập α và ngược lại Γ sẽ không được thêm vào tập α .  Backtrack() quy lui lại trạng thái phù hợp Quay lui từ trạng thái không phù hợp về trạng thái ở đầu(top) của stack Ѳ.  Propagate() lan truyền, tìm các trạng thái phù hợp Cho phép thực hiện lan truyền (propagation) tới các trạng thái mới. T –Solver sẽ chia bài toán ban đầu thành các bài toán nhỏ hơn bằng cách sử dụng các luật. Công việc chia nhỏ bài toán sẽ kết thúc khi không thể chia được nữa. Cách chia bài toán sẽ sử dụng các luật cụ thể cho từng bài toán cụ thể. Mỗi khi thêm một bài toán nhỏ vào stack sẽ kiểm tra có xung đột với bài toán đã được thêm vào stack trước đó không. Nếu có xung đột sẽ thực hiện quay lui tới trạng thái trước đó. Công việc kết thúc khi chứng minh bài toán là SAT hoặc UNSAT. Các bước cụ thể gồm:  Bước 1: Khởi tạo trạng thái của stack : Ѳ  Bước 2: Thêm từng bài toán con vào stack và kiểm tra xung đột.  Bước 3: Nếu không có xung đột thêm bài toán con đó vào stack.  Bước 4: Nếu có xung đột thì thực hiện quay lui lại trạng thái trước.
  • 41. 32  Bước 5: T-Solver kết thúc khi tất cả các phần tử trong stack không có xung đột. 3.4. SMT Solver raSAT SMT Solver raSAT [26] giới thiệu vào năm 2012. raSAT ứng dụng trong việc giải các ràng buộc bằng phương pháp tính xấp xỉ dựa trên các kĩ thuật tính toán khoảng (Interval Arithmetic) và kiểm thử kết quả dựa trên thủ tục DPLL(T) đã được giới thiệu ở phần 3.3.1. SMT Solver raSAT ứng dụng trong việc giải các ràng buộc trên tập số thực, với các ràng buộc số nguyên raSAT dễ dàng ứng dụng bằng một số thay đổi như chặn việc phân rã khoảng với giới hạn là 1. raSAT đã tham gia cuộc thi “SMT Competition 2016” dành cho các công cụ SMT Solver và SAT Solver với hai dạng là QF NRA và QF NIA. Đầu vào của raSAT là các ràng buộc biểu diễn dưới dạng F = I ˄ P. Trong đó I là các ràng buộc tính toán khoảng I = ( x1 ∈ ( a1, b1) ˄ … ˄ xn ∈ ( an, bn). Và ràng buộc đa thức P biểu diễn dưới dạng ⋀ 𝑓𝑖( x1, … , xn)m i=1 > 0 , P là phép hội của các hàm 𝑓𝑖. Ràng buộc tính toán khoảng I sẽ được phân rã thành các ràng buộc nhỏ hơn hoặc loại bỏ các miền UNSAT bằng cách sử dụng SAT Solver. Sau quá trình trên ràng buộc tính toán khoảng I sẽ ở dưới dạng chuẩn tắc hội (CNF). Các giá trị 𝑓𝑖 𝑢 , 𝑓𝑖 𝑙 lần lượt là giá trị cận trên và cận dưới được tính bởi các kĩ thuật tính toán khoảng. Giá trị của P được định nghĩa như sau:  P kết luận là 𝐼𝐴 − 𝑉𝐴𝐿𝐼𝐷 trên I nếu ∀𝑖 ∈ (1, 𝑚), 𝑓𝑖 𝑙 ( x1, … , xn) > 0  P kết luận là 𝐼𝐴 − 𝑈𝑁𝑆𝐴𝑇 trên I nếu ∃𝑖 ∈ (1, 𝑚), 𝑓𝑖 𝑢 ( x1, … , xn) ≤ 0  P kết luận là 𝐼𝐴 − 𝑆𝐴𝑇 trên I nếu (∃𝑖 ∈ (1, 𝑚), 𝑓𝑖 𝑢 ( x1, … , xn) ≤ 0) ˄ (⋀ 𝑓𝑖( x1, … , xn)m i=1 ) > 0 Ví dụ 3.4.1: Cho ràng buộc tính toán khoảng I = x ∈ (0,2) ˄ y ∈ (1,3) và ba ràng buộc đa thức:  (𝑓1 = 𝑥5 − 3𝑥2 𝑦 + 𝑦3 + 20) > 0
  • 42. 33  (𝑓2 = 𝑥𝑦2 − 2𝑥𝑦 − 𝑦3 − 7) > 0  (𝑓3 = 𝑥2 𝑦3 − 𝑦4) > 0 Áp dụng phương pháp tính toán khoảng C AI được khoảng giá trị của các đa thức như sau:  𝑓1 ∈ (0.9375, 67.75)  𝑓2 ∈ (−38.75, 0)  𝑓3 ∈ (−131.5, 94.125) Như vậy có thể kết luận:  𝑓1 > 0 𝐼𝐴 − 𝑉𝐴𝐿𝐼𝐷 𝑡𝑟ê𝑛 𝐼  𝑓2 > 0 𝐼𝐴 − 𝑈𝑁𝑆𝐴𝑇 𝑡𝑟ê𝑛 𝐼  𝑓3 > 0 𝐼𝐴 − 𝑆𝐴𝑇 𝑡𝑟ê𝑛 𝐼 Kết quả của ràng buộc đa thức P được mô tả như hình dưới: Khoảng giá trị của đa thức tính bằng phương pháp tính toán khoảng kxxxf n ),...,,( 21 k k k IA-UNSAT IA-VALID IA-SAT Hình 6: Kết quả của ràng buộc đa thức. Giá trị cận trên fi u và cận dưới fi l được tính bằng các kĩ thuật tính toán khoảng đã được giới thiệu ở phần trên gồm AF, AF1, AF2 và C AI. Nếu P có giá trị là IA-VALID hoặc IA-UNSAT thì kết luận P lần lượt là SAT hoặc UNSAT. Tuy nhiên nếu P là IA-SAT thì chỉ có thể kết luận là không giải được và chuyển sang bước kiểm thử để tìm kết quả.
  • 43. 34 Kiểm thử kết quả bằng cách sinh ra bộ dữ liệu kiểm thử ⊝i từ dải giá trị đầu vào ban đầu x1 ∈ ( a1, b1) ˄ … ˄ xn ∈ ( an, bn) .Với Ѳ(I) = ( a1, b1) × . . .× ( an, bn) thì giá trị của P được định nghĩa như dưới.  P kết luận là Test-SAT trên I nếu trong P tồn tại Ѳ ∈ ⊝  P kết luận là Test-UNSAT trên I nếu trong P không tồn tại Ѳ nào ∈ ⊝ Ví dụ 3.4.2: Trong ví dụ 3.4.1 I = x ∈ (0,2) ˄ y ∈ (1,3) và (f3 = x2 y3 − y4) > 0 là IA –SAT nên chuyển sang bước kiểm thử với hai bộ dữ liệu kiểm thử ⊝1 và ⊝2 như dưới:  Với bộ dữ liệu kiểm thử ⊝1 { x = 0.5, x = 1.2, 𝑦 = 1.5, 𝑦 = 2.5 } x = 0.5, 𝑦 = 1.5 f3 = −4.21875 x = 0.5, 𝑦 = 2.5 f3 = −35.15625 x = 1.2, 𝑦 = 1.5 f3 = −0.2025 x = 1.2, 𝑦 = 2.5 f3 = −16.5625 Như vậy f3 > 0 𝑇𝑒𝑠𝑡 − 𝑈𝑁𝑆𝐴𝑇 với bộ dữ liệu ⊝1  Với bộ dữ liệu kiểm thử ⊝2 { x = 0.8, x = 1.7, 𝑦 = 1.5, 𝑦 = 2.5 } x = 0.8, 𝑦 = 1.5 f3 = −2.9025 x = 0.8, 𝑦 = 2.5 f3 = −29.0625 x = 1.7, 𝑦 = 1.5 f3 = 𝟐. 𝟓𝟑𝟏𝟐𝟓 x = 1.7, 𝑦 = 2.5 f3 = −3.90625 Như vậy f3 > 0 𝑇𝑒𝑠𝑡 − 𝑆𝐴𝑇 với bộ dữ liệu x = 1.7, 𝑦 = 1.5 . Có thể kết luận x ∈ (0,2) ˄ y ∈ (1,3) ˄ (f3 = x2 y3 − y4) > 0 là SAT.
  • 44. 35 Kết quả kiểm thử của ràng buộc đa thức P được mô tả như hình dưới: Ca kiểm thử SAT Ca kiểm thử UNSAT r r Test-UNSAT Test-SAT rxxxf n ),...,,( 21 Hình 7: Kết quả kiểm thử của ràng buộc đa thức. Như vậy bước kiểm thử sẽ dừng lại khi kết quả là Test-SAT và kết luận là SAT. Ngược lại nếu kết quả là Test-UNSAT raSat sẽ sử dụng bộ Domain Decomposition để phân rã dải giá trị hiện tại thành các dải giá trị nhỏ hơn. Có ba cách thức phân rã từ giải giá trị ban đầu thành các dải giá trị nhỏ hơn gồm:  Phân rã cân bằng (balanced)  Phân rã đơn hiệu (monotonic)  Phân rã đánh dấu (tick). Phân rã cân bằng (balanced) sẽ thực hiện tách từ một khoảng ban đầu thành hai khoảng nhỏ hơn. Với khoảng ban đầu x ∈ (a, b) sẽ được phân rã thành hai khoảng con gồm 𝑥1 ∈ (a, 𝑏+𝑎 2 ) và 𝑥1 ∈ ( 𝑏+𝑎 2 , 𝑏). Ví dụ 3.4.3: x ∈ (0,2) phân rã thành hai khoảng con 𝑥1 ∈ (0,1) và 𝑥2 ∈ (1,2). Các mệnh đề được thêm mới vào SAT Solver từ hai khoảng con này gồm: x ∈ (0,2) ⟹ x ∈ (0,1) ˅ x ∈ (1,2) ˄ x ∈ (0,1) ⟹ x ∈ (0,2) ˄ x ∈ (1,2) ⟹ x ∈ (0,2) ˄ (¬( x ∈ (0,1))˅ ¬( x ∈ (1,2)) Phân rã đơn điệu (monotonic) bằng cách sử dụng một hệ số biến đổi δ để thực hiện các bước nhảy từ khoảng ban đầu thành các khoảng con. Có hai
  • 45. 36 phương thức phân rã đơn điệu gồm phân rã đơn điệu tăng dần kí hiệu là 𝑃𝑜𝑠𝑓 và phân rã đơn hiệu giảm dần kí hiệu là 𝑁𝑒𝑡𝑓. Cho ràng buộc đa thức 𝑓( x1, … , xn) với biến xi (1 ≤ 𝑖 ≤ 𝑘)  Phân rã đơn điệu tăng dần 𝑃𝑜𝑠𝑓 ∀𝑖 𝑥𝑖 ′ ≥ 𝑥𝑖 ′′ thì 𝑓( x1, … , 𝑥𝑖 ′ , … , xn) ≥ 𝑓( x1, … , 𝑥𝑖 ′′ , … , xn)  Phân rã đơn hiệu giảm dần 𝑁𝑒𝑡𝑓 ∀𝑖 𝑥𝑖 ′ ≤ 𝑥𝑖 ′′ thì 𝑓( x1, … , 𝑥𝑖 ′ , … , xn) ≤ 𝑓( x1, … , 𝑥𝑖 ′′ , … , xn) Ví dụ 3.4.4: x ∈ (0,2) và δ=0.25 phân rã đơn điệu giảm dần thành hai khoảng con gồm 𝑥1 ∈ (0,0.25) và 𝑥2 ∈ (0.25,2) hoặc phân rã đơn điệu tăng dần thành hai khoảng con gồm 𝑥1 ∈ (0,1.75) và 𝑥2 ∈ (1.75,2). Các mệnh đề được thêm mới vào SAT Solver từ hai khoảng con này gồm x ∈ (0, 2) ⟹ x ∈ (0, 0.25) ˅ x ∈ (0.25, 2) ˄ x ∈ (0, 0.25) ⟹ x ∈ (0,2) ˄ x ∈ (0.25, 2) ⟹ x ∈ (0,2) ˄ (¬( x ∈ (0, 0.25))˅ ¬( x ∈ (0.25, 2)) Hoặc x ∈ (0, 2) ⟹ x ∈ (0, 1.75) ˅ x ∈ (1.75, 2) ˄ x ∈ (0, 1.75) ⟹ x ∈ (0,2) ˄ x ∈ (1.75, 2) ⟹ x ∈ (0,2) ˄ (¬( x ∈ (0, 1.75))˅ ¬( x ∈ (1.75, 2)) Nhận xét: Với cách thức phân rã cân bằng thì khoảng phân rã mới không thể kiểm xoát được mà phụ thuộc vào giới hạn của khoảng ban đầu. Còn với phân rã đơn điệu có thể điều chỉnh được khoảng thu được bằng cách điều chỉnh hệ số biển đổi δ để thu được nhiều khả năng dẫn đến SAT hơn. Phân rã đánh dấu (tick): Phân rã khoảng ban đầu thành hai hoặc ba khoảng con dựa vào điểm dánh đấu k trong khoảng ban đầu và số biến đổi δ . Từ khoảng ban đầu x ∈ (a, b), điểm đánh đấu t ∈ (a, b) và hệ số biến đổi δ sẽ được phân rã thành các khoảng con 𝑑 𝑝 , 𝑑 𝑛, 𝑑 𝑝𝑛 như sau:
  • 46. 37 𝑑 𝑝(x ∈ (a, b)) = { (x ∈ (a, t) ˅ x ∈ (t, t + δ)˅ x ∈ (t + δ, b) ) 𝑛ế𝑢 𝑡 + δ < 𝑏 x ∈ (a, t)˅ x ∈ (t, b) 𝑑 𝑛(x ∈ (a, b)) = { (x ∈ (a, t − δ) ˅ x ∈ (t − δ, t)˅ x ∈ (t, b) ) 𝑛ế𝑢 𝑡 − δ > 𝑎 x ∈ (a, t)˅ x ∈ (t, b) 𝑑 𝑝𝑛(x ∈ (a, b)) = { ( x ∈ (a, t + 0.5δ)˅ x ∈ (t + 0.5δ, b) ) 𝑛ế𝑢 𝑡 − 0.5δ ≤ a ( x ∈ (a, t − 0.5δ)˅ x ∈ (t − 0.5δ, b) ) 𝑛ế𝑢 𝑡 + 0.5δ ≥ b ( x ∈ (a, t − 0.5δ)˅ x ∈ (t − 0.5δ, t + 0.5δ) ˅ x ∈ (t + 0.5δ, b) ) Ví dụ 3.4.5: x ∈ (0,2), t=1.2 và δ = 0,25 sẽ được phân rã thành các khoảng con như sau x1 ∈ (0,1.2) , x2 ∈ (1.2, 1.45) , x32 ∈ (1.45, 2). Các mệnh đề được thêm mới vào SAT Solver từ hai khoảng con này gồm x ∈ (0, 2) ⟹ x ∈ (0, 1.2) ˅ x ∈ (1.2, 1.45) ˅ x ∈ (1.45, 2) ˄ x ∈ (0,1.2) ⟹ x ∈ (0,2) ˄ x ∈ (1.2, 1.45) ⟹ x ∈ (0,2) ˄ x ∈ (1.45, 2) ⟹ x ∈ (0,2) ˄ (¬( x ∈ (0, 1.2))˅ ¬( x ∈ (1.2, 1.45)) ˄ (¬( x ∈ (0, 1.2))˅ ¬( x ∈ (1.45,2)) ˄ (¬( x ∈ (1.2, 1.45))˅ ¬( x ∈ (1.45,2)) Nhận xét: Với cách thức phân rã đánh dấu cho phép SAT Solve sử dụng giá trị đánh dấu t như là một cách thử nghiệm để thu nhỏ tối đã các khoảng tìm kiếm bằng trực quan. Nếu sau khi áp dụng bộ Domain Decomposition được các dải giá trị mới quá nhỏ sẽ áp dụng các luật dựa vào kinh nghiệm trong bộ Heuristic để loại bỏ các dải giá trị này. Heuristic được áp dụng bằng cách sử dụng các quy tắc heuristic để loại bỏ hộp. Một khi các quy tắc heuristic được sử dụng, raSAT kết
  • 47. 38 luận unknown khi SAT solver đưa ra UNSAT. Nếu chúng không bao giờ được sử dụng, raSAT kết luận UNSAT khi điều tương tự xảy ra. Kiến trúc của SMT Solver raSAT mô tả ở hình dưới: Hình 8: Kiến trúc của SMT Solver raSat [26] SMT Solver raSat sử dụng MiniSat2.2 là công cụ nền để giải bài toán SAT. Mục đính của việc sử dụng SAT Solver là tìm được dải giá trị được kết hợp từ các khoảng giá trị đầu vào của tất cả các biến ban đầu. Tiếp theo dải giá trị thu được từ các biến đầu và sẽ được đánh giá bởi lý thuyết tính toán khoảng (Interval Arithmetic - IA). Nếu IA đánh giá là IA-UNSAT thì dải giá trị này sẽ gửi về bộ không giải được (UNSAT Core) trong lý thuyết lan truyền (Theory Propagation) để tính toán lại dải giá trị nhỏ nhất để kết quả là IA-UNSAT. Các dải giá trị thu được từ UNSAT Core sử dụng để loại bỏ các khoảng có kết quả UNSAT khỏi dải giá trị hiện tại, kết quả sẽ được một dải giá trị mới đã loại bỏ các miền là UNSAT. Nếu AI cho kết quả là IA-VALID thì raSAT sẽ kết thúc và kết luận là SAT. Nếu kết quả là IA-SAT sẽ chuyển sang bước kiểm thử. Ví dụ 3.4.3: Giải ràng buộc đa thức sau: F = (x ∈ (−1,3) ˄ y ∈ (−1,3 ))˄ (𝑥3 − 𝑥2 + 𝑦 − 1.99) raSat sẽ bắt đầu tìm kiếm từ dải giá trị ban đầu là x ∈ (−1,3) , y ∈ (−1,3 ) và thực hiện một vòng lặp để tìm kiếm ra các dải giá trị con từ dải giá trị ban
  • 48. 39 đầu. Với I = x ∈ (−1,3) ˄ y ∈ (−1,3 ) là các ràng buộc biểu diễn dưới dạng tính toán khoảng, P = x3 − x2 + y − 1.99 là ràng buộc đa thức. raSat sử dụng hai cách thức phân rã khoảng gồm phân rã cân bằng (balanced) và phân rã đơn điệu (monotonic) bằng cách sử dụng các luật trong thủ tục DPLL(T) để sàng lọc ra các khoảng xấp xỉ mới. Kí hiệu ⟹VL (SAT Solver) là các luật của SAT Solver để gán giá trị cho các biến từ dải giá trị hiện tại. Ví dụ với x ∈ (−1,3) được phân rã thành hai khoảng x ∈ (−1,1) ˅ x ∈ (1,3). Cụ thể ta sẽ thêm bốn mệnh đề dưới đây vào trong SAT Solver: x ∈ (−1,3) ⟹ x ∈ (−1,1) ˅ x ∈ (1,3) ˄ x ∈ (−1,1) ⟹ x ∈ (−1,3) ˄ x ∈ (1,3) ⟹ x ∈ (−1,3) ˄ (¬( x ∈ (−1,1))˅ ¬( x ∈ (1,3)) Phân rã cân bằng (Balanced decomposition): Ѳ║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ⟹VL (SAT Solver) M0║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ˄ P ⟹VL (refinement) Ѳ║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,1) ˅ y ∈ (1,3) )˄ P ⟹VL (SAT Solver) M1║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,1) ˅ y ∈ (1,3) )˄ P ⟹VL (refinement) Ѳ║ … ˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄(y ∈ (−1,0) ˅ y ∈ (0,1) )˄ P ⟹VL (SAT Solver) M2║ … ˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄(y ∈ (−1,0) ˅ y ∈ (0,1) )˄ ⟹VL (Learning) Ѳ ║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (−1,0))) ˄ P ⟹VL (SAT Solver) M3║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (−1,0)))˄ P ⟹VL (Learning) Ѳ║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (SAT Solver) M4 ║ … ˄(¬( x ∈ (−1,0))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (Learning) Ѳ ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (−1,0)) )˄ P ⟹VL (SAT Solver) M5 ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (−1,0)) )˄ P ⟹VL (Learning) Ѳ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (SAT Solver) M6 ║ … ˄(¬( x ∈ (0,1))˅ ¬( y ∈ (0,1)) )˄ P ⟹VL (refinement)
  • 49. 40 Ѳ║ … ˄(x ∈ (1,2) ˅ x ∈ (2,3) )˄(y ∈ (1,2) ˅ y ∈ (2,3) )˄ P ⟹VL (SAT Solver) M7 ║ … ˄(x ∈ (1,2) ˅ x ∈ (2,3) )˄(y ∈ (1,2) ˅ y ∈ (2,3) )˄ P ⟹VL (SAT rule) SAT Model found Bộ giá trị Mi được chọn bởi SAT Solver qua mỗi bước lặp như sau:  M0 = (x ∈ (−1,3) ˄ y ∈ (−1,3 ) )  M1 = (x ∈ (−1,1) ˄ y ∈ (−1,1 ) )  M2 = (x ∈ (−1,0) ˄ y ∈ (−1,0 ) )  M3 = (x ∈ (−1,0) ˄ y ∈ (0,1 ) )  M4 = (x ∈ (0,1) ˄ y ∈ (−1,0 ) )  M5 = (x ∈ (0,1) ˄ y ∈ (0,1 ) )  M6 = (x ∈ (1,3) ˄ y ∈ (1,3 ) )  M7 = (x ∈ (1,2) ˄ y ∈ (1,2 ) ) Với bộ giá trị M7 = (x ∈ (1,2) ˄ y ∈ (1,2 ) ) đưa vào bộ kiểm thử sẽ cho kết quả x = 1.49217901342 và y = 1.3984060087 . Phân rã đơn điệu (Monotonic decomposition): Các bước lặp tương tự như phân rã cân đối tuy nhiên giá trị nhảy tại mỗi bước lặp là δ=0.25. Ѳ║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ⟹VL (SAT Solver) M0║(x ∈ (−1,3) ˄ y ∈ (−1,3 ) ) ˄ P ⟹VL (refinement) Ѳ║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄ P ⟹VL (SAT Solver) M1║ … ˄(x ∈ (−1,1) ˅ x ∈ (1,3) )˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄ P ⟹VL (refinement) Ѳ║ … ˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄ P ⟹VL (SAT Solver) M2║ … ˄(y ∈ (−1,2.75) ˅ y ∈ (2.75,3) )˄(x ∈ (−1,0) ˅ x ∈ (0,1) )˄ P ⟹VL (SAT rule) SAT Model found Bộ giá trị Mi được chọn bởi SAT Solver qua mỗi bước lặp như sau :  M0 = (x ∈ (−1,3) ˄ y ∈ (−1,3 ) )  M1 = (x ∈ (−1,1) ˄ y ∈ (2.75,3 ) )  M2 = (x ∈ (0,1) ˄ y ∈ (2.75,3 ) ) Với bộ giá trị M2 = (x ∈ (0,1) ˄ y ∈ (2.75,3) ) đưa vào bộ kiểm thử sẽ cho kết quả x = 0.991800094431 và y = 2.75151227326 .
  • 50. 41 Chương 4. CẢI TIẾN KỸ THUẬT KIỂM THỬ TRÊN SMT SOLVER raSAT Ở chương này luận văn sẽ trình bày kĩ thuật kiểm thử trong SMT Solver raSAT và kĩ thuật kiểm thử cặp đôi (pairwise testing). Qua đó thực hiện cải tiến raSAT bằng áp dụng kĩ thuật kiểm thử cặp đôi (pairwise) trên SMT Solver raSAT. Cuối cùng sẽ đánh giá và so sánh hiệu quả của kĩ thuật kiểm thử cặp đôi trên SMT Solver raSAT. 4.1. Kiểm thử trên raSAT Như đã trình bày hoạt động của SMT Solver raSAT ở Chương 3. Nếu sau khi đầu vào được đánh giá bởi lý thuyết tính toán khoảng (Interval Arithmetic - IA) cho kết quả là IA- SAT thì sẽ chuyển sang bước kiểm thử để tiếp tục giải ràng buộc đa thức. Kiểm thử kết quả bằng cách sinh ra bộ dữ liệu kiểm thử từ dải giá trị đầu vào ban đầu. Bản chất của bước kiểm thử là đi tìm giá trị có kết quả là SAT trong dải giá trị của đầu vào. Nếu tìm được một điểm trong dải giá trị cho kết quả là SAT thì kết luận ràng buộc đó là SAT. Kiểm thử kết quả bằng cách sinh ra bộ dữ liệu kiểm thử ⊝i từ dải giá trị đầu vào ban đầu x1 ∈ ( a1, b1) ˄ … ˄ xn ∈ ( an, bn) .Với Ѳ(I) = ( a1, b1) × . . .× ( an, bn) thì giá trị của P được định nghĩa như dưới.  P kết luận là Test-SAT trên I nếu trong P tồn tại Ѳ ∈ ⊝  P kết luận là Test-UNSAT trên I nếu trong P không tồn tại Ѳ nào ∈ ⊝
  • 51. 42 Kết quả kiểm thử của ràng buộc đa thức P được mô tả như hình dưới: Ca kiểm thử SAT Ca kiểm thử UNSAT r r Test-UNSAT Test-SAT rxxxf n ),...,,( 21 Hình 9: Kết quả kiểm thử của ràng buộc đa thức. Như vậy bước kiểm thử sẽ dừng lại khi kết quả là Test-SAT và kết luận là SAT. Ngược lại nếu kết quả là Test-UNSAT raSat sẽ sử dụng bộ Domain Decomposition để phân rã dải giá trị hiện tại thành các dải giá trị nhỏ hơn và tiếp tục kiểm thử trên các giải giá trị mới. Hình 10: Kiểm thử trong SMT Solver raSat [29]
  • 52. 43 Tuy nhiên để thử tất cả các giá trị trong dải giá trị là điều không thể. Do vậy cần có chiến lược chọn giá trị kiểm thử cho các biến hiệu quả thay vì thử tất cả các giá trị. Số lượng các ca kiểm thử ảnh hưởng rất lớn hiệu quả của raSAT. Cụ thể với các ràng buộc cần giải SAT nếu chọn số lượng ca kiểm thử ít sẽ dẫn đến có thể bỏ qua các giá trị SAT. Ngược lại với các ràng buộc cần giải UNSAT nếu chọn số ca kiểm thử nhiều sẽ dẫn đến mất nhiều thời gian. raSAT hiện tại chọn tối đa 210 ca kiểm thử. raSAT chọn 10 biến có mức độ ảnh hướng tới kết quả bằng các luật kinh ngiệm (heuristic) để chọn hai giá trị ngẫu nhiên, các biến còn lại sẽ chọn một giá trị ngẫu nhiên. Sau đó sẽ thực hiện sinh các ca kiểm thử bằng phương pháp tổ hợp. raSAT sử dụng phương pháp kiểm thử từng bước (test - inrementally) để tăng hiệu quả. Với kiểm thử thông thường sẽ sinh ra một bộ ca kiểm thử sau đó sẽ thực hiện kiểm thử trên bộ các ca kiểm thử đó. Tuy nhiên trong trường hợp kết quả cho là SAT tại một ca kiểm thử thì các ca kiểm thử phía sau sinh ra là không cần thiết. Trong khi đó kiểm thử từng bước (test - inrementally) không sinh ra tất cả các ca kiểm thử một lúc mà thực hiện sau khi sinh ra một ca kiểm thử sẽ thực hiện kiểm thử luôn. Nếu kết quả kiểm thử là SAT thì sẽ dừng kiểm thử, ngược lại nếu kết quả là UNSAT sẽ sinh ca kiểm thử tiếp theo và tiếp tục thực hiện kiểm thử tương tự. Như vậy kiểm thử từng bước sẽ giúp tăng hiệu quả kiểm thử trên raSAT. raSAT sử dụng các luận kinh nghiệm (heuristic) cho phép chọn 10 biến có mức độ ảnh hưởng tới kết quả nhất để chọn ngẫu nhiên hai giá trị .Và chọn các nguyên tử đa thức (APC) có khả năng SAT (SAT-likelihood) lớn nhất để giải trước. Phương pháp tính toán khoảng giúp đánh giá khoảng giá trị của đa thức g trên giải giá trị B bằng biến đổi đa thứ về dạng [𝑐1, 𝑑1]ɛ1 + ⋯ + [𝑐 𝑛, 𝑑 𝑛]ɛ 𝑛 với ɛ𝑖 = [−1,1] bằng kĩ thuật AF2 đã được giới thiệu ở chương 2.
  • 53. 44 Định nghĩa 4.1.1: Khả năng SAT (SAT-likelihood) của APC g trong giải giá trị B ◇0 với ◇= { > , ≥ , < , ≤ , = , ≠ } được tính bằng công thức sau |ICC(g ◇ 0 , G(B)| |G(B)| Trong đó ICC (interval constraint contraction), ICC (g ◇ 0 , I) là khoảng nhỏ nhất 𝐼′ được tính bằng {𝑟 ∈ 𝐼 , 𝑟 ◇ 0} ⊆ 𝐼′ Ví dụ: ICC(g > 0, [−2, 5] ) = [0, 5] ICC(g > 0, [2, 5] ) = [2, 5] ICC(g > 0, [−2,−5] ) = ∅ Định nghĩa 4.1.2: Hệ số ưu tiên (sensitivity) của biến 𝑥𝑖 trong đa thức g được tính bằng max(|𝑑𝑖| , |𝑐𝑖|). Ví dụ: g(x1 , x2) = x1 3 − 2x1x2, x1 = [0,2] = 1 + ɛ1 , x2 = [1,3] = 2 + ɛ2. Sử dụng kĩ thuật AF2 g(x1 , x2) = −3 − ɛ1 − 2ɛ2 + 3ɛ+ + 3ɛ± = [−9 ,6 ]. Khả năng SAT của g(x1 , x2) > 0 là 6 9 −(−6) = 0.4 và hệ số ưu tiên của các biến lần lượt là x1 = 1 và x2 = 2. Ngoài ra chọn giá trị cho một biến 𝑥𝑖 trong khoảng giá trị để sinh ca kiểm thử dựa hệ số của biến 𝑥𝑖 và thực hiện chọn giá trị theo bảng sau : Hệ số của biến 𝑥𝑖 gi > 0 , gi ≥ 0 gi < 0 , gi ≤ 0 gi = 0 -1 Cận trên Cận dưới Ngẫu nhiên 1 Cận dưới Cận trên Ngẫu nhiên 0 Ngẫu nhiên Ngẫu nhiên Ngẫu nhiên Bảng 1: Chọn giá trị cho biến trong khoảng dựa vào hệ số ưu tiên Ví dụ: g(x1 , x2) = x1 3 − 2x1x2, x1 = [0,2] = 1 + ɛ1 , x2 = [1,3] = 2 + ɛ2. Sử dụng kĩ thuật AF2 g(x1 , x2) = −3 − ɛ1 − 2ɛ2 + 3ɛ+ + 3ɛ± .Hệ số của x1 = −1 . Với g > 0 thì theo bảng trên x1 = 2.
  • 54. 45 4.2. Kiểm thử cặp đôi Kiểm thử cặp đôi (pairwise testing) [30] là một trường hợp đặc biệt của kiểm thử tất cả các tổ hợp đầu vào. Kiểm thử cặp đôi yêu cầu mỗi cặp giá trị của ( xi, xj), 1 ≤ i ≠ i ≤ n xuất hiện trong một ca kiểm thử nào đó. Một ca kiểm thử thường có nhiều cặp giá trị này với các i, j khác nhau nên dễ thấy số lượng ca kiểm thử sẽ giảm đáng kể so với tổ hợp tất cả các ca kiểm thử. Kiểm thử cặp đôi được ứng dụng rất nhiều trong quá trình đảm bảo chất lượng của phần mềm. Với một dự án phần mềm chi phí cho việc đảm bảo chất lượng thường chiếm hơn 50% chi phí của dự án. Do vậy kiểm thử cặp đôi sử dụng trong việc đảm bảo chất lượng phần mềm với chi phí hợp lý hơn. Lý do sử dụng kĩ thuật kiểm thử cặp đôi:  Nguyên nhân lỗi của phần mềm thường sảy ra khi kết hợp hai đầu vào. Kiểm thử cặp đôi có thể đảm bảo 92% độ phủ của source code, 85% bao phủ quyết định.  Không cần kiểm thử tổ hợp tất cả đầu vào của hệ thống. Với hệ thống có m đầu vào và với mỗi đầu vào có n giá trị. Như vậy sẽ cần m×n trường hợp cần kiểm thử. Với hệ thống có số lượng đầu vào lớn thì kiểm thử tổ hợp sẽ tốn rất nhiều chi phí.  Sử dụng kiểm thử tổ hợp có thể sảy ra nhiều ca kiểm thử cùng phát hiện một lỗi, do vậy việc sẽ gây ra lãng phí ca kiểm thử. Hạn chế này của kiểm thử tổ hợp sẽ được khắc khục ở kĩ thuật kiểm thử cặp đôi. Ví dụ: Với hệ thống có 4 đầu vào là A, B, C, D với mỗi đầu vào có 3 giá trị lần lượt như sau: A B C D A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3 Bảng 2: Bảng giá trị đầu vào của các biến
  • 55. 46 Nếu sử dụng kiểm thử tổ hợp sẽ cần số lượng test case là: 3×3×3×3 =81 ca kiểm thử. Trong khi nếu sử dụng kĩ thuật kiểm thử cặp đôi số lượng ca kiểm thử sẽ giảm đi còn 9 ca kiểm thử như bảng dưới: TC A B C D 1 A1 B1 C1 D1 2 A1 B2 C2 D2 3 A1 B3 C3 D3 4 A2 B1 C2 D3 5 A2 B3 C1 D2 6 A2 B2 C3 D1 7 A3 B1 C3 D2 8 A3 B2 C1 D3 9 A3 B3 C2 D1 Bảng 3: Các ca kiểm thử sử dụng kỹ thuật kiểm thử cặp đôi Cách sinh ma trận trực giao để sinh các ca kiểm thử cho kĩ thuật kiểm thử cặp đôi. Giả sử đầu vào có 3 biến lần lượt A, B, C, D như dưới:  A: A1 , A2  B: B1 , B2  C: C1 , C2 ,C3 Bước 1: Sinh các ca kiểm thử cho hai biến đầu vào A, B TC A B 1 A1 B1 2 A1 B2 3 A2 B1 4 A2 B2 Bảng 4: Các ca kiểm thử cặp đôi của 2 biến đầu vào Bước 2: Thực hiện lặp từ đầu vào thứ C Bước 2.1: Lặp theo chiều dọc Thêm một cột và điền lần lượt các giá trị của C (C1, C2, C3)
  • 56. 47 TC A B C 1 A1 B1 C1 2 A1 B2 C2 3 A2 B1 C3 4 A2 B2 Bảng 5: Các ca kiểm thử cặp đôi thêm các giá trị biến thứ ba Các cặp còn nhiếu gồm (A2, C1) ,(A2 ,C2) , (A1 ,C3) ,(B1 ,C2) ,(B2 ,C1) ,(B2 C3).Xét các trường hợp của đầu vào C.  Nếu thêm C1 số cặp còn thiếu 4  Nếu thêm C2 số cặp còn thiếu 4  Nếu thêm C3 số cặp còn thiếu 4  Chọn C1 như ma trận dưới : TC A B C 1 A1 B1 C1 2 A1 B2 C2 3 A2 B1 C3 4 A2 B2 C1 Bảng 6: Các ca kiểm thử cặp đôi của ba biến lặp theo chiều dọc Bước 2.2: Lặp theo chiều ngang Các cặp còn thiếu gồm (A2,C2) , (A1,C3) ,(B1,C2) ,(B2,C3). Lần lượt sinh các test case cho các cặp còn thiếu như dưới: TC A B C 1 A1 B1 C1 2 A1 B2 C2 3 A2 B1 C3 4 A2 B2 C1 5 A2 B1 C2 5 A1 B2 C3 Bảng 7: Các ca kiểm thử cặp đôi của ba biến lặp theo chiều ngang 4.3 Kiểm thử cặp đôi trên raSAT raSAT hiện tại chỉ cho phép chọn tối đa hai giá trị cho mỗi biến để sinh các ca kiểm thử. Nguyên nhân do nếu lựa chọn nhiều giá trị sẽ ảnh hưởng tới hiệu
  • 57. 48 năng của raSAT. Do vậy chúng tôi cải tiến raSAT bằng cách áp dụng kĩ thuật kiểm thử cặp đôi cho các biến của ràng buộc để sinh ra bộ kiểm thử. Với kĩ thuật kiểm thử cặp đôi sẽ sinh ra số lượng ca kiểm thử không lớn mà cho phép chọn nhiều giá trị cho mỗi biến. Khi raSAT cho phép chọn nhiều giá trị cho một biến thì khả năng tìm được giá trị SAT sẽ tăng lên. Cụ thể cách áp dụng kĩ thuật kiểm thử cặp đôi vào raSAT như sau:  Áp dụng sinh bộ kiểm thử bằng kĩ thuật kiểm thử cặp đôi cho các biến ở mỗi ràng buộc.  Với mỗi biến sẽ chọn ngẫu nhiên 4 ca kiểm thử ở 4 khoảng giá trị khác nhau trong dải giá trị của biến. Ví dụ x1 = [−10,10] sẽ chọn ngẫu nhiên một ca kiểm thử ở 4 khoảng gồm [−10, −5] , [−4, 0] , [1, 5] và [6,10].  Kiểm thử cặp đôi vẫn giữ nguyên cách chọn APC theo khả năng SAT, độ ưu tiên của biến và kiểm thử từng bước (test - inrementally) như mục 4.2 đã trình bày. Bảng so sánh raSAT 0.2 và raSAT áp dụng kiểm thử cặp đôi : raSAT 0.2 raSAT 0.2 + Kiểm thử cặp đôi (Pairwise testing)  Chọn ngẫu nhiên 2 giá trị cho 10 biến.  Và chọn ngẫu nhiên 1 giá trị cho các biến còn lại.  Thực hiện kiểm thử tổ hợp.  Chọn ngẫu nhiên 4 giá trị cho tất cả các biến.  Sinh ca kiểm thử theo kĩ thuật kiểm thử cắp đôi.  Thực hiện kiểm thử theo ca kiểm thử cặp đôi.  Ưu điểm :  Mỗi cặp giá trị đều xuất hiện ở tất cả các ca kiểm thử.  Tăng số lượng giá trị chọn từ 1, 2 lên 4.  Số lượng ca kiểm thử không quá lớn. Bảng 8: Bảng so sánh raSAT 0.2 và raSAT áp dụng kiểm thử cặp đôi
  • 58. 49 4.4 Thực nghiệm 4.4.1 Kết quả raSAT tại các cuộc thi SMT – COMP raSAT đã tham gia các cuộc thi SMT – COMP 2014, 2015 và 2016 . Đây là cuộc thi của các SMT Solver trên toàn thế giới. Trong phần này luận văn sẽ giới thiệu kết quả của raSAT tại các cuộc thi SMT – COMP.  Kết quả raSAT 0.1 tại cuộc thi SMT - COMP 2014 : http://smtcomp.sourceforge.net/2014/resultsQF_NRA.shtml?v=1403902163 Bảng 9: Kết quả raSAT 0.1 tại cuộc thi SMT - COMP 2014  Kết quả raSAT 0.2 tại cuộc thi SMT - COMP 2015 : http://smtcomp.sourceforge.net/2015/results-QF_NRA.shtml?v=1446209369 Bảng 10: Kết quả raSAT 0.2 tại cuộc thi SMT - COMP 2015
  • 59. 50  Kết quả raSAT 0.3 và 0.4 tại cuộc thi SMT - COMP 2016 : http://smtcomp.sourceforge.net/2016/results-QF_NRA.shtml?v=1467876482 Bảng 11: Kết quả raSAT 0.3 và 0.4 tại cuộc thi SMT - COMP 2016 Trong đó raSAT 0.4 gồm chạy song song raSAT 0.2 và raSAT 0.3 4.4.2 raSAT 0.2  raSAT 0.2 là phiên bản thứ hai của raSAT được phát hành vào 06/2015.  raSAT sử dụng hai ngôn ngữ để phát triển gồm C++ và Ocaml và sử dụng kết hợp với MiniSat2.2.  raSAT giải các bài toán dạng QF_NRA và QF_NIA dưới định dạng SMT- LIB (.smt 2).  Môi trường phát triển: iRRAM, make, automake, gcc, ocaml, zlib, curses và hệ điều hành 64 bit systems (cygwin 64 bit, linux systems) 4.4.3 Benchmarks SMT Benchmark là bộ các bài toán dưới định dạng SMT-LIB (.smt 2) là đầu vào của các SMT Solver được xây dựng bởi cộng đồng SMT. Hiện nay có bốn bộ SMT Benchmark gồm :  SMT- LIB 2013 -03-07  SMT- LIB 2014 -06-03  SMT- LIB 2015 -06-01
  • 60. 51  SMT- LIB 2016 -05-23 Các SMT Benchmark được tải về tại địa chỉ: https://www.starexec.org 4.4.4 Kết quả thực nghiệm Để đánh giá hiệu quả của kĩ thuật kiểm kiểm thử cặp đôi trong raSAT, thực hiện thực nghiệm raSAT 0.2 và raSAT0.2 – Pairwise testing trên bộ các ràng buộc “SMT- LIB 2015 -06-01” được tải ở địa chỉ sau : http://smtcomp.sourceforge.net/2015/benchmarks.shtml Với thông số môi trường như sau :  Timeout 2500s  Bộ vi xử lý Intel Xeon E5-4655v3  Ram 8GB Kết quả thực nghiệm của raSAT 0.2 và raSAT0.2 – Pairwise testing như sau : Bảng 12: Kết quả thực nghiệm của raSAT 0.2 và raSAT0.2 – Pairwise testing STT Loại ràng buộc raSAT0.2 – Pairwise testing raSAT 0.2 1 zankl (SAT) 33 41 2 zankl (UNSAT) 12 14 3 meti-tarski (SAT) 4801 4597 4 meti-tarski (UNSAT) 1772 1750 5 hong (SAT) 0 0 6 hong (UNSAT) 4 5 7 LassoRanker (SAT) 45 5 8 LassoRanker (UNSAT) 0 0 9 kissing (SAT) 17 12 10 kissing (UNSAT) 0 0 11 hycomp (SAT) 128 6 12 hycomp (UNSAT) 1724 1720 Total 8536 8150 Time(s) 7500302.763 8562351.838
  • 61. 52 Nhận xét: Số lượng bài toán raSAT mới giải được tăng lên 386 bài. Đặc biệt với loại ràng buộc meti-tarski số lượng ràng buộc SAT tăng lên khá lớn (204 bài) hay loại hycomp (SAT) tăng lên 122 bài. Tuy nhiên với loại ràng buộc có số lượng biến lớn như zankl số lượng giải được bị giảm đi (10 bài) nguyên nhân là do tốn nhiều thời gian cho testing dẫn đến thời gian cho phân rã khoảng ít đi. Về mặt thời gian raSAT mới cũng đã cải thiện được 1062049.075(giây) = 17,500(phút), tức là cải thiệu được 12.4% về mặt thời gian. Như vậy xét về tổng thể raSAT áp dụng kiểm thử cặp đôi đã cải thiệt được hai tiêu chí gồm tăng số lượng bài toán giải được và giảm tổng thời gian cho tất cả các loại ràng buộc.
  • 62. 53 KẾT LUẬN Giải các ràng buộc đa thức toán học (Polynomial constraint) được ứng dụng nhiều trong phân tích hệ thống, kiểm chứng phần cứng và phần mềm, cụ thể như chứng minh tính bất biến của một chương trình hoặc phân tích kết quả của các hệ thống. Tất cả các ứng dụng trên cần được tự động và cần có công cụ để hỗ trợ để giải quyết bài toán. Luận văn đã nghiên cứu và trình bày các kỹ thuật giải các ràng buộc phi tuyến tính (non-linear constraints) bằng phương pháp tính toán xấp xỉ (approximation methods). Cụ thể luận văn đã nghiên cứu và trình bày về các phương pháp tính toán khoảng (Interval Arithmetic) để giải các ràng buộc phi tuyến tính. Ngoài ra luận văn trình bày kiến trúc và các kỹ thuật áp dụng trong SMT Solver raSAT. Một công cụ giải tự động ràng buộc toán học trên tập số thực và số nguyên dựa trên phương pháp tính toán khoảng và kiểm thử. Luận văn đề xuất áp dụng phương pháp kiểm thử cặp đôi (pairwise testing) thực hiện kiểm thử tăng dần (test - inrementally) vào bước kiểm thử của raSAT để cải thiện hiệu quả. Kết quả đạt được đã tốt hơn như mục tiêu ban đầu của luận văn. Cụ thể kết quả đạt được như sau:  Cải thiện số lượng bài toán giải được và thời gian. Cụ thể giải nhiều hơn 386 bài toán với thời gian cải thiện được khoảng 12.4% (17,500 phút).  Mở ra các phương pháp cải tiến raSAT trên các ràng buộc có số biến lớn. Hiện tại với các ràng buộc có số biến lớn vẫn là thách thức của các SMT Solver mạnh như Z3… Hiện tại kiểm thử cặp đôi mới giải quyết được vấn đề chọn nhiều giá trị cho mỗi biến nhưng chưa tìm được cách tìm giá trị SAT nhanh hơn. Trong tương lai chúng tôi sẽ nghiên cứu tìm ra các chiến lược chọn giá trị cho các biến để tìm được giá trị SAT nhanh hơn. Ngoài ra raSAT hiện tại mới giải được cho ràng buộc bất đẳng thức, trong tương lai chúng tôi sẽ nghiên cứu để giải cho các ràng buộc đa thức đẳng thức và ứng dụng raSAT vào kiểm chứng phần mềm.
  • 63. 54 TÀI LIỆU THAM KHẢO [1] Borralleras, C., Lucas, S., Navarro-Marset, R., Rodr´ ıguez-Carbonell, E., and Rubio, A. Solving non-linear polynomial arithmetic via sat modulo linear arithmetic. In Proceedings of the 22nd International Conference on Automated Deduction (2009), CADE-22, Springer-Verlag, pp. 294–305 [2] Bryant, R. E., Kroening, D., Ouaknine, J., Seshia, S. A., Strichman, O., and Brady, B. Deciding bit-vector arithmetic with abstraction. In Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems (2007), TACAS’07, Springer-Verlag, pp. 358–372. [3] Đỗ Thị Bích Ngọc and Mizuhito Ogawa, Overflow and roundoff error analysis via model checking, Proceedings of the IEEE/ACM international conference on software engineering and formal methods. SEFM ’09, IEEE computer society, 2009, pp. 105-114. [4] Franzle, M., Herde, C., Teige, T., Ratschan, S., and Schubert, T. Effi-cient solving of large non-linear arithmetic constraint systems with complex booleanstructure. Journal on Satisfiability, Boolean Modeling and Computation 1 (2007), 209–236. [5] Franzle, M., Herde, C., Teige, T., Ratschan, S., and Schubert, T. Effi-cient solving of large non-linear arithmetic constraint systems with complex booleanstructure. Journal on Satisfiability, Boolean Modeling and Computation 1 (2007), 209–236. [6] Ganai, M., and Ivancic, F. Efficient decision procedure for non-linear arithmetic constraints using cordic. In Formal Methods in Computer-Aided Design, 2009 FMCAD 2009 (2009), pp. 61 –68. [7] Harald Ganzinger, George Hagen, Robert Nieuwenhuis, Albert Oliveras, Cesare Tinelli. DPLL(T): Fast Decision Procedures ,16th International Conference on Computer Aided Verification (CAV), July 2004, Boston (USA) [8] Microsoft. Z3. [9] Miquel Bofill, Robert Nieuwenhuis, Albert Oliveras, Enric Rodríguez- Carbonell Albert Rubio. The Barcelogic SMT Solver, 20th International Conference on Computer Aided Verification (CAV), July 2008, Princeton (USA).
  • 64. 55 [10] A. Blass and Y. Gurevich. Pairwise Testing, Bulletin of the European Association for Theoretical Computer Science Number 78, October 2002, 100 132 [11] Armin Biere, Marijn Heule, Hans van Maaren, Toby Walsch IOS Press (2008), Handbook of Satisfiability, Dimitris Achlioptas [12] Comba, J. L. D., and Stolfi, J. Affine arithmetic and its applications to computer graphics. In Proceedings of VI SIBGRAPI. (1993) [13] Corzilius, F., and ´ Abrah´ am, E. Virtual substitution for SMT- solving. In Pro-ceedings of the 18th international conference on Fundamentals of computation theory (2011), FCT’11, Springer-Verlag, pp. 360–371. [14] Cristina Borralleras, Salvador Lucas, Albert Oliveras, Enric Rodríguez- Carbonell, Albert Rubio. SAT Modulo Linear Arithmetic for Solving Polynomial Constraints [15] H. Anai, Algebraic. Methods for solving real polynomial constraints and their applications in biology, Algebraic biology computer algebra in biology, 2005, pp. 139-147. [16]J. Czerwonka. Pairwise Testing in Real World, Proceedings of 24th Pacific Northwest Software Quality Conference, 2006 [17] Messine, F. Extensions of affine arithmetic: Application to unconstrained globaloptimization. Journal of Universal Computer Science 8, 2 (2002) [18] Nieuwenhuis, R., Oliveras ,Tinelli (2005), Abstract DPLL and abstract DPLL modulo theories. In Logic for Programming, Articial Intelligence, and Reasoning, F. Baader and A. Voronkov, Eds., vol. 3452 of Lecture Notes in Computer Science. Springer-Verlag [19] Passmore, G. O., and Jackson, P. B. Combined decision techniques for theexistential theory of the reals. In Proceedings of the 16th Symposium, 8th Interna-tional Conference. Held as Part of CICM ’09 on Intelligent Computer Mathematics (2009), Calculemus ’09/MKM ’09, Springer-Verlag, pp. 122–137 [20] R.E. Moore , Interval Analysis. Prentice-Hall, 1966. [21] Ratschan, S. Efficient solving of quantified inequality constraints over the realnumbers. ACM Trans. Comput. Logic 7, 4 (Oct. 2006), 723–748.
  • 65. 56 [22] Robert Nieuwenhuis, Albert Oliveras, Cesare Tinelli. Abstract DPLL and Abstract DPLL Modulo Theories, 11th International Conference on Logic for Programming, Artificial Intelligence and Reasoning (LPAR). March 2005, Montevideo (Uruguay). [23] S. Lucas and R. Navarro-Marset, Comparing CSP and SAT solvers for polynomial constraints in termination provers, Notes theory computer science, 2008, pp. 75-90. [24] Stolfi, Figueiredo. An Introduction to Affine Arithmetic [25] Stolfi, J. Self-Validated Numerical Methods and Applications. PhD thesis, PhD. Dissertation, Computer Science Department, Stanford University, 1997. [26] Tô Văn Khánh and Mizuhito Ogawa, raSAT: SMT for Polynomial Inequality, Technical report School of Information Science Japan Advance Institute of Science and Technology, 2013. [27] Tô Văn Khánh and Mizuhito Ogawa, SMT for polynomial constraints on real numbers, Notes theory computer science, 2012, pp. 27-40. [28] Tô Văn Khánh, SMT for Polynomial Constraints and Its Applications, PHD thesis, School of Information Science Japan Advance Institute of Science and Technology, 2013. [29] Vu Xuan Tung, To Van Khanh, Mizuhito Ogawa. raSAT: An SMT Solver for Polynomial Constraints, International Joint Conference on Automated Reasoning 2016. IJCAR 2016: Volume 9706 Pages 228-237 [30] Y.Lei and K.C.Tai In-parameter-order: a test generation strategy for pairwise testing. Proceedings Third IEEE Intl. High-Assurance Systems Engineering Symp., 1998, pp. 254-261