Tải bản đầy đủ (.pptx) (9 trang)

tìm đường đi ngắn nhất thuật toán Dijkstra

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 (81.74 KB, 9 trang )

TÌM ĐƯỜNG ĐI NGẮN NHẤT
( Thuật toán DIJKSTRA)


Thuật toán được phát biểu như sau:
• B1: Gán T=V và gán các nhãn:
L[u]=0 ; L[k]=+∞ , ∀k∈V \ {u}
Pre[ k ]=-1

, ∀k∈V

• B2:
Nếu v∉T thì dừng và giá trị L[v] chính là độ dài đường đi ngắn nhất từ
u đến v và Prev[v] là đỉnh nằm ngay trước v trên đường đi đó.
• B3: Chọn đỉnh i∈T sao cho L[i] nhỏ nhất và gán T=T\{ i }
• B4:
- Với ∀k∈T và từ đỉnh i (ở bước 3) đến đỉnh k có cạnh nối
nếu L[k]>L[i]+Dik thì gán L[k]=L[i]+Dik
và Prev[k]=i
- Trở về bước 2


5

b

6

3

3



a
4

d

9

c

2

2

f
e

3

a

b

c

d

e

f


T

a

b

c

d

e

f

L

0

+∞

+∞

+∞

+∞

+∞

Prev


-1

-1

-1

-1

-1

-1


5

b

6

3

3

a
4

a
T


d

9

c

2

2

f
e

3

b

c

d

e

f

b

c

d


e

f

L

0

6

+∞

4

+∞

+∞

Prev

-1

a

-1

a

-1


-1


5

b

6

3

3

a
4

a
T

d

9

b

c

b


c

c

2

2

f
e

d

3

e

f

e

f

L

0

6

7


4

13

+∞

Prev

-1

a

d

a

d

-1


5

b

6

3


3

a
4

a

d

9

b

T

c

c

2

2

f
e

d

c


3

e

f

e

f

L

0

6

7

4

13

+∞

Prev

-1

a


d

a

d

-1


5

b

6

3

3

a
4

a

d

9

b


c

c

2

2

f
e

d

T

3

e

f

e

f

L

0

6


7

4

9

9

Prev

-1

a

d

a

c

c


5

b

6


3

3

a
4

a

d

9

b

c

c

2

2

f
e

d

3


e

T

f
f

L

0

6

7

4

9

9

Prev

-1

a

d

a


c

c


5

b

6

3

3

a
4

d

9

c

2

2

f

e

3

a

b

c

d

e

f

L

0

6

7

4

9

9


Prev

-1

a

d

a

c

c

T



×