BÀI 9
BÀI TOÁN ĐƯỜNG ĐI NGẮN
NHẤT TRÊN ĐỒ THỊ
1
Giáo viên: TS. Nguy n Văn Hi u
ễ ệ
Email: nvhieuqt@dut.udn.vn
Nội dung
❑ Giới thiệu
❑ Bài toán
❑ Thuật toán Dijkstra
❑ Thuật toán Bellman-Ford
❑ Thuật toán Floyd – Warshall
❑ Ứng dụng
Nguyễn Văn Hiệu, 2014, Discrete Mathematics 2
Giới thiệu
❑Đồ thị trọng số là đồ thị có gắn một giá
trị cho mỗi cạnh hoặc mỗi cung
❑Giá trị là số nguyên hoặc số thực, giá trị
mang ý nghĩa thực tế:
★ giá trị có thể là thời gian;
★ giá trị có thể là chi phí;
★ giá trị có thể là tốc độ;
★ giá trị có thể là cự ly.
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 3
Bài toán
•
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 4
Bài toán
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 5
Bài toán 1:Tìm đường đi ngắn nhất từ đỉnh
a và đỉnh z
Bài toán 2: Tìm đường đi ngắn nhất từ
đỉnh a đến tất cả các đỉnh còn lại
Bài toán 3: Tìm đường đi ngắn nhất giữa
mọi cặp đỉnh
Bài toán
❑ Để chắc chắn tìm được đường đi ngắn
nhất thì điều kiện
❑ Phải tồn tại đường đi:
❑ Đồ thị vô hướng liên thông.
❑ Đồ thị có hướng liên thông mạnh.
❑ Không tồn tại chu trình âm và cạnh âm:
❑ Đồ thị có hướng không tồn tại chu trình âm.
❑ Đồ thị vô hướng không tồn tại cạnh âm.
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 6
Bài toán
❑Đường đi ngắn nhất từ Etna đến Oldtown là:
Etna – Bangor – Orono – Old Town
❑Đường đi ngắn nhất từ Hermae đến Etna là:
Hermae – Hampdea – Bangor - Etna
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 7
Bài toán
If ( d[v] > d[u] + c[u,v]) {
d[v] = d[u] + c[u,v];
T[v] = u;
}
Thuật toán Dijkstra
❑ Mục tiêu: Tìm đường đi ngắn nhất từ đỉnh a
đến đỉnh z.
❑ Điều kiện: w(u,v)> 0 với mọi (u,v) thuộc E:
– Nếu đồ thị có hướng cung dương
– Nếu đồ thị vô hướng cạnh dương
❑ L(u) - chiều dài ngắn nhất từ a đến u.
❑ Thuật toán kết thúc khi xác định được L(z)
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 9
Thuật toán Dijkstra
•
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 10
Thuật toán Dijkstra
•
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 11
Thuật toán Dijkstra
•
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 12
Thuật toán Dijkstra
Độ phức tạp của thuật toán:
f(n) = 0(n*n)
f(n) - số lần duyệt cạnh/ cung của thuật toán
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 13
Thuật toán Dijkstra là tối ưu
Kn - có số cạnh là n(n-1)/2
Tìm đường đi ngắn nhất từ a đến z phải khảo sát
qua mỗi cạnh một lần.
Thuật giải khảo sát ít nhất 0(n*n)
a
b c
z
d e
4
1
2
5
6
3
2
10
8 a
b c
z
d e
4
1
2
5
6
3
2
10
8
Ví dụ thuật toán Dijkstra (1)
a
b c
z
d e
4
1
2
5
6
3
2
10
8
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
Ví dụ thuật toán Dijkstra(2)
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
Ví dụ thuật toán Dijkstra (3)
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
Ví dụ thuật toán Dijkstra (4)
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
Ví dụ thuật toán Dijkstra(5)
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
a
b c
z
d e
4
1
2
5
6
3
2
10
8
2,a
Ví dụ thuật toán Dijkstra (6)
Phương pháp lập bảng ghi nhãn
❑ Bản chất như thuật toán Dijkstra
❑ Các cột tương ứng với các đỉnh
❑ Các hàng tương ứng với số lần tính nhãn
(bước 4)
❑ Các nhãn “gạch dưới” tương ứng với
nhãn nhỏ nhất ở (bước 2)
❑ Số đỉnh được cố định chính là số đỉnh
loại ra (bước 2)
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 20
a
b c
z
d e
4
1
2
5
6
3
2
10
8
Ví dụ lập bảng tính nhãn (1)
a b c d e z
a
d
- 3,d 10,d - 12,d b
- - 8,b - 12,d c
- - - - 10.c 14,c e
- - - - - 13,e z
- - - - - -
k 1 2 3 4 5 6
0,o oo,o oo,o oo,o oo,o oo,o
1 - 1,1 oo,o 2,1 oo,o oo,o
2 - 6,2 2,1 oo,o 8,2
3 3,4 - 6,4 8,2
4 - 6,4 4,3
6,4 -
Ví dụ lập bảng tính nhãn (2)
1
2 3
6
4 5
1
1
2
5
3
1
2
4
7
2
Ví dụ lập bảng tính nhãn (3)
Thuật toán Bellman-Ford
❑ Dijkstra cho kết quả sai nếu đồ thị có trọng số
âm
❑ Bellman-Ford khắc phục kết quả trên
❑ Bellman-Ford giúp xác định đồ thị có chu trình
âm hay không
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 24
s
b
z
3
2
-2
Thuật toán Bellman-Ford
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 25
•
•
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 26
Thuật toán Bellman-Ford
•
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 27
Thuật toán Bellman-Ford
Độ phức tạp của thuật toán Bellman – Ford
0(n*m)
Thuật toán Bellman-Ford
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 28
s
b
z
3
2
-2
Bước s b z
1 0
+∞ ,nil
2 0 3,s
2 ,s
0 3,s 1,b
3
k 1 2 3 4 5
1 0,O 1,O
∞ ,O ∞ ,O
3,O
2
3
5
Ví dụ thuật toán Bellman-Ford
1
2 3
4
1 2
3
3
4
-5
8
3
1
5
k 1 2 3 4 5 6
0,O 1,O
∞ ,
O
∞,O ∞,O ∞,O
1
2
3
4
5
6
S = 1
Ví dụ thuật toán Bellman-Ford
Thuật toán Floyd- Warshall
❑ Mục tiêu: Tìm đường đi ngắn nhất giữa
mọi cặp đỉnh của đồ thị (có hướng) có
trọng số
❑ Giải pháp
– Dijkstra nhiều lần
– Floyd - Warshall
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 31
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 32
❑ Input:
G = (V, E, W), V = {1,2,…,n}
❑Output:
D = {d[i,j]}nxn,
d[i,j] độ dài đường đi ngắn nhất từ i đến j
P = {p[i,j]}nxn,,
p[i,j] – đỉnh đi trước j trên đường đi
ngắn nhất từ i đến j
Thuật toán Floyd- Warshall
•
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 33
Thuật toán Floyd- Warshall
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 34
Step 2
For k:=1 to n do // |V| = n
// Tính Dk và Pk theo Dk-1, Pk-1
For n:=1 to n do
For m:=1 to n do
if dk -1[i,j]> dk -1[i,k]+ dk -1[k,j] then {
dk[i,j]=dk -1[i,k]+dk -1[k,j];
pk[i,j]= pk -1[i,k];
}
else {
dk[i,j]=dk -1[i,j]; pk[i,j]= pk -1[i,j];
}
Thuật toán Floyd- Warshall
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 35
Thuật toán Floyd- Warshall
Độ phức tạp của thuật Floyd Warshall
0(n*n*n)
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 36
Ví dụ thuật toán Floyd- Warshall (1)
1
2 4
3
7
11
7
4
5
6
1
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Ma trận D0
Ma trận P0
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 37
Ví dụ thuật toán Floyd- Warshall (2)
1
2 4
3
7
11
7
4
5
6
1
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Cập nhật qua đỉnh 1
Ma trận D1
Ma trận P1
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 38
Ví dụ thuật toán Floyd- Warshall(3)
1
2 4
3
7
11
7
4
5
6
1
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Cập nhật qua đỉnh 2
Ma trận D2
Ma trận P2
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 39
Ví dụ thuật toán Floyd- Warshall (4)
1
2 4
3
7
11
7
4
5
6
1
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Cập nhật qua đỉnh 3
Ma trận D3
Ma trận P3
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 40
Ví dụ thuật toán Floyd- Warshall (5)
1
2 4
3
7
11
7
4
5
6
1
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Cập nhật qua đỉnh 4
Ma trận D4
Ma trận P4
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 41
Ví dụ thuật toán Floyd- Warshall (6)
1
2 4
3
7
11
7
4
5
6
1
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 42
10
2
1
5
6
3
Ma trận D0
Ví dụ thuật toán Floyd- Warshall (2.1)
Ma trận P0
1 2
3
4
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 43
10
2
1
5
6
3
Ví dụ thuật toán Floyd- Warshall (2.2)
1 2
3
4
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Ma trận D1
Ma trận P1
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 44
10
2
1
5
6
3
Ví dụ thuật toán Floyd- Warshall(2.3)
1 2
3
4
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Ma trận D2
Ma trận P2
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 45
10
2
1
5
6
3
Ví dụ thuật toán Floyd- Warshall(2.4)
1 2
3
4
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Ma trận D3
Ma trận P3
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 46
10
2
1
5
6
3
Ví dụ thuật toán Floyd- Warshall(2.5)
1 2
3
4
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Ma trận D4
Ma trận P4
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 47
10
2
1
5
6
3
Ví dụ thuật toán Floyd- Warshall(2.6)
1 2
3
4
1 2 3 4
1
2
3
4
1 2 3 4
1
2
3
4
Ma trận D4
Ma trận P4
Ứng dụng
❑Bài toán chọn địa điểm đặt cơ sở dịch vụ, sao cho
hiệu quả nhất về mặt kinh tế
❑Bài toán cực tiểu tổng
▪ Tìm vị trí để đặt cơ sở sao cho khoảng cách giữa các vùng đến
cơ sở là nhỏ nhất
▪ Vị trí đặt trường học, bưu điện, bệnh viện.
❑Bài toán cực tiểu trị lớn nhất
▪ Tìm vị trí đặt cơ sở sao cho khoảng cách từ cơ sở đến điểm xa
nhất của cộng đồng là nhỏ nhất
▪ Vị trí đặt cơ quan phòng cháy chữa cháy.
Ứng dụng
•
Ứng dụng
•
Ứng dụng
1 1
1
1
1 2 4
3
1 5
6
7
1 2 3 4 5 6 7
1
2
3
4
5
6
7
- Đỉnh 4 là đỉnh cực tiểu
- Đỉnh 3 là tâm đồ thị
❑ Lập trình thực hiện các thuật toán mô tả:
❑ Thuật toán Dijkstra
❑ Thuật toán Floyd-Warshall
❑ Thuật toán Bellman-Ford
❑ Xác định độ phức tạp của 3 thuật toán trên
Nguyễn Văn Hiệu, 2012, Discrete Mathematics 52
Bài tập
THAT’S ALL; THANK YOU
What NEXT?

More Related Content

PPT
DepressionPredictaiushdihiwqhdiwqqqwdqw.ppt
PPTX
Bài 05_02_Kỹ thuật lập trình đệ quy.pptx
PDF
6_ShortestPath_TRR2fffffffffffffffff.pdf
PPT
tailieuxanh_trr_ly_thuyet_do_thi_graph03_shortestpaths_0784.ppt
PDF
De thi cao hoc can tho
PPTX
Ltdt chuong 3
PDF
Toán rời rạc chương 6 from học viện công nghệ bưu chính viễn thông
PPTX
Môn toán rời rạc bài về toán rời rạc người
DepressionPredictaiushdihiwqhdiwqqqwdqw.ppt
Bài 05_02_Kỹ thuật lập trình đệ quy.pptx
6_ShortestPath_TRR2fffffffffffffffff.pdf
tailieuxanh_trr_ly_thuyet_do_thi_graph03_shortestpaths_0784.ppt
De thi cao hoc can tho
Ltdt chuong 3
Toán rời rạc chương 6 from học viện công nghệ bưu chính viễn thông
Môn toán rời rạc bài về toán rời rạc người

Recently uploaded (20)

PPTX
Phần V Hành vi của Doanh Nghiệp (LMS).pptx
PPTX
kiểm toán chi phí trả trước và tài sản cố định
DOCX
Các yêu tố ảnh hưởng đến sự hài lòng của khách hàng khi sử dụng dịch vụ chăm ...
DOCX
Tiểu luận Cải cách về chính trị của vua Minh Mạng
DOC
Luận văn group Báo cáo thực tập tại Khách sạn Victory
PDF
qttcqt overviewjfiojofnifnjefnjenfjnfnrfjrenfjrnfjrnf
DOCX
Đánh giá tiêu chí lựa chọn KOL phù hợp với từng loại Event Marketing của khác...
DOC
GIẢI PHÁP GIA TĂNG NHẬN BIẾT THƯƠNG HIỆU QUA HOẠT ĐỘNG XÚC TIẾN HỖN HỢP CỦA C...
DOCX
BÁO CÁO THỰC TẬP HỌC VIỆC TẠI CÔNG TY TNHH NHẤT PHI HƯNG
DOCX
Các yếu tố ảnh hưởng tới năng lực cạnh tranh của các doanh nghiệp sản xuất da...
DOCX
Đánh giá chất lượng thực hiện thủ tục đăng ký quyền sử dụng đất lần đầu tại p...
DOC
Dịch vụ thẻ dành cho khách hàng cá nhân tại Ngân hàng Nông nghiệp và Phát tri...
DOCX
GIẢI PHÁP TRUYỀN THÔNG HIỆU QUẢ CHO CÔNG TY TNHH DU LỊCH NỤ CƯỜI NHẬT MINH
DOCX
CHUYÊN ĐỀ LÍ LUẬN.docxbdisosjsbdbdbdjdjs
DOCX
Giải pháp hoàn thiện quy trình tuyển dụng lao động tại Khách sạn Sheraton
DOCX
Báo cáo thực tập thương mại điện tử 2023
DOCX
GIẢI PHÁP HOÀN THIỆN CÔNG TÁC QUẢN TRỊ BÁN HÀNG TẠI CÔNG TY CỔ PHẦN MỸ PHẨM Q...
DOCX
Điều hành chính sách tiền tệ của Ngân hàng Nhà nước Việt Nam trong bối cảnh đ...
PPTX
chapter 1 kinh tế, bài tập chính sách tài chính cá nhân
DOCX
chính sách tín ngưỡng, tôn giáo Việt Nam hiện nay
Phần V Hành vi của Doanh Nghiệp (LMS).pptx
kiểm toán chi phí trả trước và tài sản cố định
Các yêu tố ảnh hưởng đến sự hài lòng của khách hàng khi sử dụng dịch vụ chăm ...
Tiểu luận Cải cách về chính trị của vua Minh Mạng
Luận văn group Báo cáo thực tập tại Khách sạn Victory
qttcqt overviewjfiojofnifnjefnjenfjnfnrfjrenfjrnfjrnf
Đánh giá tiêu chí lựa chọn KOL phù hợp với từng loại Event Marketing của khác...
GIẢI PHÁP GIA TĂNG NHẬN BIẾT THƯƠNG HIỆU QUA HOẠT ĐỘNG XÚC TIẾN HỖN HỢP CỦA C...
BÁO CÁO THỰC TẬP HỌC VIỆC TẠI CÔNG TY TNHH NHẤT PHI HƯNG
Các yếu tố ảnh hưởng tới năng lực cạnh tranh của các doanh nghiệp sản xuất da...
Đánh giá chất lượng thực hiện thủ tục đăng ký quyền sử dụng đất lần đầu tại p...
Dịch vụ thẻ dành cho khách hàng cá nhân tại Ngân hàng Nông nghiệp và Phát tri...
GIẢI PHÁP TRUYỀN THÔNG HIỆU QUẢ CHO CÔNG TY TNHH DU LỊCH NỤ CƯỜI NHẬT MINH
CHUYÊN ĐỀ LÍ LUẬN.docxbdisosjsbdbdbdjdjs
Giải pháp hoàn thiện quy trình tuyển dụng lao động tại Khách sạn Sheraton
Báo cáo thực tập thương mại điện tử 2023
GIẢI PHÁP HOÀN THIỆN CÔNG TÁC QUẢN TRỊ BÁN HÀNG TẠI CÔNG TY CỔ PHẦN MỸ PHẨM Q...
Điều hành chính sách tiền tệ của Ngân hàng Nhà nước Việt Nam trong bối cảnh đ...
chapter 1 kinh tế, bài tập chính sách tài chính cá nhân
chính sách tín ngưỡng, tôn giáo Việt Nam hiện nay
Ad
Ad

Bài toán đi đường của môn toán rời rạc của thầy hiệu

  • 1. BÀI 9 BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT TRÊN ĐỒ THỊ 1 Giáo viên: TS. Nguy n Văn Hi u ễ ệ Email: nvhieuqt@dut.udn.vn
  • 2. Nội dung ❑ Giới thiệu ❑ Bài toán ❑ Thuật toán Dijkstra ❑ Thuật toán Bellman-Ford ❑ Thuật toán Floyd – Warshall ❑ Ứng dụng Nguyễn Văn Hiệu, 2014, Discrete Mathematics 2
  • 3. Giới thiệu ❑Đồ thị trọng số là đồ thị có gắn một giá trị cho mỗi cạnh hoặc mỗi cung ❑Giá trị là số nguyên hoặc số thực, giá trị mang ý nghĩa thực tế: ★ giá trị có thể là thời gian; ★ giá trị có thể là chi phí; ★ giá trị có thể là tốc độ; ★ giá trị có thể là cự ly. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 3
  • 4. Bài toán • Nguyễn Văn Hiệu, 2012, Discrete Mathematics 4
  • 5. Bài toán Nguyễn Văn Hiệu, 2012, Discrete Mathematics 5 Bài toán 1:Tìm đường đi ngắn nhất từ đỉnh a và đỉnh z Bài toán 2: Tìm đường đi ngắn nhất từ đỉnh a đến tất cả các đỉnh còn lại Bài toán 3: Tìm đường đi ngắn nhất giữa mọi cặp đỉnh
  • 6. Bài toán ❑ Để chắc chắn tìm được đường đi ngắn nhất thì điều kiện ❑ Phải tồn tại đường đi: ❑ Đồ thị vô hướng liên thông. ❑ Đồ thị có hướng liên thông mạnh. ❑ Không tồn tại chu trình âm và cạnh âm: ❑ Đồ thị có hướng không tồn tại chu trình âm. ❑ Đồ thị vô hướng không tồn tại cạnh âm. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 6
  • 7. Bài toán ❑Đường đi ngắn nhất từ Etna đến Oldtown là: Etna – Bangor – Orono – Old Town ❑Đường đi ngắn nhất từ Hermae đến Etna là: Hermae – Hampdea – Bangor - Etna Nguyễn Văn Hiệu, 2012, Discrete Mathematics 7
  • 8. Bài toán If ( d[v] > d[u] + c[u,v]) { d[v] = d[u] + c[u,v]; T[v] = u; }
  • 9. Thuật toán Dijkstra ❑ Mục tiêu: Tìm đường đi ngắn nhất từ đỉnh a đến đỉnh z. ❑ Điều kiện: w(u,v)> 0 với mọi (u,v) thuộc E: – Nếu đồ thị có hướng cung dương – Nếu đồ thị vô hướng cạnh dương ❑ L(u) - chiều dài ngắn nhất từ a đến u. ❑ Thuật toán kết thúc khi xác định được L(z) Nguyễn Văn Hiệu, 2012, Discrete Mathematics 9
  • 10. Thuật toán Dijkstra • Nguyễn Văn Hiệu, 2012, Discrete Mathematics 10
  • 11. Thuật toán Dijkstra • Nguyễn Văn Hiệu, 2012, Discrete Mathematics 11
  • 12. Thuật toán Dijkstra • Nguyễn Văn Hiệu, 2012, Discrete Mathematics 12
  • 13. Thuật toán Dijkstra Độ phức tạp của thuật toán: f(n) = 0(n*n) f(n) - số lần duyệt cạnh/ cung của thuật toán Nguyễn Văn Hiệu, 2012, Discrete Mathematics 13 Thuật toán Dijkstra là tối ưu Kn - có số cạnh là n(n-1)/2 Tìm đường đi ngắn nhất từ a đến z phải khảo sát qua mỗi cạnh một lần. Thuật giải khảo sát ít nhất 0(n*n)
  • 14. a b c z d e 4 1 2 5 6 3 2 10 8 a b c z d e 4 1 2 5 6 3 2 10 8 Ví dụ thuật toán Dijkstra (1)
  • 15. a b c z d e 4 1 2 5 6 3 2 10 8 a b c z d e 4 1 2 5 6 3 2 10 8 2,a Ví dụ thuật toán Dijkstra(2)
  • 16. a b c z d e 4 1 2 5 6 3 2 10 8 2,a a b c z d e 4 1 2 5 6 3 2 10 8 2,a Ví dụ thuật toán Dijkstra (3)
  • 17. a b c z d e 4 1 2 5 6 3 2 10 8 2,a a b c z d e 4 1 2 5 6 3 2 10 8 2,a Ví dụ thuật toán Dijkstra (4)
  • 18. a b c z d e 4 1 2 5 6 3 2 10 8 2,a a b c z d e 4 1 2 5 6 3 2 10 8 2,a Ví dụ thuật toán Dijkstra(5)
  • 19. a b c z d e 4 1 2 5 6 3 2 10 8 2,a a b c z d e 4 1 2 5 6 3 2 10 8 2,a Ví dụ thuật toán Dijkstra (6)
  • 20. Phương pháp lập bảng ghi nhãn ❑ Bản chất như thuật toán Dijkstra ❑ Các cột tương ứng với các đỉnh ❑ Các hàng tương ứng với số lần tính nhãn (bước 4) ❑ Các nhãn “gạch dưới” tương ứng với nhãn nhỏ nhất ở (bước 2) ❑ Số đỉnh được cố định chính là số đỉnh loại ra (bước 2) Nguyễn Văn Hiệu, 2012, Discrete Mathematics 20
  • 21. a b c z d e 4 1 2 5 6 3 2 10 8 Ví dụ lập bảng tính nhãn (1) a b c d e z a d - 3,d 10,d - 12,d b - - 8,b - 12,d c - - - - 10.c 14,c e - - - - - 13,e z - - - - - -
  • 22. k 1 2 3 4 5 6 0,o oo,o oo,o oo,o oo,o oo,o 1 - 1,1 oo,o 2,1 oo,o oo,o 2 - 6,2 2,1 oo,o 8,2 3 3,4 - 6,4 8,2 4 - 6,4 4,3 6,4 - Ví dụ lập bảng tính nhãn (2) 1 2 3 6 4 5 1 1 2 5 3 1 2 4 7 2
  • 23. Ví dụ lập bảng tính nhãn (3)
  • 24. Thuật toán Bellman-Ford ❑ Dijkstra cho kết quả sai nếu đồ thị có trọng số âm ❑ Bellman-Ford khắc phục kết quả trên ❑ Bellman-Ford giúp xác định đồ thị có chu trình âm hay không Nguyễn Văn Hiệu, 2012, Discrete Mathematics 24 s b z 3 2 -2
  • 25. Thuật toán Bellman-Ford Nguyễn Văn Hiệu, 2012, Discrete Mathematics 25 •
  • 26. • Nguyễn Văn Hiệu, 2012, Discrete Mathematics 26 Thuật toán Bellman-Ford
  • 27. • Nguyễn Văn Hiệu, 2012, Discrete Mathematics 27 Thuật toán Bellman-Ford Độ phức tạp của thuật toán Bellman – Ford 0(n*m)
  • 28. Thuật toán Bellman-Ford Nguyễn Văn Hiệu, 2012, Discrete Mathematics 28 s b z 3 2 -2 Bước s b z 1 0 +∞ ,nil 2 0 3,s 2 ,s 0 3,s 1,b 3
  • 29. k 1 2 3 4 5 1 0,O 1,O ∞ ,O ∞ ,O 3,O 2 3 5 Ví dụ thuật toán Bellman-Ford 1 2 3 4 1 2 3 3 4 -5 8 3 1 5
  • 30. k 1 2 3 4 5 6 0,O 1,O ∞ , O ∞,O ∞,O ∞,O 1 2 3 4 5 6 S = 1 Ví dụ thuật toán Bellman-Ford
  • 31. Thuật toán Floyd- Warshall ❑ Mục tiêu: Tìm đường đi ngắn nhất giữa mọi cặp đỉnh của đồ thị (có hướng) có trọng số ❑ Giải pháp – Dijkstra nhiều lần – Floyd - Warshall Nguyễn Văn Hiệu, 2012, Discrete Mathematics 31
  • 32. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 32 ❑ Input: G = (V, E, W), V = {1,2,…,n} ❑Output: D = {d[i,j]}nxn, d[i,j] độ dài đường đi ngắn nhất từ i đến j P = {p[i,j]}nxn,, p[i,j] – đỉnh đi trước j trên đường đi ngắn nhất từ i đến j Thuật toán Floyd- Warshall
  • 33. • Nguyễn Văn Hiệu, 2012, Discrete Mathematics 33 Thuật toán Floyd- Warshall
  • 34. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 34 Step 2 For k:=1 to n do // |V| = n // Tính Dk và Pk theo Dk-1, Pk-1 For n:=1 to n do For m:=1 to n do if dk -1[i,j]> dk -1[i,k]+ dk -1[k,j] then { dk[i,j]=dk -1[i,k]+dk -1[k,j]; pk[i,j]= pk -1[i,k]; } else { dk[i,j]=dk -1[i,j]; pk[i,j]= pk -1[i,j]; } Thuật toán Floyd- Warshall
  • 35. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 35 Thuật toán Floyd- Warshall Độ phức tạp của thuật Floyd Warshall 0(n*n*n)
  • 36. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 36 Ví dụ thuật toán Floyd- Warshall (1) 1 2 4 3 7 11 7 4 5 6 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Ma trận D0 Ma trận P0
  • 37. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 37 Ví dụ thuật toán Floyd- Warshall (2) 1 2 4 3 7 11 7 4 5 6 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Cập nhật qua đỉnh 1 Ma trận D1 Ma trận P1
  • 38. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 38 Ví dụ thuật toán Floyd- Warshall(3) 1 2 4 3 7 11 7 4 5 6 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Cập nhật qua đỉnh 2 Ma trận D2 Ma trận P2
  • 39. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 39 Ví dụ thuật toán Floyd- Warshall (4) 1 2 4 3 7 11 7 4 5 6 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Cập nhật qua đỉnh 3 Ma trận D3 Ma trận P3
  • 40. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 40 Ví dụ thuật toán Floyd- Warshall (5) 1 2 4 3 7 11 7 4 5 6 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Cập nhật qua đỉnh 4 Ma trận D4 Ma trận P4
  • 41. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 41 Ví dụ thuật toán Floyd- Warshall (6) 1 2 4 3 7 11 7 4 5 6 1 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
  • 42. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 42 10 2 1 5 6 3 Ma trận D0 Ví dụ thuật toán Floyd- Warshall (2.1) Ma trận P0 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
  • 43. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 43 10 2 1 5 6 3 Ví dụ thuật toán Floyd- Warshall (2.2) 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Ma trận D1 Ma trận P1
  • 44. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 44 10 2 1 5 6 3 Ví dụ thuật toán Floyd- Warshall(2.3) 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Ma trận D2 Ma trận P2
  • 45. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 45 10 2 1 5 6 3 Ví dụ thuật toán Floyd- Warshall(2.4) 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Ma trận D3 Ma trận P3
  • 46. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 46 10 2 1 5 6 3 Ví dụ thuật toán Floyd- Warshall(2.5) 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Ma trận D4 Ma trận P4
  • 47. Nguyễn Văn Hiệu, 2012, Discrete Mathematics 47 10 2 1 5 6 3 Ví dụ thuật toán Floyd- Warshall(2.6) 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Ma trận D4 Ma trận P4
  • 48. Ứng dụng ❑Bài toán chọn địa điểm đặt cơ sở dịch vụ, sao cho hiệu quả nhất về mặt kinh tế ❑Bài toán cực tiểu tổng ▪ Tìm vị trí để đặt cơ sở sao cho khoảng cách giữa các vùng đến cơ sở là nhỏ nhất ▪ Vị trí đặt trường học, bưu điện, bệnh viện. ❑Bài toán cực tiểu trị lớn nhất ▪ Tìm vị trí đặt cơ sở sao cho khoảng cách từ cơ sở đến điểm xa nhất của cộng đồng là nhỏ nhất ▪ Vị trí đặt cơ quan phòng cháy chữa cháy.
  • 51. Ứng dụng 1 1 1 1 1 2 4 3 1 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 - Đỉnh 4 là đỉnh cực tiểu - Đỉnh 3 là tâm đồ thị
  • 52. ❑ Lập trình thực hiện các thuật toán mô tả: ❑ Thuật toán Dijkstra ❑ Thuật toán Floyd-Warshall ❑ Thuật toán Bellman-Ford ❑ Xác định độ phức tạp của 3 thuật toán trên Nguyễn Văn Hiệu, 2012, Discrete Mathematics 52 Bài tập
  • 53. THAT’S ALL; THANK YOU What NEXT?

Editor's Notes

  • #5: Quan hệ một một Quan hệ một nhiều Quan hệ nhiều nhiều
  • #6: Không tồn tại chu trình âm: + Đồ thị vô hướng không tồn tại
  • #9: Không tồn tại chu trình âm: + Đồ thị vô hướng không tồn tại
  • #10: Không tồn tại chu trình âm: + Đồ thị vô hướng không tồn tại
  • #11: P(x) là đỉnh trước x trên đường đi ngắn nhất từ a đến x
  • #12: P(z) giúp lần ngược các điểm ghi nhớ Z1=P(z),Z2=P(Z1),….,Zn=P(Zn-1), a= P(Z)
  • #13: + Khảo sát các cạnh ở step 4 – Số lần khảo sát các cạnh tối đa là n-1 (vì có n đỉnh) + step 4 vòng lặp chứa step 2 đến step 4. - Vòng lặp thực hiện đến khi z không thuộc T. Nên số vòng lặp xử lý xấu nhất là n (vì T có n đỉnh) - f(n) = n*(n-1) <= n*n
  • #20: Không tồn tại chu trình âm: + Đồ thị vô hướng không tồn tại
  • #25: Không tồn tại chu trình âm: + Đồ thị vô hướng không tồn tại
  • #26: P(x) là đỉnh trước x trên đường đi ngắn nhất từ a đến x
  • #27: P(z) giúp lần ngược các điểm ghi nhớ Z1=P(z),Z2=P(Z1),….,Zn=P(Zn-1), a= P(Z)
  • #32: Không tồn tại chu trình âm: + Đồ thị vô hướng không tồn tại
  • #34: // Khởi tạo For i:=1 to n do For j:=1 to n do{ d[i,j] := a[i,j]; p[i,j] := i; } // Bước lặp For k:=1 to n do For i:=1 to n do For j:=1 to n do If(d[i,j]>d[i,k]+d[k,j]){ d[i,j] := d[i,k] + d[k,j]; p[i,j] := p[k,j]; }