1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 722,43 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

i

ĐẠ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

Chuyên 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

Trang 2

ii

MỤC LỤC

MỤC LỤC II DANH MỤC CÁC HÌNH VẼ III

CHƯƠNG 1 MỞ ĐẦU 1

LÝ DO CHỌN ĐỀ TÀI 1

MỤC ĐÍCH NGHIÊN CỨU 1

ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 1

KẾT CẤU CỦA LUẬN VĂN 1

CHƯƠNG 2 TỔNG QUAN VỀ LOGIC HOARE 2

2.1 LOGIC VỊ TỪ 2

2.2 NHỮNG HIỂU BIẾT VỀ LOGIC HOARE 2

2.2.1 Lịch sử của logic Hoare: 2

2.2.2 Nội dung của logic Hoare 2

2.2.3 Các tiên đề của logic Hoare: 2

CHƯƠNG 3 CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA LỆNH CHU TRÌNH BẰNG LOGIC HOARE 4

3.1 PHƯƠNG PHÁP CHỨNG MINH 4

3.2 CÁC VÍ DỤ CHỨNG MINH : 5

3.2.1 Bài 1 5

3.2.2 Bài 2 6

CHƯƠNG 4 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 7

4.1 BIẾN 7

4.1.1 Khái niệm 7

4.1.2 Phương pháp tìm biến 7

4.2 BẤT BIẾN 8

4.2.1 Bất biến vòng lặp 8

Trang 3

iii

4.2.2 Một cách nhìn mang tính xây dựng 10

4.2.3 Ví dụ cơ bản 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 5 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 4 1 Các vòng lặp như là một sự tính toán bằng cắp xấp xỉ 10

Hình 4 2 Ước số chung lớn nhất của hai số nguyên dương a và b 11

Hình 4 3 Số lớn nhất với vòng lặp một biến 13

Hình 4 5 Tìm kiếm trong một mảng chưa được sắp xếp Error! Bookmark not

defined

Trang 4

iv

Trang 5

dự án có thể bị ảnh hưởng nếu gặp những lỗi nghiêm trọng trong việc viết mã Trong những tính chất đảm bảo chương trình phù hợp với yêu cầu, có một tính chất rất quan trọng đó là tính đúng đắn

Việc chứng mình một chương trình là đúng đắn có nhiều phương pháp, trong phần nghiên cứu của luận văn, tôi chọn nghiên cứu Hoare logic (logic Hoare) Logic Hoare được Hoare xuất bản trong một bài báo năm 1969 Nó thực

sự đã được ra đời rất lâu, nhưng bản thân nó luôn mang tính thời đại vì việc áp dụng logic Hoare để kiểm tra tính đúng của chương trình vẫn đang được tiến hành thường xuyên trên phạm vi rộng lớn Việc tìm hiểu về phương pháp chứng minh tính đúng logic Hoare đã gợi mở cho tôi một hướng nghiên cứu Trong đó, tôi đi xâu vào việc phân tích về Biến (Variants) và Bất biến (Invariants), hai yếu

tố quan trọng đầu tiên trong việc chứng minh tính đúng của lệnh chu trình Bản chất của một vòng lặp luôn có sự ẩn chứa của một bất biến vòng lặp Hay nói cách khác, bạn không thể hiểu được vòng lặp nếu chưa biết về bất biến của nó

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

Gồm có 5 chương:

Chương 1 Mở đầu Giới thiệ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

Trang 6

Chương 4 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 Ứng dụng vào tìm biến và bất biến trong một số thuật toán cơ bản

Chương 5 Kết luận Chương tổng kết lại những vấn đề đạt được, chưa đạt được và những kiến nghị đề xuất của luận văn

CHƯƠNG 2 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ử của logic Hoare:

2.2.2 Nội dung của logic Hoare

Đặc điểm trung tâm của logic Hoare là bộ ba Hoare (Hoare Triples) Bộ

