1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNHĐỀ TÀI LÍ THUYẾT ĐỒ THỊ

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

Tiêu đề Báo cáo Bài Tập Lớn Môn Đại Số Tuyến Tính Đề Tài 6: Lí Thuyết Đồ Thị
Người hướng dẫn ThS. Nguyễn Hữu Hiệp
Trường học Trường Đại Học Bách Khoa TP.HCM
Chuyên ngành Toán học, Công nghệ Thông tin
Thể loại Báo cáo bài tập lớn
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 16
Dung lượng 720,55 KB

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

Nội dung

Trong khoa học máy tính và trong toán học, thuật toán tìm đường đi ngắn nhất trong đồ thị là một bài toán thường được vận dụng trong các ứng dụng tin học.. Trong các ứng dụng thực tế, bà

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

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

KHOA KHOA HỌC ỨNG DỤNG

BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNH

ĐỀ TÀI 6: LÍ THUYẾT ĐỒ THỊ

Giảng viên hướng dẫn: ThS Nguyễn Hữu Hiệp

Nhóm thực hiện: Nhóm 6 Lớp: L03

Trang 2

DANH SÁCH THÀNH VIÊN

Trang 3

MỤC LỤC

DANH SÁCH THÀNH VIÊN 2

LỜI MỞ ĐẦU 4

I GIỚI THIỆU CHUNG 5

1 Lý thuyết đồ thị 5

2 Sơ lược về thuật toán Floyd Warshall 5

II CƠ SỞ LÝ THUYẾT 6

III THUẬT TOÁN FLOYD WARSHALL 9

1 Ý tưởng, cách giải 9

2 Giải thuật toán trong matlab 10

IV VÍ DỤ 12

1 Ví dụ 1 12

2 Ví dụ 2 13

3 Ví dụ 3 14

V.TÀI LIỆU THAM KHẢO 17

VI.TỔNG KẾT 17

VII.NHẬN XÉT CỦA GIÁO VIÊN 17

Trang 4

LỜI MỞ ĐẦU

Với sự ra đời của Internet, tất cả các trường học hiện nay đều đã áp dụng các kiến thức, kĩ năng và hiểu biết về công nghệ thông tin trong các môn học nhằm nâng cao hiệu quả dạy

và học

Trong khoa học máy tính và trong toán học, thuật toán tìm đường đi ngắn nhất trong đồ thị là một bài toán thường được vận dụng trong các ứng dụng tin học Trong các ứng dụng thực tế, bài toán tìm đường đi ngắn nhất giữa hai đỉnh của một đồ thị có một ý nghĩa to lớn Ví dụ, bài toán chọn một hành trình tiết kiệm nhất (về tiêu chuẩn khoảng cách, thời gian hoặc chi phí) trên một mạng lưới giao thông đường bộ, đường thủy, Hiện nay có rất nhiều các phương pháp để giải các bài toán như vậy Thế nhưng thông thường, các thuật toán được xây dựng dựa trên cơ sở lý thuyết đồ thị là hiệu quả cao nhất Sau đây chúng ta sẽ xét đến thuật toán Floyd Warshall, một trong những thuật toán tìm đường

đi ngắn nhất được xây dựng dựa trên lí thuyết đồ thị Mong thầy và các bạn theo dõi và góp ý để chủ đề của chúng em được hoàn thiện hơn

Trang 5

I GIỚI THIỆU CHUNG:

1 Lịch sử lý thuyết đồ thị:

Bài toán bảy cây cầu Euler, còn gọi là Bảy cầu ở Konigsberg là bài toán nảy sinh từ thành phố Konigsberg, Phổ Bài toán đặt ra là tìm một tuyến đường mà đi qua mỗi cây cầu một lần và chỉ đúng một lần (bất kể điểm xuất phát hay điểm tới) Năm 1736, Leonhard Euler

đã chứng minh rằng bài toán này là không có lời giải Kết quả này là cơ sở phát triển của

lý thuyết đồ thị

Năm 1852 Francis Guthrie đưa ra bài toán bốn màu về vấn đề liệu chỉ với bốn màu có thể

tô màu một bản đồ bất kì sao cho không có hai nước nào cùng biên giới được tô cùng màu Bài toán này được xem như đã khai sinh ra lý thuyết đồ thị và chỉ được giải sau một thế kỉ vào năm 1976 bởi Kenneth Appel (1932 -) và Wolfgang Haken (1928 - )

2 Sơ lược về thuật toán Floyd Warshal:

2.1 Giới thiệu:

Thuật toán Floyd–Warshall còn được gọi là thuật toán Floyd được Robert Floyd tìm ra

