Tải bản đầy đủ (.pdf) (70 trang)

Tìm luồng cực đại và thứ cấp, ứng dụng giải bài toán tìm đường trong giao thông (LV01993)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.48 MB, 70 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2

THẨM HỮU HIỀN

TÌM LUỒNG CỰC ĐẠI VÀ THỨ CẤP,
ỨNG DỤNG GIẢI BÀI TOÁN TÌM ĐƢỜNG CONG TRONG
GIAO THÔNG

LUẬN VĂN THẠC SĨ MÁY TÍNH

HÀ NỘI, 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2

THẨM HỮU HIỀN

TÌM LUỒNG CỰC ĐẠI VÀ THỨ CẤP,
ỨNG DỤNG GIẢI BÀI TOÁN TÌM ĐƢỜNG CONG TRONG
GIAO THÔNG

Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ MÁY TÍNH

Ngƣời hƣớng dẫn khoa học: PGS.TS. Lê Huy Thập

HÀ NỘI, 2016




i

LỜI CẢM ƠN
Trong thời gian thực hiện luận văn em đã nhận được rất nhiều sự khích
lệ, động viên, giúp đỡ từ phía thầy cô, gia đình và bạn bè xung quanh.
Em xin bày tỏ lòng biết ơn chân thành nhất tới thầy giáo, PGS.TS Lê
Huy Thập, người đã trực tiếp hướng dẫn em hoàn thành luận văn này.
Em xin gửi lời cảm ơn chân thành tới các thầy cô trong trường Đại học
Sư phạm Hà Nội 2.
Em đã cố gắng học tập và hoàn thành luận văn thạc sỹ nhưng có thể
luận văn vẫn còn có những thiếu sót. Em rất mong nhận được sự góp ý, chỉ
bảo của các thầy cô và các bạn để luận văn hoàn thiện hơn.
Em xin chân thành cảm ơn!
Hà Nội, ngày 10 tháng 07 năm 2016
Học viên

Thẩm Hữu Hiền


ii

LỜI CAM ĐOAN
Tôi xin cam đoan đây là kết quả nghiên cứu của tôi dưới sự hướng dẫn
khoa học của PGS. TS Lê Huy Thập.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được
ai công bố trong bất kỳ công trình nào khác.

Học viên


Thẩm Hữu Hiền


iii

MỤC LỤC
MỞ ĐẦU .......................................................................................................... 1
CHƢƠNG 1: CƠ SỞ LÝ THUYẾT .............................................................. 3
1.1. Tổng quan mạng vận tải ....................................................................... 3
1.1.1. Phương pháp quản lý mạng xe buýt ................................................. 3
1.1.2. Phương pháp quản lý mạng xe khách ............................................... 3
1.2. Tổng quan đơn đồ thị, hữu hạn và vô hƣớng ..................................... 6
1.2.1. Bậc của Đỉnh trong đồ thị ................................................................. 9
1.2.2. Đường đi, chu trình ......................................................................... 12
1.2.3. Cây .................................................................................................. 14
CHƢƠNG 2: MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ .......................... 17
2.1. Giới thiệu một số thuật toán trên đồ thị ........................................... 17
2.1.1. Tìm đường đi giữa hai đỉnh của đồ thị ........................................... 17
2.1.2. Duyệt các cạnh cầu của đồ thị ........................................................ 22
2.1.3. Duyệt các đỉnh trụ của đồ thị .......................................................... 27
2.1.4. Xác định tinh liên thông................................................................. 34
2.1.5. Thuật toán tìm luồng cực đại trong mạng....................................... 38
2.2. Phát biểu và thuật toán tìm luồng cực đại ........................................ 39
2.2.1. Bài toán ........................................................................................... 39
2.2.2. Thuật toán giải bài toán tìm luồng cực đại và cực đại thứ cấp ....... 40
CHƢƠNG 3:TÌM LUỒNG CỰC ĐẠI VÀ THỨ CẤP MẠNG VẬN TẢI47
3.1. Giới thiệu công ty cần quản lý mạng vận tải. ................................... 47
3.2. Mục đích và nhiệm vụ giải bài toán. ................................................. 47
3.3. Các giao diện và kết quả chạy chƣơng trình demo.......................... 48

3.3.1. Giao diện chính ............................................................................... 48
3.3.2. Kết luận chương 3...........................................................................50
KẾT LUẬN .................................................................................................... 60
TÀI LIỆU THAM KHẢO ............................................................................ 62


iv

DANH MỤC CÁC

Í HIỆU CÁC CHỮ VIẾT TẮT

í hiệu
CSDL
DL


ngh a
ơ s dữ liệu
ữ liệu
Vô cực

!

Giai thừa



Độ hỗ trợ ( support)




Độ tin cậy (confidence)



Phép giao



Phép hợp



Tập rỗng



Tập hợp con của tập



Thuộc về



không thuộc




Tổng



Với mọi



Lớn hơn hoặc bằng



Nhỏ hơn hoặc bằng



Khác

B


v

DANH MỤC HÌNH V
Hình 1.1: Sơ đồ mạng máy tính. ....................................................................... 7
Hình 1.2: Sơ đồ mạng máy tính với đa kênh thoại. .......................................... 7
Hình 1.3: Sơ đồ mạng máy tính với kênh thoại thông báo ............................... 8
Hình 1.4: Mạng máy tính với kênh thoại một chiều.......................................... 9
Hình 1.5: Đồ thị vô hướng .............................................................................. 10
Hình 1.6: Đồ thị có hướng .............................................................................. 11

Hình 1.7: Đường đi trên đồ thị ....................................................................... 13
Hình 1.8: Rừng có 3 cây ................................................................................. 14
Hình 2.1: Chỉ số của các đỉnh………………………………..……… .......... 33
Hình 2.2: Ví dụ tồi tệ đối với thuật toán Ford_Fulkerson. ............................. 45
Hình 2.3: Tăng luồng dọc theo đường tăng .................................................... 46
Hình 3.1: Giao diện màn hình chính……………………………… .............. 52
Hình 3.2: Nhập danh sách các loại xe ............................................................ 52
Hình 3.3: Nhập Danh sách lái xe. ................................................................... 53
Hình 3.4: Nhập tuyến và thông lượng. ............................................................ 53
Hình 3.5: Nhập các hành trình. ...................................................................... 54
Hình 3.6: Sửa danh sách các loại xe. ............................................................. 55


vi

DANH MỤC BẢNG
Bảng 2.1 . Kiểm nghiệm thuật toán duyệt các cạnh cầu của đồ thị................ 24
Bảng 2.2. Kiểm nghiệm thuật toán duyệt các đỉnh trụ của đồ thị .................. 29
Bảng 2.3. Kiểm nghiệm thuật toán kiểm tra tính liên thông mạnh ................. 36


1

MỞ ĐẦU
1. Lý do chọn đề tài
Mạng Vận Tải hết sức quan trọng đối với nền kinh tế của một quốc gia
trong đó có Việt Nam chúng ta. Mạng Vận Tải là cốt lõi cho sự phát triển giao
thương kinh tế - xã hội . Hiện nay Việt Nam đang xây dựng những cơ s hạ
tầng vận tải hiện đại, để thúc đẩy giao thông phát triển đi đôi với việc hiệu
quả đáp ứng tối đa mà mạng vận tải đem lại.

Vấn đề đăt ra

đây là bài toán mạng vận tải khi được sử dụng tối ưu

hóa về mặt khoảng cách, tìm ra những đoạn đường ngắn nhất rút ngắn được
thời gian đi lại. Vì vậy cũng đã xuất hiện các bài toán trong các ứng dụng
trong thực tế chẳng hạn tìm đường đi ngắn nhất của hai nút trên bản đồ.
Những bài toán tối ưu đã được áp dụng rộng rãi trong nhiều lĩnh vực
đem lại một giá trị nhất định, trong bài toán tìm luồng cực đại và thứ cấp, ứng
dụng tìm đường đi trong giao thông.
Do tính hấp dẫn và tính thời sự của bài toán ta có thể áp dụng vào thực
tế sắp xếp các tuyến đường mạng vận tải, tìm được khoảng cách cũng như
thời gian rút ngắn nhất để tăng hiệu quả về mặt kinh tế.
Với mong muốn tìm ra đoạn đường ngắn nhất, hiệu quả nhất để đem lại
nguồn lợi kinh tế vận tải . Vì vậy tôi xin chọn đề tài: “tìm luồng cực đại và
thứ cấp, ứng dụng giải bài toán tìm đường trong giao thông” để nghiên cứu.
2. Mục đích nghiên cứu
- Nghiên cứu bài toán tìm luồng cực đại và thứ cấp trong mạng vận tải.
- Lập trình trên VB.NET để tìm luồng cực đại và thứ cấp trong mạng
vận tải.
3. Nhiệm vụ nghiên cứu
- Nghiên cứu phương pháp quản lý mạng vận tải.


2

- Nghiên cứu một số kiến thức về toán rời rạc.
- Nghiên cứu các bài toán tối ưu trong mạng vận tải.
- Dùng ngôn ngữ VB.NET thể hiện một số bài toán tối ưu trong mạng
vận tải.

4. Đối tƣợng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Luồng cực đại và thứ cấp.
- Phạm vi nghiên cứu: Ứng dụng giải bài toán tìm đường trong mạng
giao thông.
5. Phƣơng pháp nghiên cứu
- Phương pháp lấy ý kiến chuyên gia về luồng cực đại và thứ cấp để có
thể thiết kế được chương trình phù hợp với yêu cầu thực tiễn.
- Phương pháp nghiêm cứu lý luận qua tài liệu liên quan đến luồng
cực đại và thức cấp, nhằm xây dựng cơ s lý thuyết để giải quyết các vấn đề
của luận văn.
- Phương pháp thực nghiệm thông qua quan sát thực tế, yêu cầu của cơ
s , những lý luận được nghiên cứu và kết quả đạt được qua những phương
pháp trên.
6. Dự kiến kết quả đạt đƣợc
- Xác định luồng cực đại và thứ cấp trong mạng vận tải, ứng dụng giải bài
toán tìm đường trong giao thông.
- Xây dựng được chương trình demo hỗ trợ tìm đường đi trong mạng vận tải
của công ty TNHH Hồng Thịnh.


3

CHƢƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan mạng vận tải
1.1.1. Phương pháp quản lý mạng xe buýt
* Giám sát hành trình và lợi ích mang lại:
- Lắp đặt thiết bị giám sát hành trình hộp đen lên xe, có thể quản lý,
giám sát, điều hành phương tiện của bạn

bất kì nơi đâu, bất kì khi nào.


Với thiết bị định vị này sẽ giúp bạn tiết kiệm công sức, thời gian quản lý xe.
* Tính năng quản lý
- Quản lý đóng m cửa.
- Xem lại lộ trình xe trong quá khứ.
- Giám sát vị trí và lộ trình xe theo thời gian thực trên nền bản đồ.
- Kiểm soát được việc lái xe bỏ điểm dừng.
- Tính km đường GPS trên bản đồ.
- Tìm kiếm địa chỉ trên bản đồ.
- Quản lý khách bằng vé tháng hoặc vé hàng ngày.
- Quản lý ra vào trạm kiểm soát.
* Quản lý xe và lợi ích mang lại
- Hỗ trợ công tác quản lý tài sản phương tiện trong trường hợp lái xe
đổi phụ tùng, rút nhiên liệu.
- Kiểm soát được việc lái xe bỏ điểm dừng.
- Kiểm soát việc lái xe chạy ẩu: quá tốc độ, tăng tốc đột ngột nhiều lần.
1.1.2. Phương pháp quản lý mạng xe khách
* Giám sát hành trình và lợi ích mang lại:
- Lắp đặt thiết bị giám sát hành trình hộp đen lên xe, bạn chỉ cần có kết
nối Internet là có thể quản lý, giám sát, điều hành phương tiện của bạn

bất


4

kì nơi đâu, bất kì khi nào. Với thiết bị định vị này sẽ giúp bạn tiết kiệm công
sức, thời gian quản lý xe.
-


oanh nghiệp quản lý được vị trí, tốc độ, số km hành trình của

phương tiện tại mọi thời điểm bằng nhiều báo cáo chi tiết, đa dạng giúp nhà
quản lý nhanh chóng tổng hợp tình hình.
- Trích xuất các báo cáo chi tiết nhằm giúp doanh nghiệp lên kế hoạch,
hành trình hợp lý cho đội xe, kịp thời điều chỉnh, tính toán định mức nguồn
nhiên liệu, nhân lực, thời gian…
* Tính năng quản lý:
- Quản lý đóng m cửa (Áp dụng với xe khách).
- Xem lại lộ trình xe trong quá khứ.
- Báo cáo dừng đỗ: Biển số; thông tin lái xe; thời gian dừng/đỗ; vị trí
dừng đỗ.
- Báo cáo nhiên liệu hiện có trên xe.
- Báo cáo tổng hợp tình trạng hoạt động.
- Quản lý ra vào trạm kiểm soát.
- ảnh báo xe mất tín hiệu GPS, GPRS.
- Tìm kiếm xe theo bán kính.
- Tính km đường GPS trên bản đồ.
- Tìm kiếm địa chỉ trên bản đồ.
- Báo cáo đóng m cửa: Biển số; thông tin lái xe; thời điểm đóng m
cửa; vị trí.
- Giám sát vị trí và lộ trình xe theo thời gian thực trên nền bản đồ và
bản đồ vệ tinh.
- Thu thập được thông tin vị trí, tốc độ, thời gian lái xe, số km hành
trình…


5

-


ó thể truy cập lại hành trình cũ mà xe đã đi qua tại bất cứ thời

điểm nào.
- Kiểm soát được hành trình của xe, tránh việc lái xe chạy sai lộ trình
quy định.
- Kiểm soát tình trạng xe m cửa khi di chuyển cũng như tắt bật điều
hòa trên xe khách.
- ung cấp các báo cáo với số liệu chính xác khi các cơ quan chức năng
yêu cầu.
* Quản lý lái xe và lợi ích mang lại:
- Hỗ trợ công tác quản lý tài sản phương tiện trong trường hợp lái xe
đổi phụ tùng, rút nhiên liệu.
- Kiểm soát được việc lái xe bỏ điểm dừng.
- Kiểm soát việc lái xe chạy ẩu: quá tốc độ, tăng tốc đột ngột nhiều lần.
- Tạo các báo cáo về các lỗi vi phạm của lái xe có chế tài xử lý để ngày
càng nâng cao chất lượng dịch vụ.
- Kiểm soát được vận tốc của phương tiện tại mọi thời điểm để đưa ra
cảnh báo tức thời cho lái xe biết để điều chỉnh tốc độ phù hợp.
*Tính năng quản lý
- Báo cáo thời gian lái xe gồm tên tài xế, thời gian lái xe, tổng quãng
đường trong ngày.
- Báo cáo quá tốc độ: Biển số; thông tin lái xe; thời điểm, địa điểm bắt
đầu quá tốc độ; thời điểm, địa điểm kết thúc; tổng thời gian; quãng đường.
- Tính năng cảnh báo loa Buzzer: ảnh báo quá tốc độ, cảnh báo lái xe
* Quản lý hành khách, lợi ích mang lại
- Giúp bạn có thể quan sát toàn bộ hành khách trên xe, các hành vi đón
khách không đúng quy định.
- Là “công cụ giám sát” cả trong và ngoài xe lúc chủ vắng mặt.



6

- Giúp mình đoán cho các tài xế ô tô trong trường hợp xảy va chạm
giao thông.
- Giải quyết các khiếu kiện giữa tài xế và hành khách.
- Tăng chất lượng và niềm tin với khách quan, giám sát và làm cơ s
để nâng cao chất lượng phục vụ hành khách.
- Bảo vệ các tình trạng an ninh trong công tác quản lý vận chuyển hành
khách: trộm cướp, móc túi, mất mát.
- Cung cấp hình ảnh chụp luân phiên theo 3 phút/ 5 phút/ 10 phút.
- Gắn quay vào trong có thể thấy được các trạng thái hành khách, số
lượng, khuôn mặt rõ nét; gắn quay ra ngoài có thể thấy được hình ảnh phía trước
xe đang chạy, ghi nhận tình trạng: Đóng phạt, kẹt xe, đường, quang cảnh.
- Hình ảnh có thể lưu lại trong thời gian 60 ngày, phục vụ bất cứ quá
trình điều tra với chứng cứ khách quan trung thực.
1.2. Tổng quan đơn đồ thị hữu hạn và vô hƣớng
- Định ngh a về đồ thị
Đồ thị là một cấu trúc dữ liệu (hay là một bức tranh) rời rạc bao gồm
các đỉnh và các cạnh nối các đỉnh này.
ác loại đồ thị đồ thị được phân biệt b i kiểu và số lượng cạnh nối
hai đỉnh nào đó của đồ thị.
Để có thể hình dung được tại sao lại cần đến các loại đồ thị khác nhau,
chúng ta sẽ nêu ví dụ sử dụng chúng để mô tả một mạng máy tính. Giả sử ta
có một mạng gồm các máy tính và các kênh điện thoại (gọi tắt là kênh thoại)
nối các máy tính này.

húng ta có thể biểu diễn các vị trí đặt náy tính b i

các điểm và các kênh thoại nối chúng b i các đoạn nối.



7

Hình 1.1: Sơ đồ mạng máy tính
Nhận thấy rằng trong mạng

hình 1, giữa hai máy bất kỳ chỉ có nhiều

nhất là một kênh thoại nối chúng, kênh thoại naỳ cho phép liên lạc cả hai
chiều và không có máy tính nào lại được nối với chính nó. Sơ đồ mạng máy
cho trong hình 1 được gọi là đơn đồ thị vô hướng. Ta đi đến định nghĩa sau
Định ngh a 1.1
Đơn đồ thị vô hướng G = (V,E) bao gồm V là tập các đỉnh, và E là tập
các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh.
Trong trường hợp giữa hai máy tính nào đó thường xuyên phải truyền
tải nhiều thông tin người ta phải nối hai máy nàu b i nhiều kênh thoại. Mạng
với đa kênh thoại giữa các máy được cho trong hình 2.