ba này mô tả sự thực thi một đoạn mã có thể thay đổi trạng thái tính toán như thế nào Một bộ ba hoare có dạng     P c Q Trong đó P là điều kiện tiên quyết, Q là các hậu điều kiện, c là các lệnh chương trình Ở đây P và Q là những

công thức có dạng logic vị từ, chúng đưa ra những khảng định là đúng hoặc sai

Ý nghĩa của một bộ ba Hoare     P c Q có thể được giải thích như sau: Nếu

tôi bắt đầu một trạng thái trong đó P đúng và thực hiện c thì c sẽ chấm dứt trong một trạng thái trong đó Q là đúng, chương trình cho kết quả đúng Chú ý rằng trường hợp nếu c không dừng thì sẽ không có khái niệm Q, tức là Q có thể là bất cứ thứ gì Như vậy, mọi người thường chọn Q là false để diễn tả rằng c

không dừng

2.2.3 Các tiên đề của logic Hoare:

Trang 7

3

Luật tiên đề rỗng

  P skip   P với P là một công thức logic mệnh đề bất kỳ Trong khi skip không làm gì, tôi thấy cái gì đúng sau khi nó thực hiện cũng như là cái đã đúng trước đó

Luật về phép gán

Tôi giả thiết rằng x : E biểu thị một lệnh gán, trong đó x là một biến và

E là một biểu thức thích hợp, P là một công thức logic vị từ Khi đó, luật về phép gán được phát biểu như sau P x E /   x:=E   P

Các quy tắc bổ trợ :

Độ mạnh của các công thức đúng ngữ pháp:

Nếu P và Q là hai công thức đúng ngữ pháp, mà PP' thì khi đó tôi nói P là công thức mạnh hơn P’ và P’ thì yếu hơn P Một điều kiện mạnh hơn là một điều kiện mà có ít các giá trị thỏa mãn nó hơn điều kiện kia

Độ mạnh của điều kiện trước:    

   

' ' , P P''

Trang 8

phải chứng minh tính dừng bằng cách chứng minh giá trị của một số hạng (t) giảm dần sau mỗi lần lặp t được gọi là biến, chú ý rằng t phải thuộc tập chắc

chắn, để cho mỗi lần lặp có thể giảm đi một giá trị hữu hạn nào đó

CHƯƠNG 3 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 chính xác một phần của các vòng lặp có dạng hình

thức while b do c, tôi cần một bất biến I sao cho các điều kiện sau đây được thỏa

mãn:

PI: Các bất biến bước đầu là đúng

 Ib c I  : Mỗi lần thực hiện vòng lặp luôn bảo tồn bất biến, tức là sau mỗi lần thực hiện thân vòng lặp thể hiện bất biến luôn được giữ nguyên

 I  bQ: Các bất biến và điều kiện thoát vòng lặp bao hàm hậu điều kiện

Tôi có thể xác minh đầy đủ tính đúng đắn của vòng lặp bằng cách đưa

ra một biến chức năng có giá trị nguyên t, đáp ứng các điều kiện sau đây:

Trang 9

5

I b    t 0: Nếu tôi đi vào thân vòng lặp (nghĩa là điều kiện lặp b được đánh giá đúng) và bất biến được bảo tồn, sau đó t phải được khảng

định đúng Tôi thấy t  0 nghĩa là biến chức năng có giá trị dương, điều

đó cần được đảm bảo để có thể bắt đầu thân vòng lăp

 I  b t N c t  N: Giá trị của biến chức năng sẽ giảm sau mỗi

lần thực hiện thân vòng lặp (ở đây N là một hằng số)

Công việc chứng minh tính đúng đắn đầy đủ của lệnh chu trình dựng trên những luận cứ của Hoare được thực hiện như sau:

Trên thực tế, với hàng tỉ bài toán khác nhau, có những đặc điểm vô tận

trong việc dùng vòng lặp có dạng thức while b do c để thể hiện Để rèn luyện

