1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ bài toán tìm bao lồi

54 1,5K 2

Đ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 đề Bài toán tìm bao lồi
Tác giả Nguyễn Kiều Linh
Người hướng dẫn TS. Hoàng Nam Dũng
Trường học Đại học Thái Nguyên
Chuyên ngành Toán Ứng Dụng
Thể loại Luận văn thạc sĩ
Năm xuất bản 2012
Thành phố Thái Nguyên
Định dạng
Số trang 54
Dung lượng 1,15 MB

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

Nội dung

.Hơn nữa bài toán tìm bao lồi còn được áp dụng để tìm ra các bài toán tính toánhình học khác như tìm tam giác phân Delaunay, tìm đường kính của một tậphợp, tìm các lớp lồi của một tập hợ

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KHOA HỌC

NGUYỄN KIỀU LINH

BÀI TOÁN TÌM BAO LỒI

Trang 2

Lời cảm ơn

Sau một thời gian cố gắng, nỗ lực học tập và nghiên cứu, đến nay tôi đã hoànthành luận văn tốt nghiệp thạc sỹ của mình Để có được kết quả này, tôi xinbày tỏ lòng biết ơn sâu sắc và lời cảm ơn chân thành nhất đến thầy tôi, TS.Hoàng Nam Dũng, người đã định hướng nghiên cứu cho tôi trong suốt thời gianthực hiện luận văn của mình Cám ơn thầy đã mang đến cho tôi những bài họcquý báu về phương pháp nghiên cứu khoa học Đó chính là nền tảng cơ bản,

là những hành trang vô cùng quý giá để tôi có thể tiếp cận được với khoa họcthật sự Thầy đã dạy cho tôi không chỉ những kiến thức khoa học mà còn cảnhững bài học về cuộc sống, về tình người Xin cảm ơn về tất cả những gì thầy

đã mang đến cho tôi

Tôi xin gửi lời cảm ơn chân thành tới các thầy cô ở trường Đại học Khoa học,Đại học Thái Nguyên và các thầy cô ở Viện Toán học đã luôn tận tình giúp đỡ,theo dõi và động viên cho tôi trong suốt quá trình thực hiện luận văn này.Xin cám ơn những người thân trong gia đình đã hết sức thông cảm, chia sẻ vàtạo điều kiện tốt nhất cho tôi để tôi có thể học tập, nghiên cứu và hoàn thànhnhững công việc của mình

Xin cám ơn tất cả những người bạn thân yêu, những người đã yêu mến, chia

sẻ với tôi những khó khăn vui buồn trong khi tôi thực hiện luận văn này

Trang 3

Mục lục

1.1 Bài toán tìm bao lồi 7

1.1.1 Tập lồi 7

1.1.2 Bao lồi 7

1.1.3 Bài toán tìm bao lồi 9

1.2 Ứng dụng của bài toán tìm bao lồi 9

1.2.1 Nhận dạng 10

1.2.2 Tìm đường đi ngắn nhất 11

1.2.3 Hệ thống thông tin địa lý (GIS) 12

1.2.4 Thống kê 14

1.2.5 Tìm đường kính của một tập hợp điểm 15

2 Các thuật toán tìm bao lồi 19 2.1 Một số khái niệm và thuật toán cơ bản 19

2.2 Thuật toán gói quà 22

2.3 Thuật toán quét Graham 23

2.3.1 So sánh hai góc trong mặt phẳng 24

2.3.2 Sắp xếp 25

2.3.3 Thuật toán quét Graham 29

2.4 Thuật toán Quickhull 30

2.5 Thuật toán Chan 35

3 Cải tiến các thuật toán 39 3.1 Xóa điểm 39

3.2 Cải tiến thuật toán Quickhull 41

4 Kết quả tính toán 45 4.1 Tạo tập hợp điểm ngẫu nhiên và thuật toán xóa điểm 45

Trang 4

4.2 Các kết quả tính toán 48

Trang 5

Mở đầu

Bài toán tìm bao lồi là một trong những bài toán đặc biệt quan trọng tronglĩnh vực hình học tính toán bởi các ứng dụng đa dạng của nó Chẳng hạn nhưnhận dạng mẫu, xử lý hình ảnh, tìm đường đi cho robot, số liệu thống kê, Hơn nữa bài toán tìm bao lồi còn được áp dụng để tìm ra các bài toán tính toánhình học khác như tìm tam giác phân Delaunay, tìm đường kính của một tậphợp, tìm các lớp lồi của một tập hợp, Vì các ứng dụng quan trọng của nónên nhiều nhà khoa học đã bắt tay vào việc nghiên cứu và đưa ra các thuật toántìm bao lồi của một tập hợp Điển hình như sự phát hiện của Chand và Kapurvào năm 1970 và Jarvis vào năm 1973 với thuật toán gói quà, Ronald Grahamvào năm 1972 với thuật toán quét Graham, W Eddy năm 1977 và A.Bykatnăm 1978 với thuật toán Quickhull, Timothy Chan vào năm 1993 với thuật toánChan, Hiện nay có rất nhiều nhà khoa học dựa vào các thuật toán này đểcải tiến và tăng tốc cho chúng nhằm đáp ứng các yêu cầu của cuộc sống hiệnđại như xử lí các vấn đề ở tốc độ cao với số lượng lớn Xuất phát từ lí do trênluận văn này đưa ra một một số cải tiến nhằm tăng tốc cho việc tính toán khitìm bao lồi của một tập hợp điểm trên mặt phẳng

Luận văn này gồm bốn chương Chương 1 phát biểu bài toán tìm bao lồi

và trình bày một số ứng dụng quan trọng của bài toán này trong thực tiễn.Chương 2 trình bày các thuật toán tìm bao lồi trong không gian hai chiều nhưthuật toán gói quà, thuật toán quét Graham, thuật toán Quickhull và thuậttoán Chan Chương 3 đưa ra thuật toán xóa điểm, là thuật toán dựa vào tínhchất của những điểm cực nằm trong tập các đỉnh của bao lồi, để xóa bớt nhữngđiểm nằm trong đa giác tạo bởi các điểm cực, nhằm mục đích giảm bớt số lượngcác điểm đầu vào cho các thuật toán tìm bao lồi Đồng thời chương này cũngtrình bày một cải tiến cho thuật toán Quickhull Chương 4 nêu các kết quả tínhtoán của các thuật toán đã được trình bày ở chương 3 như thuật toán xóa điểm,thuật toán Quickhull và Quickhull cải tiến

Trong quá trình nghiên cứu và tìm tòi để hoàn thành luận văn này, mặc dù

Trang 6

tác giả đã có nhiều nỗ lực cố gắng, nhưng chắc chắn luận văn sẽ không tránhkhỏi những thiếu sót Tác giả rất mong nhận được sự góp ý của các thầy cô vàcác bạn để luận văn được hoàn thiện hơn.

Trang 7

Chương 1

Bài toán tìm bao lồi và ứng dụng

Như đã biết, bài toán tìm bao lồi là một trong những bài toán đặc biệt quantrọng trong lĩnh vực hình học tính toán Chương này phát biểu bài toán tìm baolồi và đưa ra một số ứng dụng quan trọng của bài toán trong thực tế

1.1 Bài toán tìm bao lồi

Trước khi trình bày định nghĩa bài toán tìm bao lồi ta trình bày các kháiniệm tập lồi, tổ hợp lồi, [19]

1.1.1 Tập lồi

Định nghĩa 1.1 Cho hai điểm p, q ∈Rn Tập hợp tất cả các điểm x có dạng

x = (1 − λ)p + λq

với 0 ≤ λ ≤ 1 gọi là đoạn thẳng nối p với q và được kí hiệu là pq

Định nghĩa 1.2 Chop1, p2, , pk ∈Rn Những điểm x ∈Rn có dạng x =

kPi=1

λipi

trong đó pi ∈ Rn và 0 ≤ λi ≤ 1 với

kPi=1

λi = 1 được gọi là một tổ hợp lồi của

Trang 8

(a) Tập lồi (b) Tập không lồi

Hình 1.2 Bao lồi của một tập hữu hạn

Hình 1.3 Bao lồi của một tập hữu hạn

Trang 9

Nhận xét 1.2 Nếu gọi tập hợp các đỉnh của conv(P ) là H thì ta có

conv(P ) = conv(H).

Định nghĩa 1.6 Trong mặt phẳng, đa giác tạo bởi các đỉnh của một bao lồiđược gọi là biên của bao lồi đó

1.1.3 Bài toán tìm bao lồi

Cho một tập hợp P hữu hạn điểm, bài toán tìm bao lồi của P là bài toán tìmtập hợp H các đỉnh của bao lồi conv(P ) củaP

Input: Tập hợp P hữu hạn n điểm p1, p2, , pn

Output: Tập đỉnh của bao lồi conv(P ), H = {h1, h2, , hm}(hình 1.4)

Hình 1.4

1.2 Ứng dụng của bài toán tìm bao lồi

Bài toán tìm bao lồi của một tập hợp hữu hạn điểm có ứng dụng đa dạngtrong nhiều lĩnh vực chẳng hạn như nhận dạng mẫu, xử lý hình ảnh, tìm đường

đi cho robot, số liệu thống kê, Bài toán tìm bao lồi còn được áp dụng rộngrãi để tìm ra các bài toán tính toán hình học khác và các bài toán này có rấtnhiều ứng dụng trong thực tế như bài toán tìm tam giác phân Delaunay, bàitoán tìm đường kính của một tập hợp, bài toán tìm các lớp lồi của một tập hợp, Sau đây ta sẽ trình bày một số ứng dụng quan trọng của bài toán tìm baolồi

Trang 10

1.2.1 Nhận dạng

Bài toán tìm bao lồi có ứng dụng rất quan trọng trong lĩnh vực nhận dạng.Nhận dạng nhằm mục đích phân loại dữ liệu (là các mẫu) dựa vào thông tinthống kê được khai thác từ các mẫu có sẵn Các mẫu cần phân loại thường đượcbiểu diễn thành các nhóm của các dữ liệu đo đạc hay quan sát được

Các ứng dụng phổ biến trong thực tế là nhận dạng tiếng nói tự động, phânloại văn bản thành nhiều loại khác nhau (ví dụ những thư điện tử spam/non-spam), nhận dạng tự động các mã bưu điện viết tay trên các bao thư, hay hệthống nhận dạng mặt người, nhận dạng biển số xe, Sau đây ta xét một ứngdụng cụ thể của bài toán tìm bao lồi trong nhận dạng biển số xe Nội dung vàhình vẽ được trích trong [14]

Hình 1.5

Quy trình của quá trình xử lý nhận diện biển số xe thường thông qua cácbước như hình 1.5 và bài toán tìm bao lồi được ứng dụng trong bước 4 của quátrình nhận dạng Trong bước này ta cô lập từng kí tự trong biển số xe được trích

ra ở bước 3 Tiếp theo sử dụng thuật toán tìm bao lồi tìm vùng tối thiểu chứamỗi kí tự đó để chuẩn bị tiến hành nhận dạng ở bước 5 Hình 1.6 biểu diễn các

Trang 11

bước của quá trình xử lý nhận diện biển số xe.

(a) Chụp ảnh từ camera (b) Tiền xử lý ảnh

(c) Trích vùng biển số xe (d) Tìm bao lồi cho mỗi kí tự

Hình 1.6 Các bước của quá trình nhận dạng

1.2.2 Tìm đường đi ngắn nhất

Bài toán đặt ra là tìm một đường đi ngắn nhất cho một robot đi từ điểm s

đến điểm t với các chướng ngại vật nằm giữa hai điểm đó Giả sử để tránh cácchướng ngại vật thì robot không thể đi xuyên qua chúng được Vì vậy nếu tatìm được bao lồi của tậpP ∪ {s, t}, vớiP là tập các chướng ngại vật, thì đi theođường ngắn hơn trong hai đường biên trên và biên dưới của bao lồi sẽ khônggặp các chướng ngại vật và đường đi ấy là ngắn nhất (hình 1.7)

Hình 1.7 Đường đi ngắn nhất

Trang 12

1.2.3 Hệ thống thông tin địa lý (GIS)

Bài toán tìm bao lồi được ứng dụng trong các mô hình biểu diễn dữ liệu của

hệ thống thông tin địa lý GIS GIS được thiết kế như một hệ thống chung đểquản lý dữ liệu không gian, nó có rất nhiều ứng dụng trong việc phát triển đôthị và môi trường tự nhiên như là quy hoạch đô thị, quản lý nhân lực, nôngnghiệp, điều hành hệ thống công ích, lộ trình, nhân khẩu, bản đồ, giám sát vùngbiển, cứu hoả, bệnh tật, . Các ứng dụng này của GIS được trình bày cụ thểtrong [2]

Trong các mô hình biểu diễn dữ liệu của GIS, chúng ta thường nhắc đến mộtkhái niệm là feature Feature là một đối tượng trên bản đồ có hình dạng, vị trí

và các thuộc tính xác định cụ thể Có ba mô hình dữ liệu trong GIS như môhình dữ liệu vector, mô hình dữ liệu raster và mô hình TIN Bài toán tìm baolồi được áp dụng một cách gián tiếp trong các mô hình dữ liệu vector và môhình dữ liệu TIN Dưới đây ta trình bày ứng dụng cụ thể của bài toán tìm baolồi trong mô hình dữ liệu vector Nội dung và các hình vẽ trong phần này trích

Trang 13

một vùng nhỏ nhất bao kín đối tượng Những đối tượng mới này có tính chất,hình dạng và kích thước gần với các tập thực thể cơ sở nhất Do vậy những đốitượng này phù hợp để đưa vào bản đồ (hình 1.9).

(a) Bản đồ với mô hình dữ liệu vector (b) Đối tượng điểm trên bản đồ.

(c) Đối tượng đường trên bản đồ (d) Đối tượng vùng trên bản đồ.

Hình 1.8

(a) Thuật toán tìm bao lồi cho đối tượng điểm.

(b) Thuật toán tìm bao lồi cho đối tượng đường.

(c) Thuật toán tìm bao lồi cho đối tượng vùng.

Hình 1.9

Trang 14

1.2.4 Thống kê

Như ta biết, một bài toán trọng tâm trong thống kê là ước lượng đánh giáthông số dân số (population parameter) từ một mẫu dữ liệu ngẫu nhiên đượcrút ra Tuy nhiên một số thông số đó lại cực kỳ nhạy cảm với giá trị ngoại lai(outliers), đó là những điểm có số liệu cách xa một cách bất thường với trungtâm của các quan sát Các giá trị ngoại lai có thể có ảnh hưởng lớn đến việc tínhtoán các ước lượng thông số trong phân tích hồi quy (regression analysis) hoặccác số thống kê tóm tắt (brief statistics) chẳng hạn như trung bình và phươngsai mẫu mà kết quả là có thể lấy cả những giá trị không tiêu biểu Do đó cácgiá trị ngoại lai thường hay bị bỏ qua để không gây ra lỗi trong dự đoán Mộtứng dụng của bao lồi có thể giải quyết được vấn đề này, đó là thuật toán tìmcác lớp lồi của một tập hợp bất kỳ Với đầu vào là các điểm của một mẫu dữliệu ngẫu nhiên, ta có thể sử dụng thuật toán này cho vấn đề xóa lớp lồi đếnkhi loại bỏ được các giá trị ngoại lai và giữ lại phần gần với trung tâm của cácquan sát hơn Sau đây chúng ta đi trình bày thuật toán tìm các lớp lồi của mộttập hợp điểm Nội dung của phần này tham khảo trong [3]

Giả sử ta có tập P, biên của conv(P ) được gọi là lớp lồi đầu tiên của P, kíhiệu là cl(1) Nếu chúng ta xóa những điểm nằm trên cl(1) và tìm một bao lồimới của những điểm còn lại ta sẽ nhận được lớp lồi thứ hai của P, kí hiệu là

cl(2) Như vậy chúng ta sẽ tìm được lớp lồi thứ i + 1 sau khi loại bỏ những điểmcủa lớp lồi thứ i Đây chính là nội dung của bài toán tìm các lớp lồi của một tậphợp Từ đó ta có định nghĩa độ sâu của một điểm trong một tập P như sau.Định nghĩa 1.7 Độ sâu của một điểm p trong một tập P bằng số lớp lồi được

bỏ đi từ tập P trước khi p bị loại bỏ Độ sâu của một tập P là độ sâu của điểmsâu nhất của nó, tức là độ sâu của điểm cuối cùng bị loại bỏ Độ sâu của tập P

kí hiệu là depth(P ) (hình 1.10)

Trong hình 1.10, pi có độ sâu là i với i = 0, 1, 2, 3, 4.

Phương pháp tốt nhất để tìm bao lồi của một tập P gồm n điểm có độ phứctạp tính toán của thuật toán là O(n log n) Định nghĩa độ phức tạp tính toáncủa thuật toán được trình bày cụ thể ở chương 2 Đầu tiên ta loại bỏ các đỉnhcủa lớp lồi thứ nhất, sau đó tiếp tục tìm bao lồi của các tập điểm còn lại Do

đó để tìm được độ sâu depth(P ) củaP thì độ phức tạp tính toán của thuật toán

là O(n2log n) Tuy nhiên áp dụng thuật toán gói quà tại mỗi lớp lồi cho ta mộtthuật toán có độ phức tạp tính toán tốt hơn Giả sử hi là số đỉnh của lớp lồithứi Tại lớp lồi thứ i thì thuật toán gói quà có độ phức tạp là O(nhi) và do đó

Trang 15

độ phức tạp của thuật toán tìm các lớp lồi là O(nh 0 + nh 1 + nh 2 + + nhk) với

k là độ sâu của tập điểm đầu vào Vì h0+ h1+ h2+ + hk = n nên độ phức tạpcủa thuật toán này là O(n2)

1.2.5 Tìm đường kính của một tập hợp điểm

Bài toán tìm đường kính của một tập hợp điểm là một bài toán rất quantrọng trong hình học tính toán và có ứng dụng trong những bài toán phân cụm(clustering), đây là bài toán làm việc với các nhóm đối tượng tương tự nhauđược trình bày cụ thể ở [17], trang 170 Trước khi trình bày thuật toán của bàitoán tìm đường kính của một tập hợp điểm ta có định nghĩa sau

Định nghĩa 1.8 Cho một tập S có n điểm, tìm trong tập S một cặp điểm saocho khoảng cách (khoảng cách Euclid) giữa chúng là lớn nhất Nếu có nhiều cặpđiểm như vậy thì ta chọn một cặp trong số đó Độ dài cạnh nối cặp điểm xanhất được gọi là đường kính của tập hợp S và cặp điểm xa nhất đó được gọi làhai đỉnh của đường kính

Như vậy bài toán tìm đường kính của một tập hợp là bài toán tìm cặp điểm

xa nhất của tập hợp đó Phương pháp có thể áp dụng giải bài toán này là ta đitìm tất cả các khoảng cách giữa hai điểm bất kỳ của tập S và đường thẳng nốimột trong những cặp điểm có khoảng cách lớn nhất là đường kính của một tậphợp điểm Cách làm này có độ phức tạp tính toán làO(n2) Tuy nhiên dưới đây

ta sẽ trình bày một phương pháp là ứng dụng của bao lồi với độ phức tạp tínhtoán là O(n log n)

Mệnh đề 1.1 Cho tập S gồm n điểm trong mặt phẳng Hai đỉnh đường kínhcủa tập S là hai điểm cực biên của S, tức là hai điểm đó phải là hai đỉnh của

Hình 1.10 Độ sâu của một điểm và các lớp lồi của một tập hợp.

Trang 16

Hình 1.11

bao lồi conv(S)

Chứng minh Bây giờ ta giả sử rằng một đỉnh của đường kính không phải làđiểm cực biên của S Gọi (d, a)là cặp điểm xa nhất và giả sử rằng a không phải

là điểm cực biên của S Khi đó a phải nằm trong tam giác dcb nào đó (tính cảbiên) với c, b ∈ S Từ hình 1.11 ta thấy rõ ràng rằng độ dài đoạn thẳng da, kíhiệu |da|, nhỏ hơn độ dài đoạn thẳng da0, kí hiệu |da 0 | Và vì

|da 0 | < max{|db|, |dc|}

nên

|da| < max{|db|, |dc|}.

Điều này mâu thuẫn với giả sử da là đường kính của tập hợp S

Định nghĩa 1.9 Cho tập S gồm n điểm, nếu đường thẳng l đi qua một haynhiều điểm của tập S sao cho tập hợp S nằm hoàn toàn trong một nửa mặtphẳng xác định bởi đường thẳng l thì l được gọi là đường thẳng tựa trên tập S.Định nghĩa 1.10 Nếu l1 và l2 là hai đường thẳng tựa trên tập S tương ứng điqua p1 và p2 (p1, p2 ∈ S) và l1 song song với l2 thì cặp điểm (p1, p2) được gọi làcặp điểm đối cực của S

Dưới đây ta đưa ra một định lí đã được trình bày và chứng minh ở [17] Định

lý này đưa ra một ý tưởng quan trọng cho thuật toán tìm cặp điểm xa nhất củamột tập điểm trong mặt phẳng

Định lý 1.1 ([17], định lý 4.18, trang 17) Cặp điểm xa nhất của một tập S làmột cặp đối cực của S mà có khoảng cách lớn nhất

Trang 17

Như vậy để tìm cặp điểm xa nhất thì ta phải tìm tất cả các cặp đối cực vàchọn một cặp có khoảng cách lớn nhất Từ mệnh đề 1.1 và định lý 1.1 thì tất cảcác cặp điểm đối cực phải nằm trên bao lồi của tập S Do đó đầu tiên ta phảitìm bao lồi của của tập S, sau đó xác định các cặp đối cực từ các đỉnh của baolồi và tìm ra cặp có khoảng cách xa nhất Thuật toán tìm cặp điểm xa nhất cóthể được trình bày như Algorthm 1.

Hình 1.12

Ta có sự phân tích độ phức tạp tính toán của Algorithm 1 như sau Bước(1) có độ phức tạp là O(n log n) Xét đến bước (2), (a) có độ phức tạp là O(h),(b) - (d) lặp lại như bước (a) cho mỗi cặp đối cực nên cũng có độ phức tạp là

O(h) Cuối cùng (e) cũng có độ phức tạp là O(h) Vì tập S có n điểm nên baolồi conv(S) có nhiều nhấtn đỉnh, khi đó trong trường hợp xấu nhất thì bước (2)

có độ phức tạp là O(n) Do đó bài toán tìm đường kính của một tập hợp điểm

có độ phức tạp tính toán là O(n log n)

Trang 18

Algorithm 1 Thuật toán tìm cặp điểm xa nhất của một tập hợp

1 Tìm bao lồi của tập S.

2 Cho H = {p0, p1, , ph} là các đỉnh của bao lồi conv(S).

Giả sử bước 1 cho các đỉnh của bao lồi sắp xếp theo thứ tự ngược chiều kim đồng hồ Ta tìm tất cả các cặp đối cực bằng cách quét tròn một đường thẳng quanh các đỉnh của bao lồi, cụ thể như sau.

(a) Cho l 1 là đường thẳng tựa của S xác định bởi hai điểm p 0 và p 1 thuộc H Với mọi điểm

p j ∈ H, trong đó 2 ≤ j ≤ h ta xác định khoảng cách giữa các điểm p j và l 1 Vì tất cả các điểm này là tập đỉnh của bao lồi conv(S) nên khi ta lần lượt xét tới các điểm theo thứ tự ngược chiều kim đồng hồ thì các khoảng cách này sẽ tăng dần tới khi gặp một điểm mà

có khoảng cách lớn nhất và sau đó khi xét tiếp đến các đỉnh tiếp theo thì các khoảng cách này lại giảm dần Gọi p i là điểm có khoảng cách lớn nhất và l 2 là đường thẳng đi qua p i

sao cho l2song song với l1(Nếu có hai điểm giống pi thì l2đi qua cả hai điểm đó) Rõ ràng

là l1 và l2là các đường thẳng tựa trên cặp điểm đối cực của S (hình 1.12a).

(b) Gán θ01bằng góc nhọn tạo bởi l1và p1p2.

Gán θ001 bằng góc nhọn tạo bởi l2 và pipi+1.

(Nếu có hai điểm pi thì ta chọn điểm pi ở bên trái để xác định θ001).

d 1 := d001 và e 1 := p 1 p i Sau đó đánh dấu các điểm p 0 , p 1 và p i là những điểm đã được xét tới (Nếu có hai điểm như p i thì ta tính khoảng cách từ p 0 và p 1 đến mỗi điểm p i đó, giá trị lớn nhất sẽ chọn là

d1, cạnh tương ứng đặt là e1 và đánh dấu các điểm pi đó).

θ02, θ200, d02 và d002 được tính tương tự như ở bước trên (hình 1.12b) Gán d 2 := max{d02, d002}

và e 2 là cạnh tương ứng với d 2 và ta đánh dấu các đỉnh giống như bước trên.

(d) Tiếp tục gán l 1 , l 2 và thực hiện giống bước (c) tới khi mọi đỉnh của bao lồi được đánh dấu Khi đó ta có nhiều nhất h khoảng cách d 1 , d 2 , , d h và tương ứng có nhiều nhất h cạnh

e 1 , e 2 , , e h

(e) Đường kính của S là max{d 1 , d 2 , , d h } và cạnh tương ứng sẽ cho ta cặp điểm xa nhất của S.

Trang 19

Chương 2

Các thuật toán tìm bao lồi

Trong chương này ta xét các thuật toán tìm bao lồi trong không gian haichiều như thuật toán gói quà, thuật toán quét Graham, thuật toán Quickhull vàthật toán Chan Trong rất nhiều tài liệu viết về bài toán tìm bao lồi đòi hỏi giảthiết không có ba điểm bất kỳ nào thẳng hàng nhưng điều kiện này là khôngcần thiết và làm mất tính tổng quát của bài toán Một số thuật toán cần có điềukiện không thẳng hàng nhưng không phải là ba điểm bất kỳ mà những bộ bađiểm đặc biệt tùy thuộc vào thuật toán cụ thể nào đó Những điều kiện này cóthể vượt qua bằng cách đơn giản và hiệu quả như chúng ta sẽ thấy chương này.Trước khi trình bày các thuật toán này ta đưa ra một số khái niệm và thuậttoán cơ bản sau

2.1 Một số khái niệm và thuật toán cơ bản

Đầu tiên ta trình bày định nghĩa sự định hướng của các điểm bất kỳ Địnhnghĩa này là cơ sở của những định nghĩa ta sẽ trình bày dưới đây

Định nghĩa 2.1 Cho một bộ ba điểm đã sắp thứ tự (p, q, r) trong mặt phẳng,

ta nói rằng chúng có định hướng dương nếu theo thứ tự đã sắp xếp chúng tạothành hình ngược chiều kim đồng hồ, có định hướng âm nếu chúng tạo thànhhình thuận chiều kim đồng hồ và hướng không nếu chúng thẳng hàng (trong đóbao gồm cả trường hợp có hai hay nhiều hơn các điểm trùng nhau) (hình 2.1).Lưu ý rằng sự định hướng phụ thuộc vào thứ tự các điểm được đưa ra Để xéthướng của các điểm sắp thứ tự (p, q, r) với p = (px, py), q = (qx, qy) và r = (rx, ry)

thì ta có thể sử dụng công thức tính định thức cấp ba như dưới đây Ta địnhnghĩa

Trang 20

(a) Định hướng dương (b) Định hướng âm

Trang 21

Nhận xét 2.2 Công thức tính Orient cũng được dùng để tính diện tích tamgiác Chẳng hạn để tính diện tích Spqr của tam giác pqr ta có công thức

Spqr = 1

2 |Orient(p, q, r)|.

Sau đây ta định nghĩa một điểm bên trái hoặc bên phải một đoạn thẳng.Định nghĩa của các điểm này được sử dụng trong các thuật toán tìm bao lồi nhưthuật toán gói quà, thuật toán quét Graham, thuật toán Quickhull,

Định nghĩa 2.2 Trong không gian 2 chiều, cho ba điểm phân biệt p 1 , p 2 và p 3,điểm p3 được gọi là bên trái đoạn thẳng p1p2 nếu Orient(p1, p2, p3) > 0 Điểm p3

được gọi là bên phải đoạn thẳng p1p2 nếu Orient(p1, p2, p3) < 0 và điểm p3 đượcgọi là nằm trên đoạn thẳng p1p2 nếu Orient(p1, p2, p3) = 0

