Lý thuyết đồ thị giải bài tập tìm đường đi ngắn nhất giải thuật toán dijkstra thuật toán bellman ford

13 11 0
Lý thuyết đồ thị   giải bài tập tìm đường đi ngắn nhất giải thuật toán dijkstra thuật toán bellman ford

Đ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

Lý thuyết đồ thị giải bài tập tìm đường đi ngắn nhất giải thuật toán dijkstra thuật toán bellman ford giải thuật dijkstra giải thuật bellman ford giải thuật tìm đường đi ngắn nhất. Tìm đường đi ngắn nhất từ đỉnh nguồn đến các đỉnh còn lại

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN – HỆ VB2 ĐÀO TẠO TỪ XA  BÁO CÁO BÀI TẬP TUẦN GVHD Lý Thuyết: Đặng Trần Minh Hậu GDHD Thực hành: Nguyễn Ngọc Thảo LỚP: Lý Thuyết Đồ Thị - CSC00008 NHÓM 32  MỤC LỤC A Bài tập lý thuyết Câu Câu B Bài tập cài đặt Những lưu ý quan trọng Kết chạy chương trình 10 A BÀI TẬP LÝ THUYẾT Câu 1: Câu Cho đồ thị hình bên Hãy áp dụng giải thuậtDijkstra để tìm đường ngắn từ đỉnh A đến đỉnh lại Giả sử điểm kết thúc G set up L[S] = L[[k] = + ∞ Bước 1: Sự thay đổi T,L Prev qua vòng lặp a Lần + Đầu lần 1: - Sự thay đổi T,L Prev A B T A B L +∞ Prev -1 -1 - Vì G thuộc T  Tiếp tục C C +∞ -1 D D +∞ -1 E E +∞ -1 F F +∞ -1 G G +∞ -1 S S +∞ -1 E E F F +∞ G G +∞ S S - Chọn I = A ( L[A] = nhỏ ), loại A khỏi T SA DA EA k = S, L[S] > L[A] +DSA (+ ∞ > + 8)  L[S] = L[A] +DSA = + =  Prev[S] = A k = D, L[D] > L[A] +DDA (+ ∞ > +2)  L[D] = L[A] +DDA = + =  Prev[D] = A k = E, L[E] > L[A] +DEA (+ ∞ > +1)  L[E] = L[A] +DEA = + =  Prev[E] = A + Cuối lần - Sự thay đổi T,L Prev A T L B B +∞ C C +∞ D D Prev -1 -1 b Lần + Đầu lần - Sự thay đổi T,L Prev A B T B L +∞ Prev -1 -1 - Vì G thuộc T  Tiếp tục - -1 A A -1 -1 A C C +∞ -1 D D A E E A F F +∞ -1 G G +∞ -1 S S A F F +∞ -1 G G E S S A F F +∞ -1 G G E S S A Chọn I = E ( L[E] = nhỏ ), loại E khỏi T AE k = A, L[A] < L[E] +DAE (0 < + 1) BE k = B, L[B] > L[E] +DBE (+ ∞ > +6)  L[D] = L[E] +DBE = + =  Prev[B] = E k = G, L[G] > L[E] +DGE (+ ∞ > + 4)  L[G] = L[E] +DGE = + =  Prev[G] = E GE + Cuối lần - Sự thay đổi T,L Prev A T L Prev -1 B B E C C +∞ -1 D D A E C C +∞ -1 D D A E A c Lần + Đầu lần - Sự thay đổi T,L Prev A B T B L Prev -1 E - Vì G thuộc T  Tiếp tục - Chọn I = D ( L[D] = nhỏ ), loại D khỏi T AD k = A, L[A] < L[D] +DAD (0 < + 2) CD k = C, L[C] > L[D] +DCD (+ ∞ > 2+3)  L[C] = L[D] +DCD = 2+ =  Prev[C] = D k = F, L[F] > L[D] +DFD (+ ∞ > 2+4)  L[F] = L[D] +DFD = 2+ =  Prev[F] = D k = S, L[S] > L[D] +DSD (8 > 2+5)  L[S] = L[D] +DSD = + =  Prev[S] = D F D SD A + Cuối lần - Sự thay đổi T,L Prev A T L Prev -1 B B E C C D D E A A C C D D E A A F F D G G E S S D F F D G G E S S D F F D G G E S S D F F G G S S d Lần + Đầu lần - Sự thay đổi T,L Prev A T L Prev -1 B B E - Vì G thuộc T  Tiếp tục - Chọn I = C ( L[C] = nhỏ ), loại C khỏi T DC FC SC k = D, L[D] < L[C] +DDC (2 < + 3) k = F, L[F] < L[C] +DFC (6 < 5+9) k = S, L[S] < L[C] +DSC (7 < 5+6) + Cuối lần - Sự thay đổi T,L Prev A T L Prev -1 B B E C D E D A A C D E e Lần + Đầu lần - Sự thay đổi T,L Prev A T L B B - Prev -1 E Vì G thuộc T  Tiếp tục - D A A D E D F F G G S S D G Chọn I = G ( L[G] = nhỏ ), loại G khỏi T EG FG k = E, L[E] < L[G] +DEG (1 < + 4) k = F, L[F] > L[G] +DFG (6 > 5+ 0)  L[F] = L[G] + DFG = + =  Prev[F] = G + Cuối lần - Sự thay đổi T,L Prev A T L Prev -1 B B E C D E D A A C D E D A A F F G E f Lần + Đầu lần - Sự thay đổi T,L Prev A T L Prev -1 B B E - Vì G thuộc T  Tiếp tục - Chọn I = F ( L[F] = nhỏ ), loại F khỏi T CF DF E S S D k = C, L[C] < L[F] +DCF (5 < + 9) k = D, L[C] < L[F] +DDF (2 < 5+4) + Cuối lần - Sự thay đổi T,L Prev A T L Prev -1 B B E C D E F G D A A G E C D E F G 5 S S D g Lần + Đầu lần - Sự thay đổi T,L Prev qua vòng lặp A T L B B S S Prev -1 E D A - Vì G thuộc T  Tiếp tục - Chọn I = B ( L[B] = nhỏ ), loại B khỏi T EB A G E D S S D k = E, L[E] < L[B] +DEB (1 < 7+ 6) + Cuối lần - Sự thay đổi T,L Prev T L Prev A B C D E F G -1 E D A A G E h Lần + Đầu lần - Sự thay đổi T,L Prev T L Prev A B C D E F G -1 E D A A G E S S D E F G S A G E D - Vì G thuộc T  Tiếp tục - Chọn I = S ( L[S] = nhỏ ), loại S khỏi T AS CS D S k = A, L[A] < L[S] +DAS (0 < + 8) k = C, L[C] < L[S] +DCS (5 < 7+6) k = D, L[D] < L[S] +DDS (2 < 7+ 5) + Cuối lần - Sự thay đổi T,L Prev A B C D T L Prev -1 E D A Kết luận tóm tắt thay đổi T,L Prev qua vòng lặp T L Prev A B C D E F G S -1 E D A A G E D Bước 2: Đường ngắn từ đỉnh nguồn đến đỉnh đích Đường Từ A đến B : A  E  B Từ A đến C: A  D  C Từ A đến D: A  D Từ A đến E: A  E Từ A đến F: A  E G  F Từ A đến G: A  E  G Từ A đến S: A  D  S Chi Phí L[B] = L[C] = L[D] = L[E] = L[F] = L[G] = L[S] = Câu 2: Cho đồ thị hình bên Hãy áp dụng giải thuật Bellman-Ford để tìm đường ngắn từ đỉnh a đến đỉnh cịn lại Bước 1: Trình bày thay đổi đỉnh qua vòng lặp π k k=0,π= k=1,π= k=2,π= k=3,π= k=4,π= k=5,π= k=6,π= a 0 0 0 b +∞ -5(a) -5(a) -8(c) -16(d) -16(d) -16(d) c +∞ +∞ 18(s) 18(s) 18(s) 18(s) 18(s) d +∞ +∞ 25(s) -7(c) -7(c) -7(c) -7(c) e +∞ 13(a) -3(b) -3(b) -6(b) -14(b) -14(b) s +∞ 8(a) 8(a) 8(a) 8(a) 8(a) 8(a) Bước : Cho biết đường từ đỉnh nguồn đến đỉnh lại ( chi phí đường đi) mà giải thuật Bellman-Ford xác định thời điểm kết thúc giải thuật Đường Từ a đến b: a  s  c  d  b Từ a đến c: a  s  c Từ a đến d: a  s  c  d Từ a đến e: a  s  c  d  b Từ a đến s: a  s Chi Phí -16 18 -7 -14 B BÀI TẬP CÀI ĐẶT Những lưu ý quan trọng a Tổ chức folder/file - Câu - Chương trình cài đặt giải thuật Dijkstra chứa folder N32-BTCAIDAT-BTTuan04CAU1 - Câu - Chương trình cài đặt giải thuật Bellman-Ford chứa folder N32-BTCAIDATBTTuan04-CAU2 b Đường dẫn bắt đầu chương trình - Lưu ý copy đường dẫn vào hàm main file Program.cs để chương trình truy xuất vào file ( bơi màu vàng hình hình )* *ví dụ đường dẫn: @"D:\VB KHTN\Lý thuyết đồ thị\Bai Tap\Bài tập tuần 04 - Có tính điểm\N32-21880053,21880147BTTuan04\SOURCE\TestCaseDijkstra1.txt" Hình 1.1: Ví dụ đường dẫn tập tin đầu chương trình cài đặt thuật tốn Dijkstra Hình 1.2: Ví dụ đường dẫn tập tin đầu chương trình cài đặt thuật tốn Bellman-Ford Kết chạy chương trình a Chạy thuật tốn Dijkstra Hình 2.1: Kết chạy testcase – chương trình cài đặt thuật tốn Dijkstra Hình 2.2: Kết chạy testcase – chương trình cài đặt thuật tốn Dijkstra b Chạy thuật tốn Bellman-Ford Hình 2.3: Kết chạy testcase – chương trình cài đặt thuật tốn Bellman-Ford Hình 2.4: Kết chạy testcase – chương trình cài đặt thuật toán Bellman-Ford ... 8(a) 8(a) 8(a) 8(a) Bước : Cho biết đường từ đỉnh nguồn đến đỉnh cịn lại ( chi phí đường đi) mà giải thuật Bellman- Ford xác định thời đi? ??m kết thúc giải thuật Đường Từ a đến b: a  s  c  d ... hình )* *ví dụ đường dẫn: @"D:VB KHTN Lý thuyết đồ thị Bai Tap Bài tập tuần 04 - Có tính đi? ??mN32-21880053,21880147BTTuan04SOURCETestCaseDijkstra1.txt" Hình 1.1: Ví dụ đường dẫn tập tin đầu chương...MỤC LỤC A Bài tập lý thuyết Câu Câu B Bài tập cài đặt Những lưu ý quan trọng Kết chạy chương trình 10 A BÀI TẬP LÝ THUYẾT

Ngày đăng: 01/09/2022, 16:35