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

Bài toán tìm đường đi ngắn nhất và ứng dụng

102 2,6K 14

Đ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

Định dạng
Số trang 102
Dung lượng 2,09 MB

Nội dung

Theo lý thuyết đồ thị đó là bài toán tìm đường đi ngắn nhất giữa các đỉnh của một đồ thị.. 1.2 Mục đích nghiên cứu Nội dung của luận văn là trình bày một số kiến thức cơ bản về lý thuyế

Trang 1

MSSV: B1200416 Lớp SP Toán K38

Cần Thơ, 2016

Trang 2

LỜI CẢM ƠN

Em xin chân thành gửi lời cảm ơn đến lãnh đạo nhà trường, các Thầy Cô trong trường đã tạo điều kiện thuận lợi để em có thể học tập và rèn luyện trong những năm học vừa qua, đặc biệt là Thầy Cô Khoa Sư phạm và trước nhất là Thầy Cô Bộ môn Sư phạm Toán đã tận tình giảng dạy, truyền thụ cho em những kiến thức cũng như những kinh nghiệm quý báu để làm hành trang cho em trên con đường giảng dạy và nâng cao trình độ của mình sau này

Em xin gửi lời cảm ơn sâu sắc đến cô Phạm Thị Vui, là giáo viên hướng dẫn luận văn cho em Nhờ sự hướng dẫn và giúp đỡ tận tình của cô đã giúp em hoàn thành tốt luận văn này Em xin gửi lời cảm ơn đến bạn bè, gia đình và mọi người xung quanh đã động viên, ủng hộ và giúp đỡ em trong suốt quá trình học tập và hoàn thành luận văn này

Trong quá trình hoàn thành luận văn, tuy em đã cố gắng nổ lực nhưng do thời gian có hạn nên chắc chắn vẫn còn nhiều thiếu sót Rất mong nhận được ý kiến góp ý quý báu của các Thầy Cô và bạn đọc

Cần Thơ, ngày tháng năm 2016

sinh viên thực hiện

Lưu Thị Hồng Trang

Trang 3

Mục Lục

PHẦN MỞ ĐẦU 1

1.1 Lý do chọn đề tài 1

1.2 Mục đích nghiên cứu 1

1.3 Phương pháp nghiên cứu 2

1.4 Phạm vi nghiên cứu 2

1.5 Nội dung của luận văn 2

PHẦN NỘI DUNG 3

Chương 1 3

KIẾN THỨC CHUẨN BỊ 3

1.1 Đồ thị 3

1.1.1 Sơ lược về đồ thị 3

1.1.2 Một số khái niệm 3

1.1.3 Một số ví dụ về đồ thị 4

1.2 Một số khái niệm liên quan đến đồ thị 7

1.2.1 Cạnh bội và khuyên 7

1.2.2 Đơn đồ thị 7

1.2.3 Đa đồ thị 8

1.2.4 Giả đồ thị 10

1.2.5 Đồ thị có trọng số 10

1.2.6 Bậc của đỉnh trong đồ thị 11

1.3 Biễu diễn đồ thị 14

1.3.1 Biễu điễn đồ thị bằng hình học 14

1.3.2 Biểu diễn đồ thị bằng ma trận 15

1.3.3 Biểu diễn đồ thị bằng bảng 19

Trang 4

1.4 Đường đi – chu trình – tính liên thông trong đồ thị 20

1.4.1 Đường đi 20

1.4.3 Tính liên thông trong đồ thị 21

Chương 2 25

BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT 25

2.1 Bài Toán Tìm Đường Đi Ngắn Nhất 25

2.1.1 Giới thiệu bài toán 25

2.1.2 Phát biểu bài toán tìm đường đi ngắn nhất trên đồ thị 25

2.1.3 Một số khái niệm 26

2.2 Thuật toán Dijkstra 27

2.2.1 Giới thiệu thuật toán Dijkstra 27

2.2.2 Thuật toán Dijkstra 29

2.2.3 Ví dụ 33

2.2.4 Định lí 1 39

2.2.5 Định lí 2 39

2.2.6 Định lí 3 41

2.2.7 Lưu đồ thuật toán Dijkstra 42

2.3 Thuật toán Ford-Bellman 43

2.3.1 Giới thiệu thuật toán Ford-Bellman 43

2.3.2 Tư tưởng của thuật toán Ford-Bellman 44

2.3.3 Ví dụ 45

2.3.4 Lưu đồ thuật toán Ford-Bellman 52

2.4 Thuật toán Hedetniemi 53

2.4.1 Giới thiệu thuật toán Hedetniemi 53

2.4.2 Phép cộng hai ma trận Hedetniemi 53

2.4.3 Thuật toán Hedetniemi 54

2.4.5 Lưu đồ thuật toán Hidetniemi 57

Trang 5

2.5 Một số bài toán tìm đường đi ngắn nhất mở rộng 58

2.5.1 Bài toán 1 58

2.5.2 Bài toán 2 64

Chương 3 76

ỨNG DỤNG 76

3.1 Tổng quan về ứng dụng của các bài toán tìm đường đi ngắn nhất kết hợp với bản đồ số 76

3.2 Bài toán xe buýt 77

3.2.1 Hiện trạng hệ thống xe buýt 77

3.2.2 Cách thức đón xe buýt 78

3.2.3 Chức năng chính và những yêu cầu cần có của ứng dụng WebGIS 79

3.2.4 Tìm đường đi ngắn nhất 79

3.2.5 Tìm trạm dừng/nhà chờ gần nhất 81

3.3 Bài toán xe taxi 82

3.4 Công tác phòng cháy chữa cháy 85

3.5 Mở rộng của bài toán xe buýt 88

Kết Luận 94

Trang 6

Danh Mục Hình

Hình 1 1: Đồ thị “lấn tổ” 4

Hình 1 2: Đồ thị ảnh hưởng 5

Hình 1 3: Đồ thị biểu diễn kết quả của các cuộc thi đấu 6

Hình 1 4: Đồ thị có ưu tiên trước sau 7

Hình 1 5: Đơn đồ thị vô hướng 8

Hình 1 6: Đơn đồ thị có hướng 8

Hình 1 7: Đa đồ thị vô hướng 9

