6. Ý nghĩ kho họ ề ti
2.5.1. Thuật toán giao hai đoạn thẳng (Bentley – Ottmann)
Thu t to n Bentley – Ottm nn (BO) l một thu t to n quét òng ể liệt k tất ả oạn thẳng gi o nh u trong mặt phẳng ƣợ ph t triển n ầu ởi Jon Bentley n Thom s Ottm nn (1979) ể kiểm tr ó h y kh ng oạn thẳng gi o nh u, v i ầu v o l n oạn thẳng v k iểm ắt nh u. Mặ ù kh ng phải l thu t to n tốt nhất nhƣng nó ƣợ l họn ể th h nh ởi s ơn giản v hiếm ít ộ nh . BO ó ộ ph tạp là O(n+k)logn.
Giả thiết ầu v o thu t to n BO:
- Kh ng ó oạn thẳng n o thẳng ng.
- C iểm mút oạn thẳng n y kh ng nằm tr n oạn khác.
- Điểm gi o nh u hỉ l iểm gi o 2 oạn thẳng.
- Kh ng ó qu h i iểm mút v iểm ắt nh u ó ùng ộ ộ x.
2.5.1.1. Ý tưởng của thuật toán
Ý tƣởng hính thu t to n BO l sử ụng tiếp n quét òng, trong ó một òng thẳng ng L huyển ộng từ tr i s ng phải trong mặt phẳng, những oạn gi o nh u sẽ ƣợ lƣu lại tr n ƣờng m nó i huyển.
Hình 2.16 - Minh hoạ thuật toán quét dòng
Khi L quét qu một iểm uối một oạn thẳng s, gi o iểm L v s sẽ ƣợ th m v o hoặ gỡ r từ một t p ó th t iểm gi o nh u. S kiện n y ễ ng ƣợ o n nhƣ iểm ầu mút oạn thẳng ( ã iết từ ầu v o thu t to n). S kiện òn lại xảy r khi L quét qu hỗ ắt
45
nh u 2 oạn thẳng s v t, s kiện n y ũng ƣợ o n trƣ từ th tế, ng y từ khi xảy r s kiện n y, iểm gi o nh u L v i s v t ƣợ ặt liền kề trong t p iểm gi o nh u ó th t .
Thu t to n BO sử ụng ấu trú ữ liệu iểu iễn t p iểm gi o nh u thẳng ng òng quét v i oạn thẳng ầu v o, v t p hợp s kiện ó tiềm n ng trong tƣơng l i h nh th nh ởi ặp liền kề iểm gi o nh u. Nó xử lý s kiện lần lƣợt p nh t ấu trú ữ liệu ể iểu iễn t p iểm gi o nh u m i.
2.5.1.2. Cấu trúc dữ liệu
Để lƣu trữ hiệu quả gi o iểm ƣờng quét L v i oạn ƣờng vào và một huỗi các s kiện trong tƣơng lai thu t toán BO lƣu trữ ấu trúc ữ liệu là:
Một y t m kiếm nhị ph n h t p oạn thẳng qu L, theo th t trụ Y iểm m oạn thẳng qu L. Những iểm ắt kh ng ƣợ ại iện một h rõ r ng trong y nhị ph n t m kiếm. Thu t to n BO sẽ hèn th m một oạn m i s v o ấu trú ữ liệu khi òng quét L i qu iểm uối P oạn n y, vị trí hính x s trong y t m kiếm ó thể x ịnh ởi t m kiếm nhị ph n, mỗi ƣ kiểm tr p l tr n h y ƣ i oạn kh m L i qu . Do ó việ hèn sẽ ƣợ th hiện trong thời gi n log rits. Thu t to n BO sẽ xo oạn từ y nhị ph n v sử ụng t m kiếm nhị ph n ể x ịnh oạn ng y ở ƣ i hoặ tr n oạn kh , th o t n y ó thể ƣợ th hiện ởi y t ấu trú m kh ng qu n t m ến h nh họ ơ ản oạn thẳng.
Hình 2.17 - Cấu trúc cây nhị phân dòng
Th t sắp xếp: r v s l 2 oạn thẳng th r < s nếu v hỉ nếu
- rx1 < sx1 hoặ
46
Một h ng ợi ƣu ti n ể uy tr một huỗi s kiện ó tiềm n ng trong tƣơng l i thu t to n BO. Mỗi s kiện ƣợ li n kết v i một iểm p trong mặt phẳng,, iểm ầu uối, iểm ắt. S kiện n y xảy r khi òng L ắt qu p. Do ó s kiện ó thể ƣợ nh số ƣu ti n theo trụ x iểm li n kết s kiện. Trong thu t to n BO s kiện tƣơng l i tiềm n ng o gồm ầu mút oạn thẳng m hƣ ƣợ quét qu v iểm gi o nh u ph n oạn ƣờng m ở ng y n ƣ i hoặ n tr n oạn khác.
Thu t to n kh ng ần phải lƣu trữ một h rõ r ng ại iện òng quét L hoặ vị trí nó trong mặt phẳng. Th y v o ó, vị trí L ƣợ thể hiện gi n tiếp: ó là ƣờng thẳng ng qua iểm gắn v i s kiện gần y nhất là xử lý.
2.5.1.3. Chi tiết thuật toán
Thu t to n BO th hiện qu những ƣ s u y:
1. Khởi tạo một h ng ợi ƣu ti n Q s kiện ó tiềm n ng trong tƣơng l i, mỗi li n kiết v i một iểm trong mặt ph ng ƣu ti n theo trụ x. B n ầu, Q h nh s h iểm ầu mút oạn thẳng.
2. Khởi tạo một t m kiếm nhị ph n T ph n oạn thẳng qu L quét ƣờng, theo th t tr n trụ y iểm gi o nh u. B n ầu, T rỗng.
3. Trong khi Q l kh ng rỗng, t m v loại ỏ s kiện từ Q li n kết v i một iểm p ó toạ ộ x thấp nhất. X ịnh loại s kiện n y l s kiện g v qu tr nh ó theo trƣờng hợp s u y:
* Nếu p l iểm uối n tr i oạn s, hèn s v o T. T m oạn r v t ở n ƣ i h y tr n s trong T (nếu ó) nếu húng gi o nh u ởi một iểm tiềm n ng trong h ng ợi s kiện th loại ỏ nó. Nếu s gi o r hoặ t th th m iểm ắt n y v o h ng ợi.
* Nếu p l iểm uối n phải một oạn s, loại ỏ s từ T. T m oạn r v t ng y v ƣ i s trong T (trƣ khi loại ỏ s) . Nếu r v t gi o nh u th th m iểm n y v o trong nh s h h ng ợi.
* Nếu p l iểm gi o nh u s v t (v i s ở ƣ i t theo hƣ ng từ tr i qu ) , ho n ổi vị trí s v t trong T. T m oạn r v u (nếu ó) n ƣ i
47
v tr n s t tƣơng ng. Huỷ ỏ iểm ắt rs v tu từ h ng ợi s kiện, v , nếu r ắt t h y s ắt u, th m iểm n y v o h ng ợi s kiện.
2.5.1.4. Phân tích thuật toán
Thu t to n xử lý s kiện mỗi iểm mút oạn hoặ iểm gi o nhau ƣợ sắp xếp theo th t toạ ộ theo trụ x. Khi một s kiện th i ƣợ xử lý, s kiện tiếp theo ( nếu nó l iểm ắt) phải l một iểm gi o nh u 2 oạn thẳng liền kề iểu iễn trong T, ởi v thu t to n lƣu trữ tất ả iểm gi o nh u oạn thẳng nhƣ l s kiện tiềm n ng trong tƣơng l i, v o v y s kiện tiếp theo lu n lu n ó mặt trong h ng ợi s kiện. Kết quả l t m ƣợ hính x iểm ắt oạn thẳng.
Thu t to n BO xử lý huỗi 2n+k s kiện, trong ó n l số oạn thẳng v k l số iểm ắt, mỗi s kiện ƣợ xử lý ởi một số ố ịnh phép toán trong y t m kiếm nhị ph n v h ng ợi s kiện, v ởi v nó hỉ h iểm mút v iểm ắt giữ 2 oạn liền kề n n h ng ơi s kiện h kh ng qu 3n s kiện. Do ó tất ả th o t mất thời gi n l O (logn) v tổng thời gi n thu t to n là O((n+k)logn).
Nếu iểm ắt t m thấy ởi thu t to n kh ng ần phải lƣu trữ một khi t m thấy th kh ng gi n lƣu trữ thu t to n l O(n).
2.5.1.5. Kết luận
Kỹ thu t xếp hồng ản ồ l kỹ thu t rất khó trong qu tr nh ph n tí h th ng tin, òi hỏi phải ó những giải ph p tối ƣu về thời gian và không gian lƣu trữ. Trong phần tr n họ vi n ã tr nh y thu t to n quét òng ể x ịnh s gi o nh u h i oạn thẳng. Tuy thu t to n ơn giản nhƣng nó ƣợ sử ụng nhiều trong qu tr nh th h nh v ơn giản v hiếm ít ộ nh .