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

Một số phương pháp chứng minh tính đúng của thuật toán và ứng dụng

12 208 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 287,79 KB

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 KHOA HỌC TỰ NHIÊN --- Bế Thị Hương MỘT SỐ PHƯƠNG PHÁP CHỨNG MINH TÍNH ĐÚNG CỦA THUẬT TOÁN VÀ ỨNG DỤNG Chuyên ngành: Cơ sở Toán học cho Tin học M

Trang 1

1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

-

Bế Thị Hương

MỘT SỐ PHƯƠNG PHÁP CHỨNG MINH TÍNH ĐÚNG CỦA THUẬT TOÁN VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ KHOA HỌC

Hà Nội – Năm 2015

kho tai lieu -123doc-doc-luan an - luan an tien si -luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 1 of 128.

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

-

Bế Thị Hương

MỘT SỐ PHƯƠNG PHÁP CHỨNG MINH TÍNH ĐÚNG CỦA THUẬT TOÁN VÀ ỨNG DỤNG

Chuyên ngành: Cơ sở Toán học cho Tin học

Mã số: 60460110

LUẬN VĂN THẠC SĨ KHOA HỌC

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN THỊ HỒNG MINH

Hà Nội – Năm 2015

Trang 3

LỜI CẢM ƠN

Lời đầu tiên em xin chân thành cảm ơn các thầy giáo, cô giáo giảng dạy lớp cao học Cơ sở Toán học cho Tin học, Khoa Toán – Cơ – Tin học, Trường

Đại học Khoa học Tự nhiên – ĐHQGHN khóa 2012 – 2014 Các thầy cô đã rất

nhiệt tình, tâm huyết trong giảng dạy cho em học tập, nghiên cứu bổ sung được

thêm nhiều kiến thức mới quan trọng, hữu ích trong nghiên cứu và trong công

tác giảng dạy ở trường THPT chuyên Đồng thời kịp nhận ra và sửa đổi, bổ sung

những kiến thức mình còn hiểu chưa thật chính xác giúp tăng cường năng lực và

phát triển tư duy trong nghiên cứu khoa học

Đặc biệt, em gửi lời cảm ơn chân thành và sâu sắc tới cô giáo TS.Nguyễn Thị Hồng Minh (Khoa Sau Đại học – ĐHQGHN) Cô đã giảng dạy cùng với

hướng dẫn luận văn cho em một cách rất khoa học, tận tâm, chu đáo và chi tiết

để em có thể hoàn thành luận văn một cách tốt nhất

Cảm ơn gia đình đã cho em một chỗ dựa vững chắc để hoàn thành khóa học cũng như hoàn thành luận văn này

Mặc dù đã có rất nhiều cố gắng trong việc nghiên cứu khoa học để hoàn thành luận văn tuy nhiên do hạn chế cá nhân về mặt thời gian nên em khó có thể

tránh được những thiếu sót Kính mong thầy cô và các bạn đóng góp ý kiến quý

báu để hoàn chỉnh luận văn này hơn nữa

kho tai lieu -123doc-doc-luan an - luan an tien si -luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 3 of 128.

Trang 4

MỞ ĐẦU

Thế kỷ XXI là thế kỷ của tri thức hiện đại, một nền tri thức không thể không kể đến công cụ hỗ trợ đắc lực của máy tính điện tử trong mọi lĩnh vực

cuộc sống Mặc dù công nghệ chế tạo ngày càng phát triển và phát triển với tốc

độ nhanh nhưng để sử dụng máy tính điện tử một cách hiệu quả cao thì thuật

toán (Algorithm) là thành phần luôn luôn quan trọng và không thể thiếu được kể

từ khi máy tính điện tử ra đời

Theo lịch sử toán học nguồn gốc của từ thuật toán “Algorithm” là bắt nguồn từ “Algorism” tên của một nhà bác học nổi tiếng người Arập là Abu Jafar