Hình 1 8: Đa đồ thị có hướng 9

Hình 1 9: Giả đồ thị 10

Hình 1 10: Đồ thị biểu diễn khoảng cách đường dây điện thoại giữa các thành phố 10

Hình 1 11: Biểu diễn hình học của đồ thị vô hướng 14

Hình 1 12: G là đồ thị liên thông, H không là đồ thị liên thông 22

Hình 1 13: Đồ thị liên thông mạnh 24

Hình 1 14: Đồ thị liên thông yếu 24

Hình 3 1: Sơ đồ tương tác giữa người dùng và hệ thông điều phối xe taxi 83

Hình 3 2: Sơ đồ tương tác giữa khách hàng truyền thống và hệ thống điều phối xe taxi 84

Hình 3 3: Quá trình xử lí của hệ thống ứng dụng công nghệ GIS tìm đường đi ngắn nhất tới điểm cháy 87

Hình 3 4: Quá trình xử lí của hệ thống ứng dụng công nghệ GIS tìm vị trí trụ nước gần địa điểm cháy nhất 88

Trang 7

PHẦN MỞ ĐẦU

1.1 Lý do chọn đề tài

Lý thuyết đồ thị là một trong những công cụ quan trọng có nhiều ứng dụng của Toán rời rạc Lý thuyết đồ thị sử dụng đồ thị để nghiên cứu, làm đơn giản hóa và giải các bài toán trong khi việc giải bài toán đó bằng công cụ khác của toán học rất khó

khăn

Tuy lý thuyết đồ thị được hình thành từ lâu, song nó vẫn còn ý nghĩa rất lớn đối với hiện tại và ngày càng được cải tiến và mở rộng Có thể nói nhà toán học Thụy Sỹ, Leonhard Euler, là người có những ý tưởng cơ bản đầu tiên cho sự ra đời của nó từ thế

kỉ 18 Ông đã dùng đồ thị để giải quyết bài toán cầu Konigsberg nổi tiếng Cùng với sự phát triển của khoa học kỹ thuật và công nghệ, nhiều bài toán về mô hình mạng giao thông, mạng hàng không liên quan mật thiết tới lý thuyết đồ thị và thuật toán tìm kiếm trên đồ thị

Cùng với sự phát triển của xã hội, việc di chuyển cả về con người, hàng hóa và thông tin, càng ngày càng gia tăng Cùng với sự gia tăng đó thì yêu cầu cực tiểu về chi phí, khoảng cách, thời gian, cũng trở nên quan trọng hơn Theo lý thuyết đồ thị đó

là bài toán tìm đường đi ngắn nhất giữa các đỉnh của một đồ thị Chẳng hạn, bài toán tìm đường bay ngắn nhất giữa các thành phố, bài toán tìm tuyến xe buýt từ địa điểm này đến địa điểm kia sao cho tiết kiệm chi phí nhất, v.v Bài toán tìm đường đi ngắn nhất càng trở nên cấp thiết và quan trọng đối với cả hiện tại và tương lai

Do sự quan trọng và cấp thiết của bài toán tìm đường đi ngắn nhất nên đã có nhiều nhà toán học đã đưa ra nhiều thuật toán để giải và được vận dụng vào để giải quyết nhiều bài toán thực tế Trong đó các thuật toán được đưa ra, có ba thuật toán được nhắc đến nhiều nhất đó là thuật toán Dijkstra, thuật toán Ford-Bellman và thuật toán Hedetniemi

1.2 Mục đích nghiên cứu

Nội dung của luận văn là trình bày một số kiến thức cơ bản về lý thuyết đồ thị liên quan đến bài toán tìm đường đi ngắn nhất, giới thiệu bài toán tìm đường đi ngắn

Trang 8

nhất và một số thuật toán để giải Phần cuối cùng là một số ứng dụng thực tế áp dụng thuật toán tìm đường đi ngắn nhất

1.3 Phương pháp nghiên cứu

Tìm hiểu sách tham khảo, giáo trình, các bài báo cáo và một số website

1.4 Phạm vi nghiên cứu

Luận văn tập trung trình bày một số thuật toán để giải quyết một số bài toán tìm đường đi ngắn nhất, làm sáng tỏ một số định lí có liên quan và ý tưởng của ba thuật toán Dijkstra, Ford-Bellman và Hedetniemi để giải quyết bài toán tìm đường đi ngắn nhất Đồng thời, tìm hiểu và trình bày một số ứng dụng của thuật toán tìm đường đi ngắn nhất trong thực tế

1.5 Nội dung của luận văn

Luận văn ngoài phần mở đầu, phần kết luận, tài liệu tham khảo thì còn có phần nội dung gồm ba chương:

Chương 1: Kiến thức chuẩn bị: Trình bày một số kiến thức cơ bản của đồ thị liên

quan đến bài toán và thuật toán tìm đường đi ngắn nhất

Chương 2: Bài toán tìm đường đi ngắn nhất: Giới thiệu bài toán tìm đường đi

ngắn nhất Trình bày ba thuật toán đó là Dijkstra, Ford-Bellman và Hedetniemi để giải bài toán tìm đường đi ngắn nhất

Chương 3: Ứng dụng Trình bày một số ứng dụng của thuật toán tìm đường đi

ngắn nhất trong các bài toán thực tế hiện nay

Tuy đã cố gắng tìm hiểu và soạn thảo, song do hạn chế về thời gian nên luận văn tránh không khỏi thiếu sót Rất mong nhận được sự đóng góp của quý thầy cô để luận văn có thể hoàn thiện hơn

Trang 9

PHẦN NỘI DUNG Chương 1 KIẾN THỨC CHUẨN BỊ 1.1 Đồ thị

Nhiều lĩnh vực trong xã hội luôn tồn tại rất nhiều vấn đề và để giải quyết những vấn đề này chúng ta cần phải áp dụng đến các công cụ của toán học Chẳng hạn, bài toán tính số các tổ hợp khác nhau của các chuyến bay giữa các thành phố trong một mạng hàng không, để giải bài toán tìm đường đi tham quan tất cả các đường phố của một thành phố sao cho mỗi đường phố đi qua đúng một lần, bài toán tìm số các màu cần thiết để tô các vùng khác nhau của một bản đồ sao cho các vùng có chung ranh giới không bị trùng màu với nhau, và nhất là bài toán tìm đường đi từ địa điểm này đến địa điểm khác trong một thành phố sao cho thỏa mãn một trong các tiêu chí tiết kiệm nhất