Tiếp theo ta đưa ra định nghĩa các điểm tận cùng bên trái dưới, bên phảidưới, bên trái trên, bên phải trên, bên dưới trái, bên dưới phải, bên trên trái vàbên trên phải Những điểm này thuộc bao lồi và thường được dùng làm điểmxuất phát cho các thuật toán tìm bao lồi sẽ được trình bày trong chương này.Định nghĩa 2.3 Cho tập P = {p 1 , p 2 , , p n } Điểm tận cùng bên phải dưới làđiểm có tung độ bé nhất trong những điểm có hoành độ lớn nhất Điểm tận cùngbên phải trên là điểm có tung độ lớn nhất trong những điểm có hoành độ lớnnhất Điểm tận cùng bên trên phải là điểm có hoành độ lớn nhất trong nhữngđiểm có tung độ lớn nhất Điểm tận cùng bên trên trái là điểm có hoành độ nhỏnhất trong những điểm có tung độ lớn nhất Điểm tận cùng bên trái trên là điểm

có tung độ lớn nhất trong những điểm có hoành độ nhỏ nhất Điểm tận cùngbên trái dưới là điểm có tung độ nhỏ nhất trong những điểm có hoành độ nhỏnhất Điểm tận cùng bên dưới trái là điểm có hoành độ nhỏ nhất trong nhữngđiểm có tung độ nhỏ nhất Điểm tận cùng bên dưới phải là điểm có hoành độlớn nhất trong những điểm có tung độ nhỏ nhất (hình 2.2)

Trong hình 2.2, q 1 là điểm tận cùng bên trái trên, q 2 là điểm tận cùng bêntrên trái, q3 là điểm tận cùng bên trên phải, q4 là điểm tận cùng bên phải trên,

q5 là điểm tận cùng bên phải dưới, q6 là điểm tận cùng bên dưới phải, q7 là điểmtận cùng bên dưới trái, q8 là điểm tận cùng bên trái dưới

Một khái niệm mà ta cũng cần phải làm rõ đó là độ phức tạp tính toán củathuật toán

Định nghĩa 2.4 Độ phức tạp tính toán của thuật toán được đo trên số lượngcác phép toán cơ bản như phép cộng, phép trừ, phép nhân, phép chia và phép

Trang 22

Hình 2.2

so sánh mà nó thực hiện Với mỗi thuật toán cụ thể số lượng này phụ thuộc vào

cỡ (size) của dữ liệu nhập Như thế ta có thể xem độ phức tạp tính toán củamột thuật toán là một hàm phụ thuộc vào cỡ của dữ liệu nhập Nếu cỡ mã hóacủa dữ liệu nhập là n thì độ phức tạp có thể được xem là một hàm theo n

2.2 Thuật toán gói quà

Một trong những thuật toán đơn giản nhất trong các thuật toán hình họcphẳng là thuật toán gói quà Thuật toán này phát hiện độc lập bởi Chand vàKapur vào năm 1970 và Jarvis vào năm 1973 [11] Cho tập P hữu hạn n điểm,thuật toán bắt đầu với i = 1, ta xác định một điểm thuộc bao lồi, chẳng hạn tachọn điểm v 1 là điểm tận cùng bên phải dưới (hình 2.3b) và gán H := v 1 Sau

đó giả sử t là chỉ số cao nhất trong H mà ta tìm được tới nay thì nếu tìm đượcđiểm vi sao cho tất các điểm còn lại của P đều nằm bên trái đoạn thẳng vtvi

thì ta gán H := H ∪ {vi} Nếu tìm được điểm vj sao cho tất cả các điểm còn lạicủaP đều nằm bên trái hoặc nằm trên vtvj thì trong các điểm nằm trên vtvj tatìm điểm xa vt nhất, giả sử là vi và gán H := H ∪ {vi} Ta có thể lặp lại điềunày để tìm ra các điểm tiếp theo (hình 2.3e), đến khi nào tìm được điểm trùngvới v1 thì dừng lại (hình 2.3f) Như vậy để tìm mỗi điểm mới của bao lồi ta mấtthời gian là O(n) Do vậy thuật toán này có độ phức tạp tính toán là O(nh),trong đó n là số điểm trong tập hợp ban đầu cần tìm bao lồi và h là số đỉnh củabao lồi Trong trường hợp xấu nhất, độ phức tạp của thuật toán là O(n2) khi

h = n Thuật toán gói quà có thể được trình bày như thuật toán 2, thuật toánnày được tham khảo từ [13] Tuy nhiên thuật toán trong [13] giả thiết không có

ba điểm nào thẳng hàng còn ở đây ta sẽ xét trong trường hợp tổng quát

Trang 23

(a) (b) (c)

Hình 2.3 Thuật toán gói quà

Algorithm 2 Thuật toán gói quà

Input: Tập P gồm n điểm p 1 , p 2 , , p n , giả sử n ≥ 2.

Output: Tập H gồm các điểm là đỉnh của conv(P ).

1 Gán v là điểm bên phải dưới.

2.3 Thuật toán quét Graham

Thuật toán quét Graham là một thuật toán phức tạp hơn thuật toán gói quàđược phát hiện bởi Ronald Graham vào năm 1972 [7] Giả sử cho tập hợp P bất

kỳ, đầu tiên thuật toán sắp xếp lại các điểm của tập hợp này theo một thứ tự

Trang 24

xác định Việc sắp xếp hoàn thành có độ phức tạp tính toán là O(n log n) và cho

ta một đa giác khép kín Đa giác này có thể không lồi nhưng ta có thể dựa vào

nó để tìm tập H các đỉnh của bao lồi conv(P ) Sau khi các điểm của tập hợp P

được sắp xếp thì việc tìm bao lồi của nó có độ phức tạp tính toán là O(n) Vìvậy thuật toán quét Graham có độ phức tạp tính toán là O(n log n) Trước tiên

ta trình bày việc so sánh hai góc trong mặt phẳng Việc so sánh này cần choviệc sắp xếp các điểm trong thuật toán quét Graham ở mục sau

2.3.1 So sánh hai góc trong mặt phẳng

Sự so sánh hai góc trong mặt phẳng mà ta nói đến ở đây là sự so sánh haigóc có hướng Sau đây ta trình bày định nghĩa và nhận xét về góc có hướng.Góc có hướng được định nghĩa dựa vào việc quay một tia hay một đoạn thẳngquanh một điểm trong mặt phẳng Để khảo sát việc quay này ta cần chọn mộtchiều quay, gọi là chiều dương, ngược chiều quay của kim đồng hồ Khi đó ta cóthể định nghĩa góc có hướng như dưới đây

