1. Trang chủ
  2. » Kinh Doanh - Tiếp Thị

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

12 388 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 12
Dung lượng 1,05 MB

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

Nội dung

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

Trang 1

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

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Hà Nội – 2016

Trang 2

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

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 4

LỜI CẢM ƠN

Trước tiên, tôi xin chân thành cảm ơn TS Đặng Văn Hưng, người thầy đã tận tình hướng dẫn, giúp đỡ tôi trong suốt quá trình học tập và thời gian hoàn thành luận văn tốt nghiệp

Tôi cũng xin chân thành cảm ơn 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, những người đã hết mình, tận tụy truyền đạt kiến thức, đã quan tâm, động viên trong suốt quá trình tôi học tập và nghiên cứu tại Trường

Tôi xin gửi lời cảm ơn đến đơn vị Trường THPT Bình gia, Sở giáo dục và đào tạo tỉnh Lạng Sơn đã tạo điều kiện cho tôi có được cơ hội học tập, nâng cao trình độ chuyên môn

Cuối cùng, lời cảm ơn chân thành của tôi xin gửi đến các bạn học cùng lớp K21 Công nghệ phần mềm đã thường xuyên quan tâm, giúp đỡ, chia sẻ kinh nghiệm, tài liệu hữu ích trong suốt quá trình học tập

Một lần nữa, tôi xin cảm ơn và gửi lời chúc sức khỏe, thành công đến tất cả mọi người

Hà Nội, tháng 11 năm 2016

Tác giả luận văn

Nguyễn Minh Hải

Trang 5

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn “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” là do tôi thực hiện, được hoàn thành trên cơ sở tìm kiếm, thu thập, nghiên cứu, tổng hợp phần lý thuyết và các phương pháp kĩ thuật được trình bày trong các tài liệu được công bố trong nước và trên thế giới Các tài liệu tham khảo đều được nêu ở phần cuối của luận văn Luận văn này không sao chép nguyên bản

từ bất kì một nguồn tài liệu nào khác

Nếu có gì sai sót, tôi xin chịu mọi trách nhiệm

Hà Nội, tháng 11 năm 2016

Tác giả luận văn

Nguyễn Minh Hải

Trang 6

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC CÁC HÌNH VẼ 5

CHƯƠNG 1 MỞ ĐẦU 6

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

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

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

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

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

2.1 L OGIC VỊ TỪ 8

2.2 N HỮNG HIỂU BIẾT VỀ L OGIC H OARE 11

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

2.2.2 Nội dung của logic Hoare 12

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

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

3.1 P HƯƠNG PHÁP CHỨNG MINH 15

3.2 C ÁC VÍ DỤ ÁP DỤNG 17

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 24

4.1 B IẾN 24

4.1.1 Khái niệm 24

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

4.2 B ẤT BIẾN 25

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

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

4.2.3 Ví dụ cơ bản 28

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

4.2.4.1 Phân loại theo luật 30

4.2.4.2 Phân loại theo kỹ thuật khái quát hóa 31

4.3 T ÌM BIẾN VÀ BẤT BIẾN VÒNG LẶP TRONG MỘT VÀI THUẬT TOÁN CƠ BẢN 32

Trang 7

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ử 32

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

4.3.1.2 Số lớn nhất với vòng lặp hai biến 33

4.3.2 Tìm kiếm 35

4.3.2.1 Tìm kiếm trong một mảng chưa được sắp xếp 35

4.3.2.2 Tìm kiếm nhị phân 36

4.3.3 Sắp xếp 39

4.4 Ứ NG DỤNG KINH NGHIỆM ĐỂ TÌM BIẾN , BẤT BIẾN TRONG MỘT SỐ BÀI TOÁN 42

CHƯƠNG 5 KẾT LUẬN 61

5.1 K ẾT LUẬN 61

5.2 H ẠN CHẾ VÀ KIẾN NGHỊ 61

TÀI LIỆU THAM KHẢO 63

Trang 8

DANH MỤC CÁC HÌNH VẼ

Hình 2 1 Ảnh Tony Hoare và Robert Floyd ………12

Hình 4 1 Các vòng lặp như là một sự tính toán bằng cách xấp xỉ 27

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

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

Hình 4 4 Số lớn nhất với vòng lặp hai biến 34

Hình 4.5 Tìm kiếm trong một mảng chưa được sắp xếp 36

Hình 4 6 Tìm kiếm nhị phân 39

Hình 4 7 Sắp xếp kiểu nổi bọt 41

Trang 9

CHƯƠNG 1 MỞ ĐẦU

Lý do chọn đề tài

Trong suốt quá trình tôi được học tập, nghiên cứu tại trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội Bản thân đã được tiếp xúc với nhiều kiến thức mới, quan trọng, được ứng dụng mạnh mẽ trong các lĩnh vực rộng lớn của CNTT

Là một giáo viên giảng dạy bộ môn tin học tại cấp THPT, tôi thường xuyên tiếp xúc và hướng dẫn học sinh những kiến thức cơ bản về ngôn ngữ lập trình trên cơ