về thời gian, nhiên liệu, khoảng cách Để giải những bài toán dạng này sẽ trở nên dễ dàng hơn rất nhiều nếu chúng ta áp dụng lý thuyết đồ thị trong khi việc áp dụng các công cụ khác của toán học sẽ khó khăn hơn

1.1.2 Một số khái niệm

Khái niệm 1: Đồ thị (graph) G  ( , ) V E là một bộ phận gồm 2 tập hợp VE, trong đóV   Các phần tử của V là các đỉnh (vertices), các phần tử của E là các cạnh (edges), mỗi cạnh tương ứng với 2 đỉnh

Trang 10

Khái niệm 2: Đồ thị có hướng là đồ thị có các cạnh được tạo bởi các cặp đỉnh có

thứ tự thuộc E

Giả sử cạnh e được bắt đầu từ đỉnh u và kết thúc tại đỉnh v thì đỉnh u được gọi là

đỉnh đầu và v được gọi là đỉnh cuối Hay nói cách khác, cạnh uvvu

Khái niệm 3: Đồ thị G '  ( ', ') V E được gọi là một đồ thị con (subgraph) của đồ thị G  ( , ) V E nếu V '  V E , '  E

Khái niệm 4: Đồ thị có số đỉnh và số cạnh hữu hạn được gọi là đồ thị hữu hạn

(finite graph), ngược lại được gọi là đồ thị vô hạn (infinite graph)

Trong luận văn này, nếu không nói gì thêm, thì ta hiểu, đồ thị được cho là đồ thị hữu hạn

1.1.3 Một số ví dụ về đồ thị

a) Đồ thị “lấn tổ” (Niche Overlap) trong sinh thái học

Đồ thị “lấn tổ” là đồ thị được dùng để biểu diễn sự tương tác qua lại giữa các loài vật trong một hệ sinh thái Chẳng hạn, sự cạnh tranh của các loài trong một hệ sinh thái

có thể mô hình hóa bằng đồ thị này Mỗi loài được biểu diễn bằng một đỉnh Một cạnh

vô hướng nối hai đỉnh nếu hai loài tương ứng được biểu diễn bằng các đỉnh này là cạnh tranh với nhau (cạnh tranh ở đây có thể là chúng có cùng chung nguồn thức ăn)

Ví dụ: Đồ thị lấn tổ giữa các loài

Hình 1 1: Đồ thị “lấn tổ”

Trang 11

Từ đồ thị này, ta có thể thấy Sóc và chim gõ kiến là cạnh tranh thức ăn với nhau, còn Quạ và Thú có túi thì không cạnh tranh thức ăn với nhau

Ví dụ: Cơ cấu tổ chức quản lí của công ty Bia cổ phần Hà Nội-Hải Phòng

Hình 1 2: Đồ thị ảnh hưởng

Từ đồ thị này, ta thấy cạnh Đại hội đồng cổ đông và Hội đồng quản trị, bắt đầu từ đỉnh Đại hội đồng cổ đông và kết thúc tại đỉnh Hội đồng quản trị Tức là,Đại hội cổ đông có quyền và nhiệm vụ thông qua định hướng phát triển, quyết định các phương án, nhiệm vụ sản xuất kinh doanh; quyết định sửa đổi, bổ sung vốn điều lệ của Công ty; bầu, miễn nhiệm, bãi nhiệm thành viên Hội đồng quản trị Tương tự, cạnh Ban giám đốc và Phòng tổng hợp, Giám đốc điều hành quyết định các vấn đề liên quan đến hoạt động sản xuất kinh doanh của Công ty, chịu trách nhiệm trước Hội đồng quản trị về việc thực hiện các quyền và nghĩa vụ được giao Phòng tổng hợp đảm nhận và chịu trách nhiệm trong công tác tham mưu xây dựng cơ cấu tổ chức quản lý sản xuất kinh

Trang 12

doanh, quy hoạch cán bộ, lập kế hoạch đào tạo và tuyển dụng lao động, xây dựng định mức lao động và đơn giá tiền lương hàng năm; tham mưu cho Ban giám đốc xây dựng quy chế trả lương, thưởng

c) Đồ thị biểu diễn kết quả của các cuộc thi đấu

Một cuộc thi đấu thể thao trong đó mỗi đội đấu với các đội khác Kết quả của cuộc thi đấu có thể được mô hình bằng một đồ thị có hướng trong đó mỗi đội tương ứng với một đỉnh Khi đội này thắng đội kia thì có một cạnh có hướng tương ứng đi từ đỉnh đại diện cho đội này đến đỉnh đại diện cho đội kia Đồ thị như vậy gọi là đồ thị biểu diễn kết quả của các cuộc thi đấu

Ví dụ: Kết quả của cuộc thi đấu bảng A, giải vô địch bóng đá Châu Âu năm 2016:

Đội này thắng đội kia, nếu tổng số điểm ghi bàn của đội này hơn đội kia bao gồm hai lượt đấu

Hình 1 3: Đồ thị biểu diễn kết quả của các cuộc thi đấu

Từ đồ thị này, ta thấy đội tương ứng Cộng Hòa Séc thắng Latvia Tương tự, đội Iceland thắng Kazakhtan

d) Đồ thị có ưu tiên trước sau

Trong khi thực hiện một công việc nào đó bao gồm một chuỗi các hoạt động khác nhau Các hoạt động này được sắp xếp theo một quy trình nhất định Nghĩa là, để thực hiện hoạt động 2 ta phải thực hiện hoạt động 1 trước Hay, để thực hiện được hoạt động này ta cần phải thực hiện một hoặc nhiều hoạt động khác trước đó Mỗi một hoạt động

Trang 13

ta kí hiệu là một đỉnh, một cạnh có hướng tương ứng với hai đỉnh Đồ thị như vậy, được gọi là đồ thị có ưu tiên trước sau

Ví dụ: Quy trình sản xuất bánh Pía

