1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu

42 9 0

Đ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

Định dạng
Số trang 42
Dung lượng 542,48 KB

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

Nội dung

Thuật toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong đa giác đơn của Lee và Preparata .... Thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng ngắn nhất giữa hai đỉnh trong đa giác đơn điệ

Trang 1

Phan Đức Dũng

BàI TOáN TìM ĐƯờNG ĐI NGắN NHấT giữa hai đỉnh TRONG ĐA GIáC ĐƠN ĐIệU

Luận văn thạc sĩ toán học

Trang 2

Tr-ờng đại học vinh

Trang 3

Mở đầu 1

Ch-ơng I Kiến thức cơ sở 3

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

1.2 Đa giác đơn, đ-ờng gấp khúc đơn điệu và đa giác đơn điệu 8

1.3 Tập lồi, bao lồi và điểm cực biên 9

1.4 Thuật toán tăng dần 11

1.5 Lý thuyết đồ thị 12

1.6 Tam giác phân đa giác đơn 17

1.6.1 Định nghĩa và tính chất 17

1.6.2 Thuật toán tam giác phân đa giác đơn 18

Ch-ơng II Thuật toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong đa giác đơn của Lee và Preparata 21

2.1 Thuật toán tìm hình ống tay 21

2.2 Thuật toán phễu 22

2.2.1 Khái niệm phễu 22

2.2.2 Thuật toán phễu 23

2.3 Thuật toán chính 24

Ch-ơng III Thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng ngắn nhất giữa hai đỉnh trong đa giác đơn điệu 26

3.1 Thuật toán con tìm bao lồi tiền vi phạm 27

3.1.1 Mô tả bao lồi tiền vi phạm 27

3.1.2 Thuật toán con tìm bao lồi tiền vi phạm 28

3.2 Thuật toán con tìm link 28

3.2.1 Khái niệm link 28

Trang 4

3.3 Thuật toán chính 30

3.3.1 Mô tả thuật toán 31

3.3.2 Tính đúng đắn của thuật toán 32

Kết luận 35

Tài liệu tham khảo 36

Trang 5

Hình 1: Minh họa thuật toán tìm tiếp tuyến 11 Hình 2: Minh họa thuật toán Dijkstra 14 Hình 3: Minh họa đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu 26

Hình 4: Minh họa thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm 28

Hình 5: Minh họa bài toán sử dụng bao lồi làm định h-ớng 33

Trang 6

Mở đầu

Hình học tính toán là lĩnh vực nghiên cứu để tìm ra các thuật toán hiệu quả và thực thi trên máy tính cho những bài toán tối -u hình học Đ-ờng đi ngắn nhất Euclidean giữa hai điểm trong đa giác đơn là vấn đề cơ bản trong hình học tính toán Năm 1984, trong [13] và [17], Lee và Preparata đã đ-a ra một thuật toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong đa giác đơn có độ

phức tạp thuật toán là O(n2) bằng cách sử dụng tam giác phân đa giác Năm

2008, trong [9] và [10], Phan Thành An không cần quá trình tam giác phân đa giác tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu Một số chi tiết bài toán đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu đ-ợc trình bày trong [5]

Trong luận văn này chúng tôi nghiên cứu “Bài toán tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu”, cụ thể trình bày chi tiết hai thuật

toán của Lee và Preparata và của Phan Thành An dùng bao lồi làm định h-ớng (đ-ợc trình bày lần đầu tiên trong [9] và [10]) tìm đ-ờng ngắn nhất giữa hai

đỉnh trong đa giác giác đơn điệu

Luận văn gồm ba ch-ơng

Ch-ơng I: Kiến thức cơ sở

Trong ch-ơng này chúng tôi nêu hệ thống một số kiến thức và một thuật toán về tìm bao lồi của tập hữu hạn điểm, tam giác phân đa giác đơn,

đ-ờng đi ngắn nhất trong đồ thị trọng số, để làm cơ sở cho các ch-ơng sau

Ch-ơng II: Thuật toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong

đa giác đơn của Lee và Preparata

Trong ch-ơng này chúng tôi trình bày thuật toán tìm hình ống tay và thuật toán phễu của Lee và Preparata tìm đ-ờng đi ngắn nhất giữa hai điểm

trong đa giác đơn nh-ng có sự cải tiến của Guibas, Hershberger, Leven,

Sharir, và Tarjan (Xem [17]) Trình bày thuật toán chính để giải bài toán tìm

đ-ờng đi ngắn nhất giữa hai điểm trong đa giác đơn của Lee và Preparata

Trang 7

Ch-ơng III: Thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu

Trong ch-ơng này chúng tôi trình bày thuật toán tìm bao lồi tiền vi phạm, thuật toán tìm Link của bài toán tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa

giác đơn điệu dùng bao lồi làm định h-ớng Dựa vào một số tính chất đơn điệu

của đa giác, bao lồi tiền vi phạm, .trong [5], trình bày thuật toán chính sử

dụng bao lồi làm định h-ớng để giải bài toán tìm đ-ờng đi ngắn nhất giữa hai

đỉnh trong đa giác đơn điệu

Luận văn đ-ợc hoàn thành d-ới sự h-ớng dẫn tận tình của thầy giáo

PGS TS Phan Thành An Tác giả xin đ-ợc bày tỏ lòng biết ơn sâu sắc tới

Thầy, ng-ời đã h-ớng dẫn, giúp đỡ tác giả trong quá trình thực hiện đề tài

Tác giả xin chân thành cảm ơn các Thầy PGS TS Nguyễn Hữu Quang, PGS TS Phạm Ngọc Bội, TS Nguyễn Duy Bình là những ng-ời hết sức quan tâm giảng dạy cũng nh- động viên tác giả trong quá trình học tập

Tác giả xin chân thành cảm ơn đến các Giáo s-, phó Giáo s-, Tiến sĩ… Khoa Đào tạo Sau Đại học Tr-ờng Đại học Vinh, Viện Toán học, những ng-ời

đã tham gia quản lý, giảng dạy, giúp đỡ và h-ớng dẫn tác giả trong suốt quá trình học tập, nghiên cứu

Tác giả xin cảm ơn anh D-ơng Quốc Nam, anh Đoàn Văn Thanh (Khoá 14) và gia đình, bạn bè, đồng nghiệp đã động viên khích lệ và giúp đỡ tác giả trong quá trình học tập cũng nh- hoàn thành luận văn này

Mặc dù rất cố gắng trong quá trình học tập, nghiên cứu nhiều tài liệu cũng nh- tham khảo nhiều ý kiến trong quá trình viết và hoàn thành luận văn, nh-ng luận văn khó tránh khỏi những thiếu sót, rất mong nhận đ-ợc ý kiến

đóng góp của của hội đồng chấm luận văn Thạc sĩ Toán - Tr-ờng Đại học Vinh, những ý kiến trao đổi của đồng nghiệp về nội dung luận văn này

Vinh, tháng 12 năm 2009

Trang 8

tính toán của thuật toán là độ phức tạp thời gian Biết đ-ợc độ phức tạp thời

gian cho một thuật toán rất quan trọng, vì khi đó ta biết đ-ợc thời gian là một phút, một năm, một tỉ năm để thực hiện thuật toán đó

Để tính toán độ phức tạp của thuật toán ta chỉ xét những hàm thực

f:NR xác định trên tập số nguyên d-ơng và hầu nh- d-ơng làm công cụ

đo Nghĩa là tồn tại một số nguyên d-ơng n0 sao cho f(n) > 0 với mọi n > n0

Kí hiệu F là tập hợp tất cả các hàm nh- vậy

Định nghĩa 1.1.1 (Xem [2]) Cho hàm số g(n)F, ta định nghĩa O(g(n))

là một tập hợp tất cả các hàm f(n)F có tính chất: Tồn tại hằng số c và n0 sao

cho với mọi n>n0 thì f(n) c.g(n)

Nếu f(n)O(g(n)), thì ta nói rằng f(n) là Ô lớn của g(n)

Những hàm thuộc O th-ờng dùng nh- bị chặn d-ới của hàm thực hiện

tính toán trong thuật toán để giải một bài toán

Ng-ời ta dùng kí hiệu f(n) = g(n)+O(h(n)), nghĩa là f(n)-g(n) = O(h(n))

Định nghĩa 1.1.2 (Xem [2]) Cho hàm số g(n)F, ta định nghĩa (g(n))

là tập hợp tất cả các hàm f(n)F có tính chất: Tồn tại hằng số c1, c2 và n0 sao

cho với mọi n>n0 thì c1.g(n) f(n) c2.g(n)

Trang 9

Định nghĩa 1.1.3 (Xem [2]) Cho hàm số g(n)F, ta định nghĩa (g(n))

là tập hợp tất cả các hàm f(n)F có tính chất: Tồn tại hằng số d-ơng c và n0sao cho với mọi n>n0 thì c.g(n) f(n)

Nếu f(n) (g(n)), thì ta nói rằng f(n) là Ô mê ga lớn của g(n)

Mệnh đề 1.1.1 (Xem [2]) Nếu f1(n)O(g1(n)) và f2(n)O(g2(n)) thì

1.1.2 Cách tính độ phức tạp của thuât toán

Ta sử dụng T(<khối mã>) cho độ phức tạp tính toán của một toán tử

riêng cũng nh- một đoạn mã ch-ơng trình Khi mã ch-ơng trình đ-ợc tách

biệt rõ ràng thì ta kí hiệu T(n) là độ phức tạp tính toán là hàm biến số n với n

là số phép toán cơ sở Độ phức tạp tính toán đ-ợc đo bằng hàm O( ) là chính

Vì vậy để tính độ phức tạp tính toán của thuật toán tức là ta đi xác định

hàm T(n)O( ) cho đoạn mã ch-ơng trình đó

Các phép toán đ-ợc dùng để đo độ phức tạp thời gian có thể là phép so sánh các số nguyên, phép cộng, phép trừ, nhân, chia các số nguyên hoặc bất

kỳ một phép toán sơ cấp nào khác

Định nghĩa 1.1.4 (Xem [2]) Phép tính cơ sở là phép cộng, trừ, nhân,

chia và các hàm l-ợng giác, hàm mũ, hàm logarit hoặc bất kì một phép toán sơ cấp nào khác Độ phức tạp của toán tử cơ sở là O(1)

Trang 10

Tuy nhiên khi thực hiện tính toán với những số lớn thì phép nhân và các hàm trên cũng không là phép tính cơ sở nữa Vì phép nhân các số lớn, các hàm

đ-ợc thực hiện tính toán trên các dãy

Độ phức tạp thời gian của dãy liên tiếp các phép tính xác định bởi độ

phức tạp cao nhất trong chúng Tức là, giả sử toán tử s1 có độ phức tạp F1, s2

có độ phức tạp F2 Khi đó:

T(s1)O(F1); T(s2)O(F2) T(s1, s2)max{O(F1);O(F2)}

Để dễ dàng cho việc phân tích thuật toán ta kết hợp những kí hiệu độ đo phức tạp và phân tích trong tr-ờng hợp xấu nhất để biết đ-ợc thời gian thực hiện những thuật toán trong thời gian xấu nhất là bao nhiêu?

Ng-ời ta định ra độ phức tạp của các phép toán trong tr-ờng hợp xấu nhất là:

(1) Phép gán có độ phức tạp O(1)

(2) Phép nhập vào thủ tục có độ phức tạp O(1)

(3) Phép ra khỏi thủ tục có độ phức tạp O(1)

(4) Mệnh đề if<điều kiện> độ phức tạp là thời gian so sánh cộng với

O(max của hai nhánh)

(5) Vòng lặp (While) có độ phức tạp thời gian là tổng tất cả vòng lặp với thời gian của mỗi vòng lặp đó

Thứ bậc trong tập hàm số (Xem [3])

Trong phân tích thuật toán ng-ời ta th-ờng hay dùng các hàm sau đây

1, logn, n , n, nlogn, n2, n3, 2n , n2 n , n!

Những hàm này tạo ra một dây xích thứ bậc tăng nh- sau:

O(1)O(logn)O( n)O(n)O(nlogn)O(n2)O(n3)O(2 n)O(n2 n)O(n!)

Các hàm nh- 2n , n2 n , n n , n! đ-ợc gọi là hàm loại mũ Một giải thuật mà

thời gian thực hiện của nó có cấp là các loại hàm mũ thì tốc độ rất chậm

Trang 11

Các hàm nh- logn, n , n, nlogn, n2, n3 đ-ợc gọi là các hàm loại đa thức Giải thuật với thời gian thực hiện có cấp hàm đa thức thì th-ờng chấp nhận đ-ợc

Ví dụ 1.1.1 (Xem [2]) Phân tích độ phức tạp của vòng for

- Dòng 1: Phép gán cố định mất thời gian là hằng số, kí hiệu là a

- Dòng 2: Với phép toán gán i := 1, kiểm tra i < n và i := i+1 cũng chiếm thời gian là hằng số, lần l-ợt kí hiệu là b; c; d

- Dòng 3: Cũng đòi hỏi thời gian là hằng số e

Khi đó thời gian (độ phức tạp) để thực hiện ch-ơng trình trên là:

T(n) = a+b+n(c+d)+n(e) = n(c+d+e)+a+b Suy ra T(n)O(n)

Ví dụ 1.1.2 (Xem [2]) Phân tích độ phức tạp của thuật toán sắp xếp dãy

Trang 12

- Vòng lặp từ dòng 1 đến dòng 7 có độ phức tạp O(

 1

(nó thực hiện nhiều nhất n - i lần)

Do đó độ phức tạp để thực hiện của thuật toán là

Ví dụ 1.1.3 (Xem [2]) Phân tích độ phức tạp của thuật toán tìm số a đầu

tiên có mặt trong khoá A gồm n số A1, A2, , A n, nếu không có trả về kết quả 0

Việc phân tích độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính này đ-ợc cụ thể nh- sau:

Số các phép so sánh đ-ợc dùng trong thuật toán này sẽ đ-ợc xem nh- th-ớc đo độ phức tạp thời gian của nó ở mỗi b-ớc của vòng lặp trong thuật toán, có hai phép toán so sánh đ-ợc thực hiện: một để xem đã tới cuối bảng

ch-a và một để so sánh phần tử a với một số hạng của dãy Cuối cùng còn một phép so sánh nữa làm ở ngoài vòng lặp Do đó nếu a = A k thì đã có 2k +1 phép

so sánh đ-ợc sử dụng Số phép so sánh nhiều nhất 2n + 2 đòi hỏi phải đ-ợc sử dụng khi phần tử a không có mặt trong bảng Trong tr-ờng hợp đó, 2n phép so sánh đ-ợc dùng để xác định a không phải là A k đối với k = 1, 2, ., n; một

5: return(0) end

Trang 13

1.2 Đa giác đơn, đ-ờng gấp khúc đơn điệu và đa giác đơn điệu

Tr-ớc khi nêu các khái niệm ta quy -ớc đ-ờng thẳng ab là đ-ờng thẳng

đi qua hai điểm phân biệt a và b theo h-ớng ab

Định nghĩa 1.2.1 (Xem [14]) Giả sử, trong mặt phẳng Oxy các điểm

a(x1,y1); b(x2,y2); c(x3,y3) Kí hiệu S(a,b,c) là diện tích đại số của tam giác abc,

khi đó diện tích đại số đ-ợc xác định nh- sau:

S(a,b,c) =

2

) )(

( ) )(

(

1 2 1 3 1 3 1

- Điểm c nằm trên đ-ờng thẳng ab khi và chỉ khi S(a,b,c) = 0

Định nghĩa 1.2.2 (Xem [14]) Đa giác là miền phẳng đ-ợc giới hạn bởi

một đ-ờng gấp khúc khép kín những đoạn thẳng trong mặt phẳng Những

đoạn thẳng đ-ợc gọi là cạnh của đa giác và những điểm chung của hai đầu

đoạn thẳng gọi là đỉnh của đa giác

Đa giác đơn là đa giác mà hai cạnh bất kì của nó hoặc là không giao

nhau, hoặc là giao nhau tại điểm chung duy nhất là đỉnh

Định nghĩa 1.2.3 (Xem [13]) Một đ-ờng gấp khúc đa giác < p0, p1, , p k >

là một dãy những điểm p i (i= 0, 1, , k) mà trong đó mọi cặp những điểm kề nhau

p i và p i+1 biểu thị một đoạn thẳng với mọi i = 0, 1, , k và không có hai đoạn nào không liên tiếp cắt nhau Khi đó ta còn gọi là đ-ờng gấp khúc không tự cắt

Định nghĩa 1.2.4 Cho đa giác đơn gồm n đỉnh <p1, ., p k , ., p n >

Khi đó, ta nói thứ tự các đỉnh p i (i=1 ,n ) của đa giác sắp xếp theo thứ tự

Trang 14

ng-ợc chiều kim đồng hồ nếu và chỉ nếu tiếp giáp với phần bên trái cạnh [p i , p i+1], i=1 ,n 1 là phần trong đa giác

Trong tr-ờng hợp ng-ợc lại, ta nói các đỉnh p i của đa giác sắp xếp theo thứ tự cùng chiều kim đồng hồ

Định nghĩa 1.2.5 (Xem [14]) Đ-ờng gấp khúc P là đ-ờng gấp khúc

đơn điệu nếu tồn tại một đ-ờng thẳng L sao cho mọi đ-ờng thẳng vuông góc với L thì hoặc không cắt P, hoặc cắt P theo một điểm, hoặc cắt P theo một

đoạn thẳng Và khi đó ta cũng nói đ-ờng gấp khúc P là đơn điệu theo ph-ơng L.

Một đa giác đ-ợc gọi là đa giác đơn điệu nếu nó là đa giác đơn và biên

của nó đ-ợc hợp thành từ hai đ-ờng gấp khúc đơn điệu theo cùng một ph-ơng

Định nghĩa 1.2.6 (Xem [14]) Một đa giác đơn đ-ợc gọi là y-đơn điệu

nếu nó đơn điệu đối với trục Oy

Trong luận văn này, chúng tôi không xét tr-ờng hợp đ-ờng gấp khúc

đơn điệu có cạnh nằm trên đ-ờng thẳng vuông góc với ph-ơng đơn điệu

Nhận xét 1.2.1 (Xem [5]) Đ-ờng gấp khúc Y =< q0, q1, , q m > đơn điệu theo ph-ơng L khi chỉ khi tồn tại một hệ trục toạ độ đề các vuông góc Oxy có trục hoành cùng ph-ơng với L sao cho hoành độ x i của các điểm q i thoả mãn

x i <x i+1 với mọi i=0 ,m 1

1.3 Tập lồi, bao lồi và điểm cực biên

Định nghĩa 1.3.1 (Xem [12]) Một tập A trong mặt phẳng đ-ợc gọi là tập lồi nếu x1, x2  A thì [x1, x2]={x1 +(1-)x2: 0    1} A

Định nghĩa 1.3.2 (Xem [12]) Một tổ hợp lồi của các điểm x1, x2 trong mặt phẳng là một tổng có dạng 1x1+2x2, với  1,2 0, sao cho 1 +2 = 1

Định nghĩa 1.3.3 (Xem [12]) Cho tập A trong mặt phẳng

- Giao của tất cả các tập lồi chứa A gọi là bao lồi của A , Kí hiệu là convA

Trang 15

- Giao của tất cả các tập lồi đóng chứa A gọi là bao đóng của A,

Kí hiệu là convA

Nhận xét 1.3.1 (Xem [12])

(i) convA là tập lồi nhỏ nhất chứa A

(ii) A là tập lồi convA =A

(iii) convA là tập đóng nhỏ nhất chứa A

Mệnh đề 1.3.1 (Xem [12]) Tập A lồi khi và chỉ khi A chứa tất cả các tổ

hợp lồi của nó

Định nghĩa 1.3.4 (Xem [12]) Cho tập lồi M trong mặt phẳng

Điểm x M đ-ợc gọi là điểm cực biên của tập hợp M nếu x [x1,x2],

x1, x2  M thì x x1 hoặc x x2

Một số dấu hiệu nhận dạng điểm cực biên của bao lồi của tập S hữu hạn

điểm trong mặt phẳng, (Xem [12]):

- Ta gọi điểm cao nhất của tập S là điểm có tung độ lớn nhất Trong các

điểm cao nhất điểm có hoành độ lớn nhất và điểm có hoành độ nhỏ nhất là các

điểm cực biên của convS

- Ta gọi điểm thấp nhất của tập S là điểm có tung độ nhỏ nhất Trong

các điểm thấp nhất điểm có hoành độ lớn nhất và điểm có hoành độ nhỏ nhất

là các điểm cực biên của convS

- Ta gọi điểm xa nhất về bên phải của tập S là điểm có hoành độ lớn nhất Trong các điểm xa nhất về bên phải điểm có tung độ lớn nhất và điểm có tung độ nhỏ nhất là các điểm cực biên của convS

- Ta gọi điểm xa nhất về bên trái của tập S là điểm có hoành độ nhỏ nhất Trong các điểm xa nhất về bên trái điểm có tung độ lớn nhất và điểm có tung độ nhỏ nhất là các điểm cực biên của convS

Trang 16

1.4 Thuật toán tăng dần

1.4.1 Thuật toán tổng quát

Cho S ={p0, p1, , p n-1 } là một tập hợp n điểm trong mặt phẳng Gọi Q i-1

là bao lồi của {p0, p1, ,p i-1 } các điểm của S

Ta tìm bao lồi Q i = conv{Q i-1{p i }} từ i = 3, 4, , n-1 đ-ợc gọi là tìm bao lồi theo thuật toán tăng dần, (Xem [14])

Thuật toán 1.4.1

1.4.2 Thuật toán tìm tiếp tuyến

Bài toán: Trong mặt phẳng cho đa giác lồi Q có n đỉnh {p0, p1, , p n-1}

đ-ợc đánh số theo thứ tự ng-ợc chiều kim đồng hồ và p là một điểm nằm ngoài Q Hãy tìm thuật toán xác định đ-ờng thẳng tiếp tuyến từ p tới Q

Thuật toán đ-ợc mô tả cụ thể nh- sau, Xem [14]:

Tìm điểm p i sao cho hai điểm p i-1 , p i+1 đều nằm bên phải pp i thì pp i là tiếp tuyến bên trái của Q Ng-ợc lại, nếu có điểm p i sao cho hai điểm p i-1 , p i+1

đều nằm bên trái pp i thì pp i là tiếp tuyến bên phải của Q

Hình 1: Minh họa thuật toán tìm tiếp tuyến

Đặt Q2  conv{p0,p1,p2}

For i = 3 to n - 1

Q i conv{Q i-1 {p i}}

Trang 17

Thuật toán 1.4.2

Độ phức tạp của thuật toán tìm tiếp tuyến

Trong vòng lặp for có cấu trúc tuần tự là hai cấu trúc rẽ nhánh if nên

theo cách đánh giá độ phức tạp thuật toán thì tr-ờng hợp xấu nhất i chạy đến

cuối vòng lặp for mới xác định đ-ợc tiếp tuyến còn lại

Từ đó ta suy ra độ phức tạp thuật toán tìm tiếp tuyến là O(n)

Nhận xét 1.4.1 Nếu X = < p0,p1, , p n-1 > là đ-ờng gấp khúc đơn điệu

thì việc đi tìm bao lồi Q i theo thuật toán tăng dần của X , t-ơng ứng với đi tìm hai tiếp tuyến trái và phải p i p l , p i p r của Q i-1 xuất phát từ đỉnh p i Bởi vì p iQ i-1

1.5 Lý thuyết đồ thị

1.5.1 Đồ thị và đ-ờng đi trong đồ thị

Định nghĩa 1.5.1 (Xem [4]) Đồ thị là một cặp G = (V, E), trong đó:

if p i-1 , p i+1 nằm bên phải pp ithen

pp i là tiếp tuyến bên trái end if;

if p i-1 , p i+1 nằm bên trái pp i then

pp i là tiếp tuyến bên phải end if;

end for

Trang 18

Định nghĩa 1.5.3 (Xem [4]) Đồ thị chỉ chứa các cạnh vô h-ớng đ-ợc gọi

là đồ thị vô h-ớng, còn đồ thị chỉ chứa các cạnh có h-ớng đ-ợc gọi là đồ thị

có h-ớng

Định nghĩa 1.5.4 (Xem [4]) Đồ thị G =(V, E) mà mỗi cặp đỉnh đ-ợc nối

nhau bởi không quá một cạnh đ-ợc gọi là đơn đồ thị (th-ờng gọi tắt là đồ thị)

còn nếu đồ thị có những cặp đỉnh đ-ợc nối với nhau nhiều hơn một cạnh thì

đ-ợc gọi là đa đồ thị

Định nghĩa 1.5.5 (Xem [4])

1 Hai đỉnh của đồ thị G đ-ợc gọi là liên thông, nếu trên đồ thị có

đ-ờng đi vô h-ớng nối chúng với nhau

2 Đồ thị đ-ợc gọi là liên thông nếu mọi cặp đỉnh của đồ thị đều liên

Định nghĩa 1.5.8 (Xem [4]) Đồ thị G đ-ợc gọi là đồ thị có trọng số nếu

mỗi cạnh (i,j) của đồ thị đ-ợc gán một số nguyên không âm C(i,j)

Nhãn C(i,j) trên cạnh (i,j) của đồ thị thường biểu diễn “chi phí” thực

tế đi qua cạnh này

Đ-ờng đi có trọng số bé nhất:

- Độ dài của đ-ờng đi trong đồ thị có trọng số bằng tổng các trọng số của các cạnh trên đ-ờng đi đó

- Độ dài của đ-ờng đi trong đồ thị có trọng số bé nhất từ đỉnh a đến

đỉnh b gọi là khoảng cách từ đỉnh a đến đỉnh b

Trang 19

- Nếu không có đ-ờng đi từ a đến b thì ta đặt khoảng cách bằng

Định lý 1.5.1 (Xem [4]) Giả sử đồ thị G có n đỉnh Tồn tại đ-ờng đi từ

đỉnh a đến đỉnh b trên đồ thị G khi chỉ khi tồn tại một đ-ờng đi từ a đến b trên

đồ thị này với độ dài không v-ợt quá n - 1

Định lý 1.5.2 (Xem [4]) Tổng tất cả các bậc của các đỉnh trong một đồ

thị bằng hai lần số cạnh của đồ thị đó

1.5.2 Thuật toán Dijkstra

Năm 1959, Dijkstra đ-a ra một thuật toán rất hiệu quả giải bài toán tìm

đ-ờng đi ngắn nhất giữa hai đỉnh trong đồ thị có trọng số với độ phức tạp là

O(n2), (Xem [3])

Bài toán 1.5.1 Cho đồ thị có n đỉnh có trọng số G = (V, E) và hai đỉnh

a, b G Hãy tìm đ-ờng đi có trọng số bé nhất (nếu có) đi từ đỉnh a đến

1 Với đỉnh xuất phát a, gán nhãn d(a) := 0

2 Nếu có cạnh (i,j) mà đỉnh i đ-ợc gán nhãn và đỉnh j ch-a đ-ợc gán nhãn hoặc đỉnh j đã đ-ợc gán nhãn nh-ng

d(i) + l(i,j) < d(j) thì giảm nhãn d(j) := d(i) + l(i,j)

3 Lặp lại b-ớc 2 cho đến khi không gán hoặc giảm nhãn đ-ợc nữa

Trang 20

Khi đó tại đỉnh b giá trị gán nhãn d(b) cuối cùng (nếu có) chính là độ dài đ-ờng đi ngắn nhất từ đỉnh a đến đỉnh b (Xem [4])

E j i khi

E j i khi j i l j i L

0

) , (

) , ( )

, ( ] ,

Từ tập hợp động S, ban đầu S = , sau đó nhập đỉnh a vào đ-ợc S = {a} Trong các đỉnh ngoài S, ta chọn đỉnh v có nhãn d(v) bé nhất, bổ sung vào S Tập S đ-ợc mở rộng thêm một đỉnh, khi đó ta cần cập nhật lại các nhãn d cho phù hợp Thuật toán kết thúc khi đỉnh b đ-ợc bổ sung vào S truoc[v] ghi nhận

đỉnh đi tr-ớc v trong đ-ờng ngắn nhất từ a đến b

Tính đúng đắn của thuật toán (Xem [3])

Ta gọi thuật toán của Dijkstra tìm đ-ờng đi ngắn nhất giữa hai đỉnh a và

b trong đồ thị G là DIJKSTRA(G, a , b) (xem Thuật toán 1.5.1, trang 16 )

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

Đánh giá độ phức tạp của thuật toán DIJKSTRA(G, a, b) nh- sau:

- Mỗi b-ớc lặp để tìm ra đỉnh u có độ phức tạp là O(n)

- Việc gán lại nhãn có độ phức tạp là O(n)

Thuật toán thực hiện n - 1 b-ớc lặp vì vậy độ phức tạp của thuật toán Dijkstra là O(n2)

Để giảm bớt khối l-ợng tính toán trong việc xác định đỉnh u ở mỗi b-ớc lặp, có thể sử dụng thuật toán sắp xếp Heapsort (xem [3], trang 221) trên đồ

thị cho bởi danh sách kề Khi đó ta có thể thu đ-ợc thuật toán Dijkstra với độ

phức tạp tính toán là O(mlogn), trong đó m là số cạnh của đồ thị

Trang 21

Thuật toán 1.5.1 (DIJKSTRA (G, a, b))

Ví dụ minh họa thuật toán Dijkstra tìm đ-ờng đi ngắn nhất từ đỉnh 1

đến đỉnh 6 cho bởi Hình 2 đ-ợc thực hiện nh- sau:

Ta quy -ớc viết hai thành phần của nhãn theo thứ tự : d[v], truoc[v] và

Ngày đăng: 16/10/2021, 22:50

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] P. T. An, Bài giảng hình học tính toán, Viện Toán học, (2009) Sách, tạp chí
Tiêu đề: Bài giảng hình học tính toán
[7] Đ. V. Thanh, Về thuật toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong một đa giác đơn của Lee và Preparata, Luận văn Cao học, Đại học Vinh (2008).Tài liệu tiếng Anh Sách, tạp chí
Tiêu đề: Về thuật toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong một đa giác đơn của Lee và Preparata
Tác giả: Đ. V. Thanh, Về thuật toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong một đa giác đơn của Lee và Preparata, Luận văn Cao học, Đại học Vinh
Năm: 2008
[8] P. T. An and T. V. Hoai, Incremental convex hull as an orientation to solve the shortest path problem, Submitted, 2009 Sách, tạp chí
Tiêu đề: Incremental convex hull as an orientation to solve the shortest path problem
[9] P. T. An, Some applications of optimal control problems in computational geometry (invited talk), Seminar at CEMAT, Instituto Superior Tecnico, Lisbon, Portugal, October 14-22, 2008 Sách, tạp chí
Tiêu đề: Some applications of optimal control problems in computational geometry (invited talk)
[10] P. T. An, An efficient algorithm for determining the convex ropes between two vertices of a simle polygon without triangulation, The Abdus Salam International Centre for Theoretical Physics(ICTP), Trieste, Italy, Preprint, (6/2008) Sách, tạp chí
Tiêu đề: An efficient algorithm for determining the convex ropes between two vertices of a simle polygon without triangulation
[13] D. T. Lee and F. P. Preparata, Euclidean shortest paths in the presence of rectilinear battiers, Networks, 14 (1984), 201-206 Sách, tạp chí
Tiêu đề: Euclidean shortest paths in the presence of rectilinear battiers
Tác giả: D. T. Lee and F. P. Preparata, Euclidean shortest paths in the presence of rectilinear battiers, Networks, 14
Năm: 1984
[15] J. Mitchell, Melkman / s convex hull algorithm, ASM 345/CSE 355 Sách, tạp chí
Tiêu đề: Melkman/s convex hull algorithm
[16] A. A. Melkman, On-line construction of the convex hull of a simple polyline, Information Processing Letters 25 (1987), 11-12, NorthHolland Sách, tạp chí
Tiêu đề: On-line construction of the convex hull of a simple polyline
Tác giả: A. A. Melkman, On-line construction of the convex hull of a simple polyline, Information Processing Letters 25
Năm: 1987
[17] L. Guibas, J. Hershberger, D. Leven, M. Sharir, and R. E. Tarjan, Linear-time algorithms for visibility and shortest path Problems inside triangulated simple polygon, Algorithmica, 2 (1987), 1-4: 209-233 Sách, tạp chí
Tiêu đề: Linear-time algorithms for visibility and shortest path Problems inside triangulated simple polygon
Tác giả: L. Guibas, J. Hershberger, D. Leven, M. Sharir, and R. E. Tarjan, Linear-time algorithms for visibility and shortest path Problems inside triangulated simple polygon, Algorithmica, 2
Năm: 1987
[2] N. H. Điển, Một số vấn đề về thuật toán, NXB Giáo Dục, (2005) Khác
[3] Đ. X. Lôi, Cấu trúc dữ liệu và giải thuật, NXB Đại học Quốc Gia Hà Néi, (1993) Khác
[4] N. Đ. Nghĩa và N. T. Thành, Toán rời rạc, NXB Đại học Quốc Gia Hà Néi, (2001) Khác
[5] D. Q. Nam, Một thuật toán hữu hiệu tìm đ-ờng đi ngắn nhất giữa hai Khác
[6] Đ. H. Ruận, Lý thuyết đồ thị và ứng dụng, NXB Khoa học và Kỹ thuật, (2000) Khác
[11] M. D. Berg, M. V. Kreveld, M. Overmars and O. Schwarzkopf, Computational Geometry: Algorithms and Applications, Springer, Second, Revised Edition, (1998) Khác
[12] S. R. Lay, Convex Sets and Their Applications, John Wiley and Sons, (1982) Khác
[14] J. O’Rourke, Computational Geometry in C, Cambridge University Press, (1998) Khác
[18] J. R. Sack and J. Urrutia, Handbook of Computational Geometry, Elsevier Science B. V, (2000) Khác

HÌNH ẢNH LIÊN QUAN

Chuyên ngành: Hình Học - Tôpô mã số: 60 46 10  - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
huy ên ngành: Hình Học - Tôpô mã số: 60 46 10 (Trang 2)
Nh- vậy kh ia không có mặt trong bảng, tổng số các phép so sánh đã sử dụng là 2n + 2.   - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
h vậy kh ia không có mặt trong bảng, tổng số các phép so sánh đã sử dụng là 2n + 2. (Trang 12)
Hình 1: Minh họa thuật toán tìm tiếp tuyến - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 1 Minh họa thuật toán tìm tiếp tuyến (Trang 16)
Hình 2: Minh họa đ-ờng đi ngắn nhất từ đỉnh 1 đến đỉnh 6 - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 2 Minh họa đ-ờng đi ngắn nhất từ đỉnh 1 đến đỉnh 6 (Trang 19)
Khi đó ta xây dựng bảng: - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
hi đó ta xây dựng bảng: (Trang 22)
B-ớc 3 Thực hiện FUNNEL( F) với hình ống tay P’ . - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
c 3 Thực hiện FUNNEL( F) với hình ống tay P’ (Trang 29)
Hình 3: Minh họa đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 3 Minh họa đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu (Trang 31)
Hình 4: Minh họa thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 4 Minh họa thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm (Trang 33)
Hình 5: Minh họa bài toán sử dụng bao lồi làm định h-ớng - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 5 Minh họa bài toán sử dụng bao lồi làm định h-ớng (Trang 38)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

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

w