Tóm tắt Luận văn Thạc sĩ Công nghệ thông tin: Phát triển các kỹ thuật tìm bất biến (invariants) và biến (variants) cho việc sử dụng hoare logic để chứng minh tính đúng đắn của chu trình

27 53 0
Tóm tắt Luận văn Thạc sĩ Công nghệ thông tin: Phát triển các kỹ thuật tìm bất biến (invariants) và biến (variants) cho việc sử dụng hoare logic để chứng minh tính đúng đắn của chu trình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Luận văn được tiến hành và đã đạt được một số kết quả như sau: Tìm hiểu về bài toán chứng minh tính đúng đắn của chu trình bằng phương pháp logic Hoare; nghiên cứu các kỹ thuật tìm biến và bất biến cho việc sử dụng logic Hoare để chứng minh tính đúng đắn của chu trình; ứng dụng các kỹ thuật vào việc tìm kiếm biến và bất biến trong một hệ thống các bài toán cơ bản.

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN MINH HẢI PHÁT TRIỂN CÁC KỸ THUẬT TÌM BẤT BIẾN (INVARIANTS) VÀ BIẾN (VARIANTS) CHO VIỆC SỬ DỤNG HOARE LOGIC ĐỂ CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA CHU TRÌNH Ngành: Cơng nghệ Thơng tin Chun ngành: Kỹ thuật phần mềm Mã số: 60480103 TÓM TẮT LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS ĐẶNG VĂN HƯNG Hà Nội - 2016 i MỤC LỤC MỤC LỤC II DANH MỤC CÁC HÌNH VẼ III CHƯƠNG MỞ ĐẦU LÝ DO CHỌN ĐỀ TÀI MỤC ĐÍCH NGHIÊN CỨU ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU KẾT CẤU CỦA LUẬN VĂN CHƯƠNG TỔNG QUAN VỀ LOGIC HOARE 2.1 LOGIC VỊ TỪ 2.2 NHỮNG HIỂU BIẾT VỀ LOGIC HOARE 2.2.1 Lịch sử logic Hoare: 2.2.2 Nội dung logic Hoare 2.2.3 Các tiên đề logic Hoare: CHƯƠNG CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA LỆNH CHU TRÌNH BẰNG LOGIC HOARE 3.1 PHƯƠNG PHÁP CHỨNG MINH 3.2 CÁC VÍ DỤ CHỨNG MINH : 3.2.1 Bài 3.2.2 Bài CHƯƠNG NGHIÊN CỨU VỀ BIẾN VÀ BẤT BIẾN TRONG PHƯƠNG PHÁP CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA LỆNH CHU TRÌNH 4.1 BIẾN 4.1.1 Khái niệm 4.1.2 Phương pháp tìm biến 4.2 BẤT BIẾN 4.2.1 Bất biến vòng lặp ii 4.2.2 Một cách nhìn mang tính xây dựng 10 4.2.3 Ví dụ 10 4.2.4 Phân loại bất biến: 11 4.3.2 Tìm kiếm 13 4.3.3 Sắp xếp 13 4.4 ỨNG DỤNG KINH NGHIỆM TÌM BIẾN, BẤT BIẾN TRONG MỘT SỐ BÀI TẬP 13 CHƯƠNG KẾT LUẬN 21 5.1 KẾT LUẬN 21 5.2 HẠN CHẾ VÀ KIẾN NGHỊ 22 TÀI LIỆU THAM KHẢO 23 DANH MỤC CÁC HÌNH VẼ Hình Các vịng lặp tính tốn cắp xấp xỉ 10 Hình Ước số chung lớn hai số nguyên dương a b 11 Hình Số lớn với vịng lặp biến 13 Hình Tìm kiếm mảng chưa xếp Error! Bookmark not defined iii iv CHƯƠNG MỞ ĐẦU Lý chọn đề tài Trong suốt trình thân học tập, nghiên cứu trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội tiếp xúc với nhiều kiến thức mới, quan trọng, ứng dụng mạnh mẽ lĩnh vực rộng lớn CNTT Là giáo viên giảng dạy môn tin học cấp THPT, thường xuyên tiếp xúc hướng dẫn học sinh kiến thức ngơn ngữ lập trình sở ngơn ngữ Pascal Do đó, tơi đặc biệt có hứng thú với môn kiểm thử Việc kiểm tra chương trình xem có đúng, chạy tốt, phù hợp với u cầu người lập trình hay khơng ln vấn đề quan trọng, mang tính thời đại lập trình viên nhà quản lý phần mềm Cả dự án bị ảnh hưởng gặp lỗi nghiêm trọng việc viết mã Trong tính chất đảm bảo chương trình phù hợp với u cầu, có tính chất quan trọng tính đắn Việc chứng chương trình đắn có nhiều phương pháp, phần nghiên cứu luận văn, chọn nghiên cứu Hoare logic (logic Hoare) Logic Hoare Hoare xuất báo năm 1969 Nó thực đời lâu, thân ln mang tính thời đại việc áp dụng logic Hoare để kiểm tra tính chương trình tiến hành thường xuyên phạm vi rộng lớn Việc tìm hiểu phương pháp chứng minh tính logic Hoare gợi mở cho tơi hướng nghiên cứu Trong đó, tơi xâu vào việc phân tích Biến (Variants) Bất biến (Invariants), hai yếu tố quan trọng việc chứng minh tính lệnh chu trình Bản chất vịng lặp ln có ẩn chứa bất biến vịng lặp Hay nói cách khác, bạn khơng thể hiểu vòng lặp chưa biết bất biến Mục đích nghiên cứu Đối tượng phạm vi nghiên cứu Kết cấu luận văn Gồm có chương: Chương Mở đầu Giới thiệu lý chọn đề tài, mục đích nghiên cứu, đối tượng phạm vi nghiên cứu, kết cấu luận văn Chương Tổng quan logic Hoare Chương cung cấp lý thuyết logic vị từ logic Hoare Chương Chứng minh tính đắn lệnh chu trình logic Hoare Trong chương cung cấp cách thức để chứng minh tính đắn Bên cạnh đó, tơi thực áp dụng thực tế lý thuyết vào việc chứng minh vài tập Chương Nghiên cứu biến bất biến phương pháp chứng minh tính đắn lệnh chu trình Ứng dụng vào tìm biến bất biến số thuật tốn Chương Kết luận Chương tổng kết lại vấn đề đạt được, chưa đạt kiến nghị đề xuất luận văn CHƯƠNG TỔNG QUAN VỀ LOGIC HOARE 2.1 Logic vị từ 2.2 Những hiểu biết Logic Hoare 2.2.1 Lịch sử logic Hoare: 2.2.2 Nội dung logic Hoare Đặc điểm trung tâm logic Hoare ba Hoare (Hoare Triples) Bộ ba mô tả thực thi đoạn mã thay đổi trạng thái tính tốn Một ba hoare có dạng P c Q Trong P điều kiện tiên quyết, Q hậu điều kiện, c lệnh chương trình Ở P Q cơng thức có dạng logic vị từ, chúng đưa khảng định sai Ý nghĩa ba Hoare P c Q giải thích sau: Nếu tơi bắt đầu trạng thái P thực c c chấm dứt trạng thái Q đúng, chương trình cho kết Chú ý trường hợp c khơng dừng khơng có khái niệm Q, tức Q thứ Như vậy, người thường chọn Q false để diễn tả c không dừng 2.2.3 Các tiên đề logic Hoare: Luật tiên đề rỗng P skip P với P công thức logic mệnh đề Trong skip không làm gì, tơi thấy sau thực trước Luật phép gán Tôi giả thiết x : E biểu thị lệnh gán, x biến E biểu thức thích hợp, P cơng thức logic vị từ Khi đó, luật phép gán phát biểu sau P  x / E  x:=E  P Các quy tắc bổ trợ : Độ mạnh công thức ngữ pháp: Nếu P Q hai công thức ngữ pháp, mà P  P ' tơi nói P cơng thức mạnh P’ P’ yếu P Một điều kiện mạnh điều kiện mà có giá trị thỏa mãn điều kiện Độ mạnh điều kiện trước: P ' c 'Q , P  P' P c 'Q c đoạn chương trình Độ yếu điều kiện sau: P c Q ,Q  Q ' P c Q ' c đoạn chương trình Luật ghép: Luật điều kiện: P S QQT R P S ;T R P  B S QP  BT Q P if B then S else T Q Luật While P  B C P P while B C B  P Ở P điều kiện bất biến vịng lặp Luật chứng tính đắn phận lệnh chu trình Luật While dành cho tính đắn tồn phần  P  B  t  N  C P  t  N  P  t  P while B C B  P Luật dùng để chứng minh tính đắn tồn phần lệnh chu trình Trong luật này, ngồi việc giữ điều kiện bất biến vịng lặp tơi cịn phải chứng minh tính dừng cách chứng minh giá trị số hạng (t) giảm dần sau lần lặp t gọi biến, ý t phải thuộc tập chắn, lần lặp giảm giá trị hữu hạn CHƯƠNG CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA LỆNH CHU TRÌNH BẰNG LOGIC HOARE 3.1 Phương pháp chứng minh Để xác minh tính xác phần vịng lặp có dạng hình thức while b c, tơi cần bất biến I cho điều kiện sau thỏa mãn:  P  I : Các bất biến bước đầu  I  b c I  : Mỗi lần thực vòng lặp bảo tồn bất biến, tức sau lần thực thân vòng lặp thể bất biến giữ nguyên   I  b   Q : Các bất biến điều kiện thoát vịng lặp bao hàm hậu điều kiện Tơi xác minh đầy đủ tính đắn vịng lặp cách đưa biến chức có giá trị nguyên t, đáp ứng điều kiện sau đây:  I  b  t  : Nếu tơi vào thân vịng lặp (nghĩa điều kiện lặp b đánh giá đúng) bất biến bảo tồn, sau t phải khảng định Tôi thấy t  nghĩa biến chức có giá trị dương, điều cần đảm bảo để bắt đầu thân vịng lăp  I  b  t  N c t  N : Giá trị biến chức giảm sau lần thực thân vòng lặp (ở N số) Cơng việc chứng minh tính đắn đầy đủ lệnh chu trình dựng luận Hoare thực sau: P  I b t   I  b  t  N  c I  t  N   I  b   Q P while b c Q 3.2 Các ví dụ chứng minh : Trên thực tế, với hàng tỉ tốn khác nhau, có đặc điểm vơ tận việc dùng vịng lặp có dạng thức while b c để thể Để rèn luyện làm rõ cách thức chứng minh tính đắn dựa lý thuyết Hoare, làm vài ví dụ Trong phần này, tơi thực hai tập sau đây: 3.2.1 Bài Tính tổng từ n i   s  0 n   while i  n (s : s  i; i : i  1)  s   j  j 1   Giải: i 1 tơi chọn bất biến vịng lặp I   i  n   s   j j 1 chọn biến chức t : n  i  Nhiệm vụ chứng minh điều kiện sau để đảm bảo tính đắn lệnh chu trình tập nêu  i   s  0  I I  i  n  n  i 1  I  i  n  n  i   N s : s  i; i : i  I  n  i   N n  I  i  n  s   j j 1 Từ lý luận kể trên, tơi khảng định ba Hoare Điều đồng nghĩa với việc tơi hồn thành việc chứng minh tính 3.2.2 Bài Tính r  nm r : 1; i : 0 while i  m  r : r* n;i : i  1;  r  nm  Giải: Bất biến vòng lặp đầy đủ : I   i  m  n   r  ni Trong tập này, tơi đơn giản nhận giá trị lựa chọn làm biến t  m  i Sau tơi có đủ hai thành phần quan trọng bất biến vòng lặp I biến chức i, nhiệm vụ phải chứng minh điều kiện sau để khảng định tính đắn lệnh chu trình theo logic Hoare: I  (m   n    i  m  n  0)  r  ni (r : 1; i : 0)  I I  i  m  m  i  I  i  m  m  i  N r : r * n;i : i 1; I  m  i  N  I  i  m  r  nm cố gắng để đạt làm để đạt Do tơi nói là: tơi khơng thể hiểu vịng lặp mà khơng biết bất biến Các khái niệm bất biến vòng lặp thể dễ dàng cú pháp vòng lặp sau đây: from variant 10 11 Init invariant Inv until Exit Var Loop Body end Mệnh đề biến chức (variant) giúp thiết lập chấm dứt vịng lặp, tơi tìm hiểu sau Khởi tạo (Init) thân vịng lặp (Body) danh sách lệnh thực theo trình tự, hai hai rỗng, thực tế phần thân bình thường khơng rỗng Exit (Điều kiện thốt) Inv (bất biến) biểu thức dạng logic vị từ trả kết True False Ngữ nghĩa vòng lặp là: (1) Thực thi Init (2) Sau đó, Exit có giá trị True, khơng làm cả; có giá trị False, thực Body, lặp lại bước Có nhiều biến thể cấu trúc vịng lặp ngơn ngữ lập trình Tất chúng bắt nguồn từ hình thức Inv (bất biến vịng lặp) bất biến xác cho vịng lặp, có đủ điều kiện sau đây: (1) Mỗi thực Init, bắt đầu trạng thái trước thực vòng lặp, mang lại trạng thái mà Inv nắm giữ (2) Mỗi thực Body, bắt đầu trạng thái mà Inv nắm giữ Exit không nắm giữ (Có giá trị false), mang lại trạng thái mà Inv nắm giữ lần 4.2.2 Một cách nhìn mang tính xây dựng Hình Các vịng lặp tính tốn cắp xấp xỉ 4.2.3 Ví dụ Để minh họa cho ý tưởng trên, tơi áp dụng thuật tốn tìm ước chung lớn số a b Thuật toán sau: while a khác b a>b a:=a-b ngược lại b:=b-a; Uoc chung lon nhat la: a; Khi đó, Hậu điều kiện thuật toán là: Result = UC(a, b) Trong trường hợp số nguyên dương a b đầu vào UC hàm tốn học tính ước số chung lớn Tơi viêt tổng qt sau: Result = x  UC(Result, x) = UC(a,b) Với biến x mới, tính chất tốn học, với x, tơi có UC(x,x) = x 10 Những liên kết thứ hai, tổng quát hậu điều kiện, sử dụng bất biến; liên kết sử dụng điều kiện vịng lặp Để có thân vịng lặp, áp dụng đặc tính phương pháp tốn học tìm ước chung lớn nhất, tơi có: với x> y UC (x, y) = UC (x-y, y) với x< y UC (x, y) = UC (x, y-x) Tơi thể thuật tốn với bất biến vịng lặp sau: from Result := a ; x := b invariant Result >0 x>0 UC (Result, x) = UC (a, b) until Result = x loop 10 if Result >x then 11 Result := Result − x 12 else Result*/ 13 x := x − Result 14 end 15 variant 16 17 /*Ở giá trị x lớn max (Result, x) end Hình Ước số chung lớn hai số nguyên dương a b 4.2.4 Phân loại bất biến: Bất biến vịng lặp chia theo hai hướng: o Bởi vai trò hậu điều kiện, giúp tơi phân biệt tính bất biến "cốt lõi" (“essential”) "chặn" (“bounding”) 11 o Bằng kỹ thuật chuyển đổi mang lại bất biến từ hậu điều kiện Ở tơi có kỹ thuật tách cặp (uncoupling) giảm dư (constant relaxation) 4.2.4.1 Phân loại theo luật 4.2.4.2 Phân loại theo kỹ thuật khái quát hóa Giảm dư hằng: Tách cặp: 4.3 Tìm biến bất biến vài thuật tốn 4.3.1 Tìm phần tử có giá trị lớn dãy phần tử 4.3.1.1 Số lớn với vòng lặp biến Kết bất biến vòng lặp mong muốn Result = max(a [ a lower i] ) a.lower ≤ i ≤ a.upper Ở đây, thay i=a.upper Tôi dễ ràng chọn biến chức a.upper – i Hình 4.4 cho thấy việc thực kết thuật toán max_one_way (a: ARRAY [T]): T require a.count ≥ /*a.count số lượng phần tử mảng*/ local 10 11 12 i : INTEGER from i := a.lower ; Result := a [a.lower] invariant a.lower ≤ i ≤ a.upper Result = max (a [a.lower, i]) until 12 13 14 15 16 17 18 19 20 21 22 i = a.upper loop i := i + if Result p  n  n  p   Chứng minh sau lần thực thân vòng lặp biến t phải giảm Để thực hiện, phải chứng minh vấn đề sau b  t  N c t  N  , đồng nghĩa với việc chứng minh Tôi phải làm rõ hai vấn đề sau + Thứ nhất:  p  n  n  p   N  f  p   m   (n  ( p  1)   N ) + Thứ hai :  p  n  n  p   N  f  p   m    n  p   N  Bất biến: Để chứng minh I cần chứng minh thỏa mãn vấn đề sau b  I  c I  + Tôi làm rõ vấn đề thứ nhất: P  b cQ  p  n  m   f i  |1  i  p  1   p  n   f  p   m    f  p    f  i  |1  i  p   1   p   n  14 + Tôi làm rõ vấn đề thứ hai:  P  b   Q  p  n  m   f i  |1  i  p  1   p  n   f  p   m    m   f  i  |1  i  p  1   p  n  Kết luận: Biến bất biến tìm Tuy nhiên vịng lặp không dừng trường hợp gặp phải f [p] ≥ m Bài Cho chương trình (tựa mã) sau: m := 0; p := 1; q := n; while p < q if f (q) > f (p) then q := q – 1; else p := p + 1; m := f (p); Hãy xác định biến (t) bất biến (I) để chứng minh tính đắn chương trình Bài giải: Tơi dự đốn biến bất biến sau Biến: Dạng dự đoán biến t = q – p Bất biến: Tơi dự đốn bất biến là: I  min{ f  i  |  i  n}  min{ f  i  | p  i  q} Chứng minh biến bất biến dự đốn Biến Tơi phải chứng minh b  t  , điều đồng nghĩa với việc chứng minh p  q  q  p  Chứng minh sau thực thân vòng lặp biến phải giảm giá trị b  t  N c t  N Đối với chương trình tơi phải chứng minh 15 Tơi cần chứng minh hai trường hợp sau Trường hợp f(q) > f(p) cho giá trị true: p  q  q  p  N  q 1  p  N Trường hợp cho giá trị false: p  q  q  p  N  q  ( p  1)  N Bất biến: Áp dụng luật rẽ nhánh chứng minh sau + Trường hợp 1: Tôi cần p  q  min{ f  i  |  i  n}  min{ f  i  | p  i  q}  f  q   f  p   min{ f  i  |  i  n}  min{ f  i  | p  i  q  1} + Trường hợp 2: Tôi cần p  q  min{ f  i  |  i  n}  min{ f  i  | p  i  q}  f  q   f  p  Kết Luận: Bất biến biến tơi dự đốn Bài Cho chương trình (tựa mã) sau: Với m, i biến nguyên, n nguyên dương m := 0; i := 1; while i ≤ n begin m := m + i*i; i := i + end end Hãy xác định biến (t) bất biến (I) để chứng minh tính đắn chương trình Giải: Tơi dự đốn biến bất biến sau Biến: Tơi dự đốn biến t = n – i +1 16 Bất biến: Tôi chọn bất biến vòng lặp i 1 I   i  n 1 m   j2 j 0 Tới đây, cần chứng minh biến bất biến tìm đúng, sau: Biến: Chứng minh t > Để làm điều tơi thực chứng minh b  t  đồng nghĩa với i  n  t  n  i   Chứng minh b  t  N c t  N  , i  n  n  i   N  n  i  1   N Bất biến Tôi chứng minh bất biến sau thực thân vòng lặp bảo toàn i 1 Với I   i  n   m   j Tôi cần chứng minh j 0 Tôi phải cho thấy i 1 i  n   i  n   m   j   i   n   m  i2  j 0 i 11 j j 1 Kết luận: Bất biến biến tơi dự đốn Bài Cho chương trình (tựa mã) sau: Cho m, i biến nguyên, n nguyên dương m := 0; i := 1; while i ≤ n begin if (i mod = 0) then m := m + i ∗ i ∗ i; i := i + 1; end Hãy tìm biến (t) bất biến (I) để chứng minh tính đắn chương trình Giải: Tơi dự đốn biến bất biến: 17 Biến: Tơi có biến t = n – i +1 Bất biến: Tôi bất biến sau: I   i  n   m   i 1 /2  2 * j  j 0 Chứng minh biến bất biến tìm đúng: Biến : Đầu tiên chứng minh t > b  t  đồng nghĩa với i  n  n  i 1  Tiếp theo tơi chứng minh sau thực thân vịng lặp t phải giảm giá trị b  t  N c t  N  đồng nghĩa với việc chứng minh i  n  n  i   N  n  (i  1)   N Bất biến Tôi phải chứng minh hai trường hợp sau + Trường hợp  i 1 /2    Tôi cần phải cho thấy  i  n   i  n   m    2* j   (i mod  0)    j 0    i 11/2   3  1  i   n   m  i    2* j     j 0   + Trường hợp 2:  i 1 /2    Tôi cần phải cho thấy  i  n   i  n   m    2* j   (i mod  0)    j 0    i 11/2   3  1  i   n   m    2* j     j 0   Kết luận: Bất biến biến tơi dự đốn 18 Bài Cho chương trình (tựa mã) sau: Cho m, i biến nguyên, n nguyên dương m := 0; i := 1; while i ≤ n begin if (i mod = 1) then m := m + i ∗ i ∗ i; i := i + 1; end Hãy tìm biến (t) bất biến (I) để chứng minh tính đắn chương trình Giải: Tơi dự đốn biến bất biến: Biến: tơi có biến t = n – i +1 Bất biến: Tôi bất biến sau: I  1 i  n 1 m   i   /2   2* j  1 j 0 Chứng minh biến bất biến vừa tìm đúng: Biến: Với biến t = n – i +1, thực chứng minh giống với tập Kết luận biến t tìm thỏa mãn u cầu Bất biến Tơi phải chứng minh hai trường hợp sau + Trường hợp Tôi cần phải cho thấy  i   /2     i  n   i  n   m    2* j  1  (i mod 1)    j 0    i 1 /2   3  1  i   n   m  i    2* j  1    j 0   + Trường hợp 2: 19 Tôi cần phải cho thấy  i   /2     i  n   i  n   m    2* j  1  (i mod 1)    j 0    i 1 /2   3  1  i   n   m    2* j 1    j 0   Kết luận: Bất biến biến tơi dự đốn Bài Cho chương trình (tựa mã) sau j:=1; k:=1; While j

Ngày đăng: 18/01/2020, 16:37

Từ khóa liên quan

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

Tài liệu liên quan