Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận văn tóm tắt ngành công nghệ thông tin với đề tài: Phương pháp tính toán khoảng giải các ràng buộc không tuyến tính, cho các bạn làm luận văn tham khảo
Phương pháp tính toán khoảng giải các ràng buộc không tuyến tính
1. 1
LỜI MỞ ĐẦU
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
ĐẠI HỌC QUỐC GIA HÀ NỘI
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ố: 60 48 01 03
TÓM TẮT LUẬN VĂN THẠC SĨ
HÀ NỘI – 2016
2. 1
LỜI MỞ ĐẦUChương 1.
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 hệ thống. 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 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 toán học (Polynomial constraint) được ứng dụng nhiều trong
phân tích hệ thống và 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 toán học là đưa ra kết luận ràng buộc đó là SAT hoặc
UNSAT.
Việc tìm kết quả chính xác của một đa thức đôi khi là việc vô cùng khó khăn và
phức tạp. Do vậy việc tìm kiếm kết quả gần đúng với kết quả chính xác với mức độ
3. 2
sai số có thể chấp nhận được là một giải pháp. Thay vì tìm kiếm kết quả chính xác ta
sẽ đi tìm tiệp cận trên và tiệm cận dưới của kết quả đó. Ở 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 không tuyến tính (non-linear
constraints) bằng phương pháp 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à áp dụng
các kĩ thuật tính toán khoảng (Interval Arithmetic) để giải tự động các ràng buộc toán
học.
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. Tìm hiểu và ứng dụng
công cụ SMT Solver raSAT trong việc giải các ràng buộc đa thức.
Chương 4: Thực nghiệm kĩ thuật kiểm thử đôi một trên công cụ SMT Solver
raSAT để giải các ràng buộc.
Phần kết luận: Kết luận và hướng nghiên cứu dự định trong tương lai.
4. 3
PHƯƠNG PHÁP TÍNH TOÁN KHOẢHƯChương 2.
Trong chương này tôi sẽ trình bày lý thuyết về 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 ]
5. 4
Trong phương pháp tính toán khoảng có hai kĩ thuật chính gồm Classical
Interval (CI) và Affine Arithmetic (AF). 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 AF1, AF2 và Chebyshev Affine Interval (C AI). 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) đượ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]
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
6. 5
biết được hai đầu vào là giống nhau nên sẽ biểu diễn hai giá trị với 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] .
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) đượ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 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 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)
7. 6
Đị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
ẍ ÷ ÿ = ẍ ×
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:
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
]
8. 7
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 đượ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.
Đị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)ɛ⫨
9. 8
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ừ (−) .
2.3.3. Dạng AF2
Dạng AF2 đượ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.
Đị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ɛ⫨
11. 10
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) đượ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|
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
)
12. 11
Hình 1: Đồ thị biểu diễn giá trị xấp xỉ Chebyshev của x2
và x|x|.
SMT SOLVER VÀ SMT SOLVER raSATChương 3.
3.1. SAT Solver
SAT (satisfiability problem of propositional logic) là công cụ để giải quyết các
bài toán ở dạng logic mệnh đề. 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.
13. 12
3.2. SMT Solver
Với các biểu thức logic thì SAT Solver là công cụ tốt để giải. Tuy nhiên với các
hệ thống hiện tại được thiết kế ở mức cao (high level) thay cho mức logic (logic
level). Nếu sử dụng các công cụ kiểm chứng ở mức logic thì cần phải chuyển đổi từ
mức cao về mức logic, tuy nhiên chí phí cho việc chuyển đổi này rất đắt đỏ. Do vậy
SMT Solver (satisfiability modulo theories) là một giải pháp cho vấn đề trên. SMT
Solver được sử dụng giải quyết các bài toán cụ thể như 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). 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.
3.3. SMT Solver raSAT
SMT Solver raSAT đượ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. 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
2015” 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
14. 13
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
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 ∈ ⊝
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.
15. 14
Hình 2: Kiến trúc của SMT Solver raSat
Chương 4. THỰC NGHIỆM
Ở chương này chúng tôi sẽ trình bày cài đặt kĩ thuật kiểm thử đôi một ở bước
kiểm thử của SMT Solver raSAT để so sánh hiệu quả trước và sau khi sử dụng kĩ
thuật kiểm thử đôi một trên các ràng buộc.
4.1. Kiểm thử đôi một
Kiểm thử đôi một (pairwise testing) 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ử đôi một 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ử đôi một đượ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
16. 15
vậy kiểm thử đôi một 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ử đôi một:
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ử đôi một 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ử đôi một.
4.2 Áp dụng kiểm thử đôi một vào SMT Solver 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. 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ị.
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 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ử đôi một
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ử đôi một 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.
17. 16
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ử đôi một 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].
4.3 Kết quả thực nghiệm
raSAT thực nghiệm trên bộ các ràng buộc “SMT- LIB 2015 -06-01” với
timeout là 2500s , bộ vi xử lý Intel Xeon E5-4655v3 , ram 8GB.
STT Loại ràng buộc raSAT – Pairwise testing raSAT - Old
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
18. 17
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.075s . Như vậy xét về tổng thể raSAT áp dụng
kiểm thử cặp đôi đã cải thiện đượ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.
19. 18
KẾT LUẬN
Giải các ràng buộc toán học có vai trò quan trọng trong kiểm chứng phần cứng
và phần mềm. Trong luận văn này chúng tôi trình bày phương pháp tính toán khoảng
để giải tự động các ràng buộc toán học, cụ thể giải các ràng buộc đa thức phi tuyến
tính.
Trong luận văn chúng tôi trình bày rõ ràng kiến trúc của 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ự và số nguyên. Trong
luận văn này chúng tôi đề xuất áp dụng kiểm thử cặp đôi và bước kiểm thử (testing)
nhằm mục đích có thể chọn nhiều giá trị hơn cho mỗi biến mà số lượng ca kiểm thử
không quá lớn. Sau khi cài đặt và thực nghiệm kết quả đạt được đã tốt hơn cả về mặt
số lượng bài toán giải được và tổng thời gian giảm đi. Như vậy kết quả thực nghiệm
đã đúng như mục tiêu của luận văn đề ra ban đầu.
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.
20. 19
TÀI LIỆU THAM KHẢO
[1]. To Van Khanh, Mizuhito Ogawa. SMT for Polynomial Constraints on Real
Numbers http://www.jaist.ac.jp/~mizuhito/papers/conference/TAPAS12.pdf
[2]. To Van Khanh, Mizuhito Ogawa. SMT for Polynomial Constraints and Its
Application
[3]. To Van Khanh, Mizuhito Ogawa. raSAT: SMT for Polynomial Inequality.
JAIST Technical Report 2013, IS-RR-2013-003
http://hdl.handle.net/10119/11349
[4]. Vu Xuan Tung, To Van Khanh, Mizuhito Ogawa. raSAT: An SMT Solver for
Polynomial Constraints http://www.jaist.ac.jp/~s1310007/raSAT/
[5]. Moore, R. E. Interval Analysis. Prentice-Hall, 1966
[6]. Comba, J. L. D., and Stolfi, J. Affine arithmetic and its applications to computer
graphics. In Proceedings of VI SIBGRAPI. (1993)
[7]. Stolfi, J. Self-Validated Numerical Methods and Applications. PhD thesis, PhD.
Dissertation, Computer Science Department, Stanford University, 1997.
[8]. raSat SMT Solver http://www.jaist.ac.jp/~s1310007/raSAT/
[9]. Stolfi, Figueiredo. An Introduction to Affine Arithmetic
http://www.sbmac.org.br/tema/seletas/docs/v4_3/101_01summary.pdf
[10].Cristina Borralleras, Salvador Lucas, Albert Oliveras, Enric Rodríguez-
Carbonell, Albert Rubio. SAT Modulo Linear Arithmetic for Solving Polynomial
Constraints
[11].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.
[12].Harald Ganzinger, George Hagen, Robert Nieuwenhuis, Albert Oliveras, Cesare
Tinelli. DPLL(T): Fast Decision Procedures
[13].Robert Nieuwenhuis, Albert Oliveras, Cesare Tinelli. Abstract DPLL and
Abstract DPLL Modulo Theories.
Miquel Bofill, Robert Nieuwenhuis, Albert Oliveras, Enric Rodríguez-Carbonell
Albert Rubio. The Barcelogic SMT Solver
http://www.cs.upc.edu/~oliveras/espai/papers/cav08.pdf
[14].Armin Biere, Marijn Heule, Hans van Maaren, Toby Walsch IOS Press (2008),
Handbook of Satisfiability, Dimitris Achlioptas.