Định nghĩa 2.5 Cho hai đoạn thẳng IAvà IB NếuIC quay theo chiều dươngxuất phát từIA đến trùng với IB thì ta nói đoạn thẳng IC quay một góc AIB,

ta gọi góc AIB là góc có hướng, kí hiệu là AIBd với cạnh đầu là IA và cạnh cuối

là IB (hình 2.4)

Hình 2.4 Góc có hướng [ AIB

Trong thuật toán quét Graham ta chỉ cần so sánh hai góc có độ lớn nằm trongnửa đoạn (0, π] và có tính chất như sau Chẳng hạn cho ba điểm p1, p2 và p3 đôimột khác nhau thỏa mãn tung độ của p1 nhỏ hơn hoặc bằng tung độ của p2 vàtung độ của p 3, nếu xảy ra dấu bằng thì hoành độ của p 1 phải lớn hơn hoành

độ của điểm có tung độ bằng tung độ của p1 Ta phải so sánh góc tạo bởi p1p2

với trục hoành và góc tạo bởi p1p3 với trục hoành (hình 2.5)

Trang 25

tự tăng dần của các góc tạo bởi chiều dương của trục hoành và đoạn thẳng nối

p1 với mỗi điểm đó Rõ ràng độ lớn của các góc này đều nằm trong nửa đoạn

(o, π] và cách so sánh chúng ta đã nêu ở nhận xét 2.3 Tiếp theo ta xét trườnghợp có hai điểmpi, pj khác nhau nào đó trong P tạo vớip1 ba điểm thẳng hàng,tức là Orient(p1, pi, pj) = 0 hay [pip1x = p[jp1x với p1x song song và cùng chiềudương với trục hoành Ta ký hiệu góc [pip1x là góc(pi) Trong trường hợp nàynếu|p1pi| < |p1pj| thì rõ ràng pi không thuộc bao lồi conv(P ) nên ta sẽ xóa điểmnày đi Ở hình 2.6 những điểm màu trắng là những điểm bị xóa còn những điểmmàu đen không bị xóa Các thuật toán 3, 4, 5 và 6 ở dưới đây được chỉnh sửa

từ những thuật toán trong [15]

Trang 26

Hình 2.6

Ta dùng thuật toán Quicksort để sắp xếp các điểm trong tập P Trước tiên

ta trình bày hàm so sánh (compare), là một hàm con sẽ được gọi trong thuậttoán Quicksort, trình bày ở thuật toán 3 Thuật toán này dùng để so sánh haigóc(pi)và góc(pj)với hai điểmpi, pj bất kỳ và đánh dấu số 2 tại những điểm cầnxóa trong trường hợp thẳng hàng Nếu góc(pj) > góc(pi) hàm compare sẽ trả vềgiá trị -1, góc(pj) < góc(pi) trả về giá trị 1 và góc(pj) = góc(pi) trả về giá trị 0

Algorithm 3 Compare

Input: Điểm p 1 là điểm tận cùng bên dưới phải, hai điểm p i và p j bất kỳ với giả thiết p i 6= p j Output: Thứ tự của hai điểm p i và p j và trong trường hợp góc(p i ) = góc(p j ) thì đánh dấu điểm thích hợp để xóa.

Compare(p i , p j )

1 Gán a := Orient(p 1 , p i , p j ).

2 If ( a > 0) then return -1;

else if ( a < 0) then return 1;

else if |p1pi| < |p1pj| then đánh dấu điểm pi là 2, return 0;

else đánh dấu điểm pj là 2, return 0.

Trong hàm quicksort ta gọi một hàm nữa đó là hàm partition, hàm này cónhiệm vụ phân hoạch một tập hợp điểm bất kỳ thành hai phần Giả sử đầu vàocho tập A là một dãy các điểm bất kỳap, ap+1, , ar và x là một điểm được chọnngẫu nhiên trong A Để đơn giản ở thuật toán 4 ta chọn x bằng ar là phần tửcuối cùng của dãy Ta sẽ dùng điểm này để phân hoạch tập A Đầu ra của thuậttoán ta nhận được tập B có các phần tử bp, bp+1, , bi, bi+1, , br vẫn là các phần

tử của tập A nhưng có thứ tự sắp xếp khác Ở bước cuối cùng của thuật toán

ta có lệnh returni + 1 để hàm này trả về vị trí mới của điểm a r, lúc này điểma rkhông còn nằm ở vị trí cuối dãy mà được chuyển lên vị trí i + 1, tức là sau khiphân hoạch thì điểm ar của tập A bây giờ là điểm bi+1 của tập B Tập B được

Trang 27

sắp xếp như sau: Những điểm b p , b p+1 , , b i có góc nhỏ hơn góc(b i+1 ) và nhữngđiểm bi+1, bi+2, , br có góc lớn hơn hoặc bằng góc(bi+1) Thuật toán 4 biểu diễnhàm patition này.

Gán i := i + 1 và đổi vị trí hai điểm a j , a i

3 Đổi chỗ hai điểm ai+1 và ar.

4 Return i + 1.

Thuật toán 5 trình bày việc sắp xếp các điểm {p s , p s+1 , , p t } của tập P = {p1, p2, , ps, ps+1, , pt, , pn}bất kỳ được thực hiện bằng cách gọi hàm patition

đã trình bày ở trên, hàm này trả về giá trị q, sau đó giá trị q được dùng để gọi

đệ qui trong hàm Quicksort

Algorithm 5 Thuật toán Quicksort(P, s, t)

Input: Cho P là tập bất kỳ p 1 , p 2 , , p s , p s+1 , , p t , , p n có nhiều hơn t − s + 1 điểm.

Output: Tập các điểm của P nhưng các điểm từ vị trí thứ s đến vị trí thứ t đã được sắp xếp lại theo thứ tự tăng dần của các góc tạo bởi chiều dương trục hoành và đoạn thẳng nối p1 với mỗi điểm đó,

p1 là điểm tận cùng bên dưới phải.

Bước 1 : Ta gọi hàm Quicksort(P, 1, n) để sắp xếp n điểm của tập P theo thứ tự

Ngày đăng: 16/08/2014, 03:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[8] R.L. Graham, An efficient algorithm for determining the convex hull of a finite planar set, 1972 Sách, tạp chí
Tiêu đề: An efficient algorithm for determining the convex hull of a finite planar set
Tác giả: R.L. Graham
Năm: 1972
[10] Phạm Ngọc Hà, Các mô hình dữ liệu Gis, 2008.http://my.opera.com/hapn2/blog/ Sách, tạp chí
Tiêu đề: Các mô hình dữ liệu Gis
Tác giả: Phạm Ngọc Hà
Năm: 2008
[14] Trần Bình Nguyên, Hệ thống nhận diện biển số xe, 2011.http://www.ieev.org/2011/01/tong-quan-ve-he-thong-nhan-dien-bang-so.html#comment-post-message Link
[1] Phan Thành An and Lê Hồng Trang, A parallel algorithm based on convexity for the computing of Delaunay tessellation, Numerical Algorithms, Springer, 2012 Khác
[2] Administrator, Ứng dụng của GIS - Hệ thống thông tin địa lý trong các ngành, tháng 11/2008 Khác
[3] C. Bradford Barber, David P. Dobkin and Hannu Huhdanpaa, The Quick- hull Algorithm for Convex Hulls, University of Minnesota, 1996 Khác
[4] A. Bykat, Convex hull of a finite set of points in two dimensions, Informa- tion Processing Letters, 296-298, 1978 Khác
[5] Timothy M. Chan, Optimal Output-Sensitive Convex Hull Algorithms in Two and Three Dimensions, Discrete Comput Geom, 361-368, 1996 Khác
[6] William F. Eddy, A new convex hull algorithm for planar sets, ACM Trans, Math, 398-403, 1977 Khác
[7] B.K. Elgindy and Bhattacharya, A new linear convex hull algorithm for simple polygons IEEE Transactions on Information Theory, 81–88, 1984 Khác
[9] Ronald L. Graham and Frances Yao, Finding the Convex Hull of a Simple Polygon, Department of Computer Science, Stanford University, 1981 Khác
[11] R.A. Jarvis, On the identification of the convex hull of a finite set of points in the plane, 18-21, 1973 Khác
[12] Yan-Bin Jia and Huan Lin, On the Convex Hulls of Parametric Plane Curves, Department of Computer Science, 2012 Khác
[13] David M. Mount, Computational Geometry, University of Maryland, 11-19, 2002 Khác
[15] J. O’Rourke, Computational Geometry in C, 2nd edn, Cambridge University Press, Cambridge, 1998 Khác
[16] Sheldon M. Ross, Introduction to Probability Models, 10th edition, Elsevier, 2010 Khác
[17] F.P. Preparata and M.I. Shamos, Computational Geometry: An Introduc- tion, Springer-Verlag New York Inc, 1985 Khác
[18] Suneeta Ramaswami, Convex Hulls: Complexity and Applications (A Sur- vey), University of Pennsylvania, 1993 Khác
[19] Trần Vũ Thiệu, Cơ sở giải tích lồi, Viện toán học, Hà Nội 4-2011 Khác
[20] Cormen H. Thomas, Leiserson E. Charles, Rivest L. Ronald and Stein Clif- ford, Introduction to algorithms, 3rd edn, The MIT Press, American, 2001 Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.2 Bao lồi của một tập hữu hạn - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 1.2 Bao lồi của một tập hữu hạn (Trang 8)
Hình 1.6 Các bước của quá trình nhận dạng - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 1.6 Các bước của quá trình nhận dạng (Trang 11)
Hình 1.10 Độ sâu của một điểm và các lớp lồi của một tập hợp. - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 1.10 Độ sâu của một điểm và các lớp lồi của một tập hợp (Trang 15)
Hình 2.3 Thuật toán gói quà - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 2.3 Thuật toán gói quà (Trang 23)
Hình 2.5 So sánh góc - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 2.5 So sánh góc (Trang 25)
Hình 2.8 Thuật toán Graham’s scan - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 2.8 Thuật toán Graham’s scan (Trang 30)
Hình 2.9 Thuật toán Quickhull - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 2.9 Thuật toán Quickhull (Trang 32)
Hình 2.10 Thuật toán Chan - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 2.10 Thuật toán Chan (Trang 36)
Hình 3.1 Các điểm cực đặc biệt. - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 3.1 Các điểm cực đặc biệt (Trang 41)
Hình 4.1 Bảng số điểm còn lại - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 4.1 Bảng số điểm còn lại (Trang 46)
Hình 4.3 Số điểm còn lại sau khi xóa của tập 5000 điểm. - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 4.3 Số điểm còn lại sau khi xóa của tập 5000 điểm (Trang 47)
Hình 4.2 Số điểm còn lại sau khi xóa của tập 1000 điểm. - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 4.2 Số điểm còn lại sau khi xóa của tập 1000 điểm (Trang 47)
Hình 4.4 Số điểm còn lại sau khi xóa của tập 10000 điểm. - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 4.4 Số điểm còn lại sau khi xóa của tập 10000 điểm (Trang 48)
Hình 4.6 là đồ thị so sánh thời gian chạy của các thuật toán nêu ở bảng trên. - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 4.6 là đồ thị so sánh thời gian chạy của các thuật toán nêu ở bảng trên (Trang 49)
Hình 4.5 Bảng so sánh thời gian của các thuật toán. - Luận văn thạc sĩ bài toán tìm bao lồi
Hình 4.5 Bảng so sánh thời gian của các thuật toán (Trang 49)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w