Mohammed ibn Musâ al Khowârizmi (Phiên âm của từ al Khowârizmi chính là

Algorism) Ông là người đã viết hai quyển sách nổi tiếng là “Sơ lược về các

phép tính” và “Về hệ đếm ấn độ” vào khoảng năm 850 Đây là những quyển

sách giáo khoa nổi tiếng về toán học

Lịch sử đã ghi nhận người được coi là nhà lập trình đầu tiên trên thế giới

là nữ bá tước Ada Lovelace (10/12/1815 - 27/11/1852), tên khai sinh là Augusta

Ada Byron Các nhà khoa học về sau cho rằng thuật toán (viết năm 1842) của

Ada Lovelace là những thuật toán máy tính đầu tiên do con người lập ra, vì nó

lần đầu tiên thể hiện rõ từng bước phát triển logic, đặc trưng hoạt động xác định

dành riêng cho máy tính

Với lịch sử lâu đời của thuật toán đã được nghiên cứu và phát triển cho tới tận ngày nay và sẽ vẫn còn tiếp tục được nghiên cứu và phát triển hơn nữa Khi

lập trình câu hỏi luôn luôn được đặt ra là thuật toán được thiết kế hoặc thuật toán

được sử dụng có đúng hay không? Điều này đảm bảo cho một chương trình máy

tính thực hiện có cho kết quả đúng hay không? (Chưa kể đến các kỹ năng của

người lập trình) Vì vậy việc xây dựng một thuật toán tốt để giải bài toán đã cho

Trang 5

2

là bước quan trọng có thể nói là quan trọng nhất trong việc giải một bài toán trên

máy tính điện tử

Để đánh giá một thuật toán là tốt có rất nhiều tiêu chí trong đó không thể

bỏ qua tính đúng của thuật toán Và đây cũng là nội dung chính của luận văn này

theo đề tài nghiên cứu: “Một số phương pháp chứng minh tính đúng của thuật

toán và ứng dụng” Luận văn nhằm tìm hiểu, nghiên cứu, tổng hợp phương pháp

chứng minh tính đúng của thuật toán Cấu trúc luận văn gồm 3 chương, nội dung

chính như sau:

Chương 1 Tổng quan về phân tích thuật toán

Chương này nhằm tổng hợp lại một số kiến thức chung về bài toán, thuật toán, cấu trúc dữ liệu, chương trình và kiến thức về phân tích thuật toán Gồm

các định nghĩa, khái niệm và các ví dụ để minh họa

Trong chương này còn tổng hợp lại một số phương pháp thiết kế thuật toán thường sử dụng trong thực tế Như kỹ thuật đệ quy, phương pháp chia để

trị, phương pháp quay lui, phương pháp nhánh cận, phương pháp quy hoạch

động và phương pháp tham lam

Chương 2 Một số phương pháp chứng minh tính đúng của thuật toán

Nội dung chương này gồm các chiến lược chứng minh tính đúng của thuật toán; các phương pháp cụ thể để chứng minh tính đúng của thuật toán như

phương pháp quy nạp và phương pháp bất biến vòng lặp Đây cũng chính là

điểm mới của luận văn

Trong đó, phương pháp quy nạp chứng minh cho các thuật toán đệ quy, phương pháp bất biến vòng lặp chứng minh cho các thuật toán không đệ quy

Đối với mỗi phương pháp trình bày về đặc điểm, phương pháp chung đồng thời

nêu một số ví dụ về thuật toán và chứng minh tính đúng của các thuật toán đó

Đối với những thuật toán phức tạp có chứa cả đệ quy và lặp thì cần kết hợp khéo

kho tai lieu -123doc-doc-luan an - luan an tien si -luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 5 of 128.

Trang 6

léo cả hai phương pháp chứng minh tính đúng của thuật toán là quy nạp và bất

biến vòng lặp

Chương 3 Ứng dụng chứng minh tính đúng của một số thuật toán

