1. Trang chủ
  2. » Thể loại khác

ỨNG DỤNG TRỰC QUAN TRONG DẠY LẬP TRÌNH CHO HỌC SINH PHỔ THƠNG

92 28 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 92
Dung lượng 7,18 MB

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

Nội dung

Để tìm hiểu kỹ hơn về một số thuật toán và ứng dụng kỹ thuật trực quan trong quá trình dạy các thuật toán đó, tôi đã chọn đề tài “Ứng dụng trực quan trong dạy lập trình cho học sinh phổ

Trang 1

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

TRẦN THỊ HOA LÀI

ỨNG DỤNG TRỰC QUAN TRONG DẠY LẬP TRÌNH CHO HỌC SINH PHỔ THÔNG

Chuyên ngành: Khoa học máy tính

Mã số: 8480101

LUẬN VĂN THẠC SĨ KỸ THUẬT

Người hướng dẫn khoa học: S TS V TRUN H N

Đà Nẵng - Năm 2018

Trang 2

Tôi xin cam đoan:

Nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của PGS.TS Võ Trung Hùng

Tài liệu tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên nhà xuất bản, năm xuất bản và chú thích các nội dung tham khảo đầy đủ

Học viên

Trần Thị Hoa Lài

Trang 3

Tên đề tài: ỨNG DỤNG TRỰC QUAN

TRONG DẠY LẬP TRÌNH CHO HỌC SINH PHỔ THÔNG

Học viên: TRẦN THỊ HOA LÀI Chuyên ngành: Khoa học máy tính

Mã số: 8480101 - Khóa: 34 Trường Đại học Bách khoa - ĐHĐN

Tóm tắt – Ở nhiều trường trung học phổ thông, việc dạy và học tin học gặp nhiều khó

khăn, đặc biệt là việc dạy bồi dưỡng học sinh giỏi, bởi học sinh xem đây môn không thi tốt nghiệp Vậy để thu hút việc học môn tin học cho học sinh thì giáo viên cần phải thường xuyên quan tâm và đổi mới phương pháp dạy học Một phương pháp dạy học trực quan sinh động sẽ tạo hứng thú, đam mê môn học đối với người học Trong luận văn này, tôi nghiên cứu về dạy học trực quan trong dạy lập trình và bồi dưỡng học sinh giỏi cho học sinh phổ thông Nội dung nghiên cứu gồm: (1) Nghiên cứu cơ sở lý thuyết về dạy học trực quan, về đồ học máy tính và 3 thuật toán trên đồ thị: Thuật toán tìm đường đi ngắn nhất, thuật toán tìm kiếm theo chiều sâu

và thuật toán tìm kiếm theo chiều rộng (2) Lý thuyết về mô phỏng thuật toán và mô phỏng trực quan 3 thuật toán trên đồ thị (3) Thực hiện cài đặt 3 thuật toán trên đồ thị và áp dụng thực

tế trong dạy học Từ đó so sánh kết quả tiếp thu của người học sau khi dạy học 3 thuật toán này bằng cách sử dụng phương pháp thông thường và sử dụng phương pháp mô phỏng trực quan đã mang lại kết quả khả quan

Từ khóa: Thuật toán, mô phỏng thuật toán, Dijkstra, BFS, DFS

IN TEACHING THE PROGRAM FOR CHILDREN Abstract - In many Upper Secondary Schools, Teaching and learning inforrmation

technology have many challenges and dificulties, especially the training of good students Because the students are not interested in this subject which is not compulsory in the national examminations at certain stages of the school education system In order to attract students to learn computing, the teachers need to constantly care and innovate teaching methods A vivid visual teaching method will create interesting, passionate subjects for learners In this essay, I study the visual teaching technique in teaching programming and fostering good pupils for

Trang 4

teaching, computer science and 3 algorithms on the graph: algorithm for finding the shortest path, search algorithm in depth and Search algorithm by width (2) Theory of algorithmic simulation and visualization of 3 algorithms on the graph (3) Implement 3 algorithms on graph and apply reality in teaching Then compare the results of the learner after teaching the three algorithms using conventional methods and using visual simulation has brought positive results

Key words: Algorithm, algorithmic simulation, Dijkstra, BFS, DFS

Trang 5

TRANG BÌA

LỜI CAM ĐOAN

MỤC LỤC

TRANG TÓM TẮT LUẬN VĂN

DANH MỤC CÁC TỪ VIẾT TẮT

DANH MỤC CÁC BẢNG

DANH MỤC CÁC HÌNH

MỞ ĐẦU 1

1 Tính cấp thiết của đề tài 1

2 Mục tiêu và nhiệm vụ nghiên cứu 2

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

4 Phương pháp nghiên cứu 3

5 Bố cục của luận văn 3

CHƯƠNG 1 NGHIÊN CỨU TỔNG QUAN 4

1.1 PHƯƠNG PHÁP DẠY HỌC TRỰC QUAN 4

1.1.1 Phương pháp trình bày trực quan 4

1.1.2 Phương pháp quan sát 4

1.2 ĐỒ HỌA MÁY TÍNH 6

1.2.1 Khái niệm 6

1.2.2 Các kỹ thuật đồ họa 7

1.2.3 Màn hình đồ họa và một số ứng dụng của đồ họa 8

1.3 ĐỒ THỊ VÀ MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ 10

1.3.1 Đồ thị 10

1.3.2 Một số thuật toán trên đồ thị 12

1.4 TỔNG KẾT CHƯƠNG 1 19

CHƯƠNG 2 MÔ PHỎNG THUẬT TOÁN 20

2.1 PHƯƠNG PHÁP MÔ PHỎNG THUẬT TOÁN 20

2.1.1 Khái niệm 20

2.1.2 Tác dụng của mô phỏng thuật toán trong dạy học 21

Trang 6

2.2 QUY TRÌNH MÔ PHỎNG THUẬT TOÁN 23

2.2.1 Thiết kế hệ thống mô phỏng thuật toán 23

2.2.2 Quy trình thiết kế mô phỏng thuật toán 24

2.3 ÁP DỤNG MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ 29

2.3.1.Thuật toán tìm đường đi ngắn nhất (Thuật toán Dijkstra) .29

2.3.2 Thuật toán tìm kiếm theo chiều rộng (BFS) 37

2.3.3 Thuật toán tìm kiếm theo chiều sâu (DFS) 42

2.4 TỔNG KẾT CHƯƠNG 46

CHƯƠNG 3 CÀI ĐẶT THỬ NGHIỆM 47

3.1 LỰA CHỌN NGÔN NGỮ LẬP TRÌNH 47

3.2 CÁC CHƯƠNG TRÌNH ỨNG DỤNG 48

3.2.1 Chương trình mô phỏng thuật toán tìm đường đi ngắn nhất 48

3.2.2 Chương trình mô phỏng thuật toán tìm kiếm theo chiều rộng 55

3.2.3 Chương trình mô phỏng thuật toán tìm kiếm theo chiều sâu 57

3.3 KẾT QUẢ CỦA ỨNG DỤNG THUẬT TOÁN MÔ PHỎNG 59

3.4 TỔNG KẾT CHƯƠNG 3 60

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61

TÀI LIỆU THAM KHẢO 63

PHỤ LỤC 65 QUYẾT ĐỊNH GIAO ĐỀ TÀI LUẬN VĂN THẠC SĨ (BẢN SAO)

BẢN SAO KẾT LUẬN CỦA HỘI ĐỒNG, BẢN SAO NHẬN XÉT CỦA CÁC PHẢN BIỆN

Trang 8

Bảng 2.1 Thuật toán Dijkstra 29

Bảng 2.2 Chi tiết các bước lặp của thuật toán Dijkstra 31

Bảng 2.3 Các chương trình con và chức năng của thuật toán Dijkstra 36

Bảng 2.4 Thuật toán tìm kiếm theo chiều rộng 37

Bảng 2.5 Các chương trình con và chức năng của TT BFS 41

Bảng 2.6 Các chương trình con và chức năng của TT DFS 45

Bảng 3.1 Số liệu thống kê 59

Trang 9

Hình 1.1 Ứng dụng đồ họa trong hỗ trợ thiết kế 8

Hình 1.2 Ứng dụng đồ họa để biểu diễn thông tin 9

Hình 1.3 Ứng dụng đồ họa trong giáo dục đào tạo 10

Hình 1.4 Tương tác giữa người dùng với phần mềm học tập 10

Hình 1.5 Đồ thị vô hướng 11

Hình 1.6 Đồ thị có hướng 11

Hình 1.7 Đồ thị có hướng có trọng số 13

Hình 2.1 Hình ảnh sau một bước thực hiện của thuật toán dijkstra 23

Hình 2.2 Sơ đồ các bước thiết kế hệ thống mô phỏng thuật toán 24

Hình 2.3 Mô hình bài toán mô phỏng 24

Hình 2.4 Dữ liệu đầu vào: một đồ thị vô hướng gồm 5 đỉnh, 6 cạnh 26

Hình 2.5 Mô phỏng theo từng bước của thuật toán Dijkstra 28

Hình 2.6 Minh họa dữ liệu đầu vào trực quan 32

Hình 2.7 Kết quả mô phỏng thuật toán Dijkstra 33

Hình 2.8 Đồ thị theo mẫu 35

Hình 2.9 Minh họa dữ liệu vào của thuật toán BFS 38

Hình 2.10 Kết quả mô phỏng thuật toán BFS 39

Hình 2.11 Cách tạo đồ thị cho bài toán tìm kiếm BFS 40

Hình 2.12 Minh họa dữ liệu vào cho thuật toán DFS 43

Hình 2.13 Kết quả minh họa thuật toán DFS 43

Hình 2.14 Cách tạo đồ thị cho bài toán DFS 44

Hình 3.1 Khung chương trình mô phỏng thuật toán Dijkstra 49

Hình 3.2 Chi tiết khung bảng chọn mô phỏng thuật toán Dijkstra 50

Hình 3.3 Khung công cụ của chương trình mô phỏng thuật toán Dijkstra 50

Hình 3.4 Khung chương trình mô phỏng thuật toán BFS 55

Hình 3.5 Dữ liệu vào để minh họa thuật toán BFS 56

Trang 10

Hình 3.7 Khung chương trình mô phỏng thuật toán DFS 57 Hình 3.8 Dữ liệu vào để minh họa thuật toán DFS 58 Hình 3.9 Kết quả minh họa thuật toán DFS 59

Trang 11

MỞ ĐẦU

1 Tính cấp thiết của đề tài

Trong thực tế, việc dạy môn lập trình cũng như dạy bồi dưỡng học sinh giỏi môn Tin học cho học sinh phổ thông gặp rất nhiều khó khăn Học sinh xem đây

là một môn phụ, không thi tốt nghiệp, không thuộc khối nào khi thi vào các trường đại học Môn lập trình lại là môn học tương đối khó, đòi hỏi phải có ý tưởng về thuật toán, tư duy về toán học,…, nên động lực để thúc đẩy học sinh học tập môn này bị hạn chế Nhiều em có năng lực và tư duy thuật toán, có tư duy lập trình nhưng chưa phát huy hết khả năng đó Do đó, một phương pháp dạy học sinh động để tạo niềm đam mê và gây hứng thú cho học sinh là rất quan trọng Phương pháp dạy học trực quan là một trong những phương pháp mà giáo viên khi dạy lập trình cần quan tâm hơn để phát huy tính tích cực, khả năng hình thành tư duy tốt và huy động sự tham gia của nhiều giác quan Qua đó, tạo điều kiện dễ hiểu, dễ nhớ và nhớ lâu, làm phát triển năng lực tư duy, năng lực chú ý, năng lực quan sát, khả năng tò mò của học sinh Đặc biệt việc ứng dụng trực quan các thuật toán trong dạy lập trình là rất cần thiết, tạo thêm động lực, hứng thú và niềm đam mê cho học sinh khi học môn lập trình

Phương pháp dạy học trực quan ngày càng trở nên hữu ích và trở thành một giáo cụ trực quan rất quan trọng, nó như một tài liệu hướng dẫn trong việc dạy các thuật toán bằng máy tính, giúp học sinh hiểu cấu trúc dữ liệu và thuật toán nhanh hơn

Để tìm hiểu kỹ hơn về một số thuật toán và ứng dụng kỹ thuật trực quan

trong quá trình dạy các thuật toán đó, tôi đã chọn đề tài “Ứng dụng trực quan trong dạy lập trình cho học sinh phổ thông làm đề tài luận văn tốt nghiệp Hy

vọng với nghiên cứu này sẽ là tài liệu tham khảo thiết thực trong ứng dụng dạy học lập trình và bồi dưỡng học sinh giỏi cho học sinh phổ thông

Trang 12

2 Mục tiêu và nhiệm vụ nghiên cứu

a Mục tiêu

Mục tiêu của đề tài là nâng cao chất lượng dạy học một số thuật toán trên

đồ thị bằng cách trực quan, đồng thời hỗ trợ cho học sinh trong quá trình tự học một số thuật toán trên đồ thị với các thay đổi trực quan bằng đồ họa Áp dụng kết quả nghiên cứu để tạo động lực và niềm đam mê cho học sinh khi học lập trình

- Mô phỏng thuật toán và quy trình mô phỏng thuật toán

- Các thuật toán: Tìm đường đi ngắn nhất trên đồ thị bằng thuật toán Dijkstra, thuật toán tìm kiếm theo chiều rộng và chiều sâu

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

a Đối tượng nghiên cứu

- Cơ sở lý thuyết về phương pháp dạy học trực quan, về đồ họa máy tính,

về cách mô phỏng thuật toán và quy tình mô phỏng thuật toán

- Thuật toán tìm đường đi ngắn nhất trên đồ thị, thuật toán tìm kiếm theo chiều sâu và tìm kiếm theo chiều rộng

b Phạm vi nghiên cứu

Trong khuôn khổ của một luận văn cao học, tôi chỉ áp dụng cho thuật toán tìm đường đi ngắn nhất trên đồ thị bằng thuật toán Dijkstra và thuật toán tìm

Trang 13

kiếm theo chiều sâu và chiều rộng

4 Phương pháp nghiên cứu

Sử dụng hai phương pháp chính là nghiên cứu lý thuyết và nghiên cứu thực nghiệm

5 Bố cục của luận văn

Luận văn được tổ chức thành 3 chương chính:

Chương 1: Nghiên cứu tổng quan

