Sử dụng vector định hướng

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 42 - 45)

Chương 2 Bài toán tìm bao lồi cho tập điểm

2.1. Cải tiến thuật tốn Quickhull trong khơng gian R2

2.1.3. Sử dụng vector định hướng

H. X. Phu đã giới thiệu ý tưởng phương pháp đường định hướng (the method of orienting curves) để giải các bài toán điều khiển tối ưu với các ràng buộc trạng thái (state constraints) trong [21, 22, 37–41]. Phương pháp này đã được áp dụng thành cơng cho một số bài tốn như bài tốn hàng hải của Zermelo (Zermelo’s navigation problem) [38], bài tốn của Steiner tìm chu vi

nhỏ nhất trong các đa giác (circumference-minimal inpolygons) [39], tối ưu thời gian điều khiển robot theo đường đi cho trước (time-optimal control of robot manipulator along a given trajectory) [42] và bài tốn tìm bao lồi của tập hữu hạn điểm trong mặt phẳng (convex hull problem of a finite planar set) [5]. Xuất phát từ ý tưởng này, chúng tôi đề xuất một kỹ thuật mới sử dụng “vector định hướng” (orienting vectors) để giảm số lượng phép tínhorient của thuật tốn Quickhull tính bao lồi cho tập điểm trong không gian R2. Áp dụng cải tiến này thời gian tính tốn thuật tốn Quickhull giảm khoảng 23% so với phiên bản ban đầu. Trong mỗi phép lặp của Thuật toán 2.1 và Thuật toán 2.2, ta phải xử lý bài toán phụ sau:

Cho trước hai điểm p, q, tập S gồm các điểm nằm ở phía dương đường thẳng pq và một điểm r trong tập S có khoảng cách xa nhất đến pq. Cần tìm tập hợp L1 ⊂ S chứa các điểm nằm ở phía dương đường thẳng pr và tập hợp L2⊂S chứa các điểm nằm ở phía dương đường thẳng rq.

Cụ thể với mỗi điểm s trong tập S, đầu tiên ta kiểm tra orient(p, r, s)>0 hay không. Nếuorient(p, r, s)>0 thì đưa s vào L1, nếu orient(p, r, s)≤0 thì ta kiểm tra orient(r, q, s)>0 hay khơng, nếu orient(r, q, s)>0 thì ta lưu điểm s vào L2. Do đó ta phải tínhorient một lần cho mỗi điểm trong L1 và hai lần cho những điểm còn lại. Dưới đây chúng tơi sẽ trình bày một cách xử lý hiệu quả hơn dựa vào khái niệmvector định hướng. Với cách tiếp cận này ta chỉ cần so sánh tọa

độ và mỗi điểm s trong tập S chỉ phải tính orient đúng 1 lần. Định nghĩa 2.1.1. Cho d là một điểm trong R2. Vector −→

dc được gọi là vector định hướng của bộ ba điểm (a, b, c) nếu orient(d, c, a)≥0 và orient(d, c, b)≤0.

c

b d

a

r l

q p

t R−→tr Lpr

Hình 2.3 Minh họa trường hợp i) của Mệnh đề 2.1.2. r l q p L−→tr L rq t

Hình 2.4 Minh họa trường hợp ii) của Mệnh đề 2.1.2.

Mệnh đề 2.1.2. Cho hai điểm p, q, tập S gồm các điểm nằm ở phía dương đường thẳng pq và r ∈ S là một điểm có khoảng cách xa nhất đến pq. Cho −→tr

là một vector định hướng của (p, q, r). Khi đó

i) Nếu s∈S và orient(p, r, s)>0 thì orient(t, r, s)>0. ii) Nếu s∈S và orient(r, q, s)>0 thì orient(t, r, s)<0.

Chứng minh. Cho l là đường thẳng qua điểm r và song song với đường thẳng pq. Vìr là một điểm trong S có khoảng cách xa nhất đến pq nên mọi điểm của S phải nằm trong miền giữa đường thẳng pq và đường thẳng l (xem Hình 2.3). Định nghĩa

Lpr ={s∈S | orient(p, r, s)>0}, R−→

tr ={s∈S | orient(t, r, s)≤0}.

Trong Hình 2.3, tập Lpr là tập hợp nằm phía dương pr (miền có màu xanh dương), tậpR−→

tr là tập hợp nằm phía âm vector−→tr (miền có màu xám). Rõ ràng,

Lpr∩R−→

tr =∅. Suy ra, nếu ta có s∈S và orient(p, r, s)>0 thì orient(t, r, s)>0. Khẳng định (ii) có thể được chứng minh tương tự (i) (xem Hình 2.4). Dựa vào Mệnh đề 2.1.2 và bằng cách chọn những vector định hướng đặc biệt ta có thể giảm được một lượng lớn các phép tốn orient. Vì thuật toán Quickhull chọn hai điểm xuất phát là điểm tận cùng trên trái và điểm tận cùng dưới phải nên trong mỗi bước lặp của thuật tốn này sẽ có hai khả năng có thể xảy ra với bộ ba điểm(p, q, r) là: px ≤rx ≤qx hoặc qx≤rx ≤px.

Trong trường hợp thứ nhất, ta có px ≤ rx ≤ qx (xem Hình 2.5). Nếu chọn vector định hướng −→tr song song và cùng hướng với trục Oy thì

orient(t, r, s)>0 ⇔ sx < rx, (2.1) và

r t y x p q − →tr //Oy O Hình 2.5 Trường hợp px ≤rx ≤qx. y O − →tr //Oy t r q p x Hình 2.6 Trường hợp qx ≤rx ≤px. Từ bất đẳng thức (2.1) và Mệnh đề 2.1.2(i), ta có orient(p, r, s)>0 ⇒ sx < rx. (2.3) Tương tự, bất đẳng thức (2.2) cùng với Mệnh đề 2.1.2(ii) suy ra rằng

orient(r, q, s)>0 ⇒ sx > rx. (2.4) Từ (2.3) và (2.4), để kiểm tra orient(p, r, s) > 0 (hoặc orient(r, q, s) > 0) hay khơng ta chỉ cần tính orient(p, r, s) (hoặc orient(r, q, s)) cho những điểm s thỏa mãn sx< rx (hoặc sx> rx). Bằng cách thực hiện như vậy ta có thể giảm được một số lượng đáng kể các phép tính orient.

Trường hợp thứ hai có thể được xử lý tương tự (xem Hình 2.6). Thuật tốn 2.3 dưới đây minh hoạ cho cải tiến của thuật toán Quickhull sử dụng vector định hướng.

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 42 - 45)

Tải bản đầy đủ (PDF)

(121 trang)