năm 1962

Thuật toán Floyd là một thuật toán giải quyết bài toán tìm đường đi ngắn nhất trong một

đồ thị có hướng dựa trên các đỉnh trung gian Khi cần chỉ ra đường đi ngắn nhất của mọi cặp đỉnh trong đồ thị thì thuật toán Floyd chính là công cụ giúp ta thực hiện chỉ trong một lần chạy Hơn thế nữa, cách tiếp cận và cài đặt của nó cũng khá đơn giản và quen thuộc 2.2 Tác dụng:

Thuật toán Floyd-Warshall được thiết kế để tính toán đường đi ngắn nhất giữa mọi cặp điểm trong đồ thị có hướng

2.3 Ưu điểm:

- Tìm được đường đi ngắn nhất giữa tất cả các điểm trong đồ thị với trọng số âm hoặc dương, trong đồ thị có hướng hoặc vô hướng

- Chỉ với một lần chạy thuật toán sẽ cho ta kết quả

- Phát hiện được chu trình âm trong đồ thị

Trang 6

2.4 Nhược điểm:

- Trong đồ thị không được có vòng nào có tổng các cạnh là âm, nếu có vòng như vậy ta không thể tìm được đường đi ngắn nhất (mỗi lần đi qua vòng này độ dài quãng đường lại giảm, nên ta có thể đi vô hạn lần.)

II CƠ SỞ LÝ THUYẾT

1 Đồ thị:

Định nghĩa 1.1: Đồ thị là một tập các điểm gọi là đỉnh nối với nhau bởi các cạnh

Thông thường, đồ thị được vẽ dưới dạng một tập các điểm (đỉnh, nút) nối với nhau

bởi các đoạn thẳng (cạnh)

Định nghĩa 1.2: Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau nếu (u,v)

là cạnh của đồ thị G Nếu e= (u,v) là cạnh của đồ thị ta nói cạnh này là liên thuộc với hai đỉnh u và v, hoặc cũng nói là nối đỉnh u và đỉnh v, đồng thời các đỉnh u và v sẽ

được gọi là các đỉnh đầu của cạnh (u,v)

Ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên thuộc với nó và sẽ

ký hiệu là deg(v)

Đỉnh bậc 0 gọi là đỉnh cô lập, đỉnh bậc 1 gọi là đỉnh treo

Định lý 1: Giả sử G = (V,E) là đồ thị vô hướng với m cạnh Khi đó tổng bậc của tất cả các đỉnh bằng hai lần số cung

2 Đồ thị vô hướng và đồ thị có hướng:

2.1 Đồ thị vô hướng: là một cặp không có thứ tự G=(V, E), trong đó:

V là tập các đỉnh hoặc nút.

● E, tập các cạnh Hai đỉnh thuộc một cạnh được gọi là các đỉnh đầu cuối của cạnh đó

Hình 2.2.1: đồ thị vô hướng

Trang 7

2.2 Đồ thị có hướng: là một cặp không có thứ tự G=(V, A), trong đó:

V là tập các đỉnh hoặc nút.

A là tập các cạnh có hướng hoặc gọi là cung.

Một cạnh e = (u, v) được coi là có hướng từ u tới v; u được gọi là điểm đầu/gốc và v được gọi là điểm cuối/ngọn của cạnh

Hình 2.2.2: đồ thị có hướng

3 Đơn đồ thị và đa đồ thị:

3.1 Đơn đồ thị: là đồ thị được tạo thành từ tập hợp các đỉnh nối bởi các cạnh, trong

đó các cạnh có hướng liên kết với chúng thỏa điều kiện: nếu x và y là hai đỉnh thì đồ thị chỉ được phép có tối đa một trong hai cung (x, y) hoặc (y, x).

3.2 Đa đồ thị: là đồ thị mà không thỏa mãn đơn đồ thị Đa đồ thị có hướng là một

đồ thị có hướng, trong đó, nếu x và y là hai đỉnh thì đồ thị được phép có cả hai cung (x, y) và (y, x)

4 Ma trận kề của đồ thị:

Xét đơn đồ thị vô hướng G= (V,E), với tập đỉnh V={1,2,…,n}, tập cạnh E={e1,e2,

…,em}

Ta gọi ma trận kề của đồ thị G là ma trận A=(aịj) thỏa

aij=

Ví dụ: Cho đồ thị như hình vẽ:

Trang 8

Hình 2.4.1: Đồ thị vô hướng

Ma trận kề của đồ thị này là A=

Giải thích: Có đường nối từ A đến B nên phần tử a12=1, không có đường nối từ D

đến C nên a43=0 Tương tự cho các phần tử còn lại

