Tỉ số hạn chế của (a1a2 t) trên Ox1x2

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 59)

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

2.17 Tỉ số hạn chế của (a1a2 t) trên Ox1x2

Định nghĩa 2.2.4. Tỉ số ROxd = SOxd0 /SOxd được gọi là tỉ số hạn chế (re- stricted ratio) của (a1a2. . . ad−1t) trên Ox1x2. . . xd−1.

Dễ dàng nhận thấy rằng 0 ≤ ROxd ≤ 1. Chú ý, nếu νd = 0 thì ta qui ước rằng ROxd = 1. Tỉ số hạn chế của d−1 miền hạn chế của (a1a2. . . ad−1t) trên d−1 siêu phẳng tọa độ còn lại được tính tương tự.

Trong khơng gian Rd tổng quát, Hình 2.15 minh họa tỉ số diện tích của miền hạn chế (a1a2 . . . ad−1t) trên siêu phẳng tọa độ Ox1x2. . . xd−1. Hình 2.16 minh họa tỉ số hạn chế (at)Ox1 trên Ox1 trong không gian R2 và Hình 2.17 minh họa tỉ số hạn chế của siêu phẳng (a1a2t) trên Ox1x2 trong R3.

Định nghĩa 2.2.5. Miền hạn chế của siêu phẳng (a1a2. . . ad−1t) ứng với giá trị nhỏ nhất trong n tỉ số hạn chế được gọi là miền hạn chế tốt nhất (best restricted area) của siêu phẳng (a1a2. . . ad−1t).

Tìm miền hạn chế tốt nhất có nghĩa ta sẽ đi tìm miền hạn chế có tỉ số hạn chế nhỏ nhất trongn miền hạn chế của cùng một siêu phẳng trên các siêu phẳng tọa độ. Với phân bố đều, rõ ràng miền hạn chế tốt nhất chứa ít điểm nhất. Điều này đồng nghĩa với việc các điểm cần phải tính phép tốn orient là ít nhất và ta có thể rút ngắn thời gian tính tốn. Trong mục tiếp theo chúng tôi sẽ nêu cách áp dụng kỹ thuật miền hạn chế tốt nhất cho thuật tốn gói quà tìm bao lồi của tập hữu hạn điểm.

2.2.3 Kỹ thuật miền hạn chế tốt nhất

Một phương pháp hiệu quả để xác định bao lồi của một tậpP hữu hạn điểm trong khơng gian Rd là thuật tốn gói q được đề xuất bởi Chand và Kapur năm 1970 (xem [8, 16, 43, 49]). Các phân tích và đánh giá độ phức tạp tính tốn của thuật tốn này được giới thiệu bởi B. Bhattacharya (1982) (xem [13]) khoảng một thập kỷ sau đó. Trong mục này chúng tơi trình bày một thuật tốn cải tiến từ thuật tốn gói q cho bài tốn tìm bao lồi trong khơng gian d chiều sử dụng kỹ thuật miền hạn chế tốt nhất được trình bày ở trên. Thủ tục quan trọng nhất trong thuật tốn của chúng tơi là tìm một mặt của bao lồi conv(P) qua một mặt con cho trước E ∈ E, ở đây E tập hợp các mặt con của conv(P) (Thủ tục FindFacet(e, P)) (xem [8, 43]).

Dưới đây là Thủ tục RestrictedAreaOxd(E, P) xác định một mặt của bao lồi conv(P) qua một mặt con E cho trước, sử dụng miền hạn chế trên siêu phẳng tọa độ Ox1x2. . . xd−1.

Thủ tục 2.6 FindFacet(E, P)

Đầu vào: Tập P ⊂ Rd là tập gồm n điểm rời nhau pi = (pi 1, pi

2, . . . , pi

d), trong đó i= 1, . . . , n,n > d,E = (a1a2. . . ad−1) là một mặt con của conv(P).

Đầu ra:Một mặt F của conv(P) qua E. 1: l := 1.

2: if (pl ∈ {a1, a2, . . . , ad−1})then đặt pl:=pl+1; 3: Xét (a1a2. . . ad−1pl);

4: for all pi ∈P\{a1, a2, . . . , ad−1, pl} do

5: if orient(a1, a2, . . . , ad−1, pl, pi)<0then setl :=i goto 2; 6: return F = (a1a2. . . ad−1pl);

Thủ tục 2.7 RestrictedAreaOxd(E, P)

