1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dữ liệu và giải thuật (phần 20) pptx

10 350 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 248,87 KB

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

Nội dung

Đường đi ngắn nhấtGiới thiệu: Bài toán tìm đường đi ngắn nhất là bài toán quan trọng trong lý thuyết đồ thi.. Được ứng dụng trong thực tế: Giao thông, viễn thông… Bài toán chia làm 2 loạ

Trang 1

Đường đi ngắn nhất

Giới thiệu: Bài toán tìm đường đi ngắn nhất là bài toán quan trọng trong lý thuyết đồ thi Được ứng dụng trong thực tế: Giao thông, viễn thông…

Bài toán chia làm 2 loại:

 Tìm đường đi ngắn nhất giữa 1 cặp đỉnh: Cho 2

đỉnh u,v thuộc G, tìm đường đi ngắn nhất từ u đến

v : Dịkstra

 Tìm đường đi ngắn nhất giữa tất cả các cặp

đỉnh: Tìm đường đi ngắn nhất từ đỉnh u đến đỉnh

v, với mọi cặp đỉnh u,v thuộc G: Floyd-Warshall

Trang 2

Giải thuật Dijkstra

Giới thiệu:

- Giải thuật Dijkstra giải bài toán đường đi ngắn nhất nguồn đơn (Single Source Shortest Path) trên một đồ thị có trọng số cạnh đều không âm

- Xác định đường đi ngắn nhất giữa 2 đỉnh a,b cho trước

Đặt vấn đề: Ứng dụng giải thuật cây bao trùm tối thiểu để giải quyết bài toán đường đi ngắn nhất có được không???

Trang 3

Giải thuật Dịkstra

Nhận xét:

- Giải thuật để giải bài toán MST sẽ không ứng dụng được cho bài toán đường đi ngắn nhất

- Vì sao??

- Vì vậy cần phải chỉnh sửa giải thuật trên để phù

hợp với bài toán đường đi ngắn nhất

Trang 4

Giải thuật Dịkstra

Giải thuật:

- Ở mỗi đỉnh v, giải thuật Dijkstra xác định 3 thông

tin: kv,dv,pv

• kv = 0 hoặc 1 – xác định trạng thái của đỉnh v ( 0 – chưa chọn, 1 – đã chọn)

• dv: Chiều dài đường đi tìm thấy tại thời điểm đang xét từ a đến v

• pv: là đỉnh trước của đỉnh v trên đường đi ngắn nhất từ a

 b Đường đi ngắn nhất từ a đến b có dạng

{a,…,pv,v,…,b}

Trang 5

Giải thuật Dịkstra

B1: Khởi tạo: k v =0,∀v∈V; d v= ∞,∀v ∈ V \ {a}; d a =0

B2: Chọn v∈V sao cho k v =0 và d v = min {d t / tV,k t =0 }

– Nếu d v = ∞ thì kết thúc, không tồn tại đường đi từ a  b.

B3: Đánh dấu đỉnh v, k v = 1.

B4: Nếu v=b thì kết thúc và d b là độ dài đường đi ngắn

nhất từ a  b.

Ngược lại nếu v b sang B5.

B5: Với mỗi đỉnh u kề với v mà k u = 0, kiểm tra

Nếu d u > d v + w (v,u) thì d u = d v + w (v,u)

Ghi nhớ đỉnh v: p u := v Quay lại B2.

Trang 6

Giải thuật Dịkstra

Ví dụ: Tìm đường đi ngắn

nhất từ A G

A,B

AB=2

A,B,C

AB=2,AC=4

, A,B,C,E

AB=2,AC=4,BE=3

A,B,C,E,F

AB=2,AC=4,BE=3

BG=8,FD=1

A,B,C,E,F,D

AB=2,AC=4,BE=3,FD

=1

BG=8

Trang 7

Giải thuật Dịkstra

- Hình bên là cây đường đi ngắn nhất từ đỉnh A đến các đỉnh

- Với ví dụ: AG, giải thuật sẽ kết thúc nếu tìm thấy đỉnh G

Trang 8

Giải thuật Dịkstra

Tìm cây đường đi ngắn nhất từ đỉnh C đến các đỉnh còn lại của đồ thị sau:

Trang 9

Giải thuật Dịkstra

Độ phức tạp của thuật toán:

- Bình thường thuật toán Dijkstra có độ phức tạp O(n2+m)

- Nếu sử dụng cấu trúc heap  O((n+m)*log2(n))

Trang 10

Giải thuật Floyd-Warshall

Bài toán: Tìm đường đi ngắn nhất của mỗi cặp đỉnh trong đồ thị (All-Pairs Source Shortest Path)

Ngày đăng: 09/07/2014, 21:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w