Hình 1 4: Đồ thị có ưu tiên trước sau

Từ đồ thị này ta thấy, để làm vỏ bánh thì chúng ta phải làm bột trước Tương tự,

để phân phối sản phẩm ra thị trường thì phải đưa bánh vào hộp, đóng gói và kiểm tra chất lượng trước

1.2 Một số khái niệm liên quan đến đồ thị

Trang 14

Đơn đồ thị vô hướng G  ( , ) V E là đơn đồ thị có các cạnh được tạo bởi các cặp đỉnh không có thứ tự thuộcE

Nhận xét: Đơn đồ thị có hướng là một đồ thị có hướng, trong đó, nếu u và v là

hai đỉnh bất kì thuộc đồ thị thì chỉ được phép có tối đa một trong hai cạnh uv hoặc vu

và đồ thị không có khuyên (loop)

Ví dụ: Đơn đồ thị có hướng

Hình 1 6: Đơn đồ thị có hướng

1.2.3 Đa đồ thị

Trang 15

Đa đồ thị G  ( , ) V E là đồ thị có khuyên hoặc có ít nhất một cặp đỉnh được nối với nhau bằng từ hai cạnh trở lên

Nhận xét: Đa đồ thị có hướng là một đồ thị có hướng, trong đó, đồ thị có khuyên

hoặc ít nhất có một cặp đỉnh uv, là hai đỉnh của đồ thị có cả hai cạnh uvvu

Ví dụ: Đa đồ thị có hướng

Hình 1 8: Đa đồ thị có hướng

Trang 16

Cho đồ thị hữu hạn G  ( , ) V E , với mỗi cạnh eE được tạo bởi hai đỉnh u v ,

Ta đặt tương ứng với một số thực w( , ) u v và gọi là trọng số của e Trọng số có thể là

độ dài khoảng cách, thời gian, chi phí, lợi nhuận, Đồ thị có các cạnh được đặt tương ứng trọng số như trên được gọi là đồ thị có trọng số

Ví dụ: Đồ thị biểu diễn khoảng cách đường dây điện thoại giữa các thành phố

Hình 1 10: Đồ thị biểu diễn khoảng cách đường dây điện thoại

giữa các thành phố

Trang 17

1.2.6 Bậc của đỉnh trong đồ thị

a) Đối với đồ thị vô hướng

Đỉnh v của đồ thị G được gọi là có bậc n nếu v kề với n đỉnh khác (v là đầu mút của n cạnh) Đỉnh uv được gọi là kề nhau nếu có một cạnh nối hai đỉnh uv

- Cạnh tới đỉnh treo gọi là cạnh treo (pendant edge) Hay nói cách khác, cạnh treo

là cạnh nối một đỉnh khác của đồ thị với đỉnh treo

- Đồ thị mà mọi đỉnh đều là đỉnh cô lập gọi là đồ thị rỗng (null graph)

Ví dụ: Cho đồ thị sau

Ta có:

deg 4; deg 4; deg 5; deg 3;

deg 5; deg 5;deg 0.

Trang 18

 Định lý 1: Trong mọi đơn đồ thị G = (V, E) vô hướng, tổng số bậc của các

Hệ quả: Trong mọi đồ thị G  ( , ) V E , ta có:

Thật vậy, cho đồ thị G  ( , ) V E , gọi A là tổng số bậc của các đỉnh có bậc chẵn, B

là tổng số bậc của các đỉnh có bậc lẻ.Theo định lí 1 thì A+B=2m (chẵn), với m là số cạnh của đồ thị Vì A là tổng các số chẵn nên là số chẵn Vậy, B là số chẵn.

 Định lý 2: Trong mọi đồ thị G   V E ,  , có | V | 2  thì tồn tại ít nhất hai đỉnh cùng bậc

Chứng minh

Trang 19

Giả sử đồ thị G  ( , ) V E là đồ thị tùy ý có| V |   n 2 Ta xét hai trường hợp sau:

Trường hợp 1: Đồ thị có đỉnh bậc 0 Khi đó, trong đồ thị không có đỉnh nào kề

với đỉnh có bậc 0, do đó đỉnh có bậc lớn nhất là n-2 (và đỉnh có bậc thấp nhất là bậc 0) Vậy, bậc của mỗi đỉnh của đồ thị sẽ thuộc tập hợp {0; 1; 2; ; n-2} Tập hợp này gồm n-1 phần tử

Trường hợp 2: Đồ thị không có đỉnh bậc 0 Khi đó có thể có một đỉnh nào đó

liền kề với tất các cả đỉnh còn lại, nên đỉnh có bậc cao nhất lúc này là n-1 và đỉnh có bậc nhỏ nhất là 1 Vậy, bậc của mỗi đỉnh thuộc tập hợp {1; 2; 3; ; n-1} Tập hợp này gồm n-1 phần tử

Vậy, trong cả hai trường hợp bậc của mỗi đỉnh đều thuộc tập hợp số gồm n-1 phần tử Do đó, số đỉnh của đồ thị bằng n nên theo nguyên lý Dirichlet thì phải có ít nhất hai đỉnh cùng bậc.

Nguyên lí Dirichlet tổng quát: Nếu xếp nhiều hơn n đối tượng vào k cái hộp thì

tồn tại ít nhất một hộp chứ không ít hơn [n/k] + 1 đối tượng (ký hiệu [x] là phần nguyên của x, đó là số nguyên không vượt quá x)

 Định lý 3: Trong mọi đồ thị G = (V, E), có |V| >2 có đúng hai đỉnh cùng bậc

thì hai đỉnh này không thể đồng thời có bậc 0 hoặc bậc n-1

b) Đối với đồ thị có hướng

Cho đồ thị có hướngG   V E ,  và v V  là một đỉnh nào đó của đồ thị

Bậc vào của v kí hiệu là deg v là số cạnh đi các đỉnh khác tớiv

Bậc ra của v được kí hiệu là deg v là số cạnh đi từ các đỉnh v tới các đỉnh khác

Bậc của v kí hiệu là deg v deg v  deg v

Trang 20

Người ta thường biểu diễn hình học của đồ thị như sau:

- Biểu diễn mỗi đỉnh của đồ thị bằng một điểm (vòng tròn nhỏ, ô vuông nhỏ)

