Duyệt đồ thị theo chiều rộng Niên luận 1 LỜI MỞ ĐÀU œ1 Nganh cong nghé théng tin hay con goi la IT Information Technology là một ngành kỹ thuật sử dụng máy tính và phần mềm máy tính để
Trang 1
TRUONG DAI HOC BAC LIEU
KHOA CONG NGHE THONG TIN
NIEN LUAN 1
TEN DE TAI:
DUYET DO THI THEO CHIEU RONG (BFS)
Giảng viên hướng dân ThS Triệu Vĩnh Viêm
HỌC KỲ, 2020 — 2021
Trang 2
TRUONG DAI HOC BAC LIEU
KHOA CONG NGHE THONG TIN
NIEN LUAN 1
TEN DE TAI:
DUYET ĐỎ THỊ
THEO CHIEU RONG (BFS)
Giảng viên hướng dân ThS Triệu Vĩnh Viêm
HỌC KỲ, 2020 ~ 2021
Trang 3
C4CŒ4 3š %4 r2)
Bac Liéu,ngay tháng nam 2020
Giáo viên hướng dẫn
Ký tên
Trang 4DANH GIA KET QUA THUC HIEN NIEN LUAN 1
(Học kỷ 1, Niên khóa 2020-2021)
TÊN ĐÈ TÀI: Duyệt đồ thị theo chiều rộng (BFS)
GIÁO VIÊN HƯỚNG DÂN:
Thông tin về các sinh viên thực hiện: họ tên, mã số sinh viên
Giáo viên hướng dẫn: chức danh, họ tên
Học kỳ, niên khóa thực hiện
« M6 ta bai ton, muc tiêu can dat được (0,25 điểm)
" Hướng giải quyết và kê hoạch thực hiện (0,25 đ¿m)
Lý thuyết (tối đa 0,5 điểm)
Các khái niệm sử dụng trong đề tai (0,25 diem)
= Keét qua vận dung ly thuyét vao dé tai (0,25 diém)
= Giải thuật (Lưu đỏ-Ngôn ngữ giả) (7,0 điểm)
"_ Giới thiệu chương trình (0,5 đám)
Trang 5
« Nhan xét két qua đạt được
=" Han che
._ Hướng phát triên Ill CHUONG TRINH DEMO (Tdi da 5,0 diém)
Giao dién than thién véi ngwoi dung (7,0 diém)
1 Điểm trong khung “sinh viên thực hiện” là điểm kết quả cuối cùng của từng sinh viên trong quá trình thực hiện niên luán 1
2 Nếu sinh viên demo chương trình và trả lời vấn đáp không đạt yêu cáu của giáo viên hướng dán thì sinh viên sẽ nhận điềm E cho học phần này
Bac Liéu, øgày tháng nam
GIAO VIEN CHAM
Trang 6Duyệt đồ thị theo chiều rộng Niên luận 1
LỜI MỞ ĐÀU
œ1
Nganh cong nghé théng tin hay con goi la IT (Information Technology) là
một ngành kỹ thuật sử dụng máy tính và phần mềm máy tính để chuyền đôi, lưu trữu,
bảo vệ, xử lý, truyền tải, khai thác và sử dụng thông tin hiệu qua trong moi co quan,
doanh nghiệp, trường học đặc biệt là việc áp dụng các giải pháp tin học trong công tác quản lý Hiện nay Công nghệ thông tin đang phát triên rất mạnh những thiết bị hiện đại
phụ vụ cho san xuất, chế tạo, nghiên cứu khoa học và sinh học , xuất hiện càng nhiều, dân thay thế cho con người Cùng với đó là sự ra đời của Internet, ngành Công nghệ thông tin được ứng dụng trong y té, quốc phòng, giải trí
Lý thuyết đồ thị là một lĩnh vực đã có từ lâu và có nhiều ứng dụng hiện đại Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm đầu thế kỷ 18
bởi nhà toán học lỗi lạc người Thụy Sÿ Lenhard Eurler Chính ông là người Sử dụng
đồ thị đề giải bài toán nỏi tiếng về các cái cầu ở thành phố Konigsberg
Có rất nhiều thuật toán trên đồ thị được xây dựng trên cơ sở duyệt tất cả các đỉnh của đồ thị sao cho mỗi đỉnh của nó được viếng thăm đúng một làn Vì vậy , việc xây dựng những thuật toán cho phép duyệt một cách hệ thống tất cả các đỉnh của đồ thi là một vấn đề quan trọng thu hút sự quan tâm nghiên cứu của nhiều người Những
thuật toán như vậy được gọi chung là thuật toán tìm kiếm trên đồ thị Trong đề tài này
em sẽ giới thiệu thuật toán tìm kiếm theo chiều rộng (Breadth First Search) trên đô thị không có trọng só
Nguyễn Văn Khang Trang - 1 -
Trang 7AI vi ìnc-äậỘ$ỪỪ -6-
1 Khái niệm . +©k-k+2SSk1EEE E11 111152111115 EErree -6-
2 Ứng dụng của thuật †Oán - 52 2525 S2 St+x2t+x+teEreerrerrrerrrrrrrrree -6-
3 Cấu trúc dữ liệu hàng đợi (QU©U©) . -:-cccc<c+csrcererresrrree -6-
4 _ Ứng dụng của hàng đợii ¿-+ 5+ xxx +evEvxeEexekrkerrrrrerrkrereree -6-
BS -7- CHU'ONG 3: UNG DUNG .ccccccccccsesssecssecccsescssscesscstseeseeesseessecstenetecenscees -8-
I PHAN TIGH YEU GAU GIAI THUAT .c.cccscccscessescsesssesesenseeesseesteceteceneeeees -8-
Il XÂY DỰNG CÁC CÁU TRÚC DU LIEU GẦN THIÉT -9-
I GAL THUAT ccceccsesessecescscscscsesssesceecesessecesecsssseceseeseceeseesnnssnstetitecitetenees -9-
H9 $aaaa3 -9-
2 _ Dién gidi DANG Oi oo ee eeeeseesescessseecseecsesescsesesessseecaescsesesesesetecaesesesennees -10-
IV GIOTTHIEU CHUONG TRINH csesesesesssessescsescsescstscstsersseeseenseeesneeetes -12- CHƯƠNG 4: KÉT LUẬN - 25-5222 SE xxx exerkrrkrrrrrerrree - 18 -
I NHAN XET KET QUA DAT DUGG ou cecccsscscsescseesseetseessesesseseeteeeteenenenens - 18 -
Trang 8Duyệt đồ thị theo chiều rộng Niên luận 1
DANH MỤC HÌNH ẢNH
Hình 1: Cấu trúc dữ liệu hàng đợi -:- SE S1 kg rrrrrrrerke -6- Hin 2: DG thi cO HUGNG ecscscscsescsesescsecscscscsesesesesesssesecesscscsesesesssesaescecaesusesesceesasaeseees -7- Hinh 3: D6 thi V6 HUGG .ệ'Í,.)H,HHH , -8-
Hình 4: Bài toán BFS cho đỗ thị vô hướnG . ¿- ¿2+5 +5+ 5x sex s+seezezseszesreree - 1Ô -
Hình 5: Giao diện đầu của chương trìnÌ: . - 5 2 =ss+s++e£zszs=zezezxzexescse -12- Hình 6: Hướng dẫn mở chương trình . +5: St S+£+£+‡vEet£tEeEeereresrsrsrrvescee -12- Hình 7: Giao diện đầu của chương trìnÌ: . - 7-5 2 =ss+<++e£zszs=zezezxzerscse -13- Hình 8: Giao diện đầu của chương trìnÌ: . - 5 2 =ss<+<+<+e£zszs=zezezxzexescse -13-
Hình 9: Giao diện sau khi click mũi têñ - - << 5 se rerssx -14-
Ban 192000000 -14- Hình 11: Thêm cạnh cho đồ thị .- - 2+2 ‡ESE‡ESEErkkrtrrkrrkerrrerrrrrrrrrrer - 15 -
Hình 12: Giao diện đồ thị vô hướng hoàn chỉnh -.- nhe -15-
D0200 1iì s0), 001017 QTH - T6 - Hình 14: Đỏ thị được duyệt từ đỉnh khác trong đồ thị - -5-5-+ <<<<<5+ - T6 -
Hình 15: Giao diện sau khi chọn reSeT - CS QQ nen sex -17-
Trang 9CHƯƠNG 1: TÓNG QUAN I MÔ HÌNH BÀI TOÁN
Trong lý thuyết đồ thị, thuật toán tìm kiếm theo chiều rộng (BFS) là
một thuật toán tìm kiếm trong đồ thị, trong đó việc tìm kiếm chỉ bao gồm 2 thao
tác: Cho trước một đỉnh của đồ thị; Thêm các đỉnh kè với đinh vừa cho vào danh
sách có thê hướng tới tiêp theo
ll MÔ TẢ BÀI TOÁN
Giả sử chúng ta có một đồ thị G với các đỉnh ban đầu được đánh dấu là chưa
duyệt Từ một đỉnh A nào đó trong G, chúng ta bắt đầu duyệt như sau: đánh dấu
A đã được duyệt, kế đến là duyệt tất cả các đỉnh kè với đỉnh A Khi chúng ta
duyệt một đỉnh A rồi đến đỉnh B thì các đỉnh kề A được duyệt trước các đỉnh kề của B Do đó chúng ta can dùng một hàng để lưu trữ các nút theo thứ tự được duyệt đề có thê duyệt các đỉnh kê với chúng Dùng mảng một chiêu đề đánh dâu
một nút đã duyệt hay chưa
Ill MỤC TIÊU CÀN ĐẠT ĐƯỢC
— Hiêu và năm vững
— Hiêu và vận dụng được kỹ thuật duyệt đồ thị theo chiêu rộng (Breadth
First Search), cho một sô bài toán cơ bản
— Về chương trình:
+ Biêu diễn được đồ thị bằng dé hoa
+ Ap dung duoc giải thuật vào chương trình
Kết quả: Hiền thị đồ thị trực quan, biêu diễn trực quan kết quả duyệt đồ thị
theo chiêu rộng (Breadth-First Search)
IV HƯỚNG GIẢI QUYÉT
- Về lý thuyết: Sử dụng thuật toán duyệt đồ thị theo chiều rộng (BFS),
phương pháp sử dụng câu trúc dữ liệu hàng đợi (Queue)
_ — Về chương trình: ngôn ngữ Java, sử dụng trên phần mềm NetBeans IDE 8.2
ket hợp với SceneBuilder
— Kế hoạch thực hiện:
Dự kiến kết | Hình thức báo
qua cáo tiên độ Việt dé cương
(mô tả bài Tim hiéu vé dé tài | toán, mục Gửi mail (hạn
Trang 10
Duyệt đồ thị theo chiều rộng Niên luận 1
¬ Chinh sửa lại | Gặp trực tiếp +
Trao đôi với , 19/10/2020 > đê cương theo | chỉnh sửa gửi
2 GVHD về hướng
25/10/2020 thuc hiện đà † góp ý của mail (hạn chót
c hién đê tài ae GVHD 25/10/2020)
Gửi mail cuối
3 26/10/2020 > | Cài đặt chương Ch inh 5 tuan (6
6 20/12/2020 Hoàn tất niên luận| ân bó chót
và quyên báo a aye 20/12/2020) cao
Trang 11CHƯƠNG 2: LÝ THUYÉT
| THUẬT TOÁN BFS
1 Khái niệm
Thuật toán tìm kiếm theo chiều rộng (BFS) là thuật toán tìm kiếm được
Sử dụng cho dé thi va cay
2 Ung dụng của thuật toán Thuật toán tìm kiếm theo chiều rộng được dùng đề giải nhiều bài toán trong lý thuyết đồ thị như:
— Tìm tất cá các đỉnh trong một thành phản liên thông
— Tìm đường đi ngắn nhát giữa hai đinh u và v (với chiều dài đường
đi tính băng số cung)
— Kiém tra xem một đồ thị có là đồ thị hai phía
— Tìm các thành phản liên thông
3 Cấu trúc dữ liệu hàng đợi (Queue)
Hàng đợi là một danh sách đặc biệt mà phép thêm vào chỉ thực hiện tại
một đầu của danh sách, gọi là cuối hàng (REAR), còn phép loại bỏ thì thực hiện ở đầu bên kia của danh sách, gọi là đầu hàng (FRONT) Cầu trúc
dữ liệu này hoạt động trên cơ chế FIFO “vào trước - ra trước ”
giải thuật Bát kỳ nơi nào ta cần quản lí dữ liệu, quá trình Theo kiểu vào
trước — ra trước đều có thê ứng dụng hàng đợi
Trang 12Duyệt đồ thị theo chiều rộng Niên luận 1
Ví dụ: Quản lí in trên mạng, nhiều máy tính yêu cầu ¡n đồng thời và ngay cả một máy tính cũng yêu cầu in nhiều lần Nói chung có nhiều yêu cầu in dữ liệu, nhưng máy in không thể đáp ứng tức thời tất cả yêu cầu đó nên chương trình quản lí sẽ thiết lập một hàng đợi đề quản lí các yêu câu Yêu cầu nào mà chương trình quản lí in nhận trước nó sẽ giải qUyết trước Ngoài ra nó các giải thuật duyệt theo chiều rộng cho một đồ thị vô hướng
hoặc có hướng cũng dùng nó đề quản lí các nút đồ thị
5 Ví dụ
Cho đồ thị sau:
Hình 2: Đồ thị có hướng
Giả sử bắt đầu từ đỉnh A A chỉ có một đỉnh kè G, nên ta duyệt G
Kế đến duyệt tất cả các đỉnh kề với G; đó là B, C sau đó duyệt tat ca các đỉnh kề với B, © theo thứ tự đó Các đỉnh kề với B, C đều đã được
duyệt, nên chúng ta tiếp tục duyệt các đỉnh chưa được duyệt như D, E,
F Ta duyệt đinh D, ké đến là F và cuối cùng và E Thứ tự các đỉnh đã
được duyệt như sau: AGBCDFE
Trang 13CHƯƠNG 3: ỨNG DỤNG
I PHÂN TÍCH YÊU GÀU GIẢI THUẬT
Cho một đồ thị © (Vô hướng hoặc Có hướng) ,yêu cầu duyệt đồ thi bằng giải thuật BFS
Đẻ duyệt một đồ thị bằng giải thuật BFS ta cần có cáu trúc dữ liệu hàng đợi dùng để lưu trữ các nút theo thứ tự được duyệt để có thế duyệt các đỉnh
kề với nút đang xét, cấu trúc này hoạt động theo cơ chế riêng FIFO “vào trước - ra trước” nên phép thêm phần tử thì được thêm ở cuối hàng(REAR)
và được gọi là ENQUEUE, phép lấy phản tử thì được lấy từ đầu hàng
(FRONT) va duoc gọi là DEQUEUE
Ý tưởng của thuật toán:
Bắt đầu từ một đinh (nút) góc,bát kỳ trong đồ thị ta xác định, lần lượt duyệt các đỉnh (nút) kề xung quanh đỉnh gốc vừa xét, Sau đó tiếp tục quá trình duyệt qua các đỉnh kề đỉnh vừa xét cho đến khi duyệt qua tất cả các
đinh
Đồ thị C (Vô hướng):
Hình 3: Đồ thị vô hướng Giá sử bắt đầu duyệt từ đỉnh A, đỉnh A có hai đỉnh kè B và ©, nên ta
duyệt hai đỉnh B, € theo thứ tự, Trước tiên duyệt đỉnh B có các đỉnh kè D và
E, các đỉnh kề của B đã được duyệt, kế đến duyệt đỉnh C có đỉnh F là đỉnh
kẻ, các đỉnh kề của C đã được duyệt, Sau đó ta duyệt các đỉnh chưa được
duyệt như D, E, F Ta duyệt đỉnh D, ké đến là E và cuối cùng và F Thứ tự
các đỉnh đã được duyệt như sau: ABCDEF
Trang 14Duyệt đồ thị theo chiều rộng Niên luận 1
ll XÂY DỰNG CÁC CÁU TRÚC DỮ LIỆU CAN THIET
Chương trình được thiết lập thành một dự án Java Application
— Gói bfs chứa (9 file trong có có 7 file có phản mở rộng là java và
2 file thiệt kê giao diện có phân mở rộng là fxml)
— Gói Picture chứa các hình ảnh được sử dung trong demo
Il GIẢI THUẬT
Thêm các đi nh kề của y vào Q;
Trang 152 Diễn giải băng lời
Hình 4: Bài toán BFS cho đỗ thị vô hướng
Nếu bắt đầu duyệt từ đỉnh A Duyệt đỉnh A, ké đến duyệt tất cả các đỉnh kề với A; đó là B, C,D theo thứ tự đó Kế tiếp là duyệt các đỉnh kể của
B,C, D theo thứ đó Vậy các nút được duyệt tiếp theo là F, E, G
+,
s* Hoạt động của hàng được minh họa như sau:
Ban dau là duyệt đỉnh A, đánh dấu nó và đưa nó vào hàng:
A
Kế đến duyệt các nút kề với nút A, loại A ra khỏi hàng
(DEQUEUE(A)), duyệt B, C, D đưa chúng vào hàng (ENQUEUE(B, C, D))
Tiếp theo, DEQUEUE(B) lây B ra khỏi hàng và đưa đỉnh kề của
đỉnh B mà chưa được duyệt, đó là F, sẽ được duyệt và ENQUEUE(F) được
đưa vào hàng
Trang 16
Duyệt đồ thị theo chiều rộng Niên luận 1
Tiếp đến, DEQUEUE(C) và các đỉnh kề của C mà chưa được duyệt
Sẽ được duyệt, Do C có đỉnh kẻ là D mà D đã được duyệt nên bước này
không có thêm đỉnh nào được duyệt
Ké đến thì D được lấy ra khỏi hàng và duyệt các đinh kề chưa duyệt
của D, đó là E và G, sẽ được duyệt Và ENQUEUE (E, Q)
Tiếp đến, DEQUEUE (F) được lấy ra khỏi hàng Không có đỉnh nào
kề với F mà chưa được duyệt Vậy nên không duyệt thêm đỉnh nào
Do không có đỉnh nào kè với E và G mà chưa được duyệt nên đỉnh E
và G làm tương tự F, E rồi tới G được lây ra khỏi hàng, hàng trở thành rỗng
và giải thuật két thúc
Nguyễn Văn Khang Trang - 11 -
Trang 17IV GIỚI THIỆU CHƯƠNG TRÌNH
Để khởi động chương trình Demo bằng cách vào thư mục FXPfs vào thư
mục dist sau đó có 2 cách đề thực thi chương trinh :
¥ Click chuột phải vào tép FXbfs(type: Executable Jar File) Sau dé
click vao Open dé chay Demo
He Edit View Took Help
ử Km Name ete modified
Be wart files
File Ede View Tools Help
We Favorites mos
El Recent Places '} web-fles
Hình 5: Giao diện đầu của chương trình