Tải bản đầy đủ (.pdf) (41 trang)

Về thuật toán đường thẳngđịnh hướng tìm bao lồi các điểm trong mặt phẳng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (388.04 KB, 41 trang )

bộ giáo dục và đào tạo
trờng đại học vinh
======= =======

hoàng thị ngân

về thuật toán đờng
thẳng định hớng tìm bao lồi
các điểm trong mặt phẳng

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

vinh-2007


bộ giáo dục và đào tạo
trờng đại học vinh
======= =======

hoàng thị ngân

về thuật toán đờng thẳng định hớng
tìm bao lồi các điểm trong mặt phẳng

chuyên ngành: hình học tôpô
mã số : 60.46.10

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

Ng-ời hớng dẫn khoa học:
Ts. phan thành an



vinh-2007

1


Mục lục

Mục lục ................................................................................................

1

Mở đầu..................................................................................................

2

Chơng 1. Kiến thức cơ sở
1.1. Tập lồi .............................................................................................

4

1.2. Bao lồi của một tập..........................................................................

7

1.3. Điểm cực biên, cạnh cực biên ........................................................ 11
Chơng 2. Thuật toán Graham
2.1. Thuật toán Graham.......................................................................... 13
2.2. Ví dụ ............................................................................................... 16
Chơng 3. thuật toán đờng thẳng định hớng

3.1. Một số khái niệm ............................................................................

19

3.2. Thuật toán .......................................................................................

23

3.3. Ví dụ ..............................................................................................

26

3.4. So sánh thuật toán Graham và thuật toán đờng thẳng định h
ớng

29

3.5. Kết quả tính toán.............................................................................. 31
Kết luận .................................................................................................. 32
Phụ lục 1.................................................................................................. 33
Phụ lục 2.................................................................................................. 36
Tài liệu tham khảo .................................................................................. 39

2


mở đầu
Hình học tính toán là một ngành học có ứng dụng rất rộng rãi trong
thực tế và đợc rất nhiều nhà khoa học quan tâm nh: Chand, Kapur,
Preparata, Shamos, Graham, O' Rourke (xem [4], [5], [6] và [7]),... Cùng với

việc nghiên cứu về bao lồi, các nhà khoa học đã tìm ra các thuật toán hữu
hiệu để tìm bao lồi cho tập hữu hạn điểm trong mặt phẳng. Cụ thể năm 1970
Chand và Kapur đã đa ra thuật toán "gói quà", năm 1972 Graham đã đa
ra thuật toán "Graham" và năm 1998 O' Rourke đã cải tiến thuật toán
Graham...
Trong luận văn này, chúng tôi nghiên cứu một thuật toán hiệu quả để
xác định bao lồi của một tập hữu hạn điểm trong mặt phẳng do TS. Phan
Thành An đa ra, dựa vào ý tởng của phơng pháp đờng định hớng đã
đợc GS.TSKH Hoàng Xuân Phú đề xuất năm 1987 để giải bài toán điều
khiển tối u. Bao lồi đợc xác định bởi các phần của các đ
ờng thẳng định
hớng và đ
ờng thẳng cuối. Với một tập hữu hạn các điểm trong mặt phẳng
thuật toán này đã có thực nghiệm tốt hơn thuật toán Graham. Luận văn
chứng minh chi tiết một số tính chất liên quan, nêu các ví dụ minh hoạ cho
thuật toán này, So sánh thuật toán Graham và thuật toán đờng thẳng định
hớng. Luận văn đợc chia làm ba chơng:
Chơng 1. Kiến thức cơ sở
Trong chơng này, chúng tôi hệ thống lại một số tính chất quan trọng
của tập lồi, bao lồi, điểm cực biên, cạnh cực biên. Phát biểu và trình bày lại
chi tiết một số định lý nhằm thuận lợi cho việc nghiên cứu các chơng sau.
Chơng2. Thuật toán Graham.
Trong chơng này chúng tôi mô tả lại thuật toán Graham, tìm bao lồi
của tập các điểm trong mặt phẳng. Bên cạnh đó chúng tôi đa ra ví dụ
minh hoạ cho thuật toán Graham.
3


Chơng 3. Thuật toán đờng thẳng định hớng
Trong chơng này chúng tôi trình bày thuật toán đờng thẳng định