Ví dụ: Cho đồ thị có trọng số như hình

Hình 2.4.2: Đồ thị có trọng số

Ma trận kề của đồ thị này là A=

Ví dụ: Cho đồ thị có hướng và có trọng số như hình

Trang 9

Hình 2.4.3: Đồ thị có hướng và có trọng số

Ma trận kề của đồ thị này là A=

III THUẬT TOÁN FLOYD WARSHALL

1 Ý tưởng, cách giải

1.1 Ý tưởng:

Từ bài toán đã cho, chuyển các số liệu về dạng ma trận trọng số A Mỗi ô A[i,j] được lấp đầy bởi khoảng cách từ đỉnh i tới đỉnh j, nếu không có đường đi nào từ đỉnh i tới đỉnh j thì ô đó sẽ có giá trị là ∞ Sau bước lặp thứ k, A[i,j] chứa độ dài đường đi ngắn nhất từ đỉnh i đến đỉnh j (có thể đi qua đỉnh khác rồi đến j), các đỉnh nó đi qua có chỉ số không vượt quá k

1.2 Cách giải:

Bước 1: Viết ma trận kề A của đồ thị

Bước 2: Chọn lần lượt từng đỉnh của đồ thị làm đỉnh trung gian Giả sử chọn đỉnh k làm đỉnh trung gian Ta giữ nguyên hàng k, cột k của ma trận A, giữ nguyên các

phần tử trên đường chéo của A

Bước 4: Kí hiệu Ak là ma trận A sau lần lặp thứ k, khi đó Ak[i,j] được tính theo công thức sau:

Ak[i,j] = min( Ak-1[i,j], Ak-1[i,k] + Ak-1[k,j] ) Bước 4: Sau đó, ta thực hiện n lần lặp Sau lần lặp thứ k, ma trận A sẽ chứa độ dài

các đường đi ngắn nhất chỉ đi qua các đỉnh thuộc {1,2, ,k}

Bước 5: Do đó, sau n lần lặp ta nhận được ma trận A chứa độ dài các đường đi ngắn nhất

2 Giải thuật toán trong matlab:

Các hàm matlab cơ bản được sử dụng trong bài toán:

Clear clear all -Xóa hết mọi giá trị, biến, dữ liệu ban đầu

Input A=input(‘tên biến’) -Nhập vào 1 giá trị cho biến A

Min N= Min (A,B) -Nhập giá trị N bởi giá trị của biến nhỏ hơn trong

Trang 10

hai biến A và B

Ones ones(N,N) -Tạo ra ma trận các phần tử 1 cấp N

If-else-end

If-(else)-end -Câu l nhệ if xác đ nh điềều ki n ho c 1 nhóm điềều ị ệ ặ

ki n x y ra thì cho phép th c hi n các câu l nhệ ả ự ệ ệ Fprintf Fprint(‘ tên biến’) -Thực hiện ghi định dạng vào màn hình

Disp disp(S) -Xuất giá trị của biến S ra màn hình

Trang 11

Đoạn code được sử dụng trong Matlab:

Trang 12

IV VÍ DỤ

1 Ví dụ 1 : Ở khu nhà của A, các địa điểm 1,2,3,4,5 (lần lượt là khu mua sắm, ngân

hàng, công viên, trường học, siêu thị) cách nhau những quãng đường như hình vẽ

mô tả Hãy tìm đường đi ngắn nhất giữa các địa điểm trên

Giải: Từ hình vẽ trên ta lập được ma trận biểu diễn đường đi như sau:

Giải thích: Ma trận 5*5 được lập nên bởi các phần tử hàng i cột j ứng với khoảng cách giữa các địa điểm với nhau khi đã cho sẵn, với các đường đi chưa xác định được thì ta nhập vào giá trị tại chỉ số đó là ∞ , khoảng cách từ điểm đó đến chính nó sẽ là 0

Đây là kết quả của VD1 sau khi cho chạy trên phần mềm Matlab:

12

Trang 13

Khi đó ta có thể hiểu là đường đi ngắn nhất từ 3 đến 1 sẽ bằng 7km, tức là từ đường đi từ công viên qua ngân hàng rồi đến khu mua sắm sẽ là đường ngắn nhất, tương tự với các cặp địa điểm còn lại

2 Ví dụ 2 : Giả sử bạn có 5 người bạn là Quyền, Quốc, Quý, Tân, Thắng Bạn biết