Đầu vào: Tập P ⊂ Rd là tập gồm n điểm rời nhau pi = (pi 1, pi

2, . . . , pi

d), trong đó i= 1, . . . , n,n > d,E = (a1a2. . . ad−1) là một mặt con của conv(P).

Đầu ra: Một mặt F của conv(P) qua E. 1: l := 1; 2: if (pl ∈ {a1, a2, . . . , ad−1 })then đặt pl:=pl+1; 3: Tính −→ν(ν1, ν2, . . . , νd), d:=Pn i=1νia1 i,D=d−νdxM d ,F =d−νdxm d; 4: if (νd<0)then 5: for j =l to m−1 do 6: Tính A=Pn−1i=1 νipji.

7: if (A < F) or (A ≤ D and A +νdpjd < d) then đặt l := j goto 2; . Dựa vào Mệnh đề 2.2.3.ii 8: else

9: for j = 1 to m−1 do

10: Tính A=Pn−1i=1 νipji.

11: if (A < D) or (A ≤ F and A +νdpjd < d) then đặt l := j goto 2; . Dựa vào Mệnh đề 2.2.3.ii 12: return F = (a1a2. . . ad−1pl).

Tương tự ta cũng tìm được d−1 thủ tục RestrictedAreaOxi(E, P) với i= 1,2, . . . , d−1, để xác định một mặt của conv(P) qua một mặt con E ∈ E, sử dụng các miền hạn chế trên các siêu phẳng tọa độ tương ứng.

Bằng Định nghĩa 2.2.5 ta có thể chọn được miền hạn chế tốt nhất trong d thủ tục RestrictedAreaOxi(E, P), i = 1,2, . . . , d. Sau khi chọn được miền hạn chế tốt nhất ta sẽ dùng thủ tục tìm một mặt của bao lồi tương ứng với miền hạn vừa tìm được (xem Thủ tục 2.8).

Thuật tốn 2.9 xác định tất cả các mặt của conv(P) được cải tiến từ thuật tốn gói q (xem [8, 43]). Tính đúng đắn của thuật tốn gói q được chỉ ra trong [8, 43]. Vì Thuật tốn 2.9 là tương tự với thuật tốn gói q trừ các phép gọi BestRestrictedArea(E, P). Do vậy thuật tốn của chúng tơi có độ phức tạp tính tốn tương tự như với phiên bản gói quà ban đầu.

Thủ tục 2.8 BestRestrictedArea(E, P)

Đầu vào: Tập P ⊂ Rd là tập gồm n điểm rời nhau pi = (pi 1, pi

2, . . . , pi

d), trong đó i= 1, . . . , n,n > d,E = (a1a2. . . ad−1) là một mặt con của conv(P).

Đầu ra:Một mặt F của conv(P) qua E. 1: l := 1.

2: p:=pl.

3: Tính ROx1,ROx2, . . . ,ROxd;

4: Chọn t ∈ argmin{ROxk, k = 1,2, . . . , n} và gọi RestrictedAreaOxt(E, P); . dựa vào Định nghĩa 2.2.5

Thuật toán 2.9 Thuật toán xác định conv(P)

Đầu vào: Tập P ⊂ Rd là tập gồm n điểm rời nhau pi = (pi 1, pi

2, . . . , pi

d), trong đó i= 1, . . . , n,n > d.

Đầu ra:Bao lồi conv(P) của P.

1: Tìm mặt con đầu tiên E0 của conv(P).

2: Xét một hàng đợi Q := ∅ và một tập E(P) := ∅. Gọi BestRe- strictedarea(E, P) để nhận được một mặt F; tất cả các mặt con của F trừ E0 được đẩy vào tập E(P); F được đẩy vào Q.

3: while (Q 6=∅) do

4: Lấy raF là phần tử trên cùng của Q; 5: đặt T :=các mặt con của F;

6: for each E ∈T ∩ E(P) do

7: GọiBestRestrictedArea(E, P) để nhận được mặtF0 có chung mặt con E với F; đưa vào E(P) tất cả các mặt con E0 6= E0 của F0 chưa xuất hiện trong E(P) và xóa tất cả các mặt con đã xuất hiện trong E(P); F0 được đẩy vào Q.

2.2.4 Một số kết quả tính tốn

Chúng tơi thử nghiệm cho dữ liệu trong không gian R2 và R3. Các thuật tốn được thực thi bởi chương trình C và chạy trên PC Core i5 1.6 GHz 3M với 4 GB RAM.

Các Bảng 2.2 và Bảng 2.3 liệt kê số đỉnh của bao lồi conv(P), thời gian chạy (tính bằng giây (s)) của thuật tốn gói q và Thuật tốn 2.9 trong R2. Cột cuối cùng liệt hệ số tăng tốc của thuật toán Thuật toán 2.9 so với thuật tốn gói q ban đầu. Dữ liệu đầu vào của Bảng 2.2 là tập điểm được tạo ngẫu nhiên với phân bố đều trong một hình vng với độ dài cạnh là = 100 trong R2. Dữ liệu của Bảng 2.3 là tập điểm được tạo ngẫu nhiên với phân bố đều

trong hình trịn

P ={pi= (xi, yi) :xi, yi∈R, x2i +yi2≤10.000, i= 1, . . . , n} ⊂R2.

Hình 2.18 và Hình 2.19 là đồ thị biểu diễn thời gian chạy của thuật tốn gói q và Thuật tốn 2.9 cho hai loại dữ liệu trong hình vng và hình trịn.

Bảng 2.2 Thời gian tính bao lồi với dữ liệu trong hình vng (đơn vị: giây).Đầu vào |conv(P)| Gói q Thuật tốn 2.9 Tỉ số tăng tốc Đầu vào |conv(P)| Gói q Thuật tốn 2.9 Tỉ số tăng tốc

1.000 21 0,002 0,001 2,00 5.000 26 0,012 0,009 1,33 10.000 29 0,015 0,010 1,50 50.000 30 0,053 0,036 1,47 100.000 33 0,102 0,050 2,04 500.000 37 0,579 0,296 1,96 1.000.000 30 1,012 0,487 2,08 2.000.000 38 2,621 1,499 1,75 3.000.000 37 3,461 1,740 1,99 4.000.000 40 5,457 2,698 2,02 5.000.000 45 7,314 3,664 2,00

Từ các Bảng 2.2, Bảng 2.3 và Hình 2.18, Hình 2.19 ta thấy thời gian tính tốn của Thuật tốn 2.9 nhanh hơn đáng kể so với phiên bản gói quà ban đầu. Tỉ số tăng tốc tương đối ổn định cho các ví dụ có số điểm khác nhau trong từng kiểu dữ liệu. Đối với dữ liệu hình vng thời gian tính tốn của Thuật tốn 2.9 bằng 55,2%thời gian tính tốn của thuật tốn gói q, đối với dữ liệu hình trịn tỉ lệ này là 75,7%. Đối với dữ liệu tạo trong hình vng, Thuật tốn 2.9 chạy nhanh gấp từ 1,33 đến 2,08 lần so với thuật tốn gói q. Tỉ số tăng tốc đối với dữ liệu tạo trong hình trịn thấp hơn, chỉ dao động từ 1,23 đến 1,49 lần.

Trong R3, Các Bảng 2.4 và Bảng 2.5 liệt kê thời gian chạy của thuật tốn gói q, thuật tốn cải tiến thuật tốn gói q được giới thiệu trong [8] (Mo- Gift) và Thuật toán 2.9. Hai cột cuối liệt kê tỉ lệ tăng tốc của Thuật tốn 2.9 đối với thuật tốn gói q (Tỉ số tăng tốc 1) và phiên bản cải tiến của nó giới thiệu trong [8] (Ti số tăng tốc 2). Dữ liệu đầu vào của Bảng 2.4 là các tập điểm được tạo ngẫu nhiên với phân bố đều trong hình lập phương với kích thước cạnh là = 200. Dữ liệu của Bảng 2.5 là các tập điểm được tạo ra trên mặt

Bảng 2.3 Thời gian tính bao lồi với dữ liệu trong hình trịn (đơn vị: giây). Đầu vào |conv(P)| Gói q Thuật tốn 2.9 Tỉ số tăng tốc

1.000 40 0,004 0,003 1,33 5.000 69 0,039 0,030 1,30 10.000 85 0,053 0,039 1,36 50.000 149 0,278 0,186 1,49 100.000 196 0,677 0,481 1,41 500.000 399 6,004 4,534 1,32 1.000.000 418 15,011 10,998 1,36 2.000.000 515 37,425 29,838 1,25 3.000.000 602 64,221 51,929 1,24 4.000.000 655 93,147 75,612 1,23 5.000.000 717 127,893 102,340 1,25 0 1 2 3 4 5 6 7 8

Gift-wrapping Thuật tốn 2.7