- Cạnh e được tạo bởi hai đỉnh u và v thì ta gọi là cạnh e tới hay liên thuộc (incident) với các đỉnh u và v Khi đó, u và v được gọi là hai đỉnh kề

- Một cạnh được biểu diễn bởi một đường (cong hay thẳng) nối 2 đỉnh liên thuộc với cạnh đó

Ví dụ: Cho đơn đồ thị vô hướng G có: V = {a, b, c, d, e} và E = {ab, ac, ad, bd,

cd, ce} Đồ thị được biểu diễn bằng hình học như sau:

Hình 1 11: Biểu diễn hình học của đồ thị vô hướng

Trang 21

Chú ý: Khi biểu diễn hình học các đồ thị, giao của các cạnh chưa chắc là đỉnh

của đồ thị

Ví dụ: Cho đa đồ thị vô hướng G có: V = {u, v, m, n} và E = {uv, um, vm, mn,

nm} Được biễu diễn như sau:

1.3.2 Biểu diễn đồ thị bằng ma trận

Người ta có thể biểu diễn đồ thị bằng ma trận Có 2 kiểu ma trận thường được dùng để biểu diễn đồ thị:

- Ma trận liên kết hay liền kề (adjacency matrix)

- Ma trận liên thuộc (incidence matrix)

 Ma trận liền kề đối với đồ thị vô hướng

Cho ma trận G   V E ,  có n đỉnhv v1, , 2 , v n Ma trận liền kề của G tương ứng với thứ tự các đỉnh v v1, , 2 ,v n là một ma trận A cấp n

A = (aij)n trong đó: aij là số cạnh nối v i với v j

Lưu ý: Mỗi khuyên được tính là hai cạnh

Nhận xét: 1 Ma trận liền kề của đồ thị vô hướng là một ma trận đối xứng

2 Số khuyên trong đồ thị bằng một nữa tổng các số hạng trên đường chéo chính của ma trận liền kề

Ví dụ: Cho đồ thị sau:

Trang 22

Đồ thị đã cho có ma trận liền liền kề là:

Chú ý: Ma trận liền kề của một đồ thị khác nhau tùy thuộc vào thứ tự liệt kê các

đỉnh Do đó, có tới n! ma trận liền kề khác nhau của một đồ thị n đỉnh vì có n! cách sắp xếp n đỉnh

Ví dụ: Hãy vẽ đồ thị có ma trận liền kề theo thứ tự của các đỉnh là a, b, c, d

[

Trang 23

Cho ma trận G   V E ,  có n đỉnh v v1, , 2 , .v n Ma trận liền kề của G tương ứng với thứ tự các đỉnh v v1, , 2 ,v n là một ma trận A cấp n

A = (aij)n trong đó: aij là số cạnh đi từ v i với v j

 Ma trận liên thuộc đối với đồ thị vô hướng

Người ta còn dùng ma trận liên thuộc để biểu diễn đồ thị Cho G = (V, E) là một

đồ thị vô hướng với v1, v2, …, vn là các đỉnh và e1, e2, …, em là các cạnh của G Khi đó,

ma trận liên thuộc của G theo thứ tự trên của V và E là một ma trận M = (mij)nxm với :

Trang 24

Có ma trận liên thuộc như sau:

Trong trường hợp, nếu trong ma trận liên thuộc có hai cột giống nhau thì hai cạnh

tương ứng là cạnh bội Trong ví dụ trên, ta thấy, cột e 5 và e 7 giống nhau, nên cạnh e 5

e 7 là cạnh bội

Cạnh của đồ thị là khuyên khi và chỉ khi cột tương ứng với nó trong ma trận liên thuộc chỉ chứa duy nhất một số 1 Khi đó số 1 thuộc hàng tương ứng với đỉnh liên thuộc với khuyên

 Ma trận liên thuộc đối với đồ thị có hướng

Trang 26

Bảng 1: Biểu diễn đồ thị bằng bảng Đỉnh Đỉnh liền kề

cần nêu ra đỉnh đầu v 0 và đỉnh cuối v n của đường đi, ta viết: đường đi v 0 -v n

 Một đường đi không qua cạnh nào lần thứ hai được gọi là đường đi đơn giản (đường đi đơn)

 Một đường đi không qua đỉnh nào lần thứ hai được gọi là đường đi sơ cấp

Lưu ý: Một đường đi sơ cấp là một đường đi đơn giản nhưng một đường đi đơn

giản có thể không là đường đi sơ cấp

Ví dụ: Ta có đồ thị sau:

Trang 27

Ta thấy, đường đi A, B, C, D, A, K là đường đi đơn giản nhưng không là đường đi

sơ cấp

1.4.2 Chu trình

Một đường đi khép kín (đỉnh đầu trùng với đỉnh cuối) và có độ dài n  3 được gọi là một chu trình (Cycle)

 Chu trình không đi qua cạnh nào lần thứ hai được gọi là chu trình đơn giản

 Chu trình không đi qua đỉnh nào lần thứ hai, trừ đỉnh đầu trùng với đỉnh cuối, được gọi là một chu trình sơ cấp

Định lý 1: Nếu đồ thị vô hướng G   V E ,  có V   n 3 và với mọi v V

bậc deg   v  2 thì trong đồ thị có tồn tại chu trình sơ cấp

Định lý 2: Nếu trong đồ thị vô hướng G   V E ,  có V   n 4 và với mọi

v V  mà bậc deg   v  3 thì trong đồ thị tồn tại chu trình sơ cấp có độ dài chẵn

1.4.3 Tính liên thông trong đồ thị

a) Tính liên thông trong đồ thị vô hướng

Định nghĩa: Một đồ thị vô hướng được gọi là liên thông nếu có đường đi giữa

mọi cặp đỉnh phân biệt của đồ thị

Ví dụ: Cho hai đồ thị G và H

Trang 28

Hình 1 12: G là đồ thị liên thông, H không là đồ thị liên thông

Ta thấy, G là đồ thị liên thông còn H là đồ thị không liên thông

Cho đồ thị G   V E ,  vàv V V’ là tập hợp các đỉnh của V liên thông với v, E’