Giới thiệu về phương pháp dạy học trực quan, về ĐHMT, về đồ thị và trình bày 3 thuật toán thông thường trên đồ thị: Thuật toán Dijkstra tìm đường đi ngắn nhất, thuật toán tìm kiếm theo chiều rộng và thuật toán tìm kiếm theo chiều sâu Chương 2: Mô phỏng thuật toán

Giới thiệu về phương pháp mô phỏng thuật toán và áp dụng để mô phỏng cho 3 thuật toán ở chương 1

Chương 3: Cài đặt thử nghiệm

Trình bày về việc thực hiện cài đặt mô phỏng trực quan các thuật toán ở chương 1 và chương 2

Trang 14

CHƯƠN 1 NGHIÊN CỨU TỔNG QUAN

Trong chương này, tôi sẽ giới thiệu tổng quan về phương pháp dạy học trực quan, về đồ họa máy tính, về đồ thị và trình bày 3 thuật toán thông thường trên

đồ thị: Thuật toán Dijkstra tìm đường đi ngắn nhất, thuật toán tìm kiếm theo chiều rộng và thuật toán tìm kiếm theo chiều sâu

1.1 HƯƠN HÁ DẠY HỌC TRỰC QUAN

Dạy học trực quan là PPDH sử dụng những phương tiện trực quan, phương tiện kĩ thuật dạy học trước, trong và sau khi nắm tài liệu mới, khi ôn tập, khi củng cố, hệ thống hóa và kiểm tra tri thức, kĩ năng, kĩ xảo

PPDH trực quan được thể hiện dưới hình thức là trình bày trực quan và quan sát [11]

1 1 1 hương pháp trình bày trực quan

Trình bày trực quan thể hiện dưới hai hình thức minh hoạ và trình bày:

- Minh họa thường trưng bày những đồ dùng trực quan có tính chất minh họa như bản mẫu, biểu đồ, bức tranh, tranh chân dung các nhà khoa học, hình vẽ trên bảng…

- Trình bày thường gắn liền với việc trình bày những thí nghiệm, những mô phỏng, những thiết bị kỹ thuật, chiếu phim đèn chiếu, phim điện ảnh, băng video

Qua sự trình bày thí nghiệm, mô phỏng của giáo viên mà học sinh không chỉ lĩnh hội dễ dàng tri thức mà còn giúp học sinh học tập được những động tác mẫu mực của giáo viên Nhờ vậy, dễ dàng hình thành kỹ năng, kỹ xảo biểu diễn thí nghiệm

1 1 2 hương pháp quan sát

Phương pháp dựa trên theo dõi tiến trình và sự biến đổi diễn ra trong đối tượng quan sát, đây là hình thức cảm tính tích cực nhằm thu thập những sự kiện, hình thành những biểu tượng ban đầu về đối tượng của thế giới xung quanh, quan

Trang 15

sát gắn chặt với tư duy, được học sinh sử dụng khi giáo viên trình bày phương tiện trực quan, phương tiện dạy học hoặc khi chính học sinh tiến hành làm việc trong phòng thí nghiệm

* Những ưu điểm và hạn chế của phương pháp dạy học trực quan

- Phương pháp dạy học trực quan sẽ giúp học sinh huy động sự tham gia của nhiều giác quan kết hợp với lời nói sẽ tạo điều kiện dễ hiểu, dễ nhớ và nhớ lâu Nó góp phần phát triển năng lực chú ý, năng lực quan sát, óc tò mò khoa học của học sinh

- Tuy vậy, phương pháp này đòi hỏi nhiều thời gian, giáo viên cần tính toán

kĩ để phù hợp với thời lượng đã quy định

- Sử dụng đồ dùng trực quan không khéo sẽ làm phân tán chú ý của học sinh dẫn đến học sinh không lĩnh hội được những nội dung chính của bài học

- Khi quan sát các mô phỏng, tranh ảnh, phim video, nếu giáo viên không định hướng cho học sinh quan sát sẽ dễ dẫn đến tình trạng học sinh sa đà vào những chi tiết nhỏ lẻ, không quan trọng

* Một số yêu cầu cơ bản của việc sử dụng phương pháp dạy học trực quan

- Lựa chọn phương tiện trực quan, phương tiện kỹ thuật dạy học sao cho phù hợp với mục đích, yêu cầu của tiết học

- Cần giải thích rõ mục đích trình bày những phương tiện trực quan, phương tiện kỹ thuật dạy học theo một trình tự nhất định tuỳ theo nội dung bài giảng

- Các phương tiện đó cần chuẩn bị tỉ mĩ, chu đáo, tìm mọi biện pháp giải thích rõ ràng nhất những hiện tượng, diễn biến quá trình và kết quả của chúng, những biện pháp hướng dẫn học sinh quan sát để phát hiện nhanh những dấu hiệu bản chất của sự vật, hiện tượng

- Muốn học sinh quan sát có hiệu quả thì giáo viên cần xác định mục đích, yêu cầu, nhiệm vụ quan sát, hướng dẫn quan sát, cách ghi chép những điều quan sát được, trên cơ sở đó giúp học sinh rút ra những kết luận đúng đắn, có tính khái

Trang 16

+ Thứ hai, trên cơ sở quan sát các đối tượng và dựa vào tri thức đã học của học sinh, giáo viên dẫn dắt học sinh biện luận, nêu ra các mối liên hệ giữa những hiện tượng bằng các biện pháp quy nạp, từ đó rút ra kết luận

+ Thứ ba là biện pháp minh hoạ đối với những hiện tượng đơn giản, bằng lời nói giáo viên thông báo trước những hiện tượng, sự kiện, kết luận rồi sau đó trình bày phương tiện trực quan nhằm minh hoạ điều đã trình bày, hình thức này ngược với trường hợp thứ nhất

+ Thứ tư là hình thức có tính chất suy diễn, với nội dung phải nghiên cứu phức tạp thì giáo viên bằng lời nói mô tả diễn biến của hiện tượng, kích thích học sinh tái hiện những tri thức đã học có liên quan đến hiện tượng để giải thích hiện tượng đó, tiếp đó, giáo viên trình bày phương tiện trực quan để minh hoạ nhằm khẳng định những điều đã trình bày của mình, hình thức phối hợp này ngược với hình thức thứ hai

Hai hình thức phối hợp đầu đòi hỏi học sinh phải tiến hành hoạt động nhận thức tích cực hơn hai hình thức phối hợp sau, song phải căn cứ vào tính chất nội dung, trình độ tri thức và trình độ phát triển của học sinh mà lựa chọn hình thức nào cho thích hợp

1.2 ĐỒ HỌA MÁY TÍNH

1.2.1 Khái niệm

ĐHMT là một lĩnh vực của ngành khoa học máy tính, nó nghiên cứu về cơ

sở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo và hiển thị, điều khiển hình ảnh trên màn hình máy tính ĐHMT có liên quan đến một số lĩnh vực như đại số, hình học giải tích, quang học,…và kĩ thuật máy tính Ngoài ra,

Trang 17

ĐHMT còn liên quan đến chế tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập, các vỉ mạch đồ họa )

ĐHMT theo nghĩa rộng hơn, đó là phương pháp và công nghệ dùng trong việc chuyển đổi qua lại giữa dữ liệu và hình ảnh trên màn hình bằng máy tính ĐHMT hay kĩ thuật đồ họa máy tính còn được hiểu dưới dạng phương pháp và kĩ thuật tạo hình ảnh từ các mô hình toán học mô tả các đối tượng hay dữ liệu lấy được từ các đối tượng trong thực tế

Xét về bản chất: đó là 1 quá trình xây dựng và phát triển các công cụ trên

cả 2 lĩnh vực phần cứng và phần mềm hỗ trợ cho các lập trình viên thiết kế các chương trình có khả năng đồ họa cao Việc mô tả dữ liệu thông qua các hình ảnh

và màu sắc đa dạng giúp cho các chương trình đồ họa thu hút người sử dụng bởi tính thân thiện, dễ dùng ĐHMT giúp kích thích khả năng sáng tạo và nâng cao năng suất làm việc, do vậy, nó được ứng dụng trong nhiều lĩnh vực như: giáo dục, thương mại, … [9]

1.2.2 Các kỹ thuật đồ họa

+ Kỹ thuật đồ họa điểm

Các hình ảnh được hiển thị thông qua từng Pixel (từng điểm ảnh trên màn hình) Chúng ta có thể tạo ra, xóa hoặc thay đổi thuộc tính của từng Pixel của các đối tượng Các hình ảnh được hiển thị như một lưới điểm rời rạc (grid), từng điểm đều có vị trí xác định được hiển thị với một giá trị nguyên biểu thị màu sắc hoặc độ sáng của điểm đó Tập hợp tất cả các Pixel của grid tạo nên hình ảnh của đối tượng mà ta muốn biểu diễn [2]

+ Kỹ thuật đồ họa vector:

Được sử dụng các tọa độ trong mặt phẳng hai chiều để biểu diễn hình ảnh Ảnh được tạo thành bằng kỹ thuật này được gọi là ảnh vector, nó có thể kéo to nhỏ tùy ý mà không bị vỡ, các đường viền cũng không bị răng cưa Khi tạo và chỉnh sửa ảnh vector, có thể thực hiện các thao tác như: xoay, lật, kéo giãn, thay đổi độ trong suốt của hình Ngoài ra, có thể cắt, nối, cắt phần giao nhau và thực hiện nhiều thao tác khác

Trang 18

Ảnh Vector thường được sử dụng trong các trường hợp như: Thiết kế icon, thiết kế logo,…

1.2.3 Màn hình đồ họa và một số ứng dụng của đồ họa

+ Màn hình đồ họa: Mỗi máy tính đều có 1 CARD dùng để quản lý màn

hình, gọi là Video Adapter hay Graphics Adapter

Adapter có nhiều loại, như CGA, MCGA, EGA, VGA

Các adapter có thể làm việc ở 2 chế độ: văn bản (Text Mode) và đồ họa (Graphics Mode) [10]

+ Các ứng dụng của ĐHMT:

Ngày nay, đồ họa máy tính được sử dụng trong rất nhiều lĩnh vực khác nhau như công nghiệp, thương mại, quản lí, giáo dục, giải trí, …, số lượng các chương trình đồ họa ứng dụng thật khổng lồ và phát triển liên tục, sau đây là một

số ứng dụng tiêu biểu [19]:

Hỗ trợ thiết kế: Một trong những ứng dụng lớn nhất của đồ họa máy tính

là hỗ trợ thiết kế (CAD – Computer-Aided Design), ngày nay CAD đã được sử dụng phổ biến trong việc thiết kế các cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải và rất nhiều sản phẩm khác Khi đã thiết kế xong phần khung của đối tượng, các mô hình chiếu sáng, tô màu và tạo bóng bề mặt sẽ được kết hợp để tạo ra kết quả cuối cùng rất gần với thế giới thực

Hình 1.1 - Ứng dụn đồ họa trong hỗ trợ thiết kế

Trang 19

Ứng dụng để biểu diễn thông tin: đây là các ứng dụng sử dụng đồ họa

máy tính để phát sinh các biểu đồ, đồ thị,…, dùng minh họa mối quan hệ giữa nhiều đối tượng với nhau Các ứng dụng này thường được dùng để tóm lược các

dữ liệu về tài chính, thống kê, kinh tế, khoa học, toán học,…, giúp cho việc nghiên cứu, quản lí,…, một cách có hiệu quả

Hình 1.2 - Ứng dụn đồ họa để biểu diễn thông tin

Ứng dụng trong lĩnh vực giải trí nghệ thuật:

Trong lĩnh vực nghệ thuật, các chương trình máy tính như Paint Shop Pro, Adobe Photoshop, 3D Studio, … hỗ trợ rất đắc lực cho các họa sĩ, các nhà tạo mẫu trong việc thiết kế các hình ảnh sống động và rất thực Với các chương trình này, người họa sĩ được máy tính tạo cho cảm giác y như đang làm việc ngoài đời thực bằng cách cung cấp các công cụ như khung vẽ, giá vẽ, bảng pha màu, các hiệu ứng ba chiều, … làm cho họ cảm thấy rất thoải mái và tiện lợi

ĐHMT còn giúp tạo ra các chương trình trò chơi, giải trí; hỗ trợ cho các kĩ xảo điện ảnh, cho các nhà làm phim Có nhiều bộ phim rất nổi tiếng nhờ vào kĩ xảo điện ảnh như: Titanic, Thế giới nước (water world), …

Ứng dụng trong giáo dục và đào tạo:

Hiện nay, việc ứng dụng đồ họa để tạo các chương trình mô phỏng trực quan được sử dụng trong giáo dục ngày càng phổ biến, ví dụ: mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng hóa học, hoạt động của các gói tin trên mạng máy tính, các chương trình học tập cho học sinh tiểu học, …

Trang 20

Hình 1.3 - Ứng dụn đồ họa trong giáo dục đào tạo

Ứng dụng giao tiếp giữa máy tính và người dùng:

Giao diện đồ họa thể hiện sự tương tác, giao tiếp giữa máy tính và người dùng là rất cần thiết Các ứng dụng dựa trên hệ điều hành Windows là một minh họa rất trực quan của giao diện đồ họa Chức năng của các ứng dụng này được thiết kế cho người dùng làm việc thông qua các biểu tượng mô tả chức năng đó

Ví dụ, chức năng lưu tập tin được hiểu thông qua biểu tượng đĩa mềm, chức năng

in ấn được hiểu thông qua biểu tượng máy in, … để chọn các chức năng, người dùng sử dụng chuột trỏ đến và nhấn vào các biểu tượng tương ứng Hoặc các phần mềm học tập bằng hình ảnh của học sinh tiểu học cũng thể hiện rõ sự tương tác này thông qua việc kích chọn chuột vào hình ảnh

Hình 1.4 - Tươn tá iữa n ười dùng với phần mềm học tập

1.3 ĐỒ THỊ VÀ MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ

1.3.1 Đồ thị

Trang 21

- Khái niệm:

Đồ thị (Graph) là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó, được mô tả hình thức: G = (V, E)

Trong đó: V gọi là tập các đỉnh (Vertices) và E gọi là tập các cạnh (Edges)

Có thể coi E là tập các cặp (u, v) với u và v là hai đỉnh của V

Trong đó, G được gọi là:

+ Đơn đồ thị: Nếu giữa hai đỉnh u và v của V có nhiều nhất là một cạnh trong E nối từ u tới v

+ Đa đồ thị: Nếu giữa hai đỉnh u và v của V có thể có nhiều hơn một cạnh trong E nối từ u tới v

+ Đồ thị vô hướng: Nếu các cạnh trong E là không định hướng, tức là cạnh nối hai đỉnh u, v bất kì cũng là cạnh nối hai đỉnh v, u

+ Đồ thị có hướng: Nếu các cạnh trong E là có định hướng, có thể có cạnh nối từ đỉnh u tới đỉnh v nhưng chưa chắc đã có cạnh nối từ đỉnh v tới đỉnh u

- Chu trình của đồ thị: Là một dãy cạnh kế tiếp khép kín sao cho mỗi đỉnh của đồ thị được đi qua không quá một lần, chu trình được kí hiệu bởi việc đưa ra các cạnh và các đỉnh liên tiếp nhau trên chu trình, chẳng hạn chu trình C đi qua

Trang 22

các đỉnh p1, p2, …, pk và các cạnh e1, e2, …, ek thì ta viết: C = (p1, e1, …, pk, ek,

p1)

Trong trường hợp đồ thị là đồ thị đơn, thì thay vì viết rõ các cạnh và các đỉnh, chu trình được xác định duy nhất qua việc gọi tên các đỉnh nó đi qua, ví dụ chu trình C ở trên có thể viết thành: C = (p1, p2, …, pk, p1)

Số cạnh của chu trình được gọi là độ dài của chu trình và thông thường được kí hiệu là l(C)

Ví dụ:

- Đồ thị có trọng số: Mỗi cạnh của đồ thị được gắn với một giá trị nào đó

- Đường đi: Một đường đi độ dài k từ đỉnh u đến đỉnh v là dãy (u = x0, x1, , xk = v) thoả mãn (xi, xi+1) E (là 1 cạnh của đồ thị) với mọi i: (0 ≤ i ≤ k) Đỉnh u gọi là đỉnh xuất phát, v gọi là đỉnh kết thúc của đường đi, đường đi không

có cạnh nào đi qua hơn 1 lần gọi là đường đi đơn, chu trình: đường đi có đỉnh xuất phát trùng 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 [4]

1.3.2 Một số thuật toán trên đồ thị

a Tìm kiếm trên đồ thị

Bài toán: Cho đồ thị G = (V, E) và s, t là hai đỉnh của đồ thị

Yêu cầu: Tìm tất cả các đường đi từ s đến t cùng với độ dài của nó?

Ví dụ: Xét một đồ thị có hướng và có trọng số sau đây:

Trang 23

Hình 1.7- Đồ thị có ướng có trọng số

Đồ thị trên có 5 đỉnh, 7 cạnh Các đỉnh được đánh số từ 1 đến 5, tương ứng với mỗi cạnh có 1 giá trị trọng số, tìm tất cả các đường đi từ đỉnh 1 đến đỉnh 5? Với đồ thị trên, từ đỉnh 1 đến đỉnh 5 có tất cả 4 đường đi như sau:

1->4->5 với độ dài là 50

1 ->5 với độ dài là 45

1 -> 2 -> 3 ->5 với độ dài là 65

1 -> 4 -> 3 -> 5 với độ dài là 50

Như vậy, từ một đỉnh xuất phát nào đó, muốn duyệt đến tất cả các đỉnh của

đồ thị thì làm thế 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 tâm đến hai thuật toán cơ bản nhất: thuật toán tìm kiếm theo chiều

sâu và thuật toán tìm kiếm theo chiều rộng

b Một số thuật toán trên đồ thị

* Thuật toán tìm đường đi ngắn nhất (Dijkstra)

Phát biểu bài toán:

Cho đồ thị có trọng số G = (V, E,w) Trong đó, G = (V, E) là đồ thị, w là giá trị trọng số

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?

v nên không thể tối ưu thêm

Muốn làm điều này thì ta có thể sử dụng kỹ thuật đánh dấu: Free[v] = true hay false tuỳ theo d[v] tự do hay cố định, ban đầu các nhãn đều tự do

Cố định nhãn: Chọn trong các đỉnh có nhãn tự do, lấy ra đỉnh u là đỉnh có d[u] nhỏ nhất, và cố định nhãn đỉnh u

Để sửa nhãn: Dùng đỉnh u, xét tất cả những đỉnh v và sửa lại các d[v] theo công thức:

d[v] := min(d[v], d[u] + w[u, v]) Kết thúc bước lặp khi mà đỉnh đích t được cố định nhãn (tìm được đường đi ngắn nhất từ s đến t); hoặc tại thao tác cố định nhãn, tất cả các đỉnh tự do đều có nhãn là +∞ (không tồn tại đường đi)

Đến đây ta có thể đặt câu hỏi, ở thao tác 1, tại sao đỉnh u như vậy được cố định nhãn? Giả sử d[u] còn có thể tối ưu thêm được nữa thì phải có một đỉnh t mang nhãn tự do sao cho d[u] > d[t] + w[t, u] Do trọng số w[t, u] không âm nên d[u] > d[t], trái với cách chọn d[u] là nhỏ nhất Tất nhiên, trong lần lặp đầu tiên thì s là đỉnh được cố định nhãn do d[s] = 0

Kết hợp với việc lưu vết đường đi trên từng bước sửa nhãn, thông báo đường đi ngắn nhất tìm được hoặc cho biết không tồn tại đường đi (d[t] = +∞)

Mô tả ngắn gọn thuật toán Dijkstra như sau:

Trang 25

Bước 1: d[s] = 0 ; d[v] = +∞ (mọi v V\{s}); u = s;

Bước 2: Lặp nếu u ≠ t (với u không thuộc S)

2.1 Nếu d[v] > d[u] + w[u,v] thì d[v] = min{d[v], d[u] + w[u, v]} trace[v]=u (với v không thuộc S - tập các đỉnh đã tối ưu)

2.2 Chọn v có d[v] nhỏ nhất {v=0-> không có đường đi}

2.3 Nếu v ≠ 0 thì thêm v vào S; u = v

Bước 3: In ra đường đi tối ưu từ s đến t hoặc thông báo không có đường đi

Output: Với mỗi v V

Ý tưởng: Mỗi lần thăm một đỉnh ta sẽ lên lịch thăm tất cả các đỉnh kề nó

sao cho thứ tự duyệt là ưu tiên theo chiều rộng, nghĩa là đỉnh nào gần đỉnh vừa thăm thì sẽ được duyệt trước

Ví dụ: Đầu tiên, ta thăm đỉnh s, khi thăm đỉnh s thì ta sẽ lên lịch duyệt những đỉnh gần s nhất (kề với s), đó là các đỉnh u1, u2, , up Tiếp theo, sẽ thăm đỉnh u1, khi thăm u1 sẽ lại lên lịch duyệt những đỉnh kề với u1, đó là các đỉnh v1,

v2 , vq Rõ ràng các đỉnh này xa s hơn những đỉnh u nên chúng chỉ được duyệt đến khi tất cả những đỉnh u đã duyệt xong Nghĩa là, thứ tự duyệt đỉnh sau khi đã thăm u1 sẽ là: (u2, u3 , up, v1, v2, , vq)

Trang 26

Vì việc lập lịch như mô tả ở trên nên cần phải xếp hàng cho các đỉnh đã lên lịch theo đúng thứ tự Khi thêm đỉnh nào đó ta sẽ thêm vào cuối hàng (vì đỉnh lên lịch sau chắc chắn xa hơn các đỉnh đã lên lịch rồi), khi đó danh sách chứa những đỉnh đang chờ sẽ được tổ chức dưới dạng queue (hàng đợi)

Thuật toán:

Sử dụng một cấu trúc dữ liệu hàng đợi để lưu trữ thông tin trung gian thu được trong quá trình tìm kiếm:

dau:=1; cuoi:=1; Q[d]:=s; {Q chỉ chứa s}

{Chèn đỉnh gốc vào hàng đợi}

u := pop; {lấy u khỏi hàng đợi}

f[u]:= false;

Xét v V: nếu v chưa được thăm:

F[v] = false; {đánh dấu đã thăm}

Trace[v] = u;

Push(v); {đẩy v vào hàng đợi, chờ được thăm}

{Đỉnh đầu tiên trong hàng đợi sẽ được lấy ra và quan sát nó, nếu đỉnh này chính là đỉnh đích, dừng quá trình tìm kiếm và trả về kết quả Nếu không phải đỉnh đích thì chèn tất cả các đỉnh kề với đỉnh vừa thăm nhưng chưa được quan sát trước đó vào hàng đợi}

Bước 3: Truy vết tìm đường đi hoặc thông báo không thấy đường đi

Ví dụ: Cho đồ thị gồm7 đỉnh 9 cạnh như sau:

Trang 27

Đỉnh xuất phát là 2

Kết quả thứ tự các đỉnh tìm kiếm theo chiều rộng là: 2->3->1->4->5->7->6

* Thuật toán tìm kiếm theo chiều sâu DFS (Depth – First – Search) Phát biểu bài toán: Cho đồ thị vô hướng G = (V, E) và đỉnh xuất phát s

Tìm cách đi từ s qua tất cả các đỉnh của đồ thị đúng 1 lần (theo chiều sâu)?

Input: G = (V, E), s

Output: Với mỗi v V

Ý tưởng: Bắt đầu từ đỉnh s, mọi đỉnh u kề với s sẽ có đường đi từ s tới u

Với mỗi đỉnh u đó, những đỉnh v kề với u cũng có đường đi từ s tới v, , ý tưởng

đó gợi ý cho ta viết một thủ tục đệ quy DFS(u) mô tả việc duyệt từ đỉnh u bằng cách thông báo thăm đỉnh u và tiếp tục quá trình duyệt DFS(v) với v là một đỉnh chưa thăm kề với u Để quá trình duyệt không lặp lại bất kì đỉnh nào, ta dùng kỹ thuật đánh dấu, khi thăm một đỉnh, ta sẽ đánh dấu đỉnh đó lại để các bước duyệt

đệ quy kế tiếp không thăm lại đỉnh đó nữa [5]

Như vậy, để in ra được đường đi từ đỉnh xuất phát s, trong quá trình duyệt DFS(u), trước khi gọi đệ quy DFS(v) với v là một đỉnh kề với u mà chưa đánh dấu, ta lưu lại vết đường đi từ u tới v bằng cách đặt trace[v] := u Tức là trace[v]

là đỉnh liền trước v trong đường đi từ s tới v, khi quá trình tìm kiếm theo chiều sâu kết thúc, đường đi từ s tới t sẽ là:

t ← Trace[t] ← ….← Trace[u1] ← Trace[s] ← s

Trang 28

DFS(v); {Gọi đệ quy duyệt bắt đầu với v}

- Nếu t chưa bị đánh dấu thì kết luận: Không có đường từ s->t;

- Nếu t đã bị đánh dấu thì dựa vào Trace tìm đường đi từ s->t; End

Ví dụ: Cho đồ thị gồm 7 đỉnh 9 cạnh như sau:

Trang 29

Nếu biểu diễn đồ thị bằng danh sách kề, cả hai thuật toán BFS và DFS đều

có độ phức tạp tính toán là O(m+n) = O(max(n,m)), đây là cách cài đặt tốt nhất Nếu ta biểu diễn đồ thị bằng ma trận kề thì độ phức tạp tính toán trong trường hợp này là O(n + n2) = O(n2) [6]

1.4 TỔNG KẾT CHƯƠN 1

Chương I đã giới thiệu tổng quan về phương pháp dạy học trực quan, ưu điểm và hạn chế của phương pháp này, những yêu cầu cơ bản đối với phương pháp dạy học trực quan Ngoài ra, trình bày về các kỹ thuật và ứng dụng của đồ họa máy tính Các kiến thức liên quan đến đồ thị và 3 thuật toán thông thường trên đồ thị, đó là: thuật toán tìm đường đi ngắn nhất, thuật toán tìm kiếm theo chiều rộng và tìm kiếm theo chiều sâu, độ phức tạp của các thuật toán đó

Trang 30

CHƯƠN 2 MÔ PHỎNG THUẬT TOÁN

Trong chương này, tôi sẽ trình bày về phương pháp mô phỏng thuật toán, tác dụng của việc mô phỏng thuật toán trong dạy học và các yêu cầu đối với việc

mô phỏng thuật toán Đồng thời trình bày cụ thể về quy trình mô phỏng thuật toán và áp dụng mô phỏng 3 thuật toán: Dijkstra, BFS, DFS

2.1 HƯƠN HÁ MÔ HỎNG THUẬT TOÁN

2.1.1 Khái niệm

MPTT là quá trình tách dữ liệu, thao tác, ngữ nghĩa và tạo mô phỏng đồ họa cho quá trình trên MPTT được thiết kế để giúp người dùng có thể hiểu thuật toán, đánh giá chương trình và sửa lỗi chương trình [21]

Chương trình mô phỏng trên máy tính sẽ chứa các cấu trúc dữ liệu của thuật toán mà nó sẽ thực hiện Khi thực hiện chương trình đó, giá trị thực của cấu trúc dữ liệu thay đổi dựa trên từng bước hoạt động của thuật toán MPTT sử dụng

đồ hoạ để biểu diễn sự thay đổi trạng thái của cấu trúc dữ liệu cho từng bước hoạt động của nó một cách trực quan, khoa học Trong suốt quá trình biểu diễn, người dùng có thể quan sát việc thực thi thuật toán theo từng bước để có thể biết chi tiết về thuật toán cũng như hiểu một cách tường tận về thuật toán đó

Ngoài 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ó thể dùng để gỡ lỗi chương trình một cách dễ dàng hơn Để sử dụng MPTT trong việc gỡ lỗi, người dùng ghi chú các trạng thái thực trên chương trình để đưa ra các lệnh mô phỏng đầu ra và những bước làm cho thuật toán không cho ra kết quả như mong muốn

MPTT sử dụng biểu diễn đồ họa để biểu diễn cấu trúc dữ liệu và chỉ ra sự thay đổi giá trị trong cơ sở dữ liệu ở mỗi trạng thái Qua đó, người sử dụng có thể xem được từng bước thực thi chương trình và nhờ vậy có thể hiểu chi tiết được thuật toán [12]

Trang 31

2.1.2 Tác dụng của mô phỏng thuật toán trong dạy học

MPTT được sử dụng rộng rãi như công cụ hỗ trợ giảng dạy trong ngành giáo dục Một số nghiên cứu thực nghiệm đã ước lượng hiệu quả của chúng trong giáo dục và kết quả nhận được có thay đổi, tác dụng của việc áp dụng mô phỏng thuật toán trong dạy học được ghi nhận lại như sau:

Các hoạt cảnh MPTT gây hứng thú cho người học, làm tăng tính sáng tạo của người học Sử dụng mô phỏng kết hợp với phương pháp thuyết trình truyền thống làm tăng tốc độ hiểu biết cho người học Ngoài ra, mô phỏng giúp cho người học dễ hiểu thuật toán hơn thông qua các bước mô phỏng trực quan kết hợp với mã nguồn chương trình [16]

MPTT muốn mang lại hiệu quả cao nhất, nó phải thoả mãn những yêu cầu sau đây :

- Yêu cầu thứ nhất: Phải mô phỏng từng bước để người học hiểu từng bước của giải thuật, có khả năng quay lui để người học có thể quay lại những bước quan trọng Đồng thời lấy ý kiến phản hồi từ người học để cải thiện chương trình

mô phỏng thuật toán tốt hơn

- Yêu cầu thứ hai: Phải xây dựng mô phỏng hiệu quả: mô phỏng cái gì, mô phỏng như thế nào, hình ảnh ra sao,

Một chương trình mô phỏng thuật toán hiệu quả phải đáp ứng được các yêu cầu:

- Truy cập mở (Open access): Người dùng có thể truy cập hệ thống mô phỏng mở, hơn nữa, nếu có cài đặt hệ thống mô phỏng trong trường học, thì có thể truy cập tới hệ thống này từ nhà hoặc từ bất cứ nơi nào khác

- Mô phỏng một cách có điều khiển (Control animation): Người dùng có thể tự tạo tập dữ liệu của chính mình khi sử dụng hệ thống mô phỏng, trong khi các tập dữ liệu được cài đặt sẵn cũng có thể giúp học sinh có những sự hiểu biết ban đầu, hệ thống nên có cả 2 tùy chọn này

Trang 32

- Tương tác (Interactivity): Hệ thống mô phỏng phải cung cấp được sự tương tác giữa người dùng và hệ thống Sự tương tác bao gồm: người dùng xem theo từng bước, hủy, chạy nhanh tới một bước mong muốn, hay xem lại từ đầu

- Lịch sử (History): Hệ thống mô phỏng cho phép người dùng xem lại các bước trong quá trình thực hiện

- Phản hồi (Feedback): Phải tiếp thu phản hồi của học sinh về việc sử dụng

hệ thống mô phỏng để ước lượng hiệu quả của hệ thống cũng như để cải thiện hệ thống

2.1.3 Các yêu cầu đối với mô phỏng thuật toán

- Cần phản ánh đúng nội dung thuật toán: Thuật toán được đưa ra mô phỏng phải chính xác, các bước thực hiện thuật toán phải trực quan và phản ánh đúng theo nội dung thuật toán đã đưa ra để đảm bảo tính đúng đắn của thuật toán

- Mô phỏng phải được thực hiện theo từng bước: thuật toán thường là trừu tượng, nếu để chương trình chạy tự động thì người dùng sẽ khó hiểu Vì vậy, cần phải có chế độ thực hiện mô phỏng thuật toán theo từng bước, để người học có thể quan sát, theo dõi sự thay đổi giá trị của từng biến, nhờ đó, sẽ giúp cho người học hiểu thuật toán rõ hơn và nhanh hơn

- Mô tả thuật toán phải có tính động: để mô tả trực quan hóa quá trình thực hiện của thuật toán ta nên đưa vào hình ảnh động (có thể có âm thanh) để thể hiện sự thay đổi của dữ liệu trong quá trình thực thi

Ví dụ: với các thuật toán trên đồ thị, phải quan sát được sự thay đổi trên đồ thị, ta có thể đưa vào đoạn thuật toán thể hiện tương ứng và song song với quá trình duyệt trên đồ thị Nhờ đó, thuật toán được thể hiện một cách rõ nét, sinh động, trực quan, giúp người đọc dễ theo dõi, dễ hiểu thuật toán hơn [20]

Cụ thể hơn, với việc mô phỏng thuật toán tìm đường đi ngắn nhất bằng thuật toán Dijkstra, cứ mỗi bước thực hiện xong thuật toán thì hình ảnh mô phỏng cũng phải thay đổi theo Trong quá trình thực hiện, đỉnh nào được chọn để

xử lý sẽ có thông báo tại đỉnh đó để người dùng quan sát cho dễ

Trang 33

Dưới đây là hình ảnh trước và sau khi một bước thuật toán được thực hiện

Hình 2.1 - Hình ảnh sau một bước th c hiện của thuật toán dijkstra

- Thuật toán được thử nghiệm trong mọi trường hợp để đảm bảo thời gian thực hiện tốt nhất: một thuật toán được mô phỏng phải đảm bảo là thuật toán tốt,

dễ hiểu và đúng đắn Muốn vậy, ta phải thử nghiệm trong các trường hợp dữ liệu ngẫu nhiên, tốt nhất, xấu nhất Nếu thuật toán vẫn chạy tốt và trong một thời gian cho phép thì thuật toán mới hiệu quả Ta không thể chấp nhận một thuật toán đúng mà thời gian chạy quá lớn

- Cần có sự phân cấp người học: thông thường, mức độ tiếp thu trong một giờ học của học sinh không giống nhau, có những học sinh hiểu bài nhanh nhưng cũng có những học sinh nắm bắt bài chậm hơn Vì vậy, thuật toán mô phỏng cũng cần phải có những chức năng “mềm dẻo với các đối tượng học

Ví dụ, có thể có chức năng lựa chọn độ trễ cho mỗi thao tác để phù hợp với mức độ quan sát của từng đối tượng học khác nhau hoặc cho phép chạy đi chạy lại một thuật toán trên một bộ dữ liệu vào…

2.2 QUY TRÌNH MÔ PHỎNG THUẬT TOÁN

2.2.1 Thiết kế hệ thống mô phỏng thuật toán

- Hệ thống mô phỏng thuật toán được thực hiện qua các bước theo trình tự sau đây:

Trang 34

Hình 2.2 - Sơ đồ á bước thiết kế hệ thống mô phỏng thuật toán

Chi tiết về các bước của quá trình này đã được giới thiệu trong phần 2.2.2 của luận văn này

- Mô hình bài toán mô phỏng:

Hình 2.3 - Mô hình bài toán mô phỏng

2 2 2 Quy trình thiết kế mô phỏng thuật toán

a Nghiên cứu và phân tích giải thuật

Bước đầu tiên trong quá trình giải một bài toán tin học là xác định bài toán

Ở bước này, dựa trên phát biểu của bài toán ta phải xác định rõ Input (dữ liệu đầu

Nghiên cứu và

phân tích giải thuật

Mô phỏng dữ liệu vào và dữ liệu ra

Tách giải thuật thành nhiều bước nhỏ

Tổng hợp các bước thành giải thuật hoàn chỉnh

Chính xác hóa giải thuật (bằng cách

quan sát dữ liệu ra của từng bước nhỏ)

Dữ liệu đưa vào chương trình

được mô phỏng bằng đồ họa

bằng 2 cách:

+ Tạo dữ liệu trực tiếp

+ Dữ liệu theo mẫu

+ Mô phỏng theo từng bước của thuật toán + Mô phỏng toàn bộ thuật toán

Kết quả: đồ thị đã được

mô phỏng bằng đồ họa thể hiện qua những thay đổi trên hình vẽ trong mỗi bước thực hiện thuật toán

Trang 35

vào) và Output (kết quả) của bài toán là gì và mối quan hệ giữa chúng Thông tin

đó cần được nghiên cứu một cách cẩn thận để có thể lựa chọn thuật toán, cách thể hiện các đại lượng đã cho, các đại lượng phát sinh trong quá trình giải toán và lựa chọn ngôn ngữ lập trình thích hợp

Tiêu chí để thiết kế hoặc lựa chon thuật toán thường dựa trên hai yếu tố là thời gian và không gian cần thiết để thực hiện thuật toán, trong đó yếu tố thời gian là đặc biệt quan trọng Ngoài ra, trên thực tế khi lựa chọn thuật toán người

ta còn quan tâm sao cho việc cài đặt thuật toán đó bằng một ngôn ngữ lập trình được dễ dàng, ít tốn công sức của người lập trình Đối với những bài toán nhỏ, số lần cần giải bài toán không nhiều nên tiêu chí sau cùng thường được ưu tiên để lựa chọn thuật toán

Sau khi chứng minh được tính đúng đắn của giải thuật (có thể bằng suy luận Toán học hoặc chứng minh trên bộ dữ liệu mẫu phủ kín các trường hợp có thể xảy ra với bài toán), ta tiến hành cài đặt thuật toán trên một ngôn ngữ lập trình cụ thể Để việc cài đặt thuật toán nhanh, thường người ta diễn tả lại thuật toán đủ chi tiết

b Mô phỏng dữ liệu vào và kết quả đầu ra

Mô phỏng dữ liệu vào là cách chọn hình thức hiển thị cho cấu trúc dữ liệu tương ứng với giải thuật Việc lựa chọn mô hình mô phỏng cho dữ liệu vào quyết định tính hiệu quả của chương trình mô phỏng Hình thức hiển thị này phải dễ hiểu, dễ gây hứng thú cho người dạy và người học muốn tìm hiểu thuật toán

Ví dụ: với chương trình mô phỏng các thuật toán trên đồ thị, dữ liệu vào sẽ

là một đồ thị bao gồm tập các nút và các cạnh nối các nút với nhau Ta sẽ thể hiện các nút là một hình tròn có tên nút được đánh số theo thứ tự và nằm giữa hình tròn Cạnh sẽ nối hai nút của đồ thị bằng một đường thẳng (khi nối thì sẽ xuất hiện hộp thoại để nhập trọng số và trọng số sẽ nằm giữa vị trí giữa của hai nút) Như vậy, đồ thị được xây dựng rất trực quan và người học có thể quan sát

dễ dàng những thay đổi trên đồ thị khi thực hiện các bước của giải thuật

Trang 36

Hình 2.4 - Dữ liệ đầu vào: một đồ thị vô ướng gồm 5 đỉnh, 6 cạnh

Việc đưa dữ liệu vào là một yếu tố quan trọng quyết định tính hiệu quả của

mô phỏng thuật toán Nên chương trình mô phỏng cần phải có nhiều cơ chế đưa

dữ liệu vào, ví dụ như:

- Đề xuất một số dữ liệu mẫu: Chương trình sẽ chuẩn bị một số dữ liệu mẫu

từ trước để người học có thể học thuật toán ngay mà không phải chuẩn bị dữ liệu đầu vào

- Sinh ngẫu nhiên: để cho chương trình tự sinh một đồ thị tùy ý

- Nhập dữ liệu thủ công: người học dùng công cụ của chương trình cung cấp để tự tạo đồ thị theo cách của mình Đây là cách để giải quyết các băn khoăn của người học về thuật toán (với trường hợp này thì kết quả sẽ là thế nào? Với đồ thị đặc biệt này thì thuật toán có chạy không?, …)

c Chia thuật toán thành nhiều bước nhỏ rồi mô phỏng theo từng bước

Việc chia thuật toán thành nhiều bước nhỏ rất có ý nghĩa trong việc lập trình Nó làm cho thuật toán ban đầu trở nên đơn giản, rõ ràng và dễ hiểu hơn

Ví dụ: thuật toán tìm đường đi ngắn nhất trên đồ thị có trọng số - thuật toán Dijkstra:

Trang 37

Cho đồ thị G = (V, E) – V tập các đỉnh và E là tập các cạnh

Thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh s tới đỉnh t

Gọi S là tập các đỉnh đã xác định được đường đi ngắn nhất từ s tới các đỉnh này và d[u] là độ dài đường đi ngắn nhất từ s tới u

Chọn đỉnh đầu là 1, đỉnh cuối là 2, mô phỏng các bước thực hiện thuật toán như sau:

Bước 1

Bước 2

Trang 38

Bước 3

Bước 4

Hình 2.5 - Mô phỏng theo từn bước của thuật toán Dijkstra

d Tổng hợp mô phỏng theo các bước

Sau khi mô phỏng được từng bước của thuật toán ta tiến hành ghép các bước mô phỏng lại để được mô hình mô phỏng hoàn chỉnh

Trang 39

e Chính xác hóa giải thuật

Từ dữ liệu vào, tiến hành chạy theo từng bước, quan sát những thay đổi của cấu trúc dữ liệu sau mỗi bước và quan sát kết quả cuối cùng khi thuật toán đã chạy xong

2.3 ÁP DỤNG MÔ PHỎNG MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ 2.3.1 Thuật toán tìm đường đi ngắn nhất (Thuật toán Dijkstra)

Áp dụng quy trình mô phỏng thuật toán ở mục 2.2 để thực hiện các bước cho quá trình mô phỏng:

2.3.1.1 Các bước thiết kế hệ thống mô phỏng: 5 bước:

a Nghiên cứu và phân tích giải thuật

- Xác định Input: Với bài toán này thì Input là số đỉnh, số cạnh, trọng số mỗi cạnh, đỉnh đầu và đỉnh cuối của đường đi

- Xác định Output: Độ dài đường đi từ đỉnh đầu đến đỉnh cuối là ngắn nhất

For i:=2 to n do d[i] := c[1, i] ;

{Khởi đầu các giá trị cho D}

For i:=1 to n - 1 do

begin

Lấy đỉnh w trong V\s sao cho d[w] là nhỏ nhất; Thêm w vào s ;

For mỗi đỉnh u thuộc V - s do

d[u] := Min (d[u],d[w] + c[w, u]) ;

end;

End;

Trang 40

Muốn lưu trữ lại các đỉnh trên đường đi ngắn nhất để có thể xây dựng lại đường đi này từ đỉnh nguồn đến các đỉnh khác, ta dùng mảng M Mảng này sẽ lưu M[u] = w với đỉnh u là đỉnh trước của đỉnh w trên đường đi ngắn nhất, lúc khởi đầu ta cho M[u] = 1, với mọi u khác 1

Giải thuật Dijkstra ở trên sẽ được viết lại như sau:

Ngày đăng: 22/03/2021, 00:11

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