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

Niên luận 1 tên Đề tài duyệt Đồ thị theo chiều rộng (bfs

24 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Duyệt Đồ Thị Theo Chiều Rộng (BFS)
Tác giả Nguyễn Văn Khang
Người hướng dẫn ThS. Triệu Vĩnh Viêm
Trường học Trường Đại Học Bạc Liêu
Chuyên ngành Công Nghệ Thông Tin
Thể loại niên luận
Năm xuất bản 2020 - 2021
Thành phố Bạc Liêu
Định dạng
Số trang 24
Dung lượng 5,81 MB

Nội dung

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 4

DANH 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 6

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 để 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 7

AI 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 8

Duyệ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 9

CHƯƠ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 11

CHƯƠ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 12

Duyệ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 13

CHƯƠ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 14

Duyệ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 15

2 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 17

IV 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

Ngày đăng: 23/12/2024, 17:47