Bao lồi của một tập hình trịn

Một phần của tài liệu (LUẬN án TIẾN sĩ) bài toán tìm bao lồi của tập hữu hạn các điểm hoặc các hình tròn (Trang 72 - 75)

Chương 4 Ứng dụng của bài tốn tìm bao lồi cho tập điểm

3.3 Bao lồi của một tập hình trịn

trong đód4 xuất hiện 3 lần trong CH(D) và d1, d2, d3, d4, d7 là các hình trịn cực biên.

3.2 Giới thiệu thuật toán QuickhullDisk

Thuật toán 3.1 dưới đây mơ tả thuật tốn QuichkullDisk tìm bao lồi của tập D hữu hạn các hình trịn. Đầu ra của thuật tốn là tập các hình trịn cực biênCH(D). Ta biết rằng một hình trịn đi qua một điểm cực biên là hình trịn cực biên. Bởi vậy thuật tốn trước tiên tìm các điểm cực biên, với mỗi điểm cực biên tìm được sẽ cho ta một hình trịn cực biên tương ứng.

Dưới đây ta sẽ giải thích một số nội dung trong Thuật tốn 3.1. Bước đầu tiên của thuật tốn QuichkullDisk là tìm hình trịn dp và dq tương ứng đi qua điểm tận cùng trái trên p và tận cùng phải dưới q của tập hình trịn D={d1, d2, . . . , dn}.

Tìm hình trịn dp và dq

1. Điểm tận cùng trái trên p(px, py) thỏa mãn px = min

i=1,2,...,n{cix−ri}. Nếu có nhiều điểm p thỏa mãn đẳng thức trên thì trong các điểm đó chọn điểm có py lớn nhất. Nếu có nhiều hình trịn tiếp xúc trong tại điểm p thì ta chọn hình trịn có bán kính lớn nhất (xem Hình 3.4).

2. Điểm tận cùng phải dướiq(qx, qy)thỏa mãnqx = max

i=1,2,...,n{cix+ri}. Nếu có nhiều điểm q thỏa mãn đẳng thức trên thì trong các điểm đó chọn điểm có qy nhỏ nhất. Nếu có nhiều hình trịn tiếp xúc trong tại điểm q thì ta chọn hình trịn có bán kính lớn nhất (xem Hình 3.4).

Xác định tập D1 và D2

Để xác định tậpD1 vàD2, ta so sánh bán kínhricủa hình trịndi(ci, ri)∈D với khoảng cách dist(ci, pq) từ tâm ci tới đường thẳng pq.

1. Hình trịn di thuộc vào D1 nếu i. ri>dist(ci, pq) hoặc

ii. ri≤dist(ci, pq) và ci nằm ở phía âm của pq (phía dương của qp). 2. Hình trịn di thuộc vào D2 nếu

Thuật tốn 3.1 Thuật tốn QuichkullDisk cho tập hình trịn

Đầu vào: Cho tập hợp D = {d1, d2, . . . , dn} gồm n hình trịn có tâm ci(cix, ciy) và bán kínhri ≥0. Giả sửn ≥2.

Đầu ra: CH(D).

1. Tìm hình trịn dp và dq tương ứng chứa điểm tận cùng trái trên p và tận cùng phải dưới q. Gán CH(D) := {dp}. D1 chứa dp, dq và tất cả các hình trịn của D\ {dp, dq}khơng nằm ở phía dương của pq.D2 chứadp, dq và tất cả các hình trịn của D\ {dp, dq} khơng nằm ở phía dương củaqp.

2. Gọi Findhull(D1, pq, dp, dq). Gán CH(D) := CH(D) ∪ {dq}. Gọi Find- hull(D2, qp, dq, dp).

Findhull(Dk, pq, dp, dq).

1. if Dk =∅ then return;

2. else tìm dr∈Sk đi qua điểm r có khoảng cách xa nhất tới pq. a. if (dr 6=dp and dr 6=dq)then

i. Đặt P1 (tương ứng P2) chứa dp, dr (tương ứng dr, dq) và tất cả các hình trịn củaDk\{dp, dr}(tương ứng Dk\{dr, dq}) khơng nằm ở phía dương của pr (tương ứng rq).

ii. GọiFindhull(P1, pr, dp, dr). Gán CH(D) := CH(D)∪ {dr}. Gọi Find- hull(P2, rq, dr, dq).

b. else if dr =dp then gọi FindNextDisc(Dk, dp, dq)để tìm next(dp). Gọi p0 là tiếp điểm trên next(dp) của tiếp tuyến phải của hai hình trịn dp và next(dp).

i. Đặt P1 chứadp0, dq và tất cả các hình trịn thuộc Dk\ {dp0, dq} khơng nằm ở phía dương củap0q.

ii. Gán CH(D) := CH(D) ∪ {next(dp)}. Gọi Find- hull(P1, p0q,next(dp), dq).

c. else if dr =dq then gọi FindPrevDisc(Dk, dp, dq) để tìm prev(dq). Gọi q0là tiếp điểm trên prev(dq)của tiếp tuyến phải của hai hình trịn prev(dp) và dq.

i. Đặt P1 chứa dp, dq0 và tất cả các hình trịn của Dk\ {dp, dq0} khơng nằm ở phía dương củapq0.

ii. Gọi Findhull(P1, pq0, dp,prev(dq)). Gán CH(D) := CH(D) ∪ {prev(dq)}.

i. ri>dist(ci, pq) hoặc

p dp

q dq

Một phần của tài liệu (LUẬN án TIẾN sĩ) bài toán tìm bao lồi của tập hữu hạn các điểm hoặc các hình tròn (Trang 72 - 75)