là tập hợp các cạnh nối 2 đỉnh của V’ Khi đó đồ thị G ’   V ’, ’ E  được gọi là thành

phần liên thông (connected component) của G chứa v Hiển nhiên nếu v và u liên thông trong G thì thành phần liên thông của G chứa v cũng là thành phần liên thông chứa u

Định lý 1: Đồ thị G   V E ,  là liên thông khi và chỉ khi G có duy nhất một thành phần liên thông

Định lý 2: Trong mọi đồ thị vô hướng G   V E ,  có ít nhất n = 02 đỉnh

V   n 2  Nếu v v1, 2V thỏa deg   v1  deg   v2  n thì G là đồ thị liên thông

Chứng minh

Giả sử đồ thị G  ( , ) V E không liên thông, tức là tồn tại hai đỉnh a và b thuộc V

không liên thông với nhau

Khi đó trong đồ thị G tồn tại hai thanh phần liên thông: G1 chứa a, G2 chứa b Gọi

Trang 29

 1  2 ( 1 2 1 2   deg v  deg vn  1 )  ( n  1 )  nn  2 2

Từ (1) và (2) suy ra:

deg v  deg vn - 2 3 Theo giả thiết ta códeg   v1  deg   v2  n , nên (3) mâu thuẫn

Vậy, đồ thị G phải liên thông.

Hệ quả: Trong mọi đồ thị G  ( , ) V E có n đỉnh, nếu mọi đỉnhv V  , có

 

2

n

d v  thì G là đồ thị liên thông

 Định lí 3: Giữa mọi cặp đỉnh phân biệt của một đồ thị vô hướng liên thông

luôn có đường đi đơn

Chứng minh

Giả sử u và v là 2 đỉnh phân biệt của một đồ thị vô hướng liên thông G  ( , ) V E

Vì G liên thông nên có ít nhất một đường đi giữa u và v

Gọi (x 0 , x 1 , , x n) với x0 u x, nvlà đường đi các đỉnh của đường đi có độ dài ngắn nhất Đây chính là đường đi đơn cần tìm

Thật vậy, giả sử nó không là đường đi đơn khi xixj với0   i j Tức là giữa

đỉnh u và đỉnh v có một đường đi khác ngắn hơn qua các đỉnh

x x Khi đó x0, , ., x1 xi1, , ., xj xn cũng là đường đi đơn.

b) Tính liên thông trong đồ thị có hướng

 Liên thông mạnh (Strongly connected)

Đồ thị có hướng G  ( , ) V E được gọi là liên thông mạnh nếu có đường đi từ u đến v và từ v đến u,u v V , 

Ví dụ: Đồ thị liên thông mạnh

Trang 30

Hình 1 13: Đồ thị liên thông mạnh

 Liên thông yếu (Weakly connected)

Đồ thị có hướng được gọi là liên thông yếu nếu đồ thị vô hướng tương ứng của nó liên thông

Ví dụ: Đồ thị liên thông yếu

Hình 1 14: Đồ thị liên thông yếu

Đồ thị trên là liên thông yếu vì đồ thị có hướng không có đường đi từ E đến các đỉnh còn lại Nhưng, đồ thị vô hướng tương ứng thì liên thông

Định lý 4: Nếu trong đồ thị G = (V, E) có đúng hai đỉnh bậc lẻ thì hai đỉnh này

phải liên thông với nhau

Trang 31

Chương 2 BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT 2.1 Bài Toán Tìm Đường Đi Ngắn Nhất

2.1.1 Giới thiệu bài toán

Trong nhiều ứ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ị liên thông có một ý nghĩa to lớn Có thể dẫn bài toán như vậy về nhiều bài toán thực tế quan trọng Ví dụ, bài toán tìm một hành trình tiết kiệm nhất (theo tiêu chí thời gian, khoảng cách hoặc chi phí) trên mạng giao thông đường bộ, đường thủy hoặc đường hàng không, bài toán chọn một phương pháp tiết kiệm nhất để đưa một hệ động lực từ trạng thái xuất phát đến một trạng thái đích, bài toán lập lịch thi công các công đoạn trong một công trình thi công lớn sao cho tiết kiệm nhất về thời gian hoặc chi phí, bài toán lựa chọn con đường truyền tin với chi phí nhỏ nhất trong mạng thông tin, … Hiện nay có rất nhiều phương pháp để giải 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 lý thuyết đồ thị tỏ ra là các thuật toán hiệu quả nhất

2.1.2 Phát biểu bài toán tìm đường đi ngắn nhất trên đồ thị

Bài toán tìm đường đi ngắn nhất trên đồ thị GV E,  có trọng số dưới dạng tổng quát có thể phát biểu như sau: Tìm đường đi có tổng độ dài (trọng số) nhỏ nhất từ một đỉnh xuất phát s V  đến đỉnh đícht V  Đường đi như vậy được gọi là đường đi ngắn nhất từ s tới t, còn độ dài của nó được kí hiệu là d s t   , và còn gọi là khoảng

cách từ s tới t Nếu như không tồn tại đường đi từ s tới t thì ta sẽ đặt là d s t   ,  

Rõ ràng, nếu như mỗi chu trình trong đồ thị có độ dài dương, thì trong đường đi ngắn nhất không có đỉnh nào lặp lại (đường đi cơ bản) Mặt khác, nếu trong đồ thị có chu trình có độ dài âm (chu trình âm), thì khoảng cách của một số cặp đỉnh nào đó của

đồ thị có thể không xác định Bởi vì, bằng cách đi vòng theo chu trình này một số đủ lớn lần, ta có thể chỉ ra đường đi giữa các đỉnh này có độ dài nhỏ hơn bất cứ số thực cho trước nào Trong những trường hợp như vậy, có thể đặt vấn đề tìm đường đi cơ bản ngắn nhất, bởi vì nó chứa bài toán xét sự tồn tại đường đi Hamilton trong đồ thị như là

Trang 32

một trường hợp riêng Đường đi Hamiton là một đường đi sơ cấp, đi qua tất cả các đỉnh của đồ thị đúng một lần