một vài con đường và chiều dài quãng đường dẫn đến nhà các bạn đó (bản đồ bên dưới) Nhưng bạn không biết đi đường nào ngắn nhất, tuy nhiên nhờ tìm hiểu về thuật toán Floyd Warshall bạn đã có thể tìm được hướng đi ngắn nhất Hãy tạo ma trận đường đi ngắn nhất giữa nhà mỗi bạn

Giải: Từ bản đồ trên ta có ma trận sau:

(Quy ước các phần tử của ma trận tương tự như ví dụ 1)

Ta sử dụng thuật toán Floyd Warshall để biến đổi ma trận trên:

Sau đây là kết quả của VD2 chạy trên phần mềm Matlab:

13

Trang 14

Từ ma trận kết quả, ta biết được quãng đường ngắn nhất giữa mỗi nhà.

3 Ví dụ 3 : Tìm đường đi ngắn nhất từ Điện Biên đến Côn Đảo? Biết sơ đồ đường đi

như hình vẽ:

Giải: Giả sử các hàng, cột thứ 1,2,3,4,5,6,7,8,9 lần lượt là Điện Biên, Hà Nội, Hải Phòng, Vinh,

Đà Năng, Nha Trang, Cần Thơ Ta sẽ có được ma trận trọng số như sau:

Đây là kết quả của VD3 chạy trên phần mềm Matlab:

14

Trang 15

Do đó ma trận đường đi ngắn nhất sẽ là:

Vậy đường đi ngắn nhất từ Điện Biên đến Côn Đảo là 1672 (đvđd)

Kết luận: Qua các ví dụ trên, ta có thể thấy nhờ có thuật toán Floyd Warshall ứng dụng

lý thuyết đồ thị mà các bài toán thực tế tìm đường đi ngắn nhất giữa các đỉnh trở nên dễ dàng hơn Thêm vào đó, do cách lập trình thuật toán trên công cụ Matlab không quá phức tạp nên thuật toán Floyd Warshall rất lợi hại trong nhiều trường hợp so với các thuật toán tìm đường đi ngắn nhất khác

15

Trang 16

V.TÀI LIỆU THAM KHẢO

[1]:Đại số tuyến tính - Đặng Văn Vinh

[2]: https://www.mathworks.com/matlabcentral/fileexchange/11549-floyd-shortest-path-routing

[4]:Wikipedia

VI.TỔNG KẾT

Với sự phân công chuẩn bị kỹ lưỡng và cùng với sự nổ lực cố gắng hết mình, nhóm đã hoàn thành đề tài được giao và Matlab đã cho ra kết quả như mong muốn

Qua phần bài tập lớn này nhóm đã biết được :

- Thao tác giải toán trên Matlab

- Làm bài toán trở nên sinh động hơn, nâng cao sự hứng thú đối với môn học

- Trau dồi kỹ năng học tập và làm việc nhóm hiệu quả

- Nâng cao tinh thần trách nhiệm và thắt chặt tính đoàn kết của các thành viên trong

nhóm

VII.NHẬN XÉT CỦA GIÁO VIÊN

-

16

Ngày đăng: 02/06/2022, 18:34

HÌNH ẢNH LIÊN QUAN

Hình 2.2.1: đồ thị vô hướng - BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNHĐỀ TÀI LÍ THUYẾT ĐỒ THỊ
Hình 2.2.1 đồ thị vô hướng (Trang 6)
Ví dụ: Cho đồ thị có trọng số như hình - BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNHĐỀ TÀI LÍ THUYẾT ĐỒ THỊ
d ụ: Cho đồ thị có trọng số như hình (Trang 8)
Hình 2.4.1: Đồ thị vô hướng Ma trận kề của đồ thị này là A=  - BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNHĐỀ TÀI LÍ THUYẾT ĐỒ THỊ
Hình 2.4.1 Đồ thị vô hướng Ma trận kề của đồ thị này là A= (Trang 8)
Hình 2.4.3: Đồ thị có hướng và có trọng số Ma trận kề của đồ thị này là A=  - BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNHĐỀ TÀI LÍ THUYẾT ĐỒ THỊ
Hình 2.4.3 Đồ thị có hướng và có trọng số Ma trận kề của đồ thị này là A= (Trang 9)
Disp disp(S) -Xuất giá trị của biến S ra màn hình. - BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNHĐỀ TÀI LÍ THUYẾT ĐỒ THỊ
isp disp(S) -Xuất giá trị của biến S ra màn hình (Trang 10)
Giải: Từ hình vẽ trên ta lập được ma trận biểu diễn đường đi như sau: - BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNHĐỀ TÀI LÍ THUYẾT ĐỒ THỊ
i ải: Từ hình vẽ trên ta lập được ma trận biểu diễn đường đi như sau: (Trang 12)

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