Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 101 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
101
Dung lượng
1,84 MB
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ÁTTRIỂNCÁCKỸTHUẬTTÌMBẤTBIẾN(INVARIANTS)VÀBIẾN(VARIANTS)CHOVIỆCSỬDỤNGHOARELOGICĐỂCHỨNGMINHTÍNHĐÚNGĐẮNCỦACHUTRÌ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 MINH HẢI PHÁTTRIỂNCÁCKỸTHUẬTTÌMBẤTBIẾN(INVARIANTS)VÀBIẾN(VARIANTS)CHOVIỆCSỬDỤNGHOARELOGICĐỂCHỨNGMINHTÍNHĐÚNGĐẮNCỦACHUTRÌNH Ngành: Cơng nghệ Thơng tin Chun 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 LỜI CẢM ƠN Trước tiên, 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 suốt q trình học tập thời gian hoàn thành luận văn tốt nghiệp Tôi xin chân thành cảm ơn 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, người hết mình, tận tụy truyền đạt kiến thức, quan tâm, động viên suốt q trình tơi học tập nghiên cứu 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 đào tạo tỉnh Lạng Sơn tạo điều kiện cho tơi có hội học tập, nâng cao trình độ chun mơn Cuối cùng, lời cảm ơn chân thành xin gửi đến bạn học 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 suốt q trình học tập Một lần nữa, xin cảm ơn gửi lời chúc sức khỏe, thành công đến tất người Hà Nội, tháng 11 năm 2016 Tác giả luận văn Nguyễn Minh Hải LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Phát triểnkỹthuậttìmbấtbiến(invariants)biến(variants)choviệcsửdụngHoareLogicđểchứngminhtínhđắnchu trình” tơi thực hiện, hồn thành sở tìm kiếm, thu thập, nghiên cứu, tổng hợp phần lý thuyết phương pháp kĩ thuậttrình bày tài liệu công bố nước giới Các tài liệu tham khảo nêu phần cuối luận văn Luận văn khơng chép ngun từ nguồn tài liệu khác Nếu có sai sót, tơi xin chịu 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 MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC CÁC HÌNH VẼ 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Ề LOGICHOARE 2.1 LOGIC VỊ TỪ 2.2 NHỮNG HIỂU BIẾT VỀ LOGICHOARE 11 2.2.1 Lịch sửlogic Hoare: 11 2.2.2 Nội dunglogicHoare 12 2.2.3 Các tiên đềlogic Hoare: 12 CHƯƠNG CHỨNGMINHTÍNHĐÚNGĐẮNCỦA LỆNH CHUTRÌNH BẰNG LOGICHOARE 15 3.1 PHƯƠNG PHÁP CHỨNGMINH 15 3.2 CÁC VÍ DỤ ÁP DỤNG 17 CHƯƠNG NGHIÊN CỨU VỀ BIẾNVÀBẤTBIẾN TRONG PHƯƠNG PHÁP CHỨNGMINHTÍNHĐÚNGĐẮNCỦA LỆNH CHUTRÌNH 24 4.1 BIẾN 24 4.1.1 Khái niệm 24 4.1.2 Phương pháp tìmbiến 24 4.2 BẤTBIẾN 25 4.2.1 Bấtbiế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ụ 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ÌMBIẾNVÀBẤTBIẾN VỊNG LẶP TRONG MỘT VÀI THUẬT TỐN CƠ BẢN 32 4.3.1 Tìm phần tử có giá trị lớn dãy phần tử 32 4.3.1.1 Số lớn với vòng lặp biến 32 4.3.1.2 Số lớn 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 mảng chưa 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ẤTBIẾN TRONG MỘT SỐ BÀI TOÁN 42 CHƯƠNG 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 DANH MỤC CÁC HÌNH VẼ Hình Ảnh Tony Hoare Robert Floyd ………………………………………12 Hình Các vòng lặp tính tốn cách xấp xỉ 27 Hình Ước số chung lớn hai số nguyên dương a b 29 Hình Số lớn với vòng lặp biến 33 Hình 4 Số lớn với vòng lặp hai biến 34 Hình 4.5 Tìm kiếm mảng chưa xếp 36 Hình Tìm kiếm nhị phân 39 Hình Sắp xếp kiểu bọt 41 CHƯƠNG MỞ ĐẦU Lý chọn đề tài Trong suốt trình tơi 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 Bản thân 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 yê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đắnViệcchứ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 Hoarelogic (logic Hoare) LogicHoareHoare 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ụnglogicHoaređể 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ệctìm hiểu phương pháp chứngminhtínhlogicHoare 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ấtbiến (Invariants), hai yếu tố quan trọng việcchứngminhtính lệnh chutrình Bản chất vòng lặp ln có ẩn chứa bấtbiế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ấtbiến Mục đích nghiên cứu Mục đích nghiên cứu luận văn tìm hiểu làm rõ kiến thức liên quan đến logicHoare Qua phần nghiên cứu, muốn cung cấp tài liệu cụ thể nhằm hướng dẫnviệcchứngminhtính lệnh chutrìnhlogicHoare Bên cạnh đó, việc đưa gợi mở chất vòng lặp thơng qua bấtbiến vòng lặp trú trọng Các chương luận văn cung cấp nhìn tổng quan biếnbấtbiến lý thuyết toán áp dụngthuật tốn Pháttriểnkỹthuậttìmbấtbiến(invariants)biến(variants)choviệcsửdụnglogicHoaređểchứngminhtínhđắnchutrình mục đích nghiên cứu chủ yếu luận văn Việc hiểu, làm rõ vấn đề liên quan đến tínhchu trình, chất vòng lặp, tính kết thúc… sở quan trọng cho công việc dạy học THPT thân bạn đồng nghiệp khác Đối tượng phạm vi nghiên cứu Đối tượng phạm vi nghiên cứu luận văn xoay quanh logicHoare Nó bao gồm kiến thức luận lý ba Hoare, tiên để luận lý Luận văn nêu rõ đặc điểm bật áp dụng vào việcchứngminhtínhđắn chương trình mà tập trung vào việcchứngminhtínhđắn lệnh chutrình Thơng qua tốn bản, tơi thực tế áp dụng lý thuyết logicHoare vào việcchứngminh Nghiên cứu tập chung vào tìmbiếnbấtbiến Áp dụngthuật toán chương trình tin học 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 logicHoare Chương cung cấp cho lý thuyết logic vị từ logicHoare Chương Chứngminhtínhđắn lệnh chutrìnhlogicHoare Trong chương cung cấp cách thức đểchứngminhtínhđắn Bên cạnh đó, tơi áp dụng thực tế lý thuyết vào việcchứngminh vài toán Chương Nghiên cứu biếnbấtbiến phương pháp chứngminhtínhđắn lệnh chutrình Ứng dụng vào tìmbiếnbấtbiế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 j 0 1 i n m logic sau: 2 * j (i mod 0) i11 / * j j 0 Điều minhchứng i 1n 1i Vì i n Vì i i1 / 2 m j 0 2* j Theo giả thiết 3 i11 / m j 0 i1 2 * j 2 * j j 0 3 Vì i1/ 2 i/2 / với i mod Kết luận: Bấtbiếnbiế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 = 1) then m := m + i ∗ i ∗ i; i := i + 1; end Hãy tìmbiến (t) bấtbiến (I) đểchứngminhtínhđắn chương trình Giải: Tơi dự đoán biếnbất biến: Biến: Giống toán 2, 4, trên, áp dụng dạng mẫu trường hợp có biến số vòng lặp i, tơi có biến t = n – i +1 Bất biến: Bài tốn tốn dùngđểtính tổng số lẻ mũ ba không vượt n Tơi đưa hậu điều kiện tổng quát sau n1 / 2 m j 0 * j 1 Với [n/2] nghĩa n chia cho lấy phần nguyên Nhận thấy biến số vòng lặp i n tạo nên bấtbiến chặn Áp dụngkỹthuật giảm dư thay n biến số i Khi tơi bấtbiến sau: I 1 i n m i2 / 2 * j 13 j 0 Chứngminhbiếnbấtbiến vừa tìm đúng: Biến Với biến t = n – i +1, tơi thực chứngminh giống với tốn Kết luận biến t tìm thỏa mãn yêu cầu Bấtbiến i n i n m i2 / * j 1 j 0 if i mod 1 then m : m i i i; i : i 1; 1 i n m i1 / j 0 * j 3 Tôi phải chứngminh hai trường hợp sau (các phân tích tối giản, xem chi tiết tốn 5) + Trường hợp 1: Tôi cần phải cho thấy i n 1 i n m i2 * j 1 / j 0 (i mod 1) i12 / 1 i n m i logic sau: * j Điều minhchứng j 0 Vì i n Vì i i 1n 1i i2 / 2 m j 0 mi 2 * j Theo giả thiết 13 i2 / * j 1 i j 0 Vì i2 / 2 i1 / 2 i12 /2 j 0 với i mod 1 + Trường hợp 2: Tôi cần phải cho thấy * j 1 i n 1 i n m i2 / j 0 * j 1 (i mod 1) i12 / 1 i n m j 0 * j 1 Điều minhchứnglogic sau: i 1n Vì i n Vì i 1i i2 / i12 / m j 0 * j 1 2 * j j 0 13 Vì i12 / 2 i2 / 2 với i mod Kết luận: Bấtbiếnbiến tơi dự đốn Bài Cho chương trình (tựa mã) sau: với x,y,z biến nguyên, n nguyên dương x=0;y=1;z=1;1≤n While z < n begin y := x + y; x := y – x; z := z + 1; end {y = fib n} Tìmbiến ( t ) bấtbiến ( I ) đểchứngminhtínhđắn lệnh chutrình Giải: Dự đốn biếnbấtbiếnBiến Từ tốn làm, tơi dễ dàng đưa dự đoán biến chức lệnh chutrình t = n – z Khi z = n vòng lặp chấm dứt Bấtbiến Tơi thấy đoạn chương trìnhdùngđểtính số fibonacci số nguyên n (1 ≤ n) Hậu điều kiện tổng quát y = fib ( n ) Bằng cách thay n biến số điều kiện lặp Với z chạy miền giá trị từ đến n, thấy biến x y nhận giá trị fib sau: y = fib (z) x = fib (z-1) Từ phân tích kỹthuật áp dụng phương pháp giảm dư hằng, tơi đưa dự đốn biết biến vòng lặp I y fib z x fib z 1 z n Chứngminhbiếnbấtbiến vừa tìmBiếnChứngminh ban đầu t > Tôi phải chứngminh b t Khi đó, tơi cần z n n z Điều hiển nhiên Chứngminh b t N c t N Áp dụng luật phép gán phép ghép, tơi có: z n n z N n z 1 N y := x + y; x := y – x; n z 1 N z := z + n z N Tôi cần z n n z N n z 1 N Điều minhchứnglogic sau: n zN n z 1 N 1 n z 1 N Bấtbiến Giả thiết Trừ hai vế N 1 N Tôi chứngminh b I c I Áp dụng luật phép gán ghép tơi có: y fib z x fib z 1 z n z n x y fib z 1 x y x fib z 1 z n y := x + y; y fib z 1 y x fib z 1 z n x := y – x; y fib z 1 x fib z 1 z n z := z + y fib z x fib z 1 z n Khi đó, tơi cần phải y fib z x fib z 1 z n x fib z 1 y fib z z n y Điều minhchứng sau: z 1n y fib z Vì z n Theo giả thiết x fib z 1 Theo giả thiết y x fib z 1 fib z fib z Tính chất dãy fibonacci 1 Kết luận: Bấtbiếnbiến dự đốn Bài Cho chương trình ( tựa mã ) sau: với r, s, x biến nguyên, y số nguyên dương r:=0; s:= -1; x:= 0; While r ≤ y Begin s:= s + 2; r:= r + s; x := x + 1; End Tìm biết ( t ) bấtbiến ( I ) đểchứngminhtínhđắn lệnh chutrình Giải: Dự đốn biếnbấtbiếnBiến Nhận thấy biến số r tăng bình phương x Vòng lặp kết thúc r vượt n Đối với dạng điều kiện lặp có biến số (r), theo kinh nghiệm đưa biến chức t = n – r + Ở đầu vòng lặp biến chức có giá trị t ≤ Bấtbiến Phân tích qua đoạn chương trình tơi nhận thấy dùngđể trả phần nguyên bậc hai số nguyên dương y ([√y] = x -1) Cácbiến thân vòng lặp có giá trị s = 2x - 1, r x Tơi dự đốn bấtbiến vòng lặp từ liệu vừa phân tích I r x2 s 2x x 1 y Chứngminhbiếnbấtbiến vừa tìmBiến Xem lại chứngminh 2, 4, 5, Bấtbiến Tôi chứngminh b I c I Áp dụng vào thân vòng lặp tơi có r x2 s 2x x 12 y r y I b r s x 12 s 2x x y Luật ghép s:= s + 2; Luật ghép r s x 12 s 2x x y r:= r + s; r x 12 s 2x x y Luật phép gán x := x + 1; r x s 2x 1 x 1 y 2 I Có r s x 1 s 2x x y 2 r x s 2x x y Khi cần phải 2 r x s 2x x 1 y r y 2 r x s 2x x y Điều minhchứnglogic sau: r x2 s 2x 1 r y x y Theo giả thiết Theo giả thiết Theo giả thiết Vì r x Kết luận : Bấtbiếnbiến dự đốn Như vậy, tơi nhận thấy vấn đềtìmbiếnbấtbiếnđểchứngminhtínhđắn lệnh chutrình thực khơng thể tìm phương pháp chung nhất, hay phương pháp đảm bảo tối ưu Vì tốn khác có hậu điều kiện ràng buộc khác nhau, điều mang lại đa dạng bất quy tắc Để giải toán chủ yếu dựa vào giải pháp đúc rút dựa kinh nghiệm học hỏi khám phá q trìnhtìm tòi Tất kinh nghiệm tơi trình bày làm tốn tìmbiến (t) , Bấtbiến vòng lặp (I), tốn chứngminhtínhđắn chương trình CHƯƠNG KẾT LUẬN 5.1 Kết luận Các kết nghiên cứu đề tài chứngminhtínhđắnchutrìnhlogicHoare khơng phải thực mang tính thời Việc áp dụng vào thực tế việcchứngminhtính chương trình góp phần quan trọng để đảm bảo chương trình thỏa mãn yêu cầu lập trình Trong phần luận văn cố gắng dẫn dắt kiến thức theo logic hợp lý trực quan Những lý thuyết tốn ví dụ đưa xen kẽ liên tục (từ chương đến chương 4) với mục đích khơng cung cấp lý thuyết mà đem lại cho thân người đọc vài kinh nghiệm rút việctìmbiếnbấtbiếnđểchứngminhtínhđắn lệnh chutrình Những kiến thức phần luận văn tổng hợp cách vắn tắt sau: Đầu tiên kiến thức tổng quan logic vị từ, logic Hoare; Cáckỹthuậtchứngminhtính lệnh chutrình phương pháp logicHoare kèm vào ví dụ minh họa chi tiết choviệcchứng minh; Làm rõ biếnbất biến, xâu vào tìm hiểu bấtbiến vòng lặp, ví dụ minh họa thể vài thuật toán nhất; Cuối kinh nghiệm rút từ việc nghiên cứu trình thực tìm biến, bấtbiến ví dụ tốn vòng lặp cụ thể Trên thực tế có nhiều cơng cụ tự động việcchứngminhtínhđắn chương trình, nhiên hiểu rõ phương pháp chứng minh, hiểu rõ chất vòng lặp ln làm cho người lập trình mắc sai sót q trình viết code Khi đó, chương trình viết đảm bảo chạy ổn định Nó góp phần giảm thiểu rủi ro kinh phí sửa chữa, bảo trì Qua trình nghiên cứu luận văn, thân lĩnh hội lượng kiến thức lớn từ làm rõ ưu tư, thắc mắc trình giảng dạy mơn tin học cấp độ THPT Đó kiến thức liên quan đến tínhđắn chương trình, đến chất vòng lặp, đến tính kết thúc…Thực hữu ích việc giảng dạy học sinh lớp 10 (trong liên quan đến thuật toán), học sinh lớp 11 (giảng dạy ngơn ngữ lập trình, Pascal) 5.2 Hạn chế kiến nghị Sau nghiên cứu, cố gắng tổng hợp, phân tích tài liệu liên quan đến luận văn, tham khảo ý kiến hướng dẫn TS Đặng Văn Hưng nhằm mục đích tìm phương pháp giải cho tốn tìmbiếnbấtbiếnchoviệcsửdụnglogicHoaređểchứngminhtínhđắn Tuy nhiên, chẳng có phương pháp hay lời giải chung tốt Cơ phần nhiều dựa kinh nghiệm có q trìnhtìm kiếm Chắc chắn với trình độ hạn hẹp thân thời gian nghiên cứu làm luận văn, công việc dạy học cộng thêm việc gia đình nhỏ làm cho thân thực chưa hoàn thành luận văn mức độ cao mong muốn Luận văn viết mặt hạn chế, sai sót Vậy, tơi mong nhận quan tâm, đồng cảm đóng góp ý kiến từ phía thầy cơ, bạn bè để luận văn hoàn thiện TÀI LIỆU THAM KHẢO Tiếng Việt [1] Đỗ Đức Giáo (2011), Toán rời rạc ứng dụng tin học, Nhà xuất giáo dục Việt Nam [2] Lê Văn Viễn, Phương pháp kiểm chứngtínhđắn chương trình Java đa luồng thơng qua sửdụnglogic Hoare, Báo cáo tốt nghiệp [3] Zoharn Manna, Người dịch TS Đặng Văn Hưng, Lơ Gích lập trình, Trung tâm tốn máy tính Tiếng Anh [4] Jonathan Aldrich, 17-654/17-765 Analysis of Software Artifacts [5] C.A.R Hoare, An Axiomatic Basis for Computer Programming, The Queen’s University of Belfast, *Northern Ireland [6] Dang Van Hung, Formal Methods An Introduction, College of Technology [7] CARLO A FURIA, ETH Zurich, BERTRAND MEYER, Loop invariants: analysis, classification, and examples, ITMO St Petersburg, and Eiffel Software, SERGEY VELDER [8] Ichiro Hasuo, Tutorial on Formal Verification using Hoare Logic, Dept Computer Science, University of Tokyo [9] Anders Møller, Program Verification with Hoare Logic, university of Aarhus ... 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ỹ. .. trọng Các chương luận văn cung cấp nhìn tổng quan biến bất biến lý thuyết toán áp dụng thuật toán Phát triển kỹ thuật tìm bất biến (invariants) biến (variants) cho việc sử dụng logic Hoare để chứng. .. cam đoan luận văn Phát triển kỹ thuật tìm bất biến (invariants) biến (variants) cho việc sử dụng Hoare Logic để chứng minh tính đắn chu trình tơi thực hiện, hồn thành sở tìm kiếm, thu thập, nghiên