Tải bản đầy đủ (.pdf) (92 trang)

Ứng dụng trực quan trong dạy lập trình cho học sinh phổ thông

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.18 MB, 92 trang )

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

Đà Nẵng - Năm 2018

TRUN

H N


LỜI CAM ĐOAN
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 TÓM TẮT LUẬN VĂN
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

Mã số: 8480101 - Khóa: 34

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

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.

Project title: APPLICATIONS ONLINE

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


high school students. The research contents include: (1) Study theoretical foundations of visual
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.


MỤC LỤC
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


2.1.3. Các yêu cầu đối với mô phỏng thuật toán ..........................................22
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


DANH MỤC CÁC TỪ VIẾT TẮT
1.
STT

Tiếng Việt
TỪ VIẾT TẮT


VIẾT RÕ

1

PPDH

Phương pháp dạy học

2

TQ

Trực quan

3

ĐHMT

Đồ họa máy tính

4

GV

Giáo viên

5

HS


Học sinh

6

MPTT

Mô phỏng thuật toán

7

TT

Thuật toán

8

TK

Tìm kiếm

2.
STT

Tiếng Anh
TỪ VIẾT TẮT

VIẾT RÕ

1


BFS

Breadth First Search

2

DFS

Depth First Search


DANH MỤC CÁC BẢNG
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


DANH MỤC CÁC HÌNH

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


Hình 3.6. Kết quả minh họa thuật toán BFS ..................................................................56
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


1


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.



2

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.
b. Nhiệm vụ
Để đạt được mục tiêu trên, nhiệm vụ đặt ra là:
* Cơ sở lý thuyết:
- Nghiên cứu phương pháp dạy học trực quan.
- Đồ họa máy tí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.
* Ứng dụng:
- Cài đặt, thử nghiệm trực quan thuật toán tìm đường đi ngắn nhất, tìm
kiếm theo chiều rộng và chiều sâu.
- Đánh giá chất lượng của học sinh trước và sau khi áp dụng các phương
pháp mà đề tài đã trình bày.

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


3

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.
a.

iên ứ lý thuyết

- Các tài liệu về cơ sở lý thuyết: Lý thuyết về thuật toán, về phương pháp
dạy học trực quan, lý thuyết về đồ họa máy tính, lý thuyết mô phỏng thuật toán.
- Các tài liệu liên quan đến ngôn ngữ lập trình Java.
b.


iên ứ t

n

iệm

Xây dựng các chương trình thực nghiệm tính hiệu quả của các giải thuật
nghiên cứu.

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.


4

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].
111

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.

112

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


5

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


6

quát.
- Phối hợp lời nói với việc trình bày các phương tiện trực quan và phương
tiện kỹ thuật dạy học, có bốn hình thức phối hợp như sau:
+ Thứ nhất, dưới sự chỉ đạo bằng lời của giáo viên, học sinh quan sát trực
tiếp các sự kiện, hiện tượng, từ đó, chính học sinh rút ra những thuộc tính, những
mối quan hệ của kiến thức.
+ 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,


7

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


8

Ả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ế


9

Ứ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, …


10

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ị



11

- 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.
Một số hình ảnh của đồ thị:

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

Hình 1.6 - Đồ thị ó ướng

- Phân loại đồ thị:
Chúng ta 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).
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



12

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:


13

1

30

10

45

2

4

10
45

20

3

5
10

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ố.


14

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?

Input: Các đỉnh, các cạnh và trọng số của đồ thị.
Output: Đường đi ngắn nhất từ đỉnh s đến đỉnh t.
Ý tưởng:
Với đỉnh v

V, gọi nhãn d[v] là độ dài đường đi ngắn nhất từ s tới v, ta sẽ


tính các d[v]. Ban đầu d[v] được khởi gán bằng w[s, v]; mỗi đỉnh có hai trạng
thái nhãn đó là tự do hay cố định. Nhãn tự do có nghĩa là có thể còn tối ưu hơn
được nữa và nhãn cố định tức là d[v] đã bằng độ dài đường đi ngắn nhất từ s tới
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:


15

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
từ s đến t.
Độ phức tạp:
Ta có thể sử dụng danh sách kề kèm trọng số để biểu diễn đồ thị. Tuy
nhiên, tốc độ của thuật toán Dijkstra vẫn khá chậm vì nó cần n lần cố định nhãn
và mỗi lần tìm đỉnh để cố định nhãn sẽ mất một đoạn chương trình với độ phức
tạp O(n). Vậy độ phức tạp của thuật toán Dijkstra là O(n2). [1]
* Thuật toán tìm kiếm theo chiều rộng BFS (Breadth – 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
rộng)?
Input: G = (V, E), s.
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).


×