1. Trang chủ
  2. » Khoa Học Tự Nhiên

Một số bài toán về đường đi trong lí thuyết đồ thị

35 2,1K 9
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Một Số Bài Toán Về Đường Đi Trong Lý Thuyết Đồ Thị
Tác giả Lờ Thị Thu Hiền, Nguyễn Thị Thảo, Trịnh Thị Thủy, Nguyễn Trọng Tài
Người hướng dẫn TS. Nguyễn Trung Hũa
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Lý Thuyết Đồ Thị
Thể loại Đề Tài Thực Tập Chuyên Ngành
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 35
Dung lượng 356 KB

Nội dung

Một số bài toán về đường đi trong lí thuyết đồ thị

Trang 1

Lời Mở Đầu

Lý thuyết đồ thị là một lĩnh vực đó cú từ lõu và cú nhiều ứng dụng hiệnđại Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những nămđầu của thế kỷ 18 bởi nhà toỏn học lỗi lạc người Thụy Sỹ Lenhard Euler Đồthị được sử dụng để giải cỏc bài toỏn trong nhiều lĩnh lực khỏc nhau Chẳnghạn , đồ thị cú thể sử để xỏc định mạch vũng trong vấn đề giải tớch mạch điện

Đồ thị cú trọng số trờn cỏc cạnh cú thể sử dụng để giải cỏc bài toỏn như: Tỡmđường đi ngắn nhất giữa hai thành phố trong mạnh giao thụng Chỳng ta cũngcũn sử dụng đồ thị để giải cỏc bài toỏn về lập lịch , thời khoa biểu…

Đặc biệt trong khoảng vài mơi năm trở lại đây, cùng với sự ra đời của máy tính điện tử và sự phát triển nhanh chóng của tin học, lí thuyến đồ thị càng đợc quan tâm đến nhiều hơn Các thuật toán trên đồ thị đã có nhiều ứng dụng trong nhiều lĩnh vực khác nhau nh: Mạng máy tính, Lí thuyết mã, Tối u hoá…

Trong phạm vi đề tài này do thời gian cú hạn chỳng em chỉ nghiên cứu

về một số bài toán về đường đi trong lí thuyết đồ thị nh: Bài toán tìm chu trìnhEuler, Bài toán tìm đờng đi ngắn nhất , Thuật toán Dijkstral Chỳng em rấtmong được sự đúng gúp ý kiến của thầy cụ và cỏc bạn

Chúng em đặc biệt bày tỏ lòng biết ơn chân thành tới thầy giáo, Tiến sĩ:Nguyễn Trung Hũa, ngời thầy đã tạo mọi điều kiện và luôn giúp đỡ, hớng dẫnchúng em tận tình để chúng em hoàn thành tốt đề tài này

Nhúm sinh viờn thực hiện:

Lờ Thị Thu HiềnNguyễn Thị Thảo Trịnh Thị ThủyNguyễn Trọng Tài

Trang 2

V gọi là tập các đỉnh (Vertices) và E gọi là tập các cạnh (Edges) Có

thể coi E là tập các cặp (u, v), với u và v là hai đỉnh của V

Có thể phân loại đồ thị theo đặc tính và số lượng của tập các cạnh E:

Cho đồ thị G = (V, E) Định nghĩa một cách hình thức

1 G được gọi là đơn đồ thị nếu giữa hai đỉnh u, v của V có nhiều nhất là 1

cạnh trong E nối từ u tới v

2 G được gọi là đa đồ thị nếu giữa hai đỉnh u, v của V có thể có nhiều hơn

1 cạnh trong E nối từ u tới v (Hiển nhiên đơn đồ thị cũng là đa đồ thị)

3 G được gọi là đồ thị vô hướng nếu các cạnh trong E là không định

hướng, tức là cạnh nối hai đỉnh u, v bất kỳ cũng là cạnh nối hai đỉnh v, u.Hay nói cách khác, tập E gồm các cặp (u, v) không tính thứ tự

(u, v)≡(v, u)

4 G được gọi là đồ thị có hướng nếu các cạnh trong E là có định hướng, có

thể có cạnh nối từ đỉnh u tới đỉnh v nhưng chưa chắc đã có cạnh nối từđỉnh v tới đỉnh u Hay nói cách khác, tập E gồm các cặp (u, v) có tính thứ

tự: (u, v) ≠ (v, u) Trong đồ thị có hướng, các cạnh được gọi là các cung.

Đồ thị vô hướng cũng có thể coi là đồ thị có hướng nếu như ta coi cạnhnối hai đỉnh u, v bất kỳ tương đương với hai cung (u, v) và (v, u)

Trang 3

II Các khái niệm

1 Các khái niệm cơ bản

- Khuyên: cạnh (cung) e gọi là khuyên nếu e có dạng (v,v).

- Cạnh (cung) lặp: là hai cạnh (cung) cùng tương ứng với một cặp đỉnh.

- Đỉnh kề: nếu (u,v) là cạnh (hoặc cung) của đồ thị thì v gọi là kề của u.

Trong đồ thị vô hướng nếu v kề u thì u cũng kề v, nhưng trong đồ thị cóhướng thì không chắc

- Cạnh liên thuộc: Trong đồ thị vô hướng, cạnh e=(u,v) gọi là cạnh liên

thuộc với đỉnh u và liên thuộc với đỉnh v

- Bậc của đỉnh: Trong đồ thị vô hướng, số cạnh liên thuộc với v gọi là bậc

của đỉnh v, kí hiệu là deg(v)

Ví dụ: Xét đồ thị hình 1,deg(a)=1, deg(b)=deg(c)=4, deg(d)=1,

Hình 1.2: Đồ thị có hướng

Trang 4

- Cung vào, ra: Trong đồ thị có hướng, cung e=(u,v) gọi là cung ra khỏi u và

là cung vào v

- Bán bậc của đỉnh: Trong đồ thị có hướng, số cung vào v gọi là bán bậc vào

của đỉnh v, kí hiệu là: deg-(v), số cung ra khỏi v gọi là bán bậc ra của đỉnh

v, kí hiệu là: deg+(v)

Ví dụ: Xét đồ thị hình 1.1,

deg-(A)=2, deg-(B)=3, deg-(C)=1, deg-(D)=2, deg-(E)=2

deg+(A)=3, deg+(B)=2, deg+(C)=2, deg+(D)=2, deg+(E)=1

- Định lý 1 : Trong đồ thị vô hướng thì tổng bậc của tất cả các đỉnh bằng 2

lần số cạnh

V v

v)

O v

v)

deg( chẵn

Do vO, deg(v) lẻ mà tổng 

O v

v)

deg( chẵn, nên tổng này phải gồmmột số chẵn các số hạng

 số đỉnh có bậc là số lẻ là một số chẵn (đpcm)

- Định lý 2 : Trong đồ thị có hướng, tổng bán bậc ra của tất cả các đỉnh bằng

tổng bán bậc vào của tất cả các đỉnh và bằng số cạnh của đồ thị

Trang 5

2 Cách biểu diễn đồ thị trong máy tính

* Tính chất của ma trận kề của đồ thị vô hướng:

- Tính đối xứng: a[i,j]=a[j,i], i,j=1,2, .,n

Trang 6

- Tổng các phần từ trên dòng i (cột j) bằng bậc của đỉnh i (đỉnh j).

- Gọi aịjp , i,j=1, 2, ,n là phần tử của ma trận Ap =A.A .A (p thừa số)Khi đó: aịjp , i,j=1, 2, ,n là số đường đi khác nhau từ đỉnh i đến đỉnh j quap-1 đỉnh trung gian

- Không có tính đối xứng

- Tổng các phần từ trên dòng i bằng bán bậc ra của đỉnh i và tổng các phần

từ trên cột j bằng bán bậc vào của đỉnh j

- Giống tính chất 3 của vô hướng

* Ma trận kề của đa đồ thị: a[i,j]=số cạnh (cung) nối hai đỉnh i, j

Ma trận trọng số:

Đồ thị có trọng số là đồ thị mà mỗi cạnh (i,j) có một giá trị c(i,j) gọi là trọng

số của cạnh Để biểu diễn đồ thị ta sử dụng ma trận trọng số C= {c[i,j], i,j=1,2, .,n}

với c[i,j]=c(i,j) nếu (i,j) E và c[i,j]= nếu (i,j)  E

trong đó số  có thể được đặt bằng một trong các giá trị sau: 0, + , -

Ưu điểm lớn nhất của phương pháp biểu diễn đồ thị bằng ma trận kề (hoặc

ma trận trọng số) là để trả lời câu hỏi: Hai đỉnh u,v có kề nhau trên đồ thị haykhông, chúng ta chỉ phải thực hiện một phép so sánh nhược điểm lớn nhất củaphương pháp này là: không phụ thuộc vào số cạnh của đồ thị, ta luôn phải sửdụng n2 đơn vị bộ nhớ để lưu trữ ma trận kề của nó

b Ma trận liên thuộc đỉnh-cạnh

Xét G=(V, E) là đơn đồ thị có hướng Ma trận liên thuộc đỉnh-cạnh có dạng:

Ví dụ:

1, nếu i là đỉnh đầu của cung ej

-1, nếu i là đỉnh cuối của cung ej

0, nếu i không là đầu mút của cung

Trang 7

Hinh 2.2

c Danh sách cạnh (cung)

Trong trường hợp đồ thị thưa (đồ thị có số cạnh m thoả mãn bất dẳng thức:m<6n) người ta thường dùng cách biểu diễn đồ thị dưới dạng danh sách cạnh.Chúng ta sẽ lưu trữ danh sách tất cả các cạnh (cung) của đồ thị Một cạnh(cung) e=(x,y) của đồ thị sẽ tương ứng với hai biến Dau[e], Cuoi[e] Như vậy,

để lưu trữ đồ thị ta cần sử dụng 2m đơn vị bộ nhớ Nhược điểm của cách biểudiễn này tìm các đỉnh kề với một đỉnh cho trước chúng ta phải làm cỡ m phép

so sánh (khi duyệt qua danh sách tất cả các cạnh của đồ thị) Trong trường hợp

đồ thị có trọng số ta cần thêm m đơn vị bộ nhớ để lưu trữ trọng số của cáccạnh

Trang 9

Trong cỏch biểu diễn này chỳng ta cần phải sử dụng cỡ m+n đơn vị bộ nhớ.

III Đường đi trong đồ thị

Chú ý rằng đờng đi trong đồ thị có hớng không đợc đi ngợc chiều mũi tên

- Đờng đi (chu trình) đợc gọi là đơn nếu nó đi qua mỗi cạnh không quá mộtlần

- Đờng đi (chu trình) đợc gọi là sơ cấp nếu nó đi qua mỗi đỉnh đúng một lần

Đờng đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên dơng, trên đồ thị vô hớng G=(V,E) là dãy:

Trang 10

Đỉnh u đợc gọi là đỉnh đầu, còn đỉnh v đợc gọi là đỉnh cuối của đờng đi.

Đờng đi có đỉnh đầu trùng với đỉnh cuối (tức là u trùng với v) đợc gọi là chutrình Đờng đi hay chu trình đợc gọi là đơn nếu không có cạnh nào bị lặp lại

Hỡnh2.3

Khái niệm đờng đi và chu trình trên đồ thị có hớng đợc định nghĩa hoàntoàn tơng tự nh trờng hợp đồ thị vô hớng, chỉ khác là ta có chú ý đến

hớng trên các cung

4 Đờng đi và chu trình của đồ thị có hớng:

Đờng đi có độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên dơng,trên đồ thị có hớng là dãy:

Đỉnh u đợc gọi là đỉnh đầu, còn đỉnh v đợc gọi là đỉnh cuối của đờng đi

Đờng đi có đỉnh đầu trùng với đỉnh cuối (tức là u trùng với v) đợc gọi là chutrình Đờng đi hay chu trình đợc gọi là đơn nếu không có cạnh nào bị lặp lại

5 Đồ thị liên thông

Cho đồ thị G = <V,E> Hai đỉnh phân biệt u,v  V đợc gọi là liên thông nếutồn tại một đờng đi nối các đỉnh u,v với nhau Đồ thị G đợc gọi là liên thôngnếu với hai đỉnh phân biệt bất kỳ trong đồ thị đều là liên thông

Ví dụ nh hình 2.3 là một đồ thị liên thông vì luôn có đờng đi nối hai đỉnh bất

kỳ của đồ thị, còn đồ thị nh hình 2 là không liên thông vì không có đờng đi từ

A tới D hoặc từ D tới F v.v

Trang 11

E = E1  E2Thì G = <V,E> là đồ thị có 2 thành phần liên thông G1, G2.

Hình 2.4

Ví dụ nh đồ thị trong hình 2.4 có ba thành phần liên thông sau:

G1 = <V1, E1> với V1= {A,B,C} và E1 = {AB, AC, CB}

- G là liên thông một chiều nếu với hai đỉnh u,v khác nhau bất kỳ của G luôn

có đờng đi u - v hoặc đờng đi v - u.

- G là liên thông mạnh (liên thông 2 chiều) nếu hai đỉnh u,v khác nhau bất kỳ

của G đều có đờng đi u - v và đờng đi v - u.

Hình 2.5

Trờn hình 2.5 đồ thị H1 là liên thông mạnh, giả sử cặp đỉnh (A,C) ta có chiều

đi từ C tới A, và đồng thời cũng có chiều đi từ A tới C, và bất kỳ các cặp đỉnhkhác cũng tơng tự nh vậy H2 là liên thông một chiều vì xét cặp đỉnh (A,D) cóchiều đi từ D tới A nhng không có chiều đi từ A tới D H3 là liên thông yếu vìtồn tại cặp đỉnh (B,C) không có chiều đi B - C cũng không có chiều đi C - B, nh -

ng đồ thị vô hớng tơng ứng là liên thông

6 Đường đi Euler và chu trinh Euler

Đường đi Euler: Một đường đi trong đồ thị được gọi là đường đi euler nếu

nú đi qua tất cả cỏc cạnh hoặc cung của đồ thị với mỗi cạnh hoặc cung đi quađỳng một lần

F

C

ED

Trang 12

Chu trình Euler: Một chu trình được gọi là chu trình Euler nếu nó là một

đường đi Euler

Đường đi Euler là một đường đi đơn chứa tất cả các cạnh hoặc cung của đồ

thị Còn chu trình Euler là một chu trinh đơn chứa tất cả các cạnh hoặc cung

của đồ thị

Một đồ thị có đường đi Euler thì được gọi là đồ thị nửa Euler.Còn đồ thị có

chu trình Euler thì gọi là đồ thị Euler

a, Điều kiện cần và đủ để một đồ thị vô hướng liên thông có chu trình

Euler là mọi đỉnh của nó đều có bậc chẵn

b, Điều kiện cần và đủ để đồ thị có hướng liên thông mạnh có chu trình

Euler là tại mọi đỉnh của nó thì bậc vào bằng bậc ra có nghĩa là:

Deg -(v)=Deg +(v) vV;

Định lý 2 Cần và đủ để 1 đồ thị có đường đi Euler nhưng không có chu trình

Euler là đồ thị đó có đúng 2 đỉnh bậc lẻ

7 Bài toán đường đi ngắn nhất

Trong lý thuyết đồ thị, bài toán đường đi ngắn nhất nguồn đơn là bài

toán tìm một đường đi giữa hai đỉnh sao cho tổng các trọng số của các cạnh

tạo nên đường đi đó là nhỏ nhất Định nghĩa một cách hình thức, cho trước

B

A

C

D E

A

E

D F

B

C

Trang 13

một đồ thị có trọng số (nghĩa là một tập đỉnh V, một tập cạnh E, và một hàmtrong số có giá trị thực f : E → R), cho trước một đỉnh v thuộc V, tìm mộtđường đi P từ v tới mỗi đỉnh v' thuộc V sao cho:

là nhỏ nhất trong tất cả các đường nối từ v tới v' Bài toán đường đi ngắn nhất

giữa mọi cặp đỉnh là một bài toán tương tự, trong đó ta phải tìm các đường đi

ngắn nhất cho mọi cặp đỉnh v và v'

Thuật toán Dijkstra, mang tên của nhà khoa học máy tính người Hà Lan

Edsger Dijkstra, là một thuật toán giải quyết bài toán đường đi ngắn nhất

nguồn đơn trong một đồ thị có hướng không có cạnh mang trọng số âm

Bài toán:

Cho một đồ thị có hướng G=(V,E), một hàm trọng số w: E → [0, ∞) vàmột đỉnh nguồn s Cần tính toán được đường đi ngắn nhất từ đỉnh nguồn s đếnmỗi đỉnh của đồ thị

Ví dụ: Chúng ta dùng các đỉnh của đồ thị để mô hình các thành phố và

các cạnh để mô hình các đường nối giữa chúng Khi đó trọng số các cạnh cóthể xem như độ dài của các con đường (và do đó là không âm) Chúng ta cầnvận chuyển từ thành phố s đến thành phố t Thuật toán Dijkstra sẽ giúp chỉ rađường đi ngắn nhất chúng ta có thể đi

Trọng số không âm của các cạnh của đồ thị mang tính tổng quát hơnkhoảng cách hình học giữa hai đỉnh đầu mút của chúng

Ví dụ: Với 3 đỉnh A, B, C đường đi A-B-C có thể ngắn hơn so với

đường đi trực tiếp A-C

Thuật toán Dijkstra có thể mô tả như sau:

- Ta quản lý một tập hợp động S Ban đầu S={s}

- Với mỗi đỉnh v, chúng ta quản lý một nhãn d[v] là độ dài bé nhất trongcác đường đi từ nguồn s đến một đỉnh u nào đó thuộc S, rồi đi theo cạnh nối u-v

- Trong các đỉnh ngoài S, chúng ta chọn đỉnh u có nhãn d[u] bé nhất, bổsung vào tập S Tập S được mở rộng thêm một đỉnh, khi đó chúng ta cần cậpnhật lại các nhãn d cho phù hợp với định nghĩa

Trang 14

- Thuật toỏn kết thỳc khi toàn bộ cỏc đỉnh đó nằm trong tập S, hoặc nếuchỉ cần tỡm đường đi ngắn nhất đến một đỉnh đớch t, thỡ chỳng ta dừng lại khiđỉnh t được bổ sung vào tập S.

Tớnh chất khụng õm của trọng số cỏc cạnh liờn quan chặt chẽ đến tớnhđỳng đắn của thuật toỏn Khi chứng minh tớnh đỳng đắn của thuật toỏn, chỳng

ta phải dựng đến tớnh chất này

Phần 2: Cài Đặt Thuật Toỏn

I Kiểm tra tính liên thông:

Một đồ thị đợc gọi là liên thông nếu mọi cặp đỉnh của nó đều đợc nốivới nhau bởi một đờng

Một đồ thị con liên thông của đồ thị mà nó không đợc chứa trong một

đồ thị con liên thông khác, gọi là thành phần liên thông

1 Bài toán:

Bài toán đặt ra là cho một đồ thị vô hớng G=(V,E), hãy cho

biết G có bao nhiêu thành phần liên thông, và mỗi thành phần liên thông của

nó gồm những đỉnh nào

2 Thuật toán kiểm tra tính liên thông :

Xét đồ thị G(V,E):

B ớc 1 : Lấy đỉnh bất kỳ I của G, đặt T={ I } và gọi I là đỉnh gốc

B ớc 2 : Đa vào T tất cả những đỉnh j sao cho cạnh ij thuộc E ( tức cạnh ij làmột cạnh của G)

B ớc 3 : Nếu T chứa mọi đỉnh của G( nghĩa là điều kiện dừng lại ở bớc 2thoả mãn), thì đồ thị G liên thông

B ớc 4 : Nếu T không chứa mọi đỉnh của G thì đồ thị G không liên thông.Khi đó, T là một thành phần của liên thông

B ớc 5 : Lấy đỉnh v thuộc G nhng không thuộc T, trở về bớc 2

II Tìm chu trình Euler:

Trang 15

Định nghĩa chu trình Euler : Giả sử G<X,U> là đồ thị vô hớng Một chutrình w trong đồ thị G đợc gọi là chu trình Euler nếu nó đi qua tất cả các cạnhcủa G và đi qua mỗi cạnh đúng một lần.

1 Nêu bài toán :

Cho đồ thị G=<X,U> Hãy tìm chu trình Euler của đồ thị G nếu có

2 Nêu thuật toán :

Cho đơn đồ thị G với ma trận kề a[i,j]

B

ớc 1 : Kiểm tra xem bậc của mỗi đỉnh có là số chẵn hay không, tức làkiểm tra xem tổng các phần tử trên mỗi dòng ( hoặc mỗi cột) có là số chẵn haykhông?

B

ớc 2 : Nếu tồn tại một đỉnh có bậc lẻ (hoặc một dòng hay một cột của

ma trân có tổng các phần tử của nó là lẻ), ta kết luận rằng đồ thị không có chutrình Euler

B

ớc 5 : Kiểm tra xem có còn đỉnh nào có cạnh liên thuộc với nó mà cha

đ-ợc đi qua hay không? Nếu có, ta lấy đỉnh đó làm xuất phát (đỉnh dớnh), đi theochu trình cũ, hoàn tất chu trình tại đỉnh này rồi đi theo cạnh cha đợc đi qua.Trở về bớc4

B

ớc 6: Nếu không có đỉnh nào còn có cạnh liên thuộc với nó mà cha đợc

đi qua, thỡ ta ghộp chu trỡnh với chu trỡnh con tại đỉnh dớnh và coi chu trỡnhmới thu được bằng chu trỡnh Ta kết luận chu trỡnh tim được là chu trỡnh Euler

3.Vớ dụ minh họa

Trang 16

4 Cài đặt thuật toán

begin

write('Cho so dinh cua do thi:');readln(n);

writeln('Nhap so lieu ma tran ke:');

Trang 20

{*******************Ghep chu trinh*****************}

Procedure ghep(var ct:bvtor; ctc:bvtor;i:byte);

writeln('Khong co chu trinh');

write('An enter de tiep tuc ');readln;

Trang 21

writeln('So thanh phan cua do thi lien thong la:',solt);

for i:=1 to solt do

begin

Trang 22

writeln('Thanh phan lien thong thu ',i,' gom cac dinh:');

Trang 23

write('Tim duong di tu dinh:');readln(s);

write(' den dinh:');readln(T);

for j:= 1 to n do

Trang 24

writeln('TIM DUONG DI VA KIEM TRA TINH LIEN THONG');

WRITELN('CUA DO THI THEO THUAT TOAN TIM KIEM TREN DO THI');

writeln('Moi ban chon chuc nang:');

writeln;

writeln('1.Nhap so lieu tu ban phim');

writeln('2.Nhap so lieu tu tep');

writeln('3.Kiem tra tinh lien thong');

writeln('4.Tim duog di giua hai dinh');

Ngày đăng: 12/09/2012, 16:20

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Đồ thị vô hướng - Một số bài toán về đường đi trong lí thuyết đồ thị
Hình 1.1 Đồ thị vô hướng (Trang 3)
Hình 2.1. Đồ thị vô hướng G và Đồ thị có hướng G 1 - Một số bài toán về đường đi trong lí thuyết đồ thị
Hình 2.1. Đồ thị vô hướng G và Đồ thị có hướng G 1 (Trang 5)
Đồ thị có trọng số ta cần thêm m đơn vị bộ nhớ để lưu trữ trọng số của các  cạnh. - Một số bài toán về đường đi trong lí thuyết đồ thị
th ị có trọng số ta cần thêm m đơn vị bộ nhớ để lưu trữ trọng số của các cạnh (Trang 7)
Đồ thị vô hớng G=(V,E) là dãy: - Một số bài toán về đường đi trong lí thuyết đồ thị
th ị vô hớng G=(V,E) là dãy: (Trang 9)
Hình 2.6   Hinh 2.7 - Một số bài toán về đường đi trong lí thuyết đồ thị
Hình 2.6 Hinh 2.7 (Trang 12)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w