hớng tìm bao lồi của tập hữu hạn điểm trong mặt phẳng (xem [4]). Cụ thể
các nội dung sau:
3.1 Một số tính chất: Mệnh đề 3.1.4 trong [4] không chứng minh chi
tiết, trong luận văn này chúng tôi chứng minh.
3.2 Thuật toán đờng thẳng định h
ớng: Trong [4] đã trình bày, trong
phần này chúng tôi trình bày chi tiết hơn.
3.3 Đa ra ví dụ cụ thể minh hoạ thuật toán này.
3.4 So sánh thuật toán Graham và thuật toán đờng thẳng định h
ớng
về thời gian tính toán và độ chính xác của thuật toán.
3.5 Đ-a ra bảng kết quả tính toán cụ thể, về thời gian chạy thuật toán
và số điểm cực biên của quá trình chạy thuật toán Graham và thuật toán
đờng thẳng định h
ớng cho các bộ điểm ngẫu nhiên với số l-ợng lớn.
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
TS. Phan Thành An. Tác giả xin bày tỏ lòng biết ơn sâu sắc đến thầy,
ngời đã trực tiếp hớng dẫn, dành cho tác giả sự giúp đỡ tận tình và tâm
huyết trong suốt quá trình học tập cũng nhtrong thời kỳ hình thành và
hoàn thành luận văn. Tác giả cũng cảm ơn các thầy giáo trong tổ hình học
đã giảng dạy và đóng góp những ý kiến quý báu trong quá trình học tập và
hoàn thành luận văn.
Tác giả xin chân thành cảm ơn tới gia đình cùng bạn bè đã dành cho tác
giả sự giúp đỡ vô cùng quý báu trong suốt quá trình học tâp.
Vinh, tháng 12 năm 2007.
Tác giả

4



Chơng 1
Kiến thức cơ sở
Để thuận lợi cho việc nghiên cứu và trình bày các chơng sau. Trong
chơng này, chúng tôi hệ thống lại một số tính chất quan trọng của tập lồi,
điểm cực biên, cạnh cực biên và của bao lồi.
1.1 tập lồi
Giả sử E n là không gian Ơclit n - chiều, là tập các số thực.
1.1.1 Định nghĩa (xem [3]). Tập A En đợc gọi là lồi nếu:
x1 , x2 A ,
0, 1suy ra x1 (1 ) x2 A

Chú ý: Theo định nghĩa, tập đợc xem là tập lồi.
1.1.2 Định nghĩa (xem [3]). Đoạn nối x1, x2 đợc định nghĩa nhsau:
Với x1 , x2 En,
0, 1
x: x1 (1 ) x 2 ;


x1 , x 2
: x

0 1
;


x1 , x 2
: x

0 1
;



x1 , x 2
: x

0 1
;


x1 , x 2
: x

0 1

Ngoài ra, ta ký hiệu intA là phần trong của A, clA là bao đóng của A.
1.1.3 Nhận xét (xem [3]). Tập A lồi, nếu: x 1, x 2 A suy ra [x1 , x2 ] A

5


1.1.4 Ví dụ. Các tam giác, hình tròn trong mặt phẳng là các tập lồi. Hình
cầu đơn vị trong không gian Banach là tập lồi. Các nửa không gian là các
tập lồi.
1.1.5 Mệnh đề (xem [3]). Giả sử A En (I) là các tập lồi, với I là tập
chỉ số bất kỳ. Khi đó, tập A = A cũng lồi.
I

Chứng minh. Lấy x1 , x2 A. Khi đó x1 , x2 A( I).
Do A lồi nên ta có
x1 + (1- )x2 A, ( [0, 1] )


suy ra
x1

+ (1- )x2 A.

1.1.6 Định nghĩa (xem [3]). x En đợc gọi là tổ hợp lồi của x1, x2, , xm E n

nếu tồn tại i 0 (i = 1, , m),

m

m

i 1

i 1

i 1 , sao cho x = i x i

1.1.7 Định lý (xem [3]). Giả sử A En là tập lồi x 1, x2 , , x m A. Khi đó
với i 0 (i = 1, 2, , m),

m

i = 1 thì
i1

m


ix i A.
i
1

Chứng minh. Ta chứng minh bằng quy nạp
Nếu m = 2: Với mọi 1, 2 0, 1 + 2 = 1; x1 , x 2 A, theo định nghĩa
1.1.1 ta luôn có:
1x 1 + 2 x2

A .

Giả sử khẳng định của mệnh đề là đúng với m k, ta cần chứng minh
rằng khẳng định đó đúng với m = k+1, nghĩa là:

6


x 1, x 2, ,

x k+1 A, i 0 (i = 1, 2, , k + 1),

k
1

i = 1
i1

x := 1x 1 + + kxk + k+1x k+1 A.

thì


Không mất tính tổng quát ta giả sử k+1 < 1 (vì nếu k+1 = 1 suy ra
1, 2, , k = 0 thì ta có ngay x A). Khi đó

1- k+1 = 1 ++ k > 0,


i
0 (i = 1, ..., k)
1 k 1

Do


1 = 1
k

i

i1

k 1

nên theo giả thiết quy nạp, ta có


k
x

...


xk A.
1
y :=
1
1


k
1
k
1

1

Với các điểm y A và xk+1 A, ta có
1- k+1 > 0, (1- k+1) + k+1 = 1,
do đó

x = (1- k+1)y + k+1 A.

1.1.8 Mệnh đề (xem [6]). Giao của một họ các tập lồi là tập lồi.
Chứng minh. Giả sử Ai (i I) là các tập lồi. Đặt A = i
Ai .
I
Lấy x1 , x2 A x1, x2 Ai , i I.
Do Ai lồi với i I, nên ta có:
x 1 + (1- )x2 Ai , [0,1] , i I

suy ra


x 1 + (1- )x2 A , [0,1] .

Vậy A là tập lồi.

7


1.2 bao lồi của một tập.
1.2.1 Định nghĩa (xem [7]).
- 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.
- Giao của tất cả các tập lồi đóng chứa A gọi là bao lồi đóng của A.
Kí hiệu conv A .
1.2.2 Nhận xét (xem [7]).
- convA là tập lồi. Đó là tập lồi nhỏ nhất chứa A.
- A là tập lồi khi và chỉ khi A = convA.
- convA là tập lồi đóng. Đó là tập lồi đóng nhỏ nhất chứa A
1.2.3 Mệnh đề (xem [7]). convA là tập hợp tất cả các tổ hợp lồi của A.
Chứng minh. Giả sử T là tập tất cả các tổ hợp lồi của A. Vì convA là tập lồi
(nhận xét 1.2.2) và A convA nên theo (nhận xét 1.1.8) suy ra T convA.
Để chứng minh convA T trớc tiên ta chứng minh T là tập lồi.
Thậy vậy, lấy x; y T, khi đó:
x = i ai và y =
iI

jbj , trong đó ai, bj A; i, j I và
jI

i = 1, j = 1; i, j 0; i, j I.

iI

jI

Với 0 1, ta có (1- )x + y =

(1 )ia i + jbj .
iI



jI

(1 )i + j = (1- ) i ai + jbj
iI

iI

jI

= (1- ) + = 1.

8

jI


(1 )i ai + jbj

Do đó


iI

T,

jI

(1- )x + y T

hay
suy ra T lồi.

Mặt khác A T mà convA là tập lồi nhỏ nhất chứa A nên convA T.
Vậy khẳng định trên của mệnh đề là đúng.
Từ mệnh đề 1.2.3 ta suy ra kết quả sau.
1.2.4 Bổ đề (xem [7]). Tập A là lồi khi và chỉ khi A chứa tất cả các tổ hợp lồi
của nó.
1.2.5 Mệnh đề (xem [7]). Nếu A là tập lồi thì bao đóng clA của A cũng là tập
lồi.
Chứng minh. Lấy x0 , x1 clA. Đặt x := x0 + (1- )x 1 (0 1).
Giả sử U là lân cận lồi của điểm 0. Do x0, x 1 clA nên
(xi + U) A , (i = 0, 1)
suy ra tồn tại xi
(x i + U) A (i = 0, 1).
Đặt

x = x0 + (1- )x 1, dễ thấy x A do x0 , x1 A.

Khi đó


x
i (x0 + U) + (1- )(x 1 + U) = x + U

nên

(x + U) A . Suy ra x clA.

Vậy clA là tập lồi.
1.2.6 Mệnh đề (xem [7]). Nếu A và B là các tập lồi trong En thì
conv(A B) = 0 1 { A + (1- )B}.
Chứng minh. Đặt C : = 0 1 { A + (1- )B} khi đó với x A, y B,
0 1, vì x, y thuộc tập lồi A B nên ta có:

9


x + (1- )y A B,

do đó

x + (1- )y conv(A B),

suy ra

C conv(A B).

Để chứng minh bao hàm thức ngợc lại ta sẽ chứng minh C là tập lồi
chứa A B. Hiển nhiên A B C, ta chứng minh C lồi.
Thật vậy, lấy u, v C, giả sử
u = 1 x1 + (1- 1)y1

v = 2 x2 + (1- 2)y2



trong đó x 1, x 2 A; y1 , y2 B và 0 1 , 2 1.
z := u + (1- )v.

Đặt

Nếu = 0 hoặc = 1 thì z = u hoặc z = v, nên hiển nhiên z C.
Nếu 1 = 0 hoặc 1 = 1 và 2 = 0 hoặc 2 = 1 thì ta có ngay z A hoặc
z B, do đó z C
Bây giờ ta xét 0 , 1 , 2 1. Ta có:
z = [ 1x1 + (1- 1)y 1] + (1- )[ 2x2 + (1- 2)y 2]
=[ 1+(1- ) 2][

1
(1 )2
x1
x 2 ]+
1 (1 )2
1 (1 )2

+ [ (1 1 ) (1 )(1 2 ) ][

(1 1 )
(1 )(1 2 )
y1
y2 ]
(1 1 ) (1 )(1 2 )

(1 1 ) (1 )(1 2 )

= ()( x1 x 2 ) [1 ()][ y1 1 y 2 ]




1 ()

1 ()

= x (1 ) y C .
Trong đó

1 , (1 )2




1
x
x1
x 2 A, y
y1
B


1 ()
1 ()


và .
Vậy C là tập lồi của En.

10


1.2.7 Định lí (định lý Caratheodory) (xem [3]). Mỗi điểm của tập convA là
tổ hợp lồi của không quá n + 1 điểm khác nhau của A.
1.2.8 Mệnh đề (xem [7]). Bao lồi của một tập compact là một tập compact.
Chứng minh. Giả sử M là tập compact và dãy {x k} convM.
Theo mệnh đề 1.2.3, ta có
xk = 0,ka0,k + 1,ka1,k + + n,kan,k.
với ai,k M, i,k 0 (i = 0, 1, , k) và

n

i,k = 1.
i 0

Do M [0,1] là tập compact nên tồn tại dãy con {kt } sao cho

i, k t a i, kt i a i
với a i M, i 0 (i = 0, 1, , k) và

n

i = 1.
i0

Khi đó x k 0a0 + 1a 1 + + na n convM.

t

Vậy convM là tập compact.
1.2.9 Mệnh đề (xem [2]). Bao lồi của họ hữu hạn điểm trong mặt phẳng là
hình đa giác lồi có các đỉnh thuộc họ điểm đã cho.
1.2.10 Bổ đề (xem [3]). Nếu A là tập lồi thì intA cũng là tập lồi.
Chứng minh. Lấy x1 intA, x2 A. Khi đó, tồn tại lân cận U của x1 sao cho
U A.
Đặt x = x 1 + (1- )x2 (0 < < 1), ta có U + (1- )x2 là một lân cận
của x và U + (1- )x 2 A x intA. Do đó intA lồi.
1.2.11 Mệnh đề (xem [7]) Bao lồi của một tập mở là một tập mở.
Chứng minh. Giả sử A là tập mở khi đó A = intA, mà A convA nên
intA int(convA),
11


vì vậy

A int(convA).

Từ bổ đề 1.2.10 suy ra int(convA) là tập lồi, mà nó chứa A, vì thế
convA int(convA).
Mặt khác ta luôn có int(convA) convA.
Vậy

convA = int(convA).

Suy ra convA là tập mở.
1.3 điểm cực biên, cạnh cực biên.
1.3.1 Định nghĩa (xem [8]). Ta gọi x M là điểm cực biên của tập lồi M

nếu x [y, z]; y, z M thì x = y hoặc x = z.
1.3.2 Nhận xét. Các điểm trong của một bao lồi M không phải là điểm cực
biên.
1.3.3 Nhận xét. Bao lồi của họ hữu hạn điểm là hình đa giác xi 1 , xi 2 , ..., x i k
trong đó các đỉnh của hình đa giác lồi x i 1 , x i 2 , ..., xi k (x1 , x2 , , xm) chính
là điểm cực biên của conv{x1 , x 2, , x m} và chỉ có các điểm cực biên đó mà
thôi.
1.3.4 Định lý Krein-Milman (xem [7]). M En compact, x convM khi
và chỉ khi x là tổ hợp lồi của n + 1 điểm cực biên của M.
1.3.5 Bổ đề (xem [6]). Một điểm không phải là điểm cực biên của tập lồi
nếu và chỉ nếu điểm này nằm trong hoặc trên các cạnh của tam giác nào đó
có các đỉnh là các điểm của tập lồi và điểm này không phải là một đỉnh của
tam giác kể trên.
Chứng minh. Giả sử rằng nếu một điểm nằm trong một tam giác thì nó
không phải là điểm cực biên. Do đó đỉnh của một tam giác có thể là điểm
cực biên.

12


Mặt khác một điểm nằm trên cạnh của một tam giác mà không phải là đỉnh
thì không phải là điểm cực biên.
1.3.6 Chú ý (nhận dạng điểm cực biên).
Các điểm sau luôn luôn là điểm cực biên.
a) Ta gọi điểm cao nhất của A là điểm có tung độ lớn nhất. Trong những
điểm cao nhất thì điểm có hoành độ lớn nhất và điểm có hoành độ bé nhất
là các điểm cực biên của convA.
b) Ta gọi điểm thấp nhất của A là điểm có tung độ nhỏ nhất. Trong những
điểm thấp nhất thì điểm có hoành độ lớn nhất và điểm có hoành độ bé nhất
là các điểm cực biên của convA.

c) Ta gọi điểm xa nhất về bên phải của A là điểm có hoành độ lớn nhất.
Trong những điểm xa nhất về bên phải thì điểm có tung độ lớn nhất và điểm
có tung độ bé nhất là các điểm cực biên của convA .
d) Ta gọi điểm xa nhất về bên trái của A là điểm có hoành độ nhỏ nhất.
Trong những điểm xa nhất về bên trái thì điểm có tung độ lớn nhất và điểm
có tung độ bé nhất là các điểm cực biên của convA.
1.3.7 Định nghĩa (xem [6]). Cạnh cực biên của convA là cạnh mà mọi điểm
của A nằm trên một nửa mặt phẳng của đờng thẳng xác định bởi cạnh đó.
1.3.8 Định nghĩa. Ta ký hiệu dt(a, b, c) là diện tích đại số của tam giác
abc.
Cho ba đỉnh của tam giác có toạ độ a(a0, a1); b(b0, b1); c(c 0, c1 ) thì dt(a, b, c)
đ
ợc tính:

2dt(a, b, c) = (b 0 - a0 )(c 1 - a1 ) - (c 0 - a0 )(b1 - a1).
+ Nếu dt(a, b, c) > 0 thì c nằm về bên trái ngặt tia ab.
+ Nếu dt(a, b, c) = 0 thì a, b, c thẳng hàng.
+ Nếu dt(a, b, c) < 0 thì c nằm về bên phải ngặt tia ab.

13


CHƯƠNG 2
THUậT TOáN GRAHAM
Trong chơng này chúng tôi mô tả lại thuật toán Graham, tìm bao lồi
của tập các điểm trong mặt phẳng (xem [5]). Bên cạnh đó chúng tôi đa ra
ví dụ minh hoạ thuật toán Graham.
2.1 THUậT TOáN GRAHAM.
Bài toán: Cho tập Q gồm n điểm trong mặt phẳng, Q = {p0, p1, ..., pn - 1 }.


Hãy tìm tập các điểm cực biên (có thứ tự) của convQ.
2.1.1 Mô tả thuật toán.
Ta dùng một tập có thứ tự ký hiệu là S để l
u các điểm của Q mà có
thể là điểm cực biên. Tập này có tính chất là điểm thêm vào luôn đợc đặt ở
vị trí đầu (có thứ tự lớn nhất), để loại một điểm ra khỏi tập này ta phải loại
tất cả các điểm có thứ tự lớn hơn. Số thứ tự lớn nhất của tập tại một thời
điểm đợc gọi là chỉ số đỉnh của tập này. Nhvậy, thêm (bớt) điểm vào thì
chỉ số đỉnh tăng lên (giảm xuống) tơng ứng.
Xét ví dụ sau:
Trong mặt phẳng cho tập Q = {(-3; -2), (-8; 0), (-7; -4), (-5; 2), (-1; 8),
(-6; 5), (1; 5), (3; -6), (8; -3), (5; 1), (9; 3), (6; 7)}. Hãy tìm tập các điểm
cực biên (có thứ tự) của convQ.
Bớc 1. Sắp xếp.
Đánh số thứ tự các điểm của Q. Lấy điểm x(3; -6) là điểm có tung độ
thấp nhất về bên phải và đặt là p0. Lúc đó p0 thuộc biên bao lồi.

14


- Ta nối p 0 với tất cả các điểm đã cho (nếu có ba điểm thẳng hàng ta
loại điểm nằm giữa).
- Sắp thứ tự các điểm theo góc ngợc chiều kim đồng hồ, và lần lợt
đặt tên là p1 , p2 , p3 , p4, p5, p6, p7, p8, p9, p10, p11 . Trong đó p1 , p2 , p 3, p4 , p5 , p6 ,
p7, p8, p9, p10, p11 đợc đặt xác định theo góc hợp với trục hoành Ox theo thứ
tự tăng dần.
Bớc 2. Dò tìm.
- Nhận xét p0, p1 là các điểm cực biên.
- Cho S là tập của các điểm. Ban đầu tập S chỉ có 2 điểm S = (p 1, p 0) làm
xuất phát, với p1 ở trên đỉnh.

p6
p4
p7

p5
p2

p8
p10

p3
p9
p11

p1

p0

Hình 1.2.
- Thêm p2 vào S: Tạm đợc vì p2 nằm bên trái tia p0p1 . Lúc đó:
S = (p 2, p 1, p0 ).

15


- Để kiểm tra điểm p2 có phải là điểm cực biên không ta xét tiếp theo
điểm p3: Vì p3 nằm bên trái tia p1 p2 nên S đợc mở rộng. Thêm p 3 vào S:
Nên S tạm thời là S = (p3, p 2, p 1, p0 )
- Để kiểm tra điểm p3 có phải là điểm cực biên hay không ta xét tiếp
theo điểm p4 . Vì p 4 nằm bên phải tia p2 p3 nên S không đợc mở rộng. Do đó

loại p3 ra khỏi tập S, nhvậy tập S = (p 2, p1 , p0).
- Tiếp tục tơng tự nhthế ta đợc S = (p 11, p10, p7, p6 , p4, p2 , p1, p0 ) là
các điểm nằm trên bao lồi của tập gồm 12 điểm đã cho có dạng nhhình vẽ
(Hình 1.2).
Hay bao lồi của tập các điểm {p0, p 1, p2 , p3 , p4, p5, p 6, p7 , p8, p9, p 10, p 11}
cho trớc là tập {p0 , p1, p 2,p 4, p 6, p7 , p10 , p11 }.
2.1.2 Các điều kiện biên.
- Tìm điểm ban đầu để sắp thứ tự.
- Ba điểm cùng nằm trên một cạnh của bao lồi ta loại điểm nằm giữa.
- Tính thẳng hàng sắp xếp thứ tự các điểm theo điểm p0: Nếu p1 , p2
cùng góc so với p 0. Định nghĩa p1 < p 2 nếu: p1 p0 p 2 p0 lúc đó ta loại
p1.
2.1.3 Thuật toán.
Thuật toán dùng để cho một điểm p vào tập S hoặc loại điểm đó ra khỏi
tập S và sử dụng điểm thấp nhất theo tung độ về bên phải để nối với tất cả
các điểm đã cho, xem hình vẽ (Hình 2.2).
1) Tìm điểm thấp nhất x về bên phải và đặt là p 0.

16


2) Sắp xếp các điểm khác theo góc ở đỉnh p0 (trong trờng hợp thẳng hàng
ta loại những điểm gần p0 ) và lần l
ợt đặt tên là p1 , p2, p3, ..., p n-1.
3) Tập S = (p0, p t)= (pt, , pt - 1 ); t làm chỉ số đỉnh
4) i = 2
5) while i n do
if pi ở về bên trái thật sự của tia pt - 1pt then
đẩy p i vào tập S và đặt i i + 1
else loại pi ra khỏi tập S

end if
end while.
2.2 Ví Dụ minh hoạ.
Bài toán: Trong mặt phẳng cho tập P = {(-6; -5), (6; -2), (3 ;3), (0; 4),
(-2; -6), (-5; -3), (-7; 2), (-5; 6), (2; 7), (8; 2), (3; -2)}.
Hãy tìm tập các điểm cực biên (có thứ tự) của P.
Để tìm các điểm cực biên của P ta làm nhsau:
Sử dụng thuật toán trên, ta chọn điểm thấp nhất về bên phải theo tung
độ làm điểm xuất phát, và đặt là p0(-2; -6). Khi đó ta tiến hành làm nh
sau:
Ta nối điểm p0 với tất cả các điểm đã cho (nếu có ba điểm thẳng hàng
ta loại điểm nằm giữa). Trong ví dụ này, kiểm tra thấy ba điểm có toạ độ
(-2; -6), (3; -2), (8; 2) thẳng hàng và điểm (3; -2) nằm giữa hai điểm
(-2; -6), (8; 2) nên loại điểm (3; -2).
- Sắp xếp thứ tự các điểm còn lại theo góc hợp với trục hoành theo
chiều ngợc kim đông hồ, và lần lợt đặt là p0 , p1 , p2 , p3, p4, p5, p6, p7, p8, p9.
17


Trong đó p0 , p 1, p2, p 3, p4, p5 , p6, p7, p 8, p9. đợc đặt xác định theo góc hợp
với trục hoành Ox theo thứ tự tăng dần.
- Cho S là một tập có thứ tự để lu các điểm đã cho mà có thể là điểm
cực biên, ban đầu S đã có hai điểm cực biên là S = (p1, p0 ), xem hình vẽ
(Hình 2) ta có:
Với i = 2, ta có S = (p1 , p0 ), thêm p 2 vào S. Khi đó ta thấy p2 nằm bên
trái tia p0p 1 nên p2 chấp nhận đợc. Vậy tạm thời ta có S = (p2, p 1, p0 ).
Với i = 3, điểm tiếp theo p 3 để kiểm tra p2. Ta thấy p 3 nằm bên trái
tia p1 p2 nên p2 đợc đẩy vào tập S, suy ra tập S = (p2, p1, p0). Thêm p3 vào ta
tạm thời đ
ợc tập S =(p 3, p2 , p1, p0).

Với i = 4, điểm tiếp theo p 4 để kiểm tra p 3. Ta thấy p4 nằm bên phải
tia p2p3 nên loại p3 ra khỏi tập S, suy ra tập S = (p2 , p1, p 0). Thêm p4 vào ta
tạm thời đ
ợc tập S = (p 4, p 2, p1 , p0).
Với i = 5, điểm tiếp theo p 5 để kiểm tra p4. Ta thấy p5 nằm bên trái tia
p2p4 nên p 4 đợc đẩy vào tập S, suy ra tập S = (p 4, p2, p1, p0). Thêm p5 vào ta
tạm thời đ
ợc tập S = (p 5, p4 , p2, p1, p 0).
Với i = 6, điểm tiếp theo p 6 để kiểm tra p5. Ta thấy p 6 nằm bên
phải tia p 4p5 nên loại p5 ra khỏi tập S, suy ra tập S = (p4, p 2, p 1, p0 ).
Thêm

p6 vào ta tạm

thời

đợc

tập S = (p6, p4, p 2, p 1, p0 ).

Với i = 7, điểm tiếp theo p7 để kiểm tra p6. Ta thấy p7 ở bên trái
tia p4 p6 nên p6 đợc đẩy vào tập S, suy ra tập S = (p6, p4, p2, p1 , p0 ).
Thêm p7 vào ta tạm thời đợc tập S = (p7, p6, p 4, p2 , p1, p0).
Với i = 8, điểm tiếp theo p 8 để kiểm tra p7 . Ta thấy p8 ở bên trái tia
p6p7 nên p7 đợc đẩy vào tập S, suy ra tập S = (p7, p6, p4 , p2 , p1 , p0 ). Thêm p8
vào ta tạm thời đ
ợc tập S = (p8 , p7 , p6, p4, p 2, p1 , p0).

18



Với i = 9, điểm tiếp theo p9 để kiểm tra p 8. Ta thấy p9 ở bên phải tia
p7p8 nên loại p8 ra khỏi tập S, suy ra tập S = (p 7, p6, p 4, p2, p1 , p0). Thêm p9
vào ta tạm thời đ
ợc tập S = (p9 , p7 , p6, p4, p 2, p1 , p0).
p4

7
6

p6

p5 4
3
2

p7
-7 -6 -5

-2

p3
p2
2 3

8

pi

-2

p8

6

-3

p9
p0

-5
-6

Hình 2.2
Ta có điểm tiếp theo điểm p 0 để kiểm tra p 9. Ta thấy p 0 trở về bên trái
tia p7p 9 nên p9 đợc đẩy vào tập S, suy ra tập S = (p9, p 7, p6 , p4 , p2, p 1, p 0).
Vậy bao lồi của tập 12 điểm trên là: {p0, p 1, p 2, p4 , p6, p 7, p 9}.

19


Chơng 3
Thuật toán đờng thẳng định hớng
Trong ch
ơng này chúng tôi trình bày thuật toán đờng thẳng định
hớng tìm bao lồi của tập hữu hạn điểm trong mặt phẳng, ph
ơng pháp này
lần đầu tiên đa ra trong [4]. Bên cạnh đó chúng tôi chứng minh một số
tính chất, đa ra ví dụ minh hoạ về cách tìm bao lồi cho tập các điểm hữu
hạn trong mặt phẳng. Từ đó ta thấy đợc thuật toán này chạy nhanh hơn và
chính xác hơn thuật toán Graham.

3.1 Một số khái niệm.
Cho Q là tập n điểm trong mặt phẳng để xác định convQ theo [4],
chúng ta chỉ xét những điểm của Q trong bốn tam giác vuông đợc bao
quanh bởi hình chữ nhật abcd (Hình 3) (tức là hình chữ nhật nhỏ nhất chứa
Q) và có các cạnh song song với trục toạ độ. Những tam giác vuông này
đợc xác định bởi các điểm thấp nhất bên phải nhất (a1 ), cao nhất bên phải
nhất (a2), bên phải nhất cao nhất (b1 ), bên trái nhất cao nhất (b2), thấp nhất
bên trái nhất (c 1), cao nhất bên trái nhất (c2), bên phải nhất thấp nhất (d1 ),
bên trái nhất thấp nhất (d2). Dĩ nhiên chúng là những điểm cực biên của
convQ.

b2

b1

b

a










c2
c1


c











a2



















a1




d2







d

d1
20

Hình 3.3


Vấn đề còn lại là tìm các cạnh cực biên của bao lồi trong mỗi tam giác
vuông.
Trong mỗi tam giác vuông, bao lồi xác định bởi các phần của đ
ờng
thẳng định hớng và đờng thẳng cuối. Việc tìm bao lồi của mỗi tam giác
vuông đợc thực hiện nhnhau do vậy không mất tính tổng quát, chúng tôi
sẽ trình bày trên một tam giác vuông ab 1a2. Giả sử rằng, các điểm

q0 := a 2, q 1, ..., q n-1 : = b 1 của Q trong tam giác vuông ab1 a2 đợc sắp xếp
theo thứ tự giảm dần của hoành độ (nếu cả hai điểm đó cùng hoành độ thì
điểm có tung độ nhỏ nhất là bỏ đi, bởi vì nó không phải là điểm cực biên
n 2
của convQ) và chúng đợc hình thành bởi một đờng ziczắc Z = i 0 [qi , qi+1]

từ a2 tới b1. Các điểm đó gọi là đỉnh của đ
ờng ziczắc.

b1

a
Z

qi

a2
Hình 4.3
Để tìm cạnh cực biên của convQ từ a2 tới b1 trong miền bị chặn bởi
[a 2, a], [a, b1] và Z, chúng ta sẽ dùng ý tởng của phơng pháp đ
ờng định
hớng [4] (để xác định các cạnh cực biên của convQ chứa trong tam giác
bc2 b2, cd2c 1 và da 1d1 , xem (Hình 1.2) cũng làm tơng tự).

21


