You are on page 1of 46

BÁO CÁO

ĐỒ ÁN MÔN HỌC I
Thứ ba,ngày 3 tháng 12 năm 2019
ĐỀ TÀI
“Tìm hiểu một số thuật toán tìm
đường đi ngắn nhất trên đồ thị.
Cài đặt thuật toán Dijktra để kiểm
tra đường đi ngắn nhất từ 1 thành
phố đến các thành phố còn lại”
NỘI DUNG

01 Lý thuyết về đồ thị

02 Thuật toán DIJKSTRA và FLOYD

03 Cài đặt,phân tích DIJKSTRA và ứng dụng


PHẦN 1

Lý thuyết về đồ
thị
ĐỊNH NGHĨA

Đồ thị là một cấu trúc rời rạc


bao gồm các đỉnh và các cạnh
nối các đỉnh này. Chúng ta
phân biệt các loại đồ thị khác
nhau bởi kiểu và số lượng
cạnh nối hai đỉnh nào đó của
đồ thị.
Đồ thị vô Đồ thị có
Đồ thị không trọng Đồ thị có trọng số
số
CÁC THUẬT NGỮ CƠ
BẢN
1. Hai đỉnh kề nhau
2. Đường đi,chu trình
3. Đường đi ngắn nhất
4. Đường đi ngắn nhất từ một đỉnh
đến các đỉnh còn lại
HAI ĐỈNH KỀ NHAU

Hai đỉnh u và v của đồ thị 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ị thì ta
nói cạnh này là cạnh liên thuộc với hai
đỉnh u và v, hoặc cũng nói là cạnh e 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)
Đỉnh 1 kề với đỉnh
2,4
Đỉnh 2 kề với đỉnh
ĐƯỜNG ĐI,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ị G=(V,E) là dãy
x0, x1 , ... , x(n-1 ), trong đó
u=x0 , v=x(n-1) , ( xi , xi+1 )
thuộc E , i= 0, 1, 2 ,..., n-1.
ĐƯỜNG ĐI,CHU TRÌNH

Nếu đường đi trong đồ thị G có


đỉnh đầu trùng với đỉnh cuối thì
nó gọi là chu trình.
Đường đi a,b,c,d,e Chu trình a,b,c,d,e,a
Đường đi f,c,g,h,i Chu trình c,b,f,k,g,c
Đường đi a,b
ĐƯỜNG ĐI NGẮN NHẤT

Đường đi ngắn nhất giữa hai


đỉnh của một đồ thị là đường
đi mà có tổng trọng số của
các cạnh (cung) nối giữa hai
đỉnh đó là nhỏ nhất.
PHẦN 2
Thuật toán DIJKSTRA và FLOYD-
WARSHALL
CÁC THUẬT TOÁN TRÊN ĐỒ
THỊ

BFS
Breadth – First
Search
CÁC THUẬT TOÁN TRÊN ĐỒ
THỊ

DFS
Depth – First Search
CÁC THUẬT TOÁN TRÊN ĐỒ
THỊ

Nguồn đơn Nguồn đích Mọi cặp đỉnh

DIJKSTRA Đảo hướng đồ FLOYD-WARSHALL


BELLMAN-FORD thị JOHNSON
THUẬT TOÁN DIJKSTRA
1959

Vô hướng,có
hướng
Trọng số dương
GPS
Giữa 2 đỉnh
Từ 1 đỉnh
O(n2)
Edsger Dijkstra

dụ
THUẬT TOÁN FLOYD-
WARSHALL
1962

Vô hướng,có
hướng
Âm/dương

Giữa tất cả
các cặp đỉnh

O(n3)

Robert Floyd

dụ

dụ

C=1

dụ

C=2

dụ

dụ
PHẦN 3

Cài đặt,phân tích DIJKSTRA và ứng dụng


CÀI ĐẶT,PHÂN TÍCH THUẬT
TOÁN
Shortestway(
)

Dijkstra( )
Hàm Shortestway( )
Hàm Shortestway( )

2 ∞ 4 8 ∞ 1 ∞ 7

True False False True False False False False

Min = ∞
Min_index = 0
Hàm Shortestway( )

2 ∞ 4 8 ∞ 1 ∞ 7

True False False True False False False False

Min = 4
Min_index = 2
Hàm Shortestway( )

2 ∞ 4 8 ∞ 1 ∞ 7

True False False True False False False False

Min = 1
Min_index = 5
Hàm Shortestway( )

2 ∞ 4 8 ∞ 1 ∞ 7

True False False True False False False False

Min = 1
Min_index = 5
Hàm Dijkstra( )
Hàm Dijkstra( )

2 ∞ 4 8 ∞ 1 ∞ 7

9 5 ∞ ∞ 12 ∞ ∞

Luu={5}
Hàm Dijkstra( )

2 ∞ 4 8 ∞ 1 ∞ 7

9 5 ∞ ∞ 12 ∞ ∞

Luu={5}
Hàm Dijkstra( )

2 ∞ 4 8 ∞ 1 ∞ 7

9 5 ∞ ∞ 12 ∞ ∞

Luu={5}
Hàm Dijkstra( )

2 ∞ 4 8 ∞ 1 ∞ 7

9 5 ∞ ∞ 12 ∞ ∞

Luu={5,1}
ỨNG DỤNG VÀO CHƯƠNG TRÌNH
TRAVEL ASSISTANT

Hải Dương

Hà Nội

Hải Phòng
Quãng đường
Chi phí
Sinh hoạt
Vui chơi
TRAVEL ASSISTANT Ăn uống

You might also like