Hình 1.2: Sơ đồ mạng máy tính với đa kênh thoại
Định ngh a 1.2
Đa đồ thị vô hướng G= (V, E) bao gồm V là tập các đỉnh, và E là tập
các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh.


8

Hai cạnh e1 và e2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một
cặp đỉnh.


Hình 1.3: Sơ đồ mạng máy tính với kênh thoại thông báo
Rõ ràng mỗi đơn đồ thị đều là đa đồ thị, nhưng không phải đa đồ thị
nào cũng là đơn đồ thị, vì trong đa đồ thị có thể có hai (hoặc nhiều hơn) cạnh
nối một cặp đỉnh nào đó.
Trong mạng máy tính có thể có những kênh thoại nối một náy
nào đó với chính nó (chẳng hạn vời mục đính thông báo). Mạng như vậy được
cho trong hình 3. Khi đó đa đồ thị không thể mô tả được mạng như vậy, b i vì
có những khuyên (cạnh nối một đỉnh với chính nó). Trong trường hợp
nàychúng ta cần sử dụng đến khái niệm giả đồ thị vô hướng, được định nghĩa
như sau:
Định ngh a 1.3
Giả đồ thị vô hướng G = (V, E) bao gồm V là tập các đỉnh và E là tập
các cặp không có thứ tự gồm hai phần tử (không nhất thiết phải khác nhau)
của V gọi là cạnh. ạnh e được gọi là khuyên nếu nó có dạng e = (u, u).


9

Hình 1.4: Mạng máy tính với kênh thoại một chiều
ác kênh thoại trong mạng máy tính có thể chỉ cho phép truyền tin theo
một chiều. hẳng hạn, trong hình 4 máy chủ
các máy

Hà Nội chỉ có thể nhận tin từ

địa phương, có một số máy chỉ có thể gửi tin đi, còn các kênh thoại

cho phép truyền tin theo cả hai chiều được thay thế b i hai cạnh có hướng
ngược chiều nhau.
Định ngh a 1.4

Đơn đồ thị có hướng G = (V, E) bao gồm V là tập các đỉnh và E là tập
các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung.
Nếu trong mạng có thể có đa kênh thoại một chiều, ta sẽ phải sử
dụng đến khái niệm đa đồ thị có hướng:
Định ngh a 1.5
Đa đồ thị có hướng G = (V, E) bao gồm V là tập các đỉnh và E là tập
các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung. Hai cung
e1, e2 tương ứng với cùng một cặp đỉnh được gọi là cung lặp.
Trong các phần tiếp theo chủ yếu chúng ta sẽ làm việc với đơn đồ thị
vô hướng và đơn đồ thị có hướng. Vì vậy, để cho ngắn gọn, ta sẽ bỏ qua tính
từ đơn khi nhắc đến chúng.
1.2.1. Bậc của Đỉnh trong đồ thị
- Định ngh a 1.6
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


10

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).
Để có thể biết có vào nhiêu cạnh liên thuộc với một đỉnh, ta có định
nghĩa sau
Định ngh a 1.7
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).

Hình 1.5: Đồ thị vô hướng
Ví dụ 1. Xét đồ thị cho trong hình 1.5, ta có
deg(a) = 1, deg(b) = 4, deg(c) = 4, deg(f) = 3,

deg(d) = 1, deg(e) = 3, deg(g) = 0
Đỉnh bậc 0 gọi là đỉnh cô lập. Đỉnh bậc 1 được gọi là đỉnh treo. Trong
ví dụ trên đỉnh g là đỉnh cô lập, a và d là các đỉnh treo. Bậc của đỉnh có tính
chất sau:
Đị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.
Chứng minh. Rõ ràng mỗi cạnh e = (u, v) được tính một lần
trong deg(u) và một lần trong deg(v). Từ đó suy ra tổng tất cả các bậc của
các đỉnh bằng hai lần số cạnh.
Ví dụ 2 . Đồ thị với n đỉnh có bậc là 6 có bao nhiêu cạnh
Giải: Theo định lý 1 ta có 2m = 6n. Từ đó suy ra tổng các cạnh của đồ
thị là 3n.


11

Hệ quả. Trong đồ thị vô hướng, số đỉnh bậc lẻ (nghĩa là có bậc là số lẻ)
là một số chẵn.
Chứng minh. Thực vậy, gọi O và U tương ứng là tập đỉnh bậc lẻ và
tập đỉnh bậc chẵn của đồ thị. Ta có
2m=∑deg(v)+∑deg(v) ,V ϵ U , vϵ O
Do deg(v) là chẵn với v là đỉnh trong U nên tổng thứ nhất

trên là số

chẵn. Từ đó suy ra tổng thứ hai (chính là tổng bậc của các đỉnh bậc lẻ) cũng
phải là số chẵn, do tất cả các số hạng của nó là số lẻ, nên tổng này phải gồm
một số chẵn các số hạng. Vì vậy, số đỉnh bậc lẻ phải là số chẵn.
Ta xét các thuật ngữ tương tự cho đồ thị vô hướng.
Định ngh a 1.8.

Nếu e = (u, v) là cung của đồ thị có hướng G thì ta nói hai đỉnh u và v
là kề nhau, và nói cung (u, v) nối đỉnh u với đỉnh v hoặc cũng nói cung này
là đi ra khỏi đỉnh u và vào đỉnh v. Đỉnh u(v) sẽ được gị là đỉnh đầu (cuối) của
cung (u,v).
Tương tự như khái niệm bậc, đối với đồ thị có hướng ta có khái niệm
bán bậc ra và bán bậc vào của một đỉnh.
Định ngh a đồ thị có hƣớng
Ta gọi bán bậc ra (bán bậc vào) của đỉnh v trong đồ thị có hướng là số
cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu là deg+(v) (deg-(v))

Hình 1.6: Đồ thị có hướng


12

Ví dụ 3. Xét đồ thị cho trong 1.6 hình. Ta có
deg-(a)=1, deg-(b)=2, deg-(c)=2, deg-(d)=2, deg-(e) = 2.
deg+(a)=3, deg+(b)=1, deg+(c)=1, deg+(d)=2, deg+(e)=2.
o mỗi cung (u, v) sẽ được tính một lần trong bán bậc vào của đỉnh v
và một lần trong bán bậc ra của đỉnh u nên ta có:
Định lý 2. Giả sử G = (V, E) là đồ thị có hướng. Khi đó
2m = ∑ deg+(v) + ∑ deg-(v)
v ϵ V vϵ V
Rất nhiều tính chất của đồ thị có hướng không phụ thuộc vào hướng
trên các cung của nó. Vì vậy, trong nhiều trường hợp sẽ thuận tiện hơn nếu ta
bỏ qua hướng trên các cung của đồ thị. Đồ thị vô hướng thuđược bằng cách
bỏ qua hướng trên các cung được gọi là đồ thị vô hướng tương ứng với đồ thị
có hướng đã cho.
1.2.2. Đường đi, chu trình
- Định ngh a đƣờng đi:

Đường đi là độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên
dương, trên đồ thị vô hướng G = (V, E) là dãy x0, x1,…, xn-1, xn
trong đó u = x0 , v = xn , (xi , xi+1) ϵ E, i = 0, 1, 2,…, n-1.
Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cạnh:
(x0, x1), (x1, x2), …, (xn-1, xn)
Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối
của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được
gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có
cạnh nào bị lặp lại.
Ví dụ 4. Trên đồ thị vô hướng cho trong hình 1.7: a, d, c, f, e
là đường đi đơn độ dài 4.

òn d, e, c, a không là đường đi, do (c,e) không

phải là cạnh của đồ thị. ãy b, c, f, e, b là chu trình độ dài 4. Đường đi a, b, e,


13

d, a, b có độ dài là 5 không phải là đường đi đơn, do cạnh (a, b) có mặt trong
nó 2 lần.

Hình 1.7: Đường đi trên đồ thị
Khái niệm đường đi và chu trình trên đồ thị có hướng được định nghĩa
hoàn toàn tương tự như trong trường hợp đồ thị vô hướng, chỉ khác là ta có
chú ý đến hướng trên các cung.
- Định ngh a chu trình :
Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó, n là số nguyên
dương, trên đồ thị có hướng G = (V, ) là dãy
x0, x1,…, xn-1, xn

trong đó u = x0, v = xn, (xi, xi+1) ϵ E, i = 0, 1, 2,…, n-1.
Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cung:
(x0, x1), (x1, x2), …, (xn-1, xn)
Đỉnh

u

gọi

là đỉnh đầu,

còn đỉnh

v

gọi

là đỉnh

cuối

của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được
gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có
cạnh nào bị lặp lại.
Ví dụ 5. Trên đồ thị có hướng cho trong hình 1.7: a, d, c, f, e
là đường đi đơn độ dài 4.

òn d, e, c, a không là đường đi, do (c,e) không

phải là cạnh của đồ thị. ãy b, c, f, e, b là chu trình độ dài 4. Đường đi a, b, e,

d, a, b có độ dài là 5 không phải là đường đi đơn, do cạnh (a, b) có mặt trong
nó 2 lần.


14

Xét một mạng máy tính. Một câu hỏi đặt ra là hai máy tính bất kỳ trong
mạng này có thể trao đổi thông tin được với nhau hoặc là trực tiếp qua kênh
nối chúng hoặc thông qua một hoặc vài máy tính trung gian trong mạng. Nếu
sử dụng đồ thị để biểu diễn mạng máy tính này (trong đó các đỉnh của đồ thị
tương ứng với các máy tính, còn các cạnh tương ứng với các kênh nối) câu
hỏi đó được phát biểu trong ngôn ngữ đồ thị như sau: Tồn tại hay
không đường đi giữa mọi cặp đỉnh của đồ thị.
1.2.3. Cây
Định ngh a 1.9
Cây là đồ thị vô hướng liên thông không có chu trình. Nhóm nhiều hơn
một cây được gọi là rừng.
Ví dụ 6. Trong hình 1 là một rừng gồm 3 cây T1, T2, T3.

Hình 1.8: Rừng có 3 cây
Định lý 3. Giả sử G = (V,E) là đồ thị vô hướng với |V| = n. Khi đó các
mệnh đề sau đây là tương đương:
(1) T là cây;
(2) T không chứa chu trình và có n-1 cạnh;
(3) T liên thông và có n-1 cạnh;
(4) T liên thông và mỗi cạnh của nó điều là cầu;
(5) Hai đỉnh bất kỳ của T được nối với nhau b i đúng
một đường đi đơn;
(6) T không chứa chu trình nhưng hễ cứ thêm vào một cạnh ta
thu được đúng một chu trình.



15

Chứng minh. Ta sẽ chứng minh định lý theo sơ đồ sau:
(1) (2) (3)  (4)  (5)  (6)  (1)
(1)  (2) Theo định nghĩa T không chứa chu trình. Ta sẽ chứng minh
bằng qui nạp theo số đỉnh n cho khẳng định: Số cạnh của cây với n đỉnh là n1. Rõ ràng khẳng định đúng với n=1. Giả sử n>1. Trước hết nhận rằng trong
mọi cây T có n đỉnh đều tìm được ít nhất một đỉnh là đỉnh treo (tức là đỉnh có
bậc là 1). Thực vậy, gọi v1, v2 , . . .,vk là đường đi dài nhất (theo sốcạnh)
trong T. Khi đó rõ ràng v1 và vk là các đỉnh treo, vì từ v1 (vk) không có cạnh
nối với bất cứ đỉnh nào trong số các đỉnh v2, v3 , . . .,vk (do đồ thị không chứa
chu trình), cũng như với bất cứ đỉnh nào khác của đồ thị (do đường đi đang
xét dài nhất). Loại bỏ v1 và cạnh (v1 , v2) khỏi T ta thu được cây T1 với n1 đỉnh, mà theo giả thiết qui nạp có n-2 cạnh. Vậy cây T có n-2+1 = n-1 cạnh.
(2)  (3) Ta chứng minh bằng phản chứng. Giả sử T không liên thông.
Khi đó T phân rã thành k≥2 phần liên thông T1, T2,. . . Tk.

o T không chứa

chu trình nên mỗi Ti (i=1,2,. . .,k) cũng không chứa chu trình, vì thế mỗi Ti là
cây. Do đó nếu gọi n(Ti) và e(Ti) theo thứ tự là số đỉnh và cạnh của Ti, ta có:
e(Ti) = n(Ti) – 1, i= 1, 2, . . ., k,
suy ra
n-1 = e(T) = e(T1) + . . . + e(Tk)
= n(T1) + . . . n(Tk) – k
= n(T) –k < n-1
Mâu thuẫn thu được chứng tỏ là T liên thông.
(3)  (4) Việc loại bỏ một cạnh bất kỳ khỏi T dẫn đến đồ thị với n đỉnh
và n-2 cạnh rõ ràng là đồ thị không liên thông. Vậy mọi cạnh trong T đều là cầu.
(4)  (5) Do T là liên thông nên hai đỉnh bất kỳ của nó được nối với

nhau b i một đường đi đơn. Nếu có cặp đỉnh nào của T có hai đường đi đơn


16

khác nhau nối chúng, thì từ đó suy ra đồ thị chứa chu trình, và vì thế các cạnh
trên chu trình này không phải là cầu.
(5)  (6) T không chứa chu trình, b i vì thế nếu có chu trình thì hoá ra
tìm được cặp đỉnh của T được nối với nhau b i hai đường đi đơn. Bây giờ,
nếu thêm vào T một cạnh e nối hai đỉnh u và v nào đó của T. Khi đó cạnh này
cùng với đường đi đơn nối u với v sẽ tạo thành chu trình trong T.

hu trình

thu được này là duy nhất, vì nếu thu được nhiều hơn một chu trình thì suy ra
trong T trước đó phải có sẵn chu trình.
(6) (1) Giả sử T không liên thông. Khi đó gồm ít ra là 2 thành phần
liên thông. Vì vậy, nếu thêm vào T một cạnh nối hai đỉnh thuộc hai thành
phần liên thông khác nhau ta không thu được thêm một chu trình nào
cả. Điều đó mâu thuẫn với giả thiết (6). Định lý được chứng minh.
ết luận chƣơng
Mạng Vận Tải hết sức quan trọng đối với nền kinh tế là cốt lõi cho sự
phát triển giao thương kinh tế - xã hội . Hiện nay Việt Nam đang xây dựng
những cơ s hạ tầng vận tải hiện đại, để thúc đẩy giao thông phát triển đi đôi
với việc hiệu quả đáp ứng tối đa mà mạng vận tải đem lại.
Vấn đề đăt ra

đây là bài toán mạng vận tải khi được sử dụng tối ưu

hóa về mặt khoảng cách, tìm ra những đoạn đường ngắn nhất rút ngắn được

thời gian đi lại. Vì vậy cũng đã xuất hiện các bài toán trong các ứng dụng
trong thực tế chẳng hạn tìm đường đi ngắn nhất của hai nút trên bản đồ
Trong chương 1 đã tìm hiểu khái quát tổng quan về mạng vận tải đưa ra
được những phương pháp quản lý, hỗ trợ và tổng quan về đơn dồ thị hữu hạn,
vô hướng. Để giải quyết nghiên cứu sâu hơn chuyển sang chương 2 .


17

CHƢƠNG 2
MỘT SỐ THUẬT TOÁN TRÊN ĐỒ THỊ
2.1. Giới thiệu một số thuật toán trên đồ thị
2.1.1. Tìm đường đi giữa hai đỉnh của đồ thị
a) Đặt bài toán ho đồ thị G = (vô hướng hoặc có hướng), trong đó V
là tập đỉnh, E là tập cạnh. Bài toán đặt ra là hãy tìm đường đi từ đỉnh sV đến
đỉnh tV.
b) Mô tả thuật toán ho đồ thị G =, s, t là hai đỉnh thuộc V. Khi đó, dễ
dàng nhận thấy, nếu tDFS(s) hoặc tBFS(s) thì ta có thể kết luận có đường
đi từ s đến t trên đồ thị. Nếu tDFS(s) hoặc tBFS(s) thì ta có thể kết luận
không có đường đi từ s đến t trên đồ thị. Vấn đề còn lại là ta ghi nhận thế nào
đường đi từ s đến t? Để ghi nhận đường đi từ s đến t dựa vào hai thuật toán
DFS(s) hoặc BFS(s) ta sử dụng một mảng truoc[] gồm n phần tử (n=|V|).
Kh i tạo ban đầu truoc[u]=0 với mọi u = 1, 2, .., n. Trong quá trình thực hiện
hai thuật toán DFS (s) và BFS(s), mỗi khi ta đưa đỉnh vKe(s) vào ngăn xếp
(trong trường hợp ta sử dụng thuật toán DFS) hoặc hàng đợi(trong trường hợp
ta sử dụng thuật toán DFS) ta ghi nhận truoc[v] = s. Điều này có nghĩa, để đi
được đến v ta phải qua đỉnh s. Khi hai thuật toán DFS và BFS duyệt đến đỉnh
t thì truoc[t] sẽ nhận giá trị là một đỉnh nào đó thuộc V hay tDFS(s) hoặc
tBFS(s). Trong trường hợp hai thủ tục DFS và BFS không duyệt được đến
đỉnh t, khi đó truoc[t] =0 và ta kết luận không có đường đi từ s đến t. Hình

dưới đây mô tả thuật toán tìm đường đi từ đỉnh s đến đỉnh t trên đồ thị bằng
thuât toán DFS. Hình dưới đây mô tả thuật toán tìm đường đi từ đỉnh s đến
đỉnh t trên đồ thị bằng thuât toán BFS.


×