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

Lý thuyết đồ thị - Phần 3 docx

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

Jul 3, 2014 3.3. Đường đi trong đồ
thị
1
3.3. Đường đi trong đồ thị
3.3.1. Định nghiã đường đi.
3.3.2. Tính liên thông.
3.3.3. Chu trình Euler và đường đi Euler.
3.3.4. Tìm đường đi ngắn nhất.
Jul 3, 2014 3.3. Đường đi trong đồ
thị
2

Đồ thị có trọng số

Định nghĩa 1.
Đồ thị vô hướng (có hướng) G=(V,E) được gọi là đồ thị có trọng
số nếu mỗi cạnh (cung) e∈E được đặt tương ứng với một số
thực w(e). Số thực w(e) được gọi là trọng số của cạnh (cung)
e.

Định nghĩa 2.
Ma trận trọng số của đơn đồ thị G =(V,E) là ma trận W=[w
i,k
]
trong đó
w
i,k
là trọng số của cạnh (cung) nối đỉnh thứ i với đỉnh thứ k
(nếu có);
w
i,k


=∞ nếu không có cạnh (cung) nối đỉnh thứ i với đỉnh thứ
k.
3.3.4. Tìm đường đi ngắn nhất
Jul 3, 2014 3.3. Đường đi trong đồ
thị
3

Theo định nghiã trên:

các phần tử của ma trận trọng só có thể là các số âm.

Một đơn đồ thị bất kỳ cũng có thể xem là đồ thị có trọng số
nếu mỗi cạnh (cung) đều gắn trọng số là 1 (như định nghĩa
đường đi độ dài 1 trong mục trước) và khi đó ma trận trọng số
chính là ma trận 0-1.

Ví dụ:

xét một mạng hàng không, khi đó mạng này có thể coi là các
đồ thị có trọng số với các kiểu trọng số sau đây:

Độ dài cung đường bay

Giá cước vận chuyển cho một đơn vị vận chuyển

thời gian thực hiện chuyến bay giữa hai sân bay
3.3.4. Tìm đường đi ngắn nhất
Jul 3, 2014 3.3. Đường đi trong đồ
thị
4

Ma trận trọng số của đồ thị trên là
Ví dụ:




















=
0122102414
1201622020
2116013180
0221301120
2401811015
1420020150
W

3.3.4. Tìm đường đi ngắn nhất
Jul 3, 2014 3.3. Đường đi trong đồ
thị
5

Bài toán được đặt ra là:


tìm đường đi ngắn nhất trong đồ thị có trọng số G =(V,E) từ
đỉnh x đến đỉnh y cho trước.

Ý tưởng giải thuật là:


ta sẽ lần lượt duyệt và xác định độ dài của đường đi ngắn
nhất từ đỉnh x đến các đỉnh lân cận, cho đến khi đỉnh đích y
được duyệt.

Ở mỗi bước duyệt, mỗi đỉnh v sẽ được gắn nhãn, là cặp
(l(v);t(v)) trong đó:

l(v) là độ dài của đường đi tìm được từ đỉnh đầu x đến đỉnh v
cho đến thời điểm đang xét;

t(v) là đỉnh trước đỉnh v trong đường đi đó.
3.3.4. Tìm đường đi ngắn nhất
Jul 3, 2014 3.3. Đường đi trong đồ
thị
6


Từ đó ta có thuật toán sau đây Dijkstra (Hà lan-1930-2002):

Bước khởi đầu:
Với mọi đỉnh v ∈ V,
l(v):= ∞; t(v):=‘’;
L(x):=0; {độ dài đường đi từ x đến x bằng 0}
S:=∅; {S là tập đỉnh đã được duyệt}

Bước lặp:
Khi y∉S thực hiện:
Tìm u trong tập các đỉnh chưa được duyệt (u∈V\S) sao cho l(u) bé nhất;
S:=S∪{u};
Với mọi đỉnh v thuộc tập các đỉnh chưa được duyệt và có cạnh (cung) từ u
đến v, thực hiện
Nếu l(u) + w
uv
< l(v) thì
l(v):= l(u) + w
uv
;
t(v):=u;
3.3.4. Tìm đường đi ngắn nhất
Jul 3, 2014 3.3. Đường đi trong đồ
thị
7

Ví dụ:
Tìm đường đi ngắn nhất từ A1 đến
A4
3.3.4. Tìm đường đi ngắn nhất

Bước
khởi
đầu
A
1

0
A
2

A
3

A
4

A
5

A
6

Bước 1
A
1
0
15,A
1
20,A
1


20,A
1
14, A
1
Bước 2
A
6
0
15,A
1
20,A
1
35,A
6
20,A
1
14, A
1
Bước 3
A
2
0
15,A
1
20,A
1
33,A
2
20,A

1
14, A
1
Bước 4
A
3
0
15,A
1
20,A
1
33,A
2
20,A
1
14, A
1
Bước 5
A
5
0
15,A
1
20,A
1
33,A
2
20,A
1
14, A

1
Bước 6
A
4
0
15,A
1
20,A
1
33,A
2
20,A
1
14, A
1
Jul 3, 2014 3.3. Đường đi trong đồ
thị
8

Giới thiệu chương trình
3.3.4. Tìm đường đi ngắn nhất
1
2
3
4
5
6
7
8
9

1
2
3
4
5
6
Jul 3, 2014 3.3. Đường đi trong đồ
thị
9
3.3.4. Tìm đường đi ngắn nhất

Edsger Wybe Dijkstra

(sinh ngày 11 tháng 5, 1930 tại Rotterdam
– mất ngày 6 tháng 8, 2002 tại Nuenen).

Là nhà khoa học máy tính Hà Lan.

Ông được nhận giải thưởng Turing cho các
đóng góp có tính chất nền tảng trong lĩnh
vực ngôn ngữ lập trình.

Không lâu trước khi chết, ông đã được
nhận giải Bài báo ảnh hưởng lớn trong lĩnh
vực tính toán phân tán của ACM dành cho
bài báo đã khởi đầu cho ngành con Self-
stabilization.

Sau khi ông qua đời, giải thưởng thường
niên này đã được đổi tên thành giải thưởng

ACM Edsger W. Dijkstra.
Edsger Dijkstra
(ảnh của Brian Randell)

×