LUẬN VĂN:MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ ppt

84 618 0
LUẬN VĂN:MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ ppt

Đ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

Trang 3 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ CHINH MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ LUẬN VĂN THẠC SĨ Hà Nội - 2011 Trang 4 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN THỊ CHINH MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60 48 05 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. HỒ CẨM HÀ Hà Nội - 2011 Trang 5 LỜI CAM ĐOAN Tôi xin cam đoan, kết quả luận văn hoàn toàn là kết quả của tự bản thân tôi tìm hiểu, nghiên cứu dưới sự hướng dẫn của TS. Hồ Cẩm Hà. Các tài liệu tham khảo được trích dẫn và chú thích đầy đủ. Học viên Nguyễn Thị Chinh Trang 6 LỜI CẢM ƠN Trước hết, tôi muốn gửi lời cảm đến các Thầy, Cô trong khoa Công nghệ thông tin- Trường Đại học Công nghệ - Đại học Quốc gia Hà nội đã truyền đạt các kiến thức quý báu cho tôi trong suốt thời gian học tập tại trường. Đặc biệt, tôi xin gửi lời cảm ơn sâu sắc tới cô giáo hướng dẫn TS Hồ Cẩm Hà, người đã tận tình chỉ bảo và hướng dẫn về mặt chuyên môn cho tôi trong suốt quá trình thực hiện luận văn này. Cũng qua đây, tôi xin gửi lời cảm ơn đến Ban Giám hiệu trường THPT Chuyên Đại học Sư phạm Hà Nội, nơi tôi đang công tác đã tạo mọi điều kiện thuận lợi cho tôi trong thời gian học tập cũng như trong suốt quá trình thực hiện luận văn tốt nghiệp. Cuối cùng, tôi xin cảm ơn gia đình, bạn bè, đồng nghiệp đã luôn ủng hộ, động viên tôi rất nhiều để tôi yên tâm nghiên cứu và hoàn thành luận văn. Trong suốt quá trình làm luận văn, bản thân tôi đã cố gắng tập trung tìm hiểu, nghiên cứu và tham khảo thêm nhiều tài liệu liên quan. Tuy nhiên, do thời gian hạn chế và bản thân còn chưa có nhiều kinh nghiệm trong nghiên cứu khoa học, chắc chắn bản luận văn vẫn còn nhiều thiếu sót. Tôi rất mong được nhận sự chỉ bảo của các Thầy Cô giáo và các góp ý của bạn bè, đồng nghiệp để luận văn được hoàn thiện hơn. Hà Nội, ngày 12 tháng 06 năm 2011 Nguyễn Thị Chinh Trang 7 MỤC LỤC LỜI CẢM ƠN 6 LỜI NÓI ĐẦU 10 Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUẬT TOÁN 12 1. Khái niệm bài toán Tin học 12 2. Khái niệm thuật toán 12 3. Các tính chất của thuật toán 13 4. Độ phức tạp và xác định độ phức tạp của thuật toán 14 5. Chi phí thực hiện thuật toán 18 6. Ba bài toán trên mô hình đồ thị được đưa vào giảng dạy trong trường Trung học Phổ thông Chuyên 18 6.1. Một số khái niệm cơ bản về đồ thị 18 6.1.1. Khái niệm đồ thị (Graph) 18 6.1.2. Các khái niệm cơ bản 19 6.2. Bài toán tìm kiếm trên đồ thị 21 6.2.1. Phát biểu bài toán 21 6.2.2. Giới thiệu thuật toán tìm kiếm DFS và BFS 22 6.2.3. Độ phức tạp tính toán của thuật toán DFS và BFS 24 6.3. Bài toán tìm đường đi ngắn nhất trên đồ thị có trọng số 24 6.3.1. Phát biểu bài toán 24 6.3.2. Giới thiệu thuật toán Ford - Bellman 25 6.2.3. Giới thiệu thuật toán thuật toán Dijkstra 26 6.3.4. Độ phức tạp 28 6.4. Các thuật toán tìm kiếm trên cây khung 28 6.4.1. Bài toán cây khung 28 6.4.2. Giới thiệu thuật toán Prim 29 6.4.3. Giới thiệu thuật toán Kruskal 30 6.4.5. Độ phức tạp 31 Trang 8 6.5. Bài toán tìm chu trình Hamilton qua tất cả các đỉnh của đồ thị 32 6.5.1. Phát biểu bài toán 32 6.5.2. Giới thiệu thuật toán tìm chu trình Hamilton: 33 Chương 2 MÔ PHỎNG THUẬT TOÁN 34 1. Khái niệm và chức năng của mô phỏng 34 2. Lịch sử của mô phỏng thuật toán 35 3. Hiệu quả của mô phỏng thuật toán trong giảng dạy 37 4. Một số yêu cầu đối với mô phỏng thuật toán 41 4.1. Mô phỏng đúng theo thuật toán 41 4.2. Cho phép thực hiện theo từng bước 41 4.3. Mô phỏng thuật toán phải có tính động 41 4.4. Có thể thực thi với mọi bộ dữ liệu đầu vào 43 4.5. Có sự phân cấp người học 43 5. Quy trình mô phỏng thuật toán 43 5.1. Nghiên cứu và phân tích giải thuật 43 5.2. Mô phỏng dữ liệu vào và kết quả đầu ra 44 5.3. Chia thuật toán thành nhiều bước nhỏ rồi mô phỏng theo từng bước 45 5.4. Tổng hợp mô phỏng theo các bước 47 5.5. đồ cấu trúc chung của hệ thống mô phỏng 47 6. Đề xuất lựa chọn công cụ để phát triển chương trình mô phỏng thuật toán 48 6.1. Một số hệ thống mô phỏng thuật toán chung 49 6.2. Sử dụng công cụ mô phỏng thuật toán riêng biệt 52 6.3. Xây dựng hệ thống từ đầu 53 Chương 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ 54 1. Mục đích 54 2. Những yêu cầu thực tế 54 3. Đề xuất cho hệ thống mới 55 4. Thiết kế hệ thống mô phỏng một số thuật toán trên đồ thị 56 Trang 9 4.1. Lựa chọn công cụ lập trình 57 4.2. Chức năng mô phỏng của các thuật toán được cài đặt 59 4.2.1 Mô phỏng thuật toán tìm kiếm 59 4.2.2. Mô phỏng thuật toán Dijkstra 61 4.2.3. Mô phỏng thuật toán Ford – Bellman 63 4.2.4. Mô phỏng thuật toán Prim 63 4.2.5. Mô phỏng thuật toán Kruskal 65 4.2.6. Thuật toán tìm chu trình Hamilton 66 5. Giới thiệu chương trình 66 5.1. Tổng quan về hệ thống 66 5.1.1. Các đối tượng xây dựng cấu trúc đồ thị 67 5.1.2. Công cụ vẽ hình ảnh để mô phỏng 70 5.1.3.Chức năng chi tiết của các công cụ hỗ trợ cho quá trình mô phỏng 70 5.2. Giới thiệu các công cụ hỗ trợ mô phỏng do người dùng cài đặt 71 Chương 4 KẾT LUẬN 80 1. Những kết quả đạt được 80 2. Hướng phát triển 81 DANH MỤC TÀI LIỆU THAM KHẢO 82 PHỤ LỤC 84 Trang 10 LỜI NÓI ĐẦU Cách đây gần ba thập kỉ (khoảng những năm 80 của thế kỉ XX), ở nhiều nước trên thế giới mô phỏng thuật toán đã được sử dụng trong việc giảng dạy các môn Khoa học máy tính như một công cụ hữu hiệu để mô tả thuật toán một cách trực quan, khoa học. Không những vậy nó còn cho người học biết chi tiết từng bước hoạt động của thuật toán cùng với cấu trúc dữ liệu đi kèm thông qua việc mô tả bằng đồ họa. Những năm gần đây, ở Việt Nam môn Tin học đã được đưa vào chương trình của học sinh trung học phổ thông như là một môn học chính thức. Tuy nhiên trên thực tế, một số trường chuyên trên cả nước đã tuyển sinh học sinh chuyên Tin từ cuối những năm 80 của thế kỉ XX. Những học sinh này cần nắm chắc kiến thức cơ bản về Tin học như: các cấu trúc dữ liệu trừu tượng: stack, queue, cây, cây nhị phân, cây nhị phân tìm kiếm, các chiến lược thiết kế thuật toán: tham lam, quay lui, quy hoạch động… Trong đó, lý thuyết về đồ thịthuật toán trên đồ thịmột lĩnh vực rộng và phức tạp. Việc hiểu và cài đặt tốt các thuật toán đó đòi hỏi thời gian và công sức rất lớn. Hiện nay, việc truyền đạt các thuật toán trên đồ thị cho học sinh chuyên Tin gặp rất nhiều khó khăn. Có nhiều rất nhiều lý do: Các thuật toán đó khó hình dung, việc tổ chức dữ liệu cho nó cũng phức tạp, thời gian giảng dạy trên lớp có hạn, tài liệu tham khảo có thể tự đọc, tự học vẫn còn ít…. Trong khuôn khổ đề tài này, chúng tôi xây dựng một chương trình nhằm mô phỏng hoạt động của ba thuật toán giải ba bài toán cơ bản trên đồ thị theo phân phối chương trình của Bộ Giáo dục với hai mục đích: để học sinh có thể dễ dàng nắm bắt tư tưởng cũng như từng bước hoạt động cụ thể của các thuật toán, để giáo viên có thể làm cho bài giảng về các thuật toán này trở nên dễ hiểu, dễ tiếp thu hơn. Nội dung luận văn được chia thành 3 chương: Trang 11 Chương I. Những kiến thức cơ bản về thuật toán. Ở chương này, chúng tôi trích nêu khái niệm về bài toánthuật toán. Các tính chất của thuật toán, xác định độ phức tạp của thuật toán…Cuối cùng, chúng tôi giới thiệu ba thuật toán quan trọng trên đồ thị mà học sinh THPT sẽ được học. Chương II. Mô phỏng thuật toán. Chương này chúng tôi trình bày khái niệm mô phỏng, các chức năng của mô phỏng và các vấn đề liên quan như: lịch sử mô phỏng, nghiên cứu về hiệu quả của nó trong giảng dạy và một số yêu cầu đối với việc mô phỏng thuật toán nói chung. Chương III. Phân tích thiết kế hệ thống mô phỏng một số thuật toán trên đồ thị. Ở chương 3, chúng tôi trình bày về quá trình phân tích, thiết kế và xây dựng hệ thống mô phỏng trên ba thuật toán: thuật toán tìm kiếm (tìm kiếm theo chiều sâu và tìm kiếm theo chiều rộng), thuật toán tìm đường đi ngắn nhất (thuật toán Dijsktra) và thuật toán tìm cây khung cực tiểu trên đồ thị vô hướng có trọng số (thuật toán Prim)… Trang 12 Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUẬT TOÁN 1. Khái niệm bài toán Tin học Trong phạm vi tin học, người ta quan niệm bài toánmột công việc nào đó mà con người muốn máy tính thực hiện. [xem 1] Khi dùng máy tính để giải bài toán, ta cần quan tâm tới 2 vấn đề: Dữ liệu cần được đưa vào máy tính (Input) là gì và cần lấy ra (Output) thông tin gì? Nói một cách khác, cho một bài toán là việc mô tả rõ Input và Output của bài toán. Vấn đề còn lại là: Làm thế nào để từ Input ta có được Output? 2. Khái niệm thuật toán Khác với Toán học (các yêu cầu của bài toán thường là chứng minh sự tồn tại đáp án chứ không yêu cầu tìm một cách chi tiết để tìm ra đáp án đó), giải một bài toán Tin học là việc đi tìm một lời giải cụ thể, tường minh để đưa ra Output của bài toán dựa trên Input đã cho. Việc chỉ ra một cách tìm Output của bài toán được gọi là một thuật toán. Có nhiều cách phát biểu khái niệm về thuật toán. Dưới đây là cách phát biểu được chọn để đưa vào sách giáo khoa Tin học phổ thông: Khái niệm về thuật toán: thuật toánmột dãy hữu hạn các thao tác được sắp xếp theo một trình tự nhất định để sau khi thực hiện dãy các thao tác đó, từ input ta có output cần tìm [xem 1]. Trong lĩnh vực máy tính, cụm từ “thuật toán” đôi khi người ta dùng bằng một từ khác: “giải thuật”. Ví dụ về một thuật toán: Nhập vào một số nguyên dương N, kiểm tra số đó có là số nguyên tố hay không? Lời giải: Input: Số nguyên dương N. Output: Có/không tương ứng với N có là nguyên tố hay không? [...]... là hai đỉnh của V Một số hình ảnh của đồ thị: Đồ thị vô hướng Đồ thị có hướng 6.1.2 Các khái niệm cơ bản Có thể phân loại đồ thị theo đặc tính và số lượng của tập các cạnh E: Cho đồ thị G = (V, E) Ta có một số khái niệm sau [xem 3- tập 1]: Đơn đồ thị: G được gọi là đơn đồ thị nếu giữa hai đỉnh u, v của V có nhiều nhất là 1 cạnh trong E nối từ u tới v Đa đồ thị: G được gọi là đa đồ thị nếu giữa hai đỉnh... chọn một thuật toán chạy nhanh và sử dụng tài nguyên có sẵn một cách hiệu quả Như vậy dựa vào đâu để có thể kết luận thuật toán này “nhanh” hơn thuật toán kia? Trang 14 Có một cách để biết được thuật toán nào nhanh hơn bằng cách viết các chương trình bằng cùng một ngôn ngữ lập trình cho các thuật toán rồi so sánh trên các bộ Input giống nhau trên cùng một hệ thống để kết luận thuật toán nào nhanh, thuật. .. hiện thuật toán - Dễ cài đặt: thuật toán đó liệu có chuyển được thành chương trình bằng một ngôn ngữ lập trình nào đó hay không Trước khi xây dựng thuật toán cho một bài toán nào đó, trước tiên phải xác định được Input và Output là gì, thử trên một số ví dụ cụ thể để định hướng cho việc xây dựng thuật toán [xem 1] 4 Độ phức tạp và xác định độ phức tạp của thuật toán Một thuật toán chỉ có thể giải một. .. với đỉnh kết thúc gọi là chu trình tương tự ta có khái niệm chu trình đơn 6.2 Bài toán tìm kiếm trên đồ thị 6.2.1 Phát biểu bài toán Cho đồ thị G = (V, E) và s và t là hai đỉnh của đồ thị Yêu cầu: Hãy chỉ ra một đường đi từ s đến t (nếu có) Ví dụ: Xét một đồ thị vô hướng và một đồ thị có hướng dưới đây: Trên cả hai đồ thị, (1, 2, 3, 4) là đường đi đơn độ dài 3 từ đỉnh 1 tới đỉnh 4 Bởi (1, 2) (2, 3)... đến được từ một đỉnh xuất phát nào đó? Vấn đề này đưa về một bài toán liệt kê mà yêu cầu của nó là không được bỏ sót hay lặp lại bất kỳ đỉnh nào Vì vậy, cần phải xây dựng những thuật toán cho phép duyệt một cách hệ thống các đỉnh, những thuật toán như vậy gọi là những thuật toán tìm kiếm trên đồ thị Trong lý thuyết đồ thị, người ta quan Trang 21 tâm đến hai thuật toán cơ bản nhất: thuật toán tìm kiếm... cây khung nhỏ nhất của đơn đồ thị vô hướng có trọng số 6.4.2 Giới thiệu thuật toán Prim Một trong hai thuật toán quan trọng để giải bài toán tìm cây khung nhỏ nhất là thuật toán Prim Thuật toán đó có thể phát biểu hình thức như sau: Đơn đồ thị vô hướng G = (V, E,w) Xét cây T trong G và một đỉnh v, gọi khoảng cách từ v tới T là trọng số nhỏ nhất trong số các cạnh nối v với một đỉnh nào đó trong T: d[v]... trọng số: Đồ thị có trọng sốmột bộ ba G = (V, E, w) trong đó, G = (V, E) là đồ thị, w là hàm được định nghĩa: w:E  R e  w(e) Bài toán đó phát biểu dưới dạng tổng quát như sau: Cho đồ thị có trọng số G = (V, E,w) là đồ thị không có chu trình âm Trang 24 Yêu cầu: Hãy tìm một đường đi ngắn nhất (tổng trọng số qua các đỉnh trên đường đi) từ đỉnh xuất phát s  V đến đỉnh đích t  V Nếu như đồ thị có... thực hiện thuật toán Đây là một công việc khá khó khăn để nắm bắt nếu một học sinh chỉ sử dụng hình vẽ và các xâu kí tự Mô phỏng thuật toán có thể chỉ ra tất cả các thông tin và sự thay đổi đồng thời ở từng bước bằng đồ hoạ Ta có thể quan sát bằng hình vẽ dưới đây: Trang 34 Hình 1 Mô phỏng một bước hoạt động của thuật toán Bên cạnh việc giúp người dùng hiểu rõ thuật toán, mô phỏng thuật toán cũng có... Với P(n) là một đa thức bậc k thì O(P(n)) = O(nk) Vì thế, một thuật toánđộ phức tạp cấp đa thức, người ta thường ký hiệu là O(nk) d) Một thuật toán có cấp là các hàm như 2n, n!, nn được gọi là một thuật toánđộ phức tạp hàm mũ Những thuật toán như vậy trên thực tế thường có tốc độ rất chậm Các thuật toán có cấp là các hàm đa thức hoặc nhỏ hơn hàm đa thức thì thường nhanh hơn các thuật toán hàm... O(g(n).f(n)) 4.4 Một số tính chất Theo định nghĩa về độ phức tạp tính toán ta có một số tính chất: a) Nếu một thuật toánđộ phức tạp là hằng số, tức là thời gian thực hiện không phụ thuộc vào kích thước dữ liệu vào thì ta ký hiệu độ phức tạp tính toán của thuật toán đó là O(1) b) Với một thuật toánđộ phức tạp cấp logarit của f(n), người ta ký hiệu là O(logf(n)) mà không cần ghi cơ số của logarit . hệ thống mô phỏng một số thuật toán trên đồ thị 56 Trang 9 4.1. Lựa chọn công cụ lập trình 57 4.2. Chức năng mô phỏng của các thuật toán được cài đặt 59 4.2.1 Mô phỏng thuật toán tìm kiếm. 59 4.2.2. Mô phỏng thuật toán Dijkstra 61 4.2.3. Mô phỏng thuật toán Ford – Bellman 63 4.2.4. Mô phỏng thuật toán Prim 63 4.2.5. Mô phỏng thuật toán Kruskal 65 4.2.6. Thuật toán tìm chu trình. quả của nó trong giảng dạy và một số yêu cầu đối với việc mô phỏng thuật toán nói chung. Chương III. Phân tích thiết kế hệ thống mô phỏng một số thuật toán trên đồ thị. Ở chương 3, chúng tôi

Ngày đăng: 28/06/2014, 03:20

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan