Cho đa giác đơn điệu PQ. Xét hai đ-ờng gấp khúc X và Y trên đa giác PQ là X = P và Y = Q cóchung đỉnh đầu a và đỉnh cuối b. Đ-ờng gấp khúc
X các đỉnh sắp xếp cùng chiều kim đồng hồ, Y có các đỉnh sắp xếp ng-ợc chiều kim đồng hồ. Thực hiện FQ(X ,Y ), ta có X~ và Y~.
B-ớc 0 Đặt Q*:= Q1; i := 1;
B-ớc 1 While Q* không là bao lồi tiền vi phạm do
Định nghĩa 3.2.1 (Xem [9]) Link nối hai đ-ờng X và Y là đoạn thẳng [u*,v*] thoã mãn điều kiện u*X~ và v*Y~ và mọi đỉnh của X~\{u*} nằm bên trái đ-ờng thẳng u*v* và Y~\{v*} F =, (F là miền mặt phẳng giới hạn bởi < u*v*, X~, pk+1pr >).
T-ơng tự ta cũng có khái niệm link của đ-ờng gấp khúc X và Y trong đa giác đơn điệu XY tr-ờng hợp X = < p0, p1, ..., pn-1 > có các đỉnh sắp xếp ng-ợc chiều kim đồng hồ và Y = < q0, q1, ..., qm-1 > có các đỉnh sắp xếp cùng chiều kim đồng hồ.
Xét bài toán tìm link trong tr-ờng hợp X có các đỉnh sắp xếp cùng chiều kim đồng hồ.
3.2.2. Thuật toán tìm link(Xem [5])
Mô tả thuật toán
Giả sử X~= < p,0, p1,, ..., ps,> và Y~= < q,0, q1,, ..., qt,>, trong đó 1sn-2 và 1tm-2. Chúng ta đi tìm link theo sự tăng dần từ những đỉnh đầu tiên của X~và Y~rồi đến những điểm kế tiếp.
Cụ thể, bắt đầu với hai đỉnh pi := p’0, qj := q’0, ta xét link tạm [u*,v*] := [p’i, q’j] ta kiểm tra tất cả các đỉnh của X~\{u*} xem có tồn tại đỉnh thuộc bên phải u*v* (nếu có thì gọi đó là vi phạm X~). Nếu tồn tại vi phạm X~ thì ta bỏ đỉnh p’i và tiếp tục với ii+1, gán lại u* := p’i.
Tiếp tục quay lại quá trình kiểm tra các đỉnh X~\{u*} so với link tạm [u*
,v*
] vừa thiết lập và tiếp tục nh- vậy đến lúc không còn đỉnh vi phạm nữa. Khi không tồn tại đỉnh nào của X~ vi phạm nữa thì ta sẽ kiểm tra các đỉnh của Y~. Nếu không tồn tại đỉnh nào của Y~\{v*} thuộc vào F thì [u*,v*] là đ-ờng link cần tìm.
Ng-ợc lại, ta có đỉnh của Y~\{v*} thuộc vào F (gọi là vi phạm Y~) thì ta bỏ đỉnh q,j và tiếp tục với jj+1(gán lại v* :=q’j).
Bây giờ ta đ-ợc link tạm [u*,v*] mới và quay lại sự kiểm tra nh- ban đầu đối với sự vi phạm X~ rồi vi phạm Y~ đến khi nào đồng thời không còn vi phạm
X~và Y~thì dừng lại. Và ta nhận đ-ợc [u*,v*] là đ-ờng link của X và Y.
Thuật toán 3.2.1 Link(X ,Y )
3.3. Thuật toán chính
Giả sử Q* và [u*,v*] lần l-ợt là bao lồi tiền vi phạm và link của đ-ờng gấp khúc cùng chiều (t-ơng ứng ng-ợc chiều) kim đồng hồ X đối với Y ng-ợc chiều (t-ơng ứng cùng chiều) kim đồng hồ.
Khi đó ta gọi:
- TC(X ) là biên trái (t-ơng ứng biên phải) của bao lồi Q* lấy từ đỉnh a
đến u*.
- TCL(X ,Y ) là việc đi tìmTC(X ) và link [u*,v*] giữa X và Y .
(Xem [5])
Quy -ớc:Nếu [u*,v*], (u*:= pk ; v*:= qt) là link của X = < ap0, p1,..., pn-1b > và Y = < aq0, q1, ..., qm-1b > trong đa giác đơn điệu XY thì đ-ờng gấp khúc
B-ớc0 Thực hiện FQ(X ,Y ). Giả sử
X~= < p,0, p1,, ..., ps,>; Y~= <q,0, q1,, ...,qt,>
B-ớc1 u* := p,0; v* := q,0; i := 0; j := 0;
B-ớc 2 While [u*,v*] không phải link do While [u*,v*] vi phạm X~ do
ii+1; u* :=pi,;
While [u*,v*] vi phạm Y~ do
< u*,v*, ..., b > t-ơng ứng là [u*,v*]< qt, qt+1, ..., qm-2, b> và đ-ờng gấp khúc < u*, ..., b > t-ơng ứng là < u*, pk+1, ..., pn-2, b >.