Giả sử p là một đỉnh của Z.
3.1.1. Định nghĩa (xem [4]).
Nếu q nằm trên hoặc bên trái tia pb1 với mọi đỉnh q của Z từ p tới b1 thì

pb1 gọi là đờng thẳng cuối đi qua điểm xuất phát p (Hình 5.3 ).
pn-1= b1

a
p9

p8
p6
p7
p5

p4
p2
p3
p1

a2= p0

Hình 5.3
p8 b1 là đờng thẳng cuối.
p 4b1 không phải là đờng thẳng cuối.
3.1.2. Định nghĩa (xem [ 4]).
Giả sử q là một đỉnh của Z giữa các đỉnh p và b1. Nếu tồn tại p ]a, b1[

sao cho:
i. p thẳng hàng với p và q.
ii. z nằm trên hoặc bên trái tia pq với mọi đỉnh z của Z có toạ độ x ở
giữa toạ độ x của p và p thì pq gọi là đờng thẳng định hớng đi qua điểm
đầu p. Hơn nữa, nếu [ p, q [ Z = thì q gọi là một điểm chuyển đổi
của đ

ờng thẳng định hớng, xem (Hình 6.3).
3.1.3. Nhận xét (xem [4]).
- Khi cho một đờng thẳng định hớng, tồn tại đúng một điểm chuyển
đổi
22


- Nếu pb 1 là đ
ờng thẳng cuối của điểm p (nếu q là điểm chuyển đổi
của đờng thẳng định hớng pq đi qua điểm q tơng ứng) thì không có
điểm cực biên của convQ nằm giữa p và b1 (giữa p và q tơng ứng).
p'

qn-1 = b1

a

Z

q*
qi

q
p

a2 = q0

q* là điểm chuyển đổi.
Hình 6.3
3.1.4. Mệnh đề (Trong [4] không chứng minh chi tiết, trong luận văn này

chúng tôi chứng minh chi tiết).
Giả sử p Z là một điểm cực biên của convQ, p b 1 thì:
i) Tồn tại đúng một đờng thẳng cuối hoặc một đờng thẳng định
hớng đi qua p.
ii) Nếu pb1 là đờng thẳng cuối đi qua điểm p thì [p, b1] là cạnh biên của
convQ.
iii) Nếu pq * là đ
ờng định hớng đi qua điểm đầu p với điểm chuyển đổi
q* thì q* là điểm cực biên và [p, q*] là cạnh biên của convQ, xem (Hình 6.3).

Chứng minh.
i) Giả sử pb1 là đ
ờng thẳng cuối. Suy ra z Z nằm trên hoặc bên trái
của tia pb1.

23


Giả sử có điểm p k Z sao cho pkb1 cũng là đờng thẳng cuối. Suy ra p
nằm trên hoặc bên trái tia pkb1.
Mặt khác pk cũng nằm trên hoặc bên trái tia pb 1. Suy ra pk phải nằm
trên tia pb1 và p phải nằm trên tia p kb 1. Hay p kb 1 trùng với pb 1, suy ra p = p k.
Vậy pb1 là đờng thẳng cuối duy nhất qua p.
Ngợc lại, giả sử pb 1 không phải là đờng thẳng cuối. Tức là tồn tại
p1 Z sao cho p1 nằm bên phải tia pb1 và z Z đều nằm trên hoặc bên trái
tia pp1 . Khi đó pp 1 là đờng thẳng định hớng duy nhất qua p.
ii) Giả sử pb1 là đờng thẳng cuối. Do b1 là điểm cao nhất nên b1 là
điểm cực biên của convQ.
Mặt khác pb 1 là đờng thẳng cuối nên z Z đều nằm trên hoặc bên
trái tia pb1 , theo giả thiết p convQ. Do đó [p, b1 ] là cạnh biên của convQ.

iii) Giả sử pq * là đờng thẳng định hớng với điểm chuyển đổi q * .
Theo giả thiết p là điểm cực biên và z Z đều nằm trên hoặc bên trái tia
pq*, nên pq * chứa một cạnh biên của convQ.
Mặt khác do q * là điểm chuyển đổi nên không có pk Z sao cho
q* [p, pk]. Do đó q* là điểm cực biên và [p, q *] là cạnh biên của convQ.
3.2 Thuật toán.
Trong [4] đã trình bày thuật toán đờng thẳng định h
ớng tìm bao lồi
các điểm trong mặt phẳng, trong phần này chúng tôi trình bày chi tiết hơn.
Từ cơ sở mệnh đề 3.1.4 sau đây sẽ trình bày thuật toán tìm tập các
cạnh biên {[p i, pi+1]; i = 0, ..., l} (l n - 2) của convQ đợc chứa trong tam
giác vuông ab1a 2 có các cạnh góc vuông song song với trục toạ độ (theo
hớng ngợc chiều kim đồng hồ) gồm các phần của các đờng thẳng định
hớng và đờng thẳng cuối.

24


×