và làm rõ cách thức chứng minh tính đúng đắn dựa trên lý thuyết của Hoare, tôi

sẽ lần lượt làm một vài ví dụ Trong phần này, tôi sẽ thực hiện hai bài tập sau đây:

tôi chọn được bất biến vòng lặp sẽ là

Trang 10

Sau khi tôi đã có đủ hai thành phần quan trọng là bất biến vòng lặp I và

biến chức năng i, nhiệm vụ tiếp theo tôi sẽ phải chứng minh lần lượt các điều

kiện sau đây là đúng để khảng định tính đúng đắn của lệnh chu trình theo logic Hoare:

Trang 11

4.1 Biến

4.1.1 Khái niệm

Khái niệm biến (t) được phát biểu là một đại lượng có giá trị thay đổi

trong mỗi lần thực hiện phần thân vòng lặp Biến dùng để chứng minh tính dừng

của vòng lặp Tôi phải đảm bảo ban đầu (trước khi thực hiện phần thân) t phải

có giá trị dương

4.1.2 Phương pháp tìm biến

Phương pháp đoán biến chức năng thường được sử dụng:

- Lặp với một chỉ số, ở đây i được sử dụng là biến chỉ số của vòng lặp + N ± i là biến chức năng được chọn dễ dàng

+ Áp dụng nếu bạn luôn luôn thêm hoặc luôn luôn trừ một hằng số, và nếu bạn thoát khỏi vòng lặp khi chỉ số đạt đến một số hằng số nào đó

Trang 12

8

+ Sử dụng N-i nếu bạn đang tăng i, N + i nếu bạn được giảm giá trị của

i

+ Thiết lập N với N ± i ≤ 0 ở lối ra vòng lặp, thường là bằng 0

Ví dụ: Tôi xét vòng lặp sau đây

- Đối với các vòng lặp khác hãy tìm một biểu thức đó là một ràng buộc trên số lần lặp lại trong vòng lặp

Ví dụ: Xét bài toán tìm số lớn nhất của mảng A

Trang 13

Mệnh đề biến chức năng (variant) giúp thiết lập chấm dứt vòng lặp, tôi

sẽ tìm hiểu sau Khởi tạo (Init) và thân vòng lặp (Body) là một danh sách các

lệnh được thực hiện theo trình tự, một trong hai hoặc cả hai có thể là rỗng, mặc

dù thực tế phần thân bình thường sẽ không rỗng Exit (Điều kiện thoát) và Inv (bất biến) là biểu thức dạng logic vị từ trả ra kết quả là True hoặc False

Ngữ nghĩa của các vòng lặp là:

(1) Thực thi Init

(2) Sau đó, nếu Exit có giá trị True, không làm gì cả; nếu nó có giá trị False, thực hiện Body, và lặp lại bước 2

Có rất nhiều biến thể của cấu trúc vòng lặp trong ngôn ngữ lập trình Tất

cả chúng đều có thể được bắt nguồn từ một hình thức cơ bản ở trên

Inv (bất biến vòng lặp) là một bất biến chính xác cho các vòng lặp,

nếu có đủ các điều kiện sau đây:

Trang 14

10

(1) Mỗi thực hiện Init, bắt đầu ở trạng thái trước khi thực hiện vòng lặp, sẽ mang lại một trạng thái mà Inv nắm giữ

(2) Mỗi thực hiện Body, bắt đầu ở bất kỳ trạng thái nào mà Inv nắm giữ

và Exit không nắm giữ (Có giá trị false), sẽ mang lại một trạng thái mà Inv

nếu a>b thì a:=a-b ngược lại b:=b-a;

Uoc chung lon nhat la: a;

Khi đó, Hậu điều kiện của thuật toán là: Result = UC(a, b)

Trong trường hợp các số nguyên dương a và b là các đầu vào và UC là hàm toán học tính ước số chung lớn nhất Tôi có thể viêt tổng quát như sau:

Result = x UC(Result, x) =

UC(a,b)

Với mỗi biến x mới, bằng các tính chất toán học, với mọi x, tôi có UC(x,x) = x

Trang 15

11

Những liên kết thứ hai, một sự tổng quát của hậu điều kiện, sẽ được sử dụng như là bất biến; các liên kết đầu tiên sẽ sử dụng như là điều kiện thoát vòng lặp Để có được thân vòng lặp, áp dụng đặc tính phương pháp toán học tìm ước chung lớn nhất, tôi có:

với mọi x> y thì UC (x, y) = UC (x-y, y) với mọi x< y thì UC (x, y) = UC (x, y-x)

Tôi thể hiện thuật toán với bất biến vòng lặp như sau:

Hình 4 2 Ước số chung lớn nhất của hai số nguyên dương a và b

4.2.4 Phân loại bất biến:

Bất biến vòng lặp có thể được chia theo hai hướng:

o Bởi vai trò của nó đối với các hậu điều kiện, giúp tôi phân biệt giữa tính bất biến "cốt lõi" (“essential”) và "chặn" (“bounding”)

Trang 16

12

o Bằng các kỹ thuật chuyển đổi đó mang lại các bất biến từ hậu điều kiện

Ở đây tôi có kỹ thuật như tách cặp (uncoupling) và giảm dư hằng (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 và bất biến trong một vài thuật toán cơ bản

4.3.1 Tìm phần tử có giá trị lớn nhất trong một dãy các phần tử

4.3.1.1 Số lớn nhất với vòng lặp một biến

Kết quả được bất biến vòng lặp mong muốn là Result = max(a [ a lower i] ) và a.lower ≤ i ≤ a.upper Ở đây, tôi đã thay thế i=a.upper

Tôi dễ ràng chọn ra được một biến chức năng là a.upper – i

Hình 4.4 cho thấy việc thực hiện kết quả của thuật toán

1 max_one_way (a: ARRAY [T]): T

Trang 17

4.3.3.3 Sắp xếp kiểu nổi bọt (Bubble sort)

4.4 Ứng dụng kinh nghiệm tìm biến, bất biến trong một số bài tập.

Từ tất cả những kiến thức và bài tập đã trình bày, tôi đã cố gắng tập hợp

và nghiên cứu nhằm đưa ra những cái nhìn có hướng tổng quan nhất về biến và bất biến của vòng lặp Sau đây tôi sẽ thử áp dụng những kiến thức có được để làm một số bài tập Các bài tập được trình bày sau đây được trình bày theo logic đầu tiên là dự đoán biến và bất biến của vòng lặp, sau đó tôi chứng minh biến

và bất biến được dự đoán là đúng

Bài 1 Cho chương trình (tựa mã) như sau:

m := f [1]; p := 2;

while p ≤ n do

if f [p] < m then

Trang 18

Tôi dự đoán một biến t = n – p + 1

Bất biến : Tôi dự đoán một bất biến của vòng lặp trên sẽ là:

Chứng minh ban đầu t > 0 p    n n p 1 0

Chứng minh sau mỗi lần thực hiện thân vòng lặp biến t phải giảm Để

thực hiện, tôi 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 1 N f p m (n (p  1) 1 N) + Thứ hai : p     n n p 1 N f p mn  p 1 N

Trang 19

Kết luận: Biến và bất biến tìm được là đúng Tuy nhiên vòng lặp sẽ

không dừng trong trường hợp gặp phải f [p] ≥ m

Bài 2 Cho chương trình (tựa mã) như sau:

Tôi dự đoán biến và bất biến như sau

Biến: Dạng này tôi dự đoán biến t = q – p

Bất biến: Tôi dự đoán một bất biến đó là:

Chứng minh sau khi thực hiện 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 này tôi phải chứng minh

Trang 20

16

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:

Kết Luận: Bất biến và biến tôi dự đoán là đúng

Bài 3 Cho chương trình (tựa mã) như sau: Với m, i là các biến nguyên, n là một

Tôi dự đoán biến và bất biến như sau

Biến: Tôi dự đoán biến t = n – i +1

Trang 21

17

Bất biến: Tôi chọn được một bất biến vòng lặp là

1 2 0

Tới đây, tôi cần chứng minh biến và bất biến tìm được là đúng, như sau:

Biến: Chứng minh đầu tiên t > 0 Để làm được điều đó tôi thực hiện chứng

minh b t 0 đồng nghĩa với i     n t n i 1 0

Kết luận: Bất biến và biến tôi dự đoán là đúng

Bài 4 Cho chương trình (tựa mã) sau: Cho m, i là các biến nguyên, n là một

Trang 22

18

Biến: Tôi có biến t = n – i +1

Bất biến: Tôi được một bất biến như sau:  1 / 2 3

Tiếp theo tôi chứng minh sau khi thực hiện 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

Trang 23

Tôi dự đoán biến và bất biến:

Biến: tôi có biến t = n – i +1

Bất biến: Tôi được một bất biến như sau:

  2 / 2

3 0

Chứng minh biến và bất biến vừa tìm được là đúng:

Biến: Với biến là t = n – i +1, tôi thực hiện chứng minh giống với bài tập 4

Kết luận biến t tìm được thỏa mãn yêu cầu

Trang 24

Kết luận: Bất biến và biến tôi dự đoán là đúng

Bài 6 Cho chương trình (tựa mã) sau

Tôi dự đoán biến và bất biến cho chương trình trên

Biến: Tôi dự đoán biến t = n – j

Bất biến: Tôi dự đoán bất biến của vòng lặp làI    1 j n k j!

Chứng minh biến và bất biến là đúng

Trang 25

21

 1     j n k j !        1 j 1 n k *  j    1   j 1 !  

Kết luận: Bất biến và biến tôi dự đoán là đúng

Tôi nhận thấy vấn đề tìm biến và bất biến để chứng minh tính đúng đắn của lệnh chu trình thực sự không thể tìm được một phương pháp chung nhất Vì

cơ bản những bài toán khác nhau đề có hậu điều kiện và các ràng buộc khác nhau, điều đó mang lại sự đa dạng bất quy tắc Để giải quyết được bài toán này chủ yếu dựa vào kinh nghiệm trong việc áp dụng một vài gợi ý đã trình bày trong chương IV

CHƯƠNG 5 KẾT LUẬN

5.1 Kết luận

Các kết quả nghiên cứu về đề tài chứng minh tính đúng đắn của chu trình bằng logic Hoare không phải là mới nhưng thực sự nó vẫn còn mang tính thời sự rất cao Việc áp dụng vào thực tế trong việc chứng minh tính đúng của chương trình góp phần quan trọng để đảm bảo một chương trình thỏa mãn yêu cầu lập trình Trong phần luận văn tôi đã cố gắng dẫn dắt những kiến thức theo một logic hợp lý và trực quan nhất Những lý thuyết cơ bản và bài tập ví dụ được đưa ra xen kẽ và liên tục (từ chương 2 đến chương 4) với mục đích không chỉ là cung cấp lý thuyết mà còn đem lại cho bản thân cũng như người đọc một vài kinh nghiệm rút ra trong việc tìm biến và bất biến để chứng minh tính đúng đắn của chu trình

Những kiến thức của phần luận văn có thể được tổng hợp một cách vắn tắt như sau: Đầu tiên là những kiến thức tổng quan về logic vị từ, logic Hoare; Các kỹ thuật chứng minh tính đúng của lệnh chu trình bằng phương pháp logic Hoare kèm vào đó là các ví dụ minh họa chi tiết cho việc chứng minh; Làm rõ

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

🧩 Sản phẩm bạn có thể quan tâm

w