Một tính chất của đường đi ngắn nhất nữa có thể phát biểu một cách không hình thức như sau: Mọi đường con của đường đi ngắn nhất cũng là đường đi ngắn nhất Tính chất này tuy rất hiển nhiên nhưng lại hàm chứa một nội dung đúng đắn rất sâu sắc, và người ta gọi đó là nguyên lí tối ưu Việc chứng minh tính đúng đắn của hầu hết các

thuật toán tìm đường đi ngắn nhất đều được xây dựng dựa trên nguyên lí này

Thuật toán là một khái niệm quan trọng của toán học Thuật toán là một dãy các thao tác trên các đối tượng, sao cho sau một số hữu hạn bước thực hiện, ta đạt được mục tiêu cần làm

Thuật toán Dijkstra giải quyết bài toán có dạng: Cho đồ thị G   V E ,  có trọng

số không âm Cho trước một đỉnh thuộc V, gọi là đỉnh nguồn Tìm đường đi ngắn nhất

từ đỉnh nguồn đến một trong các đỉnh còn lại của đồ thị được xác định trước

Sự hiện diện của dấu bất kì của trọng số cho phép, chẳng hạn, có thể để cải thiện chi phí hoặc lợi nhuận Thuật toán Dijkstra không cho phép xét tới những cạnh có trọng số âm Vì trong trường hợp một cạnh được đánh dấu thì ta không thể thay đổi gì cho những bước lặp tiếp theo Thuật toán Dijkstra còn được gọi là gán nhãn cố định

Để giải quyết bài toán này, ta áp dụng thuật toán Ford-Bellman

Trong khi thuật toán Dijkstra và thuật toán Ford-Bellman là để giải quyết bài toán tìm đường đi ngắn nhất giữa một cặp đỉnh đã được xác định trước, thì thuật toán Hedetniemi được xây dựng để giải quyết bài toán tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh của đồ thị

Trang 33

- Độ dài của đường đi p được ký hiệu d(p), là tổng các trọng số của các cạnh trên

kd( ) = w(v , v )

i=1

p

- Gọi P(u,v) là tập hợp tất cả các đường đi từ u đến v Độ dài đường đi ngắn nhất

từ u đến v được xác định bởi: d(u,v)=min{d( )p pP(u,v)}

- Đường đi ngắn nhất p min(u,v) từ đỉnh u đến đỉnh v là đường đi có độ dài ngắn nhất là d(u,v)

2.2 Thuật toán Dijkstra

2.2.1 Giới thiệu thuật toán Dijkstra

Thuật toán Dijkstra, mang tên của nhà khoa học máy tính người Hà Lan Edsger Dijkstra Thuật toán Dijkstra, ra đời vào năm 1956 và ấn bản năm 1959, là một thuật toán giải quyết bài toán đường đi ngắn nhất trong một đồ thị (có hướng hoặc vô hướng)

và không có cạnh nào của đồ thị mang trọng số âm

Ta xét đồ thị sau:

Ta tìm đường đi ngắn nhất từ a đến z Đối với đồ thị này, ta có thể dễ dàng tìm

được đường đi ngắn nhất bằng cách thử trực tiếp Tuy nhiên, ở đây ta sẽ phát triển thêm một số ý tưởng giúp ta hiểu thuật toán Dijkstra dễ dàng hơn Ta tìm độ dài đường

đi ngắn nhất từ a đến các đỉnh tiếp theo cho đến z thì ngừng lại

Trước tiên, chúng ta sẽ áp dụng cách thử trực tiếp cho đồ thị này

Trang 34

Các đỉnh liền kề với a ta có b, c, z Với ab = 10, ac = 15, az = 30

 b gần a nhất Với con đường ngắn nhất từ a đến b là a, b có độ là 10

Tiếp theo, ta tìm đỉnh tiếp theo gần a nhất trong các các đỉnh liền kề với a và b, ta

có:

Các đỉnh liền kề với a trừ b có c, z Ta có:

Đường đi từ a đến c qua a là a, c có độ dài là 15

 Đường đi từ a đến z qua a là a, z có độ dài là 30

Các đỉnh liền kề với b trừ a có e, z Ta có:

 Đường đi từ a đến e qua b là a, b, e có độ dài là 15

 Đường đi từ a đến z qua b là a, b, z có độ dài là 20

 c, e gần a nhất Với, con đường ngắn nhất từ a đến c là a, c có độ dài là 15 và con đường ngắn nhất từ a đến e là a, b, e có độ dài là 15

Ta tìm các đỉnh tiếp theo gần a nhất liền kề với a, b, c, e Ta có:

 Đường đi ngắn nhất từ a đến z qua e là a, b, e, z có độ dài là 27

 d, z gần a nhất Với, con đường ngắn nhất từ a đến d là a, c, d có độ dài là 20

và con đường ngắn nhất từ a đến z là a, b, z có độ dài là 20

Vậy, con đường ngắn nhất từ a đến z cần tìm là a, b, z có độ dài là 20

Trang 35

Tuy nhiên, đối với những đơn đồ thị phức tạp hơn thì việc tìm đường đi ngắn nhất bằng cách thử trực tiếp không phải là phương pháp tối ưu Do đó, thuật toán Dijkstra được xây dựng nhằm giải quyết vấn đề trên

2.2.2 Thuật toán Dijkstra

Thuật toán giải quyết bài toán tìm đường đi ngắn nhất giữa một cặp đỉnh cho trước trong đơn đồ thị có trọng số không âm Thuật toán Dijkstra vận hành bằng cách tìm độ dài của đường đi ngắn nhất từ a đến đỉnh đầu tiên, độ dài đường đi ngắn nhất từ

a đến đỉnh thứ hai, v.v… cho đến khi tìm được đường đi ngắn nhất từ a đến

Thuật toán này dựa trên một dãy các bước lặp Một tập đặc biệt được tạo ra bằng cách cộng thêm một đỉnh trong mỗi bước lặp Một thủ tục gán nhãn sẽ được tiến hành trong từng bước lặp Trong thủ tục gán nhãn này, đỉnh v được gán nhãn là độ dài ngắn nhất từ a đến v chỉ chứa các đỉnh thuộc tập đặc biệt Đỉnh được thêm vào tập đặc biệt này là đỉnh có nhãn nhỏ nhất trong các đỉnh chưa có trong bước lặp