Hình 2.18 Đồ thị so sánh thời gian chạy của thuật tốn gói q và Thuật tốn 2.9 cho dữ liệu trong hình vng. 0 20 40 60 80 100 120 140 Gift-wrapping Thuật tốn 2.7 Hình 2.19 Đồ thị so sánh thời gian chạy của thuật tốn gói q và Thuật tốn 2.9 cho dữ liệu trong hình trịn.

hình cầu có dạng

P ={pi= (xi, yi, zi) :xi, yi, zi∈R, xi2+yi2+zi2 = 10.000, i= 1, . . . , n}.

Hình 2.20 và Hình 2.21 là đồ thị so sánh thời gian chạy của thuật tốn gói quà, cải tiến của gói quà được đề xuất trong [8] và thuật tốn của chúng tơi sử dụng Thuật toán 2.9.

Bảng 2.4 Thời gian tính bao lồi cho kiểu dữ liệu tạo trong hình lập phương (đơn vị:giây). giây).

Đầu vào |conv(P)| Gói q Mo-Gift Thuật toán 2.9 Tỉ số tăng tốc 1 Tỉ số tăng tốc 2 1.000 100 0,018 0,016 0,010 1,80 1,60 10.000 266 0,303 0,292 0,122 2,48 2,39 100.000 616 6,590 5,824 2,253 2,92 2,58 500.000 1.027 55,299 49,007 19,491 2,84 2,51 1.000.000 1.335 146,115 131,001 49,808 2,93 2,63 1.500.000 1.521 257,419 227,957 90,264 2,85 2,53 2.000.000 1.721 381,758 339,047 132,656 2,88 2,56 2.500.000 1.908 536,409 475,399 181,591 2,95 2,62 3.000.000 1.960 653,007 577,163 220,509 2,96 2,63 3.500.000 2.079 792,634 703,240 273,643 2,90 2,57 4.000.000 2.167 964,663 856,100 341,689 2,82 2,51 4.500.000 2.264 1131,371 1004,194 389,345 2,91 2,71 5.000.000 2.312 1258,919 1114,588 435,769 2,89 2,56

Bảng 2.5 Thời gian tính bao lồi với kiểu dữ liệu trên mặt cầu (đơn vị: giây).

Đầu vào |conv(P)| Gói q Mo-Gift Thuật tốn 2.9 Tỉ số tăng tốc 1 Tỉ số tăng tốc 2 1.000 1.000 0,132 0,114 0,080 1,65 1,43 2.000 2.000 0,573 0,493 0,348 1,65 1,42 5.000 5.000 3,344 3,065 1,701 1,97 1,80 7.000 7.000 6,625 6,406 3,910 1,69 1,64 10,000 10.000 14,211 12,853 7,172 1,98 1,79 15.000 15.000 34,775 31,800 19,752 1,76 1,61 20,000 20.000 69,419 61,528 38,360 1,81 1,60 25.000 25.000 113,890 105,223 66,287 1,72 1,59 30.000 30.000 169,118 146,248 101,870 1,66 1,44 40.000 40.000 320,264 295,135 192,861 1,67 1,53 50.000 50.000 505,658 453,560 320,510 1,58 1,42 60.000 60.000 730,874 646,901 459,580 1,59 1,41 70.000 70.000 922,040 852,678 601,163 1,53 1,42 80.000 80.000 1295,515 1201,914 782,000 1,66 1,54

0 200 400 600 800 1000 1200 1400

Gift-wrapping Mo-Gif Thuật tốn 2.7

Hình 2.20 So sánh thời gian chạy của thuật tốn gói q, thuật tốn cải tiến trong [8] và Thuật tốn 2.9 cho dữ liệu trong hình lập phương.

0 200 400 600 800 1000 1200 1400

Gift-wrapping Mo-Gif Thuật tốn 2.7

Hình 2.21 So sánh thời gian chạy của thuật tốn gói q, thuật tốn cải tiến trong [8] và Thuật tốn 2.9 cho dữ liệu trong mặt cầu.