sở là ngôn ngữ Pascal Do đó, tôi đặc biệt có hứng thú với bộ môn kiểm thử Việc kiểm tra một chương trình xem nó có đúng, chạy tốt, phù hợp với yêu cầu của người lập trình hay không luôn là một vấn đề quan trọng, mang tính thời đại đối với mọi lập trình viên cũng như các nhà quản lý phần mềm Cả 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

Mục đích nghiên cứu của luận văn là tìm hiểu và làm rõ những kiến thức liên quan đến logic Hoare Qua phần nghiên cứu, tôi muốn cung cấp một tài liệu

cụ thể nhằm hướng dẫn việc chứng minh tính đúng của lệnh chu trình bằng logic Hoare Bên cạnh đó, việc đưa ra những gợi mở về bản chất của vòng lặp thông qua bất biến vòng lặp được trú trọng Các chương trong luận văn sẽ cung cấp cái nhìn tổng quan nhất về biến và bất biến bằng những lý thuyết và bài toán áp dụng trên các thuật toán cơ bản 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 logic Hoare để chứng minh tính đúng đắn của chu trình là mục đích nghiên cứu chủ yếu của luận văn

Trang 10

Việc hiểu, làm rõ các vấn đề liên quan đến tính đúng của chu trình, bản chất của vòng lặp, tính kết thúc… sẽ là những cơ sở quan trọng cho công việc dạy học THPT của bản thân tôi và các bạn đồng nghiệp khác

Đối tượng và phạm vi nghiên cứu

Đối tượng và phạm vi nghiên cứu của luận văn xoay quanh logic Hoare

Nó bao gồm những kiến thức cơ bản của luận lý đó là bộ ba Hoare, các tiên để của luận lý Luận văn cũng nêu rõ những đặc điểm nổi bật và áp dụng vào việc chứng minh tính đúng đắn của chương trình mà cơ bản tập trung vào việc chứng minh tính đúng đắn của lệnh chu trình Thông qua các bài toán cơ bản, tôi thực tế

áp dụng lý thuyết của logic Hoare vào việc chứng minh này

Nghiên cứu tập chung vào tìm biến và bất biến Áp dụng trên các thuật toán

cơ bản trong chương trình tin học

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

Chương 2 Tổng quan về logic Hoare Chương này cung cấp cho tôi những

lý thuyết cơ bản về logic vị từ và logic Hoare

Chương 3 Chứng minh tính đúng đắn của lệnh chu trình bằng logic Hoare Trong chương cung cấp những cách thức cơ bản để chứng minh tính đúng đắn Bên cạnh đó, tôi áp dụng thực tế các lý thuyết vào việc chứng minh trong một vài bài toán cơ bản

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

Trang 11

   1

yfib z  x fib z   z n x y fib z   1 y fib z   z 1 n

Điều đó được minh chứng như sau:

1

 

y x fib z  fib zfib z Tính chất dãy fibonacci

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

Bài 8 Cho chương trình ( tựa mã ) sau: với r, s, x là các biến nguyên, y là một số

nguyên dương

r:=0; s:= -1; x:= 0;

While r ≤ y do

Begin

s:= s + 2;

r:= r + s;

x := x + 1;

End

Tìm biết ( t ) và bất biến ( I ) để chứng minh tính đúng đắn của lệnh chu trình

Giải: Dự đoán biến và bất biến

Biến

Nhận thấy biến chỉ số r tăng tuần tự và là bình phương của x Vòng lặp sẽ kết thúc khi r vượt quá n Đối với dạng điều kiện lặp có một biến chỉ số (r), theo kinh nghiệm tôi đưa ra một biến chức năng t = n – r + 1 Ở đầu ra của vòng lặp biến chức năng sẽ có giá trị t ≤ 0

Bất biến

Phân tích qua đoạn chương trình tôi nhận thấy nó dùng để trả ra phần nguyên căn bậc hai của một số nguyên dương y ([√y] = x -1) Các biến trong thân

vòng lặp có giá trị s = 2x - 1, rx2 Tôi dự đoán một bất biến vòng lặp từ những

I  r x  s x  x  y

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

Biến

Trang 12

Xem lại chứng minh ở bài 2, 4, 5, 6

Bất biến

Tôi chứng minh bI c I   Áp dụng vào thân vòng lặp tôi có

2

s:= s + 2;

r s x  s x xy

r:= r + s;

rx  s x xy

x := x + 1;

2

rx  s x  x  y

rx  s x xy

rx  s x xy Điều đó được minh chứng bằng những logic sau:

2

2

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

Như vậy, 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, hay phương pháp đảm bảo tối ưu Vì cơ bản những bài toán khác nhau đều 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 các giải pháp được đúc rút ra dựa trên những kinh nghiệm được học hỏi và khám phá trong quá trình tìm tòi Tất cả các kinh nghiệm đó đã được tôi trình bày trong khi làm các bài toán tìm

biến (t) , Bất biến vòng lặp (I), và các bài toán chứng minh tính đúng đắn của

chương trình

Luật ghép Luật ghép

Luật phép gán

I

Ngày đăng: 01/03/2017, 07:02

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