Thuật toán Dijkstra cụ thể như sau:

Đầu tiên, gán nhãn 0 cho đỉnh a và nhãn cho các đỉnh còn lại

Kí hiệu: L0(a) = 0 và L0(v) =

Các bước tiếp theo, Sk được kí hiệu cho tập này sau k lần lặp lại của thủ tục gán nhãn Chúng ta bắt đầu với S và S0={a} Tập Sk được tạo lặp ra từ tập Sk-1 bằng cách cộng thêm đỉnh u không có trong Sk-1 và có nhãn nhỏ nhất trong các đỉnh chưa có mặt trong tập Sk-1 Khi u đã được bổ sung vào Sk, chúng ta đổi mới nhãn của tất cả các đỉnh không nằm trong Sk, sao cho Lk(v), nhãn của đỉnh v tại bước k, là độ dài đường đi ngắn nhất từ a đến v chỉ chứa các đỉnh trong Sk (tức là các đỉnh đã nằm trong tập đặc biệt cùng với u)

Thủ tục đổi mới nhãn được thực hiện như sau: Gọi v là đỉnh không thuộc trong Sk

Để đổi mới nhãn của v, chúng ta lưu ý Lk(v) là độ dài ngắn nhất từ a đến v chỉ chứa các đỉnh của Sk Có thể tiến hành việc đổi mới này một cách hiệu quả bằng cách sử dụng quan sát sau đây: Đường đi ngắn nhất từ a đến v chỉ chứa các phần tử của Sk-1 ( có nghĩa là các đỉnh đặc biệt không bao gồm u), hoặc là đường đi ngắn nhất từ a đến u tại bước (k-1) khi đã bổ sung cạnh uv Nói cách khác

( ) min{ ( ), ( ) w( , )}

L vLv Luu v

Trang 36

Thủ tục này được lặp lại bằng cách bổ sung liên tiếp các đỉnh vào tập đặc biệt cho đến khi z được bổ sung Khi z được bổ sung vào tập đặc biệt, nhãn của nó chính là độ dài của đường đi ngắn nhất từ a đến z

Cài đặt thuật toán:

Thuật toán Dijkstra

Procedure Dijkstra (G : đồ thị liên thông có trọng số, các trọng số điều dương)

{G có các đỉnh a = v 0 ,v 1 , v 2 , , v n =z và các trọng số w(v i , v j ) trong đó w(v i , v j )= nếu { v i , v j } là cạnh không thuộc G}

for tất cả các đỉnh v không thuộc S

if L(u)+ w(u,v) < L(v) then L(v):=L(u)+ w(u,v)

{Điều này sẽ bổ sung một đỉnh có nhãn cực tiểu vào S và đổi mới các nhãn của các đỉnh không thuộc S}

end { L(z)= Độ dài của đường đi ngắn nhất từ a đến z}

Cài đặt thuật toán Dijkstra thông qua phần mềm maple:

Trang 40

Khi đó, ( ) nhỏ nhất nên b∈ S1 ⇒ S1 ={a,b}

Bước lặp 2: Trong các đỉnh liền kề với b mà không thuộc S, có e, z Ta có:

( ) * ( ) ( )+ * + ( ) * ( ) ( ) ( )+ * + Nhãn của đỉnh chưa được thêm vào tập đặc biệt:

( ) * ( ) ( )+ * +

Khi đó, ( ) nhỏ nhất nên e ∈ S ⇒ S2 = {a,b,e}

Bước lặp 3: Trong các đỉnh không thuộc S liền kề với e, có z Ta có:

Ngày đăng: 13/05/2016, 16:42

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Bùi Anh Kiệt, Trương Quốc Bảo, Giáo trình toán rời rạc, Trường Đại Học Cần Thơ, Cần Thơ, 2004 Sách, tạp chí
Tiêu đề: Giáo trình toán rời rạc
[2] Kenneth H. Rosen, Toán học rời rạc ứng dụng trong Tin học, Nhà xuất bản Khoa học Kỹ thuật, Hà Nội, 1997 Sách, tạp chí
Tiêu đề: Toán học rời rạc ứng dụng trong Tin học
Nhà XB: Nhà xuất bản Khoa học Kỹ thuật
[3] Hoàng Nhật Quy, Giáo trình Toán rời rạc, Nhà xuất bản Thông Tin và Truyền thông, Đà Nẵng, 2010 Sách, tạp chí
Tiêu đề: Giáo trình Toán rời rạc
Nhà XB: Nhà xuất bản Thông Tin và Truyền thông
[4] Nguyễn Hữu Khánh, Giáo trình Toán rời rạc Toán ứng dụng, Nhà xuất bản Đại học Cần Thơ, Cần Thơ, 2014 Sách, tạp chí
Tiêu đề: Giáo trình Toán rời rạc Toán ứng dụng
Nhà XB: Nhà xuất bản Đại học Cần Thơ
[5] Nguyễn Đức Nghĩa, Nguyễn Tô Thành, Toán rời rạc, Nhà xuất bản Đại học quốc gia Hà Nội, Hà Nội, 1997 Sách, tạp chí
Tiêu đề: Toán rời rạc
Nhà XB: Nhà xuất bản Đại học quốc gia Hà Nội
[7] Trần Văn Thành, Tăng Phú Khoa, Lê Trí Cường, Hệ thống thông báo trạm dừng xe buýt trong nội ô thành phố Cần Thơ, 2007 Sách, tạp chí
Tiêu đề: Hệ thống thông báo trạm dừng xe buýt trong nội ô thành phố Cần Thơ
[8] Lê Hoàng Vĩnh, Một vài ứng dụng của bài toán tìm đường đi ngắn nhất và thuật giải, Trường Đại Học Cần Thơ, Cần Thơ, 2010 Sách, tạp chí
Tiêu đề: Một vài ứng dụng của bài toán tìm đường đi ngắn nhất và thuật giải
[9] Đỗ Đức Giáo, Toán rời rạc ứng dụng trong tin học, Nhà xuất bản Giáo dục, 2008 Sách, tạp chí
Tiêu đề: Toán rời rạc ứng dụng trong tin học
Nhà XB: Nhà xuất bản Giáo dục

TỪ KHÓA LIÊN QUAN

w