Từ Bảng 2.4, 2.5 và Hình 2.20, 2.21 ta cũng thấy được rằng Thuật tốn 2.9 trong R3 chạy nhanh so với thuật tốn gói q và thuật toán được giới thiệu trong [8] năm 2013. Cụ thể, đối với dữ liệu được tạo trong hình lập phương, thời gian tính tốn thuật tốn của chúng tơi bằng 46,24%so với thời gian tính tốn của gói q, 50,6% so với thuật toán trong [8]. Đối với dữ liệu được tạo trên mặt cầu, hai số liệu tương ứng là 58,72% và 65%. Trong Bảng 2.4 liệt kê các kết quả cho dữ liệu tạo trong hình lập phương ta thấy Thuật tốn 2.9 nhanh gấp 1,80 đến 2,96 lần so với thuật tốn gói q và gấp từ 1,60 đến 2,71 lần so với phiên bản cải tiến trong [8]. Đối với dữ liệu tạo trên mặt cầu, thuật tốn của chúng tơi tăng tốc gấp từ 1,53 đến 1,98 so với thuật tốn gói q và từ 1,41 đến 1,79 lần so với thuật toán trong [8]. Như vậy Thuật toán 2.9 tăng tốc đáng kể so với thuật tốn gói q và phiên bản cải tiến mới nhất của nó.

Kết luận Chương 2

Trong chương này chúng tôi đề xuất một số kỹ thuật để tăng tốc cho thuật tốn Quickhull trong khơng gian R2. Các tính tốn chỉ ra thuật tốn áp dụng các kỹ thuật của chúng tôi tăng tốc khoảng 3 lần so với phiên bản hiện có. Cũng trong chương này chúng tơi giới thiệu một kỹ thuật giới hạn không gian nghiệm để cải tiến thủ tục tìm một mặt của bao lồi qua một mặt con cho trước

áp dụng cho thuật tốn gói q tìm bao lồi của tập hữu hạn điểm trong Rd với d ≥2. Một số thử nghiệm tính tốn đã chỉ ra rằng thuật toán áp dụng kỹ thuật của chúng tơi là giảm khoảng 40% so với thuật tốn gói q ban đầu và khoảng 35% so với một phiên bản cải tiến thuật tốn này năm 2010.

Chương 3

Bài tốn tìm bao lồi cho tập hữu hạn các hình trịn

Ta biết rằng trong các thuật tốn tìm bao lồi cho tập điểm thì thuật tốn Quickhull [20, 49] được biết đến là một thuật tốn hiệu quả có độ phức tạp tính tốn trung bình là O(nlogn)[19] nhưng trong trường hợp xấu nhất thì độ phức tạp là O(n2). Độ phức tạp của thuật toán Quickhull tương tự như thuật toán Quicksort - một thuật toán chạy trong thực tế nhanh hơn rất nhiều so với trường hợp xấu nhất. Bởi vậy, trong chương này chúng tơi đề xuất thuật tốn QuickhullDisk tính bao lồi của tập hữu hạn các hình trịn áp dụng ý tưởng của thuật tốn Quickhull cho tập hữu hạn điểm. Các tính tốn của chúng tơi ở phần cuối chương này chỉ ra rằng thuật toán QuickhullDisk chạy nhanh hơn gấp khoảng 3,8 lần so với thuật toán tăng dần [35]. Nội dung của chương này được trình bày từ các bài báo 3. và 4. trong danh mục các cơng trình khoa học của tác giả liên quan đến luận án.

3.1 Sự định hướng cho các hình trịn trong R2

Trước tiên chúng tôi đưa ra khái niệm sự định hướng của một đường tròn với một đường thẳng có hướng trongR2, đây là kiến thức chuẩn bị quan trọng của chương này. Nhắc lại rằng một đường thẳng ∆trong R2 hồn tồn có thể xác định hướng khi có hai điểm rời nhau a và b cùng thuộc vào ∆, chẳng hạn ∆ có hướng từ a tới b.

c (a) r c d ∆ ∆ r (b) d dist(c,∆) dist(c,∆)

Hình 3.1 Vị trí tương đối của hình trịn d và đường thẳng định hướng ∆.

đây khi ta nói một đường thẳng đi qua hai điểmavà bcó nghĩa là đường thẳng đó có hướng từ a tới b) và một điểm c không thuộc vào ∆. Điểm c được gọi là ở phía dương (tương ứng âm, thuộc) đường thẳng ∆ nếu orient(a, b, c) > 0 (tương ứng orient(a, b, c)<0, orient(a, b, c) = 0). Trong chương này khi nói đến một đường thẳng có nghĩa là ta đang nói đến một đường thẳng có hướng. Khái niệm sự định hướng của một hình trịn với một đường thẳng có hướng trong R2 được trình bày bởi Định nghĩa 3.1.1.

Định nghĩa 3.1.1. Một hình trịnd được gọi là nằmở phía dương (tương ứ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 59)