Phương pháp chia để trị

Một phần của tài liệu Phát triển các mô hình và thuật toán biểu diễn, xử lý, khai thác dữ liệu không gian và ứng dụng giải một số bài toán GIS (Trang 49 - 53)

Chia để trị là một kỹ thuật khá tổng quát được sử dụng để giải quyết một loạt vấn đề trong hình học máy tính. Hiện thực nguyên lý chia để trị phức tạp hơn các phương pháp khác như chèn đỉnh tuần tự hay phương pháp sử dụng dòng quét, tuy nhiên các thuật toán sử dụng nguyên lý chia để trị lại hoạt động rất hiệu quả. Ý tưởng chia để trị trong việc xây dựng lưới tam giác Delaunay đã được đề cập bởi Dwyer trong [16] .

2.4.2.1. Mô t thut toán

Ý tưởng chủ đạo của nguyên lý chia để trị để xây dựng lưới tam giác Delaunay là thực hiện đệ qui chia tập đỉnh ban đầu thành hai tập con có kích thức xấp xỉ nhau cho đến khi mỗi tập dữ liệu con chỉ chứa số lượng đỉnh đủ nhỏ cho việc xây dựng lưới tam giác dễ dàng. Giả sử là tập đỉnh ban đầu, và giả sử các tập con và là kết quả của lần đầu tiên phân rã ở mức . Chúng ta có thể giả định rằng nằm bên trái của và hoành độ x của các đỉnh là nhỏ hơn của . Thể hiện dưới đây là sự đệ qui phân rã tập cho ba mức đầu tiên, khi tập con ở mức sẽ được chia thành hai tập con và cho mức kế tiếp . Rất nhiều kỹ thuật phân rã khác nhau đã được đề cập trong công trình [16] nhưng về cơ bản thường đòi hỏi bao lồi của các lưới tam giác không phủ lên nhau để dễ dàng cho quá trình ghép mảnh ở bước sau.

Mỗi lưới tam giác Delaunay chỉ chứa một số tam giác được xây dựng từ tập đỉnh ở mức cuối cùng nhất. Cặp lưới tam giác kề cận sẽ được ghép lại và mỗi lưới tam giác ghép là một lưới tam giác Delaunay. Điều đó có nghĩa là mỗi lưới tam giác ghép phải thỏa điều kiện Delaunay và biên của lưới phải là bao lồi. Quá trình này còn tiếp tục cho đến khi các lưới tam giác và của tập đỉnh và ở bước chia đầu tiên được ghép lại thành lưới tam giác của toàn bộ tập đỉnh đầu vào ban đầu:

Hình 2.24. Sơđồ ghép lưới tam giác trong thuật toán chia đểtrị

Ngoại trừ quá trình ghép lưới, các bước còn lại của thuật toán dựa trên nguyên lý chia để trị là rất đơn giản. Rất nhiều phương pháp ghép lưới khác nhau đã được đề cập nhưng ở đây chúng tôi chỉ xin đề cập một cách ngắn gọn nhất một trong các thuật toán ghép lưới. đỉnh của tập đầu tiên được sắp lại theo trật tự thỏa điều

kiện khi và chỉ khi nếu , hoặc và . Kế

tiếp tập đỉnh được chia thành hai tập con và . Lưới tam giác và được ghép một cách đệ qui để tạo thành lưới tam giác . Quá trình ghép và bao gồm hai bước như sau:

a) Trước tiên, ta cần xác định bao lồi của lưới tam giác . Ta đã có các bao lồi của lưới tam giác và , điều đó có thể thực hiện bằng cách tìm các cạnh tangents dưới và trên chung và của hai lưới tam giác mô tả như hình x. Mỗi cạnh tangent nối một nút trong với một nút trong

. Cần lưu ý rằng các nút của và không nhất thiết phải có giá trị tung độ y nhỏ nhất và lớn nhất trong hai lưới tam giác ghép.

b) Quá trình ghép bắt đầu cạnh tangent dưới , đường cơ sở với hai đỉnh đầu mút và . Sau đó một đỉnh từ hay được chọn để tạo tam giác với cạnh . Đường tròn đi qua và nới dần lên trên cho đến khi gặp đỉnh . Các đỉnh , và giờ tạo thành tam giác Delaunay của vì không có bất kỳ đỉnh nào từ nằm bên trong đường tròn ngoại tiếp của tam giác đó. Các cạnh của và mà cắt cạnh mới sẽ được xóa đi và được vẽ thành đường chấm chấm trong . Cạnh mới thêm vào sẽ trở thành đoạn cơ sở mới và quá trình tương tự sẽ tiếp diễn cho đến khi gặp cạnh tangent trên . Lưới tam giác cuối cùng thể hiện như trong [Hình 2.25(b)] thỏa điều kiện Delaunay vì không có bất kỳ đỉnh nào của nằm trong bất kỳ đường tròn ngoại tiếp nào trong lưới tam giác.

(a) (b)

2.4.2.2. Đ phc tp thut toán

Giả sử là thời gian để xây dựng lưới tam giác Delaunay từ tập đỉnh. Khi đó chúng ta có quan hệ qui nạp như sau:

(10)

ở đây là thời gian ghép hai lưới tam giác với đỉnh cho mỗi lưới. Quá trình ghép, nếu cài đặt tốt có thể cho kết quả gần như tuyến tính. Như vậy, độ phức tạp có bậc .

Định lý 2. Thuật toán xây dựng lưới tam giác dựa trên nguyên lý chia để trị có độ

phứctạp là .

Chứng minh: Giả sử rằng, với một số nguyên , tập đỉnh sẽ được chia thành tập con. Triển khai đẳng thức qui nạp trên (10) ta có:

(11)

Số hạng đầu tiên trong biểu thức cuối cùng thể hiện thời gian cần để xây dựng lưới tam giác ở mức thấp nhất và số hạng thứ hai thể hiện tổng thời gian của tất cả quá trình ghép các lưới tam giác thành lưới tam giác kết quả cuối cùng. Không mất tính tổng quát, giả sử rằng số lượng đỉnh trong tập là lũy thừa của , tức là . Vậy chỉ có một số đỉnh nằm trong mỗi tập ở mức thấp nhất, chúng ta có khi rất lớn. Nếu độ phức tạp quá trình xây dựng lưới tam giác Delaunay là , thì số hạng đầu tiên có bậc . Với giả định rằng quá trình ghép lưới tam giác có thể thực hiện với độ phức tạp tuyến tính thì số hạng thứ hai của biểu thức có bậc là [34] . Mà , nên ta có

cho quá trình ghép lưới tam giác và độ phức tạp của thuật toán xây dựng lưới tam giác theo nguyên lý chia để trị là .

Một phần của tài liệu Phát triển các mô hình và thuật toán biểu diễn, xử lý, khai thác dữ liệu không gian và ứng dụng giải một số bài toán GIS (Trang 49 - 53)