Nghiên cứu một số bài toán có sử dụng các thuật toán kinh điển, thường

sử dụng và vận dụng lý thuyết của chương 2 để chứng minh tính đúng của các

thuật toán đó Như bài toán dãy con đơn điệu tăng dài nhất; Chia kẹo; Cây bao

trùm nhỏ nhất

Trang 7

4

CHƯƠNG 1 TỔNG QUAN VỀ PHÂN TÍCH THUẬT TOÁN

Để khẳng định được một thuật toán là tốt là một điều không dễ dàng gì

Thật vậy, để đánh giá một thuật toán tốt ta cần rất nhiều kỹ thuật từ thiết kế,

phân tích đến đánh giá một thuật toán Ở chương này đề cập tổng quát đến các

vấn đề trong phân tích thuật toán và một số thuật toán cơ bản thường dùng trong

khoa học tính toán hiện đại

1.1 Một số khái niệm cơ bản

1.1.1 Bài toán

Khoa học máy tính ngày nay giải quyết rất nhiều vấn đề trong thực tế trong nhiều lĩnh vự khác nhau, những vấn đề đó ta thường gọi là bài toán Tuy

nhiên bài toán ở đây không phải là một trường hợp cụ thể mà là bài toán mang

tính tổng quát bao gồm hầu như tất cả các khả năng có thể của thế giới thực

trong vấn đề cần giải quyết Như vậy, nói một cách dễ hiểu thì bài toán là việc

nào đó ta muốn máy tính thực hiện Có thể là một yêu cầu đơn giản như in ra

một dòng chữ trên màn hình, giải phương trình bậc hai, giải hệ phương trình bậc

nhất hai ẩn hoặc kiểm tra một số là chẵn hay lẻ, Nhưng cũng có thể là giải

quyết những vấn đề rất phức tạp như tìm đường đi trong mê cung, tìm đường đi

ngắn nhất, tìm cây bao trùm,

Điểm quan trọng đầu tiên khi giải một bài toán trên máy tính đó là cần xác định rõ những gì đã biết input (dữ liệu vào) và kết quả cần thu được output (dữ

liệu ra) và phân tích mối quan hệ giữa hai yếu tố đó Sau đây là một số ví dụ về

bài toán:

 Bài toán 1.1: Kiểm tra tính nguyên tố của một số nguyên dương cho trước

 Input: Số nguyên dương N

 Output: Xác định N là số nguyên tố hoặc N không là số nguyên tố

kho tai lieu -123doc-doc-luan an - luan an tien si -luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 7 of 128.

Trang 8

 Bài toán 1.2: Giải phương trình bậc hai ax2+bx+c=0 (a≠0)

 Input: Các số thực a, b, c (a≠0)

 Output: Các nghiệm x thỏa mãn phương trình đã cho hoặc thông báo không có nghiệm

 Bài toán 1.3: Tìm ước số chung lớn nhất của hai số nguyên dương a, b

 Input: Hai số nguyên dương a, b

 Output: Ước số chung lớn nhất của a và b

 Bài toán 1.4: Xác định vị trí của phần tử có giá trị bằng số nguyên x trong

một dãy số nguyên a1, a2, , an

 Input: Số n; dãy số nguyên a1, a2, , an và số nguyên x

 Output: Chỉ số i nếu x=ai và là 0 nếu x không có mặt trong dãy

 Bài toán 1.5 Cho đồ thị vô hướng G=(V, E) Tìm đường đi ngắn nhất từ đỉnh

u tới đỉnh v của đồ thị G

 Input: Đồ thị vô hướng G=(V, E) và hai đỉnh u,v

 Output: Xác định đường đi có độ dài ngắn nhất d=(u=v1,v2, ,vn=v) (với đỉnh vi thuộc V, cung (vi, vi+1) thuộc E)

 Bài toán 1.6 Sắp xếp một dãy các số cho trước thành dãy không giảm

 Input: Số n và dãy gồm n số < a1, a2, …, an>

 Output: Một hoán vị < a'1, a'2, …, a'n > của chuỗi đầu vào thỏa mãn:

a'1  a'2 … a'n

1.1.2 Thuật toán (Algorithm)

Để giải một bài toán trên máy tính sau khi đã xác định rõ ràng về bài toán việc quan trọng nhất là phải đưa ra một thuật toán tốt, thuật toán này có thể là

một thiết kế mới hoặc lựa chọn một thuật toán đã có Thuật toán là để biểu diễn

về cách giải một bài toán trên máy tính

Trang 9

6

Một bài toán có thể có nhiều cách giải nhưng một thuật toán chỉ giải một bài toán mà thôi Đến hiện nay thì đã có nhiều định nghĩa về thuật toán và sau

đây là một lựa chọn định nghĩa thuật toán:

Định nghĩa: Thuật toán (Algorithm) để giải một bài toán là một dãy hữu

hạn các thao tác được sắp xếp theo một trình tự xác định, sao cho sau khi thực

hiện dãy thao tác ấy, từ dữ liệu vào có thể là một giá trị hoặc một tập giá trị

(input) của bài toán ta nhận được một giá trị hoặc một tập giá trị còn gọi là dữ

liệu ra (output) của bài toán đó

Để thuật toán được rõ ràng, chính xác, dễ hiểu, dễ đọc hơn người ta đưa ra các phương pháp biểu diễn thuật toán Gồm có ba phương pháp biểu diễn thuật

toán như sau:

 Ngôn ngữ tự nhiên (Natural languages): Dùng ngôn ngữ tự nhiên để liệt kê

từng bước của thuật toán Phương pháp này không có các quy tắc chung do

đó người viết và người đọc dễ dàng thực hiện được mà không cần phải nắm được những quy tắc Nhưng viết thuật toán theo cách này thường dài dòng, không thể hiện được rõ cấu trúc thuật toán và đôi lúc có thể gây khó hiểu hoặc hiểu nhầm đối với người đọc

 Sơ đồ khối (Flowcharts): là công cụ trực quan để thể hiện thuật toán Sơ đồ

khối biểu diễn được sự phân cấp của thuật toán cũng như trình tự thực hiện thuật toán Đặc biệt phù hợp với những thuật toán phức tạp, khó theo dõi quá trình xử lý Tuy nhiên, phương pháp biểu diễn này có nhược điểm là cồng kềnh, cần không gian biểu diễn lớn hơn các phương pháp khác Trong sơ đồ khối thường sử dụng một số khối và cung để biểu diễn thuật toán như sau:

 Hình oval: Thể hiện thao tác nhập, xuất dữ liệu;

 Hình thoi: Thể hiện thao tác so sánh, chỉ có hai nhánh logic là đúng hoặc sai;

 Hình chữ nhật: Thể hiện các phép gán, các thao tác tính toán;

kho tai lieu -123doc-doc-luan an - luan an tien si -luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 9 of 128.

Trang 10

KẾT LUẬN

Bản luận văn đã trình bày một số vấn đề cơ bản trong thiết kế và phân tích thuật toán Tập trung đi sâu tìm hiểu và hệ thống hóa các vấn đề liên quan tới hai

phương pháp chứng minh tính đúng của thuật toán Đó là, phương pháp chứng

minh tính đúng của thuật toán bằng quy nạp áp dụng cho các thuật toán đệ quy

và phương pháp chứng minh tính đúng của thuật toán bằng bất biến vòng lặp áp

dụng cho các thuật toán có chứa vòng lặp Áp dụng hai phương pháp trên để

chứng minh tính đúng cho các thuật toán giải một số bài toán cụ thể, bao gồm:

- Chứng minh tính đúng cho thuật toán quy hoạch động giải bài toán tìm dãy con đơn điệu tăng dài nhất của dãy số Và một bài toán có tính ứng dụng của bài toán này đó là bài toán bắc cầu

- Chứng minh tính đúng cho thuật toán quy hoạch động giải bài toán cái kẹo với tư tưởng sử dụng thuật toán quy hoạch động tìm dãy con có tổng bằng S

- Chứng minh tính đúng cho thuật toán tham lam giải bài toán cây bao trùm nhỏ nhất với hai thuật toán Kruskal và Prim

Trong khuôn khổ của luận văn, với thời gian hạn chế chúng tôi mới chỉ đạt được việc tìm hiểu và vận dụng hai phương pháp chứng minh tính đúng vào

một số bài toán kinh điển, có tính phổ biến Đề tài có thể phát triển theo hướng

nghiên cứu các phương pháp khác trong chứng minh tính đúng của thuật toán và

áp dụng các phương pháp đối với các thuật toán cho nhiều bài toán khác, đặc biệt là

các thuật toán có tính phức tạp như kết hợp nhiều kĩ thuật thiết kế thuật toán…

Mặc dù bản thân đã cố gắng hết sức trong việc tìm tòi, nghiên cứu dưới sự giúp đỡ nhiệt tình của cô giáo hướng dẫn nhưng do thời gian hạn chế trong công

tác bản luận văn của tôi khó tránh khỏi thiếu sót Kính mong được sự đóng góp ý

kiến của các thầy cô và các bạn

Trang 11

TÀI LIỆU THAM KHẢO Tiếng Việt

1 Hồ Sĩ Đàm (Chủ biên) – Đỗ Đức Đông – Lê Minh Hoàng – Nguyễn

Thanh Tùng (2012), Tài liệu chuyên Tin học, quyển(1) tr.5-185,

quyển(2) tr.111-165, NXB Giáo dục Việt Nam

2 Nguyễn Hữu Điển (2006), Một số vấn đề về thuật toán, NXB Giáo Dục

3 Đỗ Đức Giáo (1998), Cơ sở Toán trong lập trình, NXB Khoa học và Kỹ

thuật

4 Lê Minh Hoàng (2004), Cấu trúc dữ liệu và giải thuật, NXB Đại học Sư

phạm Hà Nội

5 Nguyễn Xuân Huy (2009), Sáng tạo trong thuật toán và lập trình, tập(1),

tập(2), NXB Duy Tân

6 Nguyễn Thị Hồng Minh (2014), Lecture 01 – Preliminaries, Lecture 02 -

Methods using Recursice Technique, Lecture 03 – Compromise principle based Methods

7 Nguyễn Hữu Ngự (2001), Lý thuyết đồ thị, NXB Đại học Quốc gia Hà

Nội

8 Hoàng Chí Thành (Chủ biên) (2004), Các thuật toán thông dụng, chương

1, 2, 4, 15, 16, 22, 23, 24, 25

9 Đặng Huy Ruận (2004), Lý thuyết đồ thị và ứng dụng, NXB Khoa học và

Kỹ thuật - Hà Nội

kho tai lieu -123doc-doc-luan an - luan an tien si -luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 11 of 128.

Trang 12

Tiếng Anh

10 Edward A Bender and S Gill Williamson (2005), Mathematics for

Algorithm and System Analysis

11 Ian Parberry and William Gasarch (2002), Problems on Algorithms, 2nd

Edition

12 Ian Parberry (2001), Lecture Notes on Algorithm Analysis and

Computational Complexity, 4th Edition

13 Michael Huth and Mark Ryan (2004), Logic in Computer Science:

Modelling and Reasoning about Systems, 2nd edition, Cambridge University Press

14 Michael Soltys (2012), An Introduction to the Analysis of Algorithms, 2nd

Edition, World Scientific Publishing Co Pte Ltd, pp 1-100

Ngày đăng: 07/04/2018, 23:21

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