1. Trang chủ
  2. » Luận Văn - Báo Cáo

(LUẬN VĂN THẠC SĨ) Một số vấn đề về lưu trữ và chỉ mục trong cơ sở dữ liệu không gian Luận văn ThS Công nghệ thông tin 60 48 05

70 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 70
Dung lượng 1,7 MB

Cấu trúc

  • Chương 1. (8)
    • 1.1. Tổng quan về hệ thống thông tin địa lý (GIS) (8)
      • 1.1.1. Khái niệm (8)
      • 1.1.2. Các thành phần của hệ thống thông tin địa lý (10)
        • 1.1.2.1. Thiết bị (Hardware) (10)
        • 1.1.2.2. Phần mềm ( Software) (11)
        • 1.1.2.3. Con người (Person) (12)
        • 1.1.2.4. Số liệu, dữ liệu địa lý (Geographic data) (12)
        • 1.1.2.5. Chính sách và quản lý (Policy and management) (12)
      • 1.1.3. Các chức năng của hệ thống thông tin địa lý (12)
      • 1.1.4. Ứng dụng của hệ thống thông tin địa lý (14)
    • 1.2. Cơ sở dữ liệu không gian (14)
      • 1.2.1. Tổ chức các mẩu tin trong tệp (15)
      • 1.2.2. Chỉ mục không gian (Spatial indexing ) (18)
      • 1.2.3. Phương pháp quản trị CSDL phi không gian (20)
      • 1.2.4. Phương pháp quản trị CSDL không gian (22)
        • 1.2.4.1. Mô hình Vector (23)
        • 1.2.4.2. Mô hình Raster (24)
        • 1.2.4.3. Mô hình đồ thị (Topology) (26)
        • 1.2.4.4. Sử dụng Mô hình CSDL quan hệ (26)
      • 1.2.5. Truy vấn không gian (28)
      • 1.2.6. Phân cụm trong CSDL không gian (29)
  • Chương 2. (31)
    • 2.1. Mở đầu (31)
    • 2.2. Cây k-d (k-d Trees) (32)
      • 2.2.1. Cấu trúc nút (32)
      • 2.2.2. Chèn và tìm kiếm trong cây 2-d (33)
      • 2.2.3. Huỷ bỏ trong cây 2-d (36)
      • 2.2.4 Truy vấn khoảng trong cây 2-d (37)
      • 2.2.5. Cây k-d với k  2 (39)
    • 2.3. Cây tứ phân điểm (Point Quadtrees) (40)
      • 2.3.1. Chèn và tìm kiếm trong cây tứ phân điểm (40)
      • 2.3.2. Thao tác xoá trên cây tứ phân điểm (42)
      • 2.3.3. Truy vấn khoảng trong cây tứ phân điểm (44)
    • 2.5. Cây R (R-Trees) (48)
      • 2.5.1. Chèn và tìm kiếm trong R-Trees (49)
      • 2.5.2. Xoá trong cây R-Trees (51)
    • 2.6. So sánh các cấu trúc dữ liệu (52)
  • Chương 3. (54)
    • 3.1. Bài toán (54)
      • 3.1.1. Phát biểu bài toán (54)
      • 3.1.2. Cách giải quyết (54)
    • 3.2. Công cụ xây dựng chương trình (55)
    • 3.3. Dữ liệu xây dựng trong chương trình (55)
    • 3.4. Thiết kế đặc tả chức năng (56)
      • 3.4.1. Chuyển đổi dữ liệu từ cấu trúc tuyến tính sang cấu trúc cây (56)
      • 3.4.2. Lưu trữ sang cấu trúc cây (56)
      • 3.4.3. Hiển thị bản đồ (56)
      • 3.4.4. Truy vấn trên bản đồ (56)
    • 3.5. Cài đặt và thử nghiệm (57)
      • 3.5.1. Cài đặt chương trình (57)
      • 3.5.2. Kết quả thử nghiệm (57)
    • 3.6. Nhận xét kết quả đạt được (62)
  • KẾT LUẬN (63)
  • TÀI LIỆU THAM KHẢO (13)

Nội dung

Tổng quan về hệ thống thông tin địa lý (GIS)

Hệ thống thông tin địa lý (GIS) là một lĩnh vực công nghệ thông tin, ra đời từ những năm 1960 và đã có sự phát triển mạnh mẽ trong thời gian gần đây.

GIS được áp dụng để đồng bộ hóa các lớp thông tin không gian (bản đồ) với thông tin thuộc tính, hỗ trợ nghiên cứu, quy hoạch và quản lý các hoạt động theo lãnh thổ.

Ngày nay, GIS đã trở thành công cụ quan trọng trong việc hỗ trợ quyết định cho nhiều hoạt động kinh tế-xã hội, an ninh và quốc phòng, cũng như ứng phó với thảm họa thiên tai Công nghệ này giúp các cơ quan chính phủ, nhà quản lý, doanh nghiệp và cá nhân đánh giá hiện trạng của các quá trình và thực thể tự nhiên, kinh tế-xã hội thông qua việc thu thập, quản lý, truy vấn, phân tích và tích hợp thông tin, tất cả được gắn với một nền bản đồ số nhất quán dựa trên tọa độ dữ liệu bản đồ đầu vào.

Hệ thống thông tin địa lý (GIS) là một công cụ kết hợp giữa con người và công nghệ, bao gồm máy tính và thiết bị ngoại vi, để lưu trữ, xử lý, phân tích và hiển thị thông tin địa lý GIS phục vụ cho các mục đích nghiên cứu và quản lý, giúp cải thiện khả năng ra quyết định dựa trên dữ liệu không gian.

GIS là một công cụ quan trọng giúp thu thập, lưu trữ, biến đổi và hiển thị thông tin không gian, phục vụ cho các mục đích cụ thể.

GIS, dưới góc độ phần mềm, xử lý thông tin không gian và phi không gian, đồng thời thiết lập mối quan hệ không gian giữa các đối tượng Các chức năng phân tích không gian đã góp phần tạo nên đặc trưng riêng biệt cho GIS.

GIS là công nghệ xử lý dữ liệu tọa độ, giúp chuyển đổi thông tin thành công cụ hỗ trợ quyết định cho các nhà quản lý trong lĩnh vực quản lý nhà nước.

Xét dưới góc độ hệ thống, GIS là hệ thống gồm các hợp phần: Phần cứng, Phần mềm, Cơ sở dữ liệu và Cơ sở tri thức chuyên gia

TÇng §-êng quèc lé hè

Thuỷ lợi Cây trồng KhÝ hËu

Giám sát Lập bản đồ Đo đạc t3 t2 t1

Hệ thông tin địa lý

Hệ thống GIS lưu trữ thông tin thế giới thực dưới dạng các tầng bản đồ chuyên đề, cho phép liên kết địa lý giữa chúng Mỗi nhóm người sử dụng, như Sở giao thông công chính, Sở Nhà đất và Sở Thương mại, sẽ chú trọng đến các loại thông tin khác nhau, như hệ thống đường phố, khu dân cư và phân bố khách hàng Việc tách bản đồ thành các tầng không chỉ đơn giản mà còn linh hoạt và hiệu quả, giúp giải quyết nhiều vấn đề thực tiễn, từ quản lý giao thông đến lập kế hoạch và mô hình hóa lưu thông Ngoài ra, quá trình mã hóa địa lý (geocoding) cho phép liên kết dữ liệu bên ngoài với dữ liệu bản đồ, như ánh xạ thông tin bán hàng theo mã bưu điện hoặc chỉ ra địa chỉ khách hàng trên bản đồ.

Hình 1.2 Các hoạt động chính của GIS

1.1.2 Các thành phần của hệ thống thông tin địa lý

Công nghệ GIS gồm 5 hợp phần cơ bản là:

- Chính sách và cách thức quản lý (Policy and Management)

Hình 1.3 Các hợp phần thiết yếu cho công nghệ GIS

The essential components of a digital workspace include computers, plotters, printers, digitizers, scanners, and various data storage devices such as floppy diskettes, optical cartridges, and CD-ROMs.

Hình 1.4 Các thành phần thiết bị cơ bản của GIS

Phần mềm là một tập hợp các câu lệnh và chỉ thị để điều khiển phần cứng máy tính thực hiện nhiệm vụ cụ thể Phần mềm hệ thống thông tin địa lý (GIS) có thể là một phần mềm độc lập hoặc một tổ hợp nhiều phần mềm Để đáp ứng nhu cầu trong kỹ thuật GIS, phần mềm cần phải bao gồm các tính năng cơ bản như khả năng xử lý dữ liệu không gian, phân tích địa lý và trực quan hóa thông tin.

Nhập và kiểm tra dữ liệu là quá trình bao gồm tất cả các khía cạnh liên quan đến việc biến đổi dữ liệu từ dạng bản đồ sang dạng số tương thích trong lĩnh vực quan sát.

Lưu trữ và quản lý cơ sở dữ liệu là quá trình kết nối thông tin vị trí (topology) và thông tin thuộc tính (attributes) của các đối tượng địa lý như điểm và đường trên bề mặt trái đất Hai loại thông tin này được tổ chức và liên kết thông qua các thao tác trên máy tính, nhằm giúp người sử dụng hệ thống dễ dàng hiểu và truy cập.

Xuất dữ liệu là quá trình trình bày và báo cáo kết quả phân tích cho người sử dụng, bao gồm các hình thức như bản đồ (MAP), bảng biểu (TABLE), biểu đồ và lưu đồ (FIGURE) Những dữ liệu này có thể được hiển thị trên máy tính, máy in hoặc máy vẽ, giúp người dùng dễ dàng tiếp cận và hiểu rõ thông tin.

- Biến đổi dữ liệu (Data transformation): biến đổi dữ liệu gồm hai lớp điều hành nhằm mục đích khắc phục lỗi từ dữ liệu và cập nhật chúng

Giao tiếp với người dùng là yếu tố quan trọng nhất trong bất kỳ hệ thống thông tin nào Các giao diện người dùng được thiết kế dựa trên mục đích cụ thể của ứng dụng, nhằm tối ưu hóa trải nghiệm người dùng và hiệu quả sử dụng.

Các phần mềm GIS tiêu chuẩn và phổ biến hiện nay tại khu vực Châu Á bao gồm ARC/INFO, MAPINFOR, IL WIS, WINGIS, SPANS, và IDRISIW Hiện tại, có nhiều phần mềm máy tính chuyên biệt cho GIS, phục vụ đa dạng nhu cầu trong lĩnh vực này.

+ Phần mềm dùng cho lưu trữ, xử lý số liệu thông tin địa lý: ACR/INFO, SPAN, ERDAS-Imagine, IL WIS, MGE/MICROSTATION, IDRISIW

+ Phần mềm dùng cho lưu trữ, xử lý và quản lý các thông tin địa lý: ER-MAPPER, ATLASGIS, ARCVIEW, MAPINFO

Cơ sở dữ liệu không gian

Con người xây dựng mô hình về hiện thực, phản ánh các khía cạnh chọn lọc từ thế giới xung quanh Mô hình này cung cấp một cái nhìn cụ thể và toàn diện về hệ thống thông qua quá trình trừu tượng hóa, giúp đơn giản hóa thông tin một cách thông minh Cơ sở dữ liệu không gian được hình thành từ các mô hình này, mô tả trạng thái và bản chất của hiện thực.

Hình 1.6 Minh hoạ mô hình hoá

* Định nghĩa CSDL không gian:

Cơ sở dữ liệu không gian là tập hợp dữ liệu tham chiếu không gian, có vai trò như mô hình của hiện thực:

+ CSDL là mô hình hiện thực theo nghĩa nó biểu diễn tập lựa chọn hay xấp xỉ các hiện tượng

+ Các hiện tượng lựa chọn này được xem là quan trọng, đủ để biểu diễn đặc trưng dưới dạng số cho hiện tại, quá khứ và tương lai

1.2.1 Tổ chức các mẩu tin trong tệp

Dữ liệu trên đĩa được tổ chức thành ba cấp độ: trường (field), mẩu tin (record) và tệp (file) Trường thể hiện các đặc tính hoặc thuộc tính của một quan hệ hoặc thực thể Mẩu tin đại diện cho một hàng (row) trong bảng quan hệ, bao gồm tập hợp các trường cho các thuộc tính trong mô hình quan hệ Cuối cùng, tệp là tập hợp các mẩu tin, có thể mô tả một quan hệ hoặc là sự kết hợp của những quan hệ liên quan.

Hình 1.7 Ánh xạ các mẩu tin từ Country, City và River vào các trang đĩa

Để biểu diễn các mẩu tin trong một cấu trúc tệp, cần hiểu rằng một thể hiện của một quan hệ là tập hợp các mẩu tin Vấn đề đặt ra là cách tổ chức chúng trong tệp một cách hiệu quả Có nhiều phương pháp tổ chức khác nhau để quản lý các mẩu tin này.

Tổ chức tệp đống (Heap File Organization) cho phép lưu trữ các mẩu tin ở bất kỳ vị trí nào trong tệp, miễn là có không gian trống, mà không cần theo thứ tự cụ thể nào Điều này có nghĩa là các mẩu tin trong tệp Heap, như bảng River, không có trật tự riêng biệt, dẫn đến việc tìm kiếm một mẩu tin theo khóa (ví dụ: name) trở nên khó khăn, vì phải quét qua toàn bộ tệp để tìm kiếm Trong trường hợp xấu nhất, tất cả các mẩu tin và trang đĩa chứa dữ liệu cần được kiểm tra Tuy nhiên, phương pháp này lại rất hiệu quả cho việc chèn mẩu tin mới, vì chỉ cần thêm vào cuối tệp.

Sequential file organization involves storing records in a sequential manner based on the values of their search keys This method ensures that data is easily accessible and efficiently organized, allowing for straightforward retrieval and management of information.

Tổ chức tệp tuần tự được thiết kế để xử lý hiệu quả các mẩu tin theo thứ tự khoá tìm kiếm, cho phép tìm lại nhanh chóng thông qua việc "xích" các mẩu tin bằng con trỏ Mỗi con trỏ trong mẩu tin sẽ trỏ tới mẩu tin kế tiếp theo thứ tự khoá tìm kiếm, đồng thời, để tối ưu hoá số khối truy xuất, các mẩu tin được lưu trữ vật lý theo thứ tự khoá tìm kiếm.

Tổ chức tệp tuần tự cho phép đọc các mẩu tin theo thứ tự đã được sắp xếp, điều này rất hữu ích cho việc trình bày thông tin và hỗ trợ hiệu quả cho các thuật toán xử lý truy vấn.

Tệp tin được tổ chức theo thứ tự bằng cách sắp xếp các mẩu tin dựa trên trường khóa đã chỉ định Ví dụ, hình 1.7 minh họa tệp tin sắp xếp các mẩu tin trong bảng City theo trường khóa là tên thành phố.

Hình 1.8 Tổ chức tệp có thứ tự cho bảng City

Tổ chức tệp băm (Hashed File Organization) sử dụng một hàm băm tính toán trên thuộc tính của mẩu tin để xác định vị trí của mẩu tin trong khối tệp Phương pháp này có mối liên hệ chặt chẽ với cấu trúc chỉ mục, giúp tối ưu hóa việc truy xuất dữ liệu.

Tệp băm tổ chức các mẩu tin thành những thùng (buckets) thông qua hàm băm (hashed function), ánh xạ giá trị trên một trường khóa được chọn, chẳng hạn như tên thành phố Hình 1.8 minh họa một hàm băm với 4 thùng, mỗi thùng lưu trữ trên một trang đĩa khác nhau Hàm băm trả về giá trị 1 cho tên có độ dài nhỏ hơn hoặc bằng 6 ký tự, 2 cho độ dài 7 hoặc 8 ký tự, 3 cho độ dài 9 hoặc 10 ký tự, và 4 cho tên có độ dài lớn hơn 11 ký tự, từ đó ánh xạ tên thành phố vào các thùng từ 1 đến 4.

Hình 1.9 Tổ chức hàm băm cho bảng City

Tổ chức tệp cụm (Clustering File Organization) cho phép lưu trữ các mẩu tin từ nhiều quan hệ khác nhau trong cùng một tệp, giúp tối ưu hóa hiệu suất truy vấn Khi các mẩu tin có mối liên hệ được lưu trữ trong cùng một khối, mỗi hoạt động I/O sẽ trả về dữ liệu liên quan từ tất cả các quan hệ, mang lại lợi ích lớn cho việc truy xuất thông tin Ví dụ, khi thực hiện một truy vấn SQL, việc tổ chức này giúp giảm thiểu thời gian truy cập và tăng cường hiệu quả xử lý dữ liệu.

SELECT Account_Number,Customer_Number, Customer_Street, ustomer_City

FROM Depositor, Customer WHERE Depositor.Customer_Name = Customer.Customer_name;

Truy vấn này tính một phép nối của các quan hệ Depositor và Customer

Hệ thống cần tìm bộ Customer có giá trị Customer_Name tương ứng với mỗi bộ Depositor Việc tìm kiếm lý tưởng nên sử dụng chỉ mục để tối ưu hóa quá trình này Tuy nhiên, điều quan trọng là cách truyền dữ liệu từ đĩa vào bộ nhớ Trong trường hợp xấu nhất, mỗi mẩu tin nằm trong các khối khác nhau, dẫn đến việc phải đọc từng khối cho mỗi mẩu tin theo yêu cầu của truy vấn Chúng tôi sẽ trình bày một cấu trúc tệp được thiết kế để thực hiện hiệu quả các truy vấn liên quan đến Depositor.Customer.

Cấu trúc lưu trữ Depositor cho mỗi Customer_Name gần bộ Customer cùng tên cho phép xử lý hiệu quả phép nối giữa hai quan hệ Khi một bộ Customer được truy cập, toàn bộ khối chứa bộ này sẽ được đọc vào bộ nhớ chính, giúp tối ưu hóa việc truy xuất dữ liệu Các bộ Depositor tương ứng được lưu trữ gần kề, đảm bảo rằng khi truy vấn được thực hiện, dữ liệu cần thiết từ cả hai quan hệ có thể được lấy ra một cách nhanh chóng Nếu một Customer có nhiều Account mà không đủ lấp đầy một khối, các mẩu tin Depositor sẽ được lưu trong khối kế tiếp Cấu trúc gom cụm (clustering) này cho phép đọc nhiều mẩu tin trong một lần truy xuất khối, từ đó nâng cao hiệu suất xử lý truy vấn.

Cấu trúc tệp gom cụm không hiệu quả bằng việc tổ chức lưu mỗi quan hệ trong một tệp riêng, đặc biệt đối với một số truy vấn nhất định.

Việc xác định thời điểm gom cụm dữ liệu phụ thuộc vào loại truy vấn mà nhà thiết kế cơ sở dữ liệu dự đoán sẽ xảy ra thường xuyên nhất Sử dụng gom cụm một cách thận trọng có thể mang lại hiệu suất xử lý truy vấn tốt hơn đáng kể.

1.2.2 Chỉ mục không gian (Spatial indexing )

Mở đầu

Dữ liệu GIS cung cấp thông tin địa lý về các khu vực trên trái đất, với bản đồ là hình thức cơ bản nhất để lưu trữ thông tin này Bản đồ, dưới dạng ảnh hai chiều, hiển thị các đặc trưng nổi bật của vùng, trong đó một số điểm được xác định là đối tượng quan tâm Những điểm này có thể được lưu trữ trong nhiều cấu trúc dữ liệu khác nhau.

Hình 2.1 Bản đồ mẫu để biểu diễn bởi các cấu trúc cây

) 0 ( N level P level nếu N là gốc của cây nếu cha của N là P quan tâm trên nó Các điểm được đánh dấu bởi địa danh (thí dụ như Banja Luka,

Brcko) Thay vì điểm quan tâm, ứng dụng có thể quan tâm đến vùng bản đồ

Cấu trúc dữ liệu cần phải có khả năng lưu trữ thông tin về các vùng, như thể hiện trong hình 2.1b), nơi bản đồ hiển thị một số vùng quan tâm.

Chương này chỉ ra cách biểu diễn dữ liệu bản đồ trên hình 2.1 bằng các loại cây k-d, cây tứ phân và cây R.

Cây k-d (k-d Trees)

Cây k-d được thiết kế để lưu trữ dữ liệu điểm k-chiều, như minh họa trong hình 2.1a, và không thích hợp cho việc lưu trữ dữ liệu vùng Cụ thể, cây 2-d lưu trữ dữ liệu điểm 2-chiều, trong khi cây 3-d phục vụ cho dữ liệu điểm 3-chiều Ví dụ này tập trung vào dữ liệu điểm 2-d và sau đó mở rộng khái niệm sang dữ liệu điểm 3-d.

Trong cây 2-d, mỗi nút có cấu trúc bản ghi nhất định với kiểu như sau: nodetype = record INFO: infotype;

Trường INFO có thể được định nghĩa theo nhiều kiểu khác nhau tùy thuộc vào ứng dụng cụ thể Ví dụ, nó có thể là một trường xâu ký tự dùng để mô tả địa danh hoặc là một bản ghi với các trường như name:string và population:integer.

Trường XVAL, YVAL biểu thị tọa độ điểm kết hợp với nút

Các trường LLINK và RLINK trỏ đến hai cành

Giả sử T trỏ đến gốc của cây 2-d Nếu N là nút trong cây, thì mức của N được xác định qui nạp như sau:

Cây 2-d là cây nhị phân bất kỳ nếu thoả mãn điều kiện sau:

1 Nếu N là nút trong cây và level(N) là chẵn thì mỗi nút M trong cành rẽ nhánh từ N.LLINK có tính chất M.XVAL < N.XVAL, mỗi nút P trong cành rẽ nhánh từ N.RLINK có tính chất P.XVAL  N.XVAL

2 Nếu N là nút trong cây và level(N) là lẻ thì mỗi nút M trong cành rẽ nhánh từ N.LLINK có tính chất M.YVAL < N.YVAL, mỗi nút P trong cành rẽ nhánh từ N.RLINK có tính chất P.YVAL  N.YVAL

2.2.2 Chèn và tìm kiếm trong cây 2-d

Việc chèn nút N vào cây do T trỏ tới được phát biểu phi hình thức như sau:

Kiểm tra sự thống nhất giữa N và T về các trường XVAL và YVAL Nếu thống nhất, ghi đè nút T và kết thúc Nếu không, rẽ trái nếu N.XVAL < T.XVAL, hoặc rẽ phải nếu ngược lại Giả sử P là nút con đang khảo sát; nếu N và P thống nhất các trường XVAL và YVAL, ghi đè P và kết thúc Nếu không, rẽ trái khi N.YVAL < P.YVAL, hoặc rẽ phải nếu ngược lại Lặp lại quy trình này, rẽ nhánh theo XVAL ở mức chẵn và theo YVAL ở mức lẻ trong cây.

Hình 2.2 Lưới bản đồ với kích thước 64x64

Hình 2.2 minh họa lưới bản đồ với gốc tọa độ (0, 0) nằm ở góc dưới bên trái Mỗi tế bào trong lưới có kích thước 8, dẫn đến kích thước tổng thể của bản đồ là 64x64 Trong trường hợp này, chúng ta cần xây dựng cây 2-d, trong đó trường INFO chỉ chứa tên địa điểm.

Danh sách các địa điểm như sau đây:

Khởi động cây là rỗng Hình 2.3 là trình tự chèn vào cây Các cây này được xây dựng như sau đây:

Hình 2.3 Trình tự chèn vào cây 2-d

1 Khi chèn Banja Luka vào cây có một nút với INFOnja Luka, XVAL, YVALE Nút này biểu diễn toàn bộ vùng bản đồ Tổng quát, mỗi nút N biểu diễn vùng Reg(N) Các trường XVAL và YVAL của nút N xác định điểm trong Reg(N) Điểm (N.XVAL, N.YVAL) chia Reg(N) thành 2 phần bằng

Mức 3 cách vẽ đường thẳng đứng qua điểm trong vùng (nếu nút ở mức chẵn) hay vẽ đường nằm ngang qua điểm trong vùng (nếu nút ở mức lẻ)

2 Khi chèn Derventa, phải so sánh các trường XVAL của nó với trường này của Banja Luka Chúng ta rẽ phải vì tọa độ x (40) của Derventa lớn hơn của

Banja Luka chia đôi vùng thành hai phần bằng đường thẳng đứng, với mọi điểm bên phải có tọa độ x lớn hơn hoặc bằng 19, trong khi bên trái có tọa độ nhỏ hơn 19 Derventa thể hiện vùng bên phải của đường thẳng đứng này.

3 Khi chèn Teslic, trước hết ta so sánh trường XVAL của Teslic và Banja Luka Trường này của Teslic là 38, của Banja Luka là 19, vậy ta phải rẽ phải

So sánh giá trị YVAL của Testic và Derventa cho thấy YVAL của Testic là 38, trong khi của Derventa là 50, dẫn đến việc phải rẽ trái Kết quả được thể hiện trong hình 2.3c Derventa chia đôi vùng bằng đường nằm ngang b trong hình 2.4 Vùng phía trên đường thẳng có tọa độ x lớn hơn hoặc bằng 19 và tọa độ y lớn hơn hoặc bằng 50, trong khi vùng phía dưới có tọa độ x nhỏ hơn 19 và tọa độ y nhỏ hơn 50.

Hình 2.4 Mô tả phép chèn cây k-d trên bản đồ

4 Khi chèn Tuzla, trước hết phải so sánh XVAL của Tuzla và Banja Luka

Giá trị XVAL của Tuzla là 54, trong khi Banja Luka chỉ có 19, dẫn đến việc rẽ phải Tiếp theo, khi so sánh YVAL của Tuzla (40) với Derventa (50), cần phải rẽ trái Cuối cùng, so sánh XVAL của Tuzla (54) với Teslic (38) cho thấy cần rẽ phải (hình 2.3d).

5 Cuối cùng, khi chèn thành phố Sinj, ta phải so sánh XVAL của Sinj và Banja Luka Ta rẽ trái vì tọa độ x của Sinjnhor hơn của Banja Luka Kết quả được mô tả trên hình 2.3d và 2.3e

Trong trường hợp tồi nhất thì độ cao của cây 2-d với k nút là (k-1), việc tìm kiếm nút cho trước sẽ mất O(k) lần

Công việc phức tạp nhất trong cây 2 chiều là huỷ bỏ điểm có tọa độ (x, y) Đầu tiên, cần xác định nút N trong cây T sao cho N.XVAL=x và N.YVAL=y Nếu N là nút lá, tiến hành huỷ bỏ nút đó.

Để xóa nút N trong cây, chỉ cần thiết lập NIL cho các liên kết LLINK và RLINK trong nút cha N, sau đó giải phóng vùng nhớ N Tuy nhiên, nếu N là một nút trong cây, quá trình này trở nên phức tạp hơn, vì cần xem xét cây con có gốc tại N.LLINK (gọi là T l) hoặc N.RLINK.

Để thực hiện thuật toán hủy bỏ nút N trong cây, chúng ta cần tìm nút R từ Tl hoặc Tr có thể thay thế nút N và có khả năng được loại bỏ lần lượt khỏi cây con.

Bước 1: Tìm nút ứng viên thay thế R trong T i với i{l, r}

Bước 2: Thay thế tất cả các trường không có liên kết của N bằng các trường tương ứng của R Bước 3: Loại bỏ đệ quy R khỏi T i Đệ quy này có điểm dừng vì Ti với i thuộc {l, r} có độ cao nhỏ hơn cây T.

Cây tứ phân điểm (Point Quadtrees)

Cây tứ phân điểm là một cấu trúc dữ liệu tương tự như cây 2-d, nhưng nó phân chia một vùng không gian hai chiều thành bốn phần Khác với cây 2-d, nơi nút N chỉ chia vùng thành hai phần bằng một đường thẳng, cây tứ phân điểm sử dụng cả đường thẳng đứng và nằm ngang đi qua điểm (N.XVAL, N.YVAL) để tạo ra bốn góc: NW (Tây Bắc), SW (Tây Nam), NE (Đông Bắc) và SE (Đông Nam) Mỗi góc tương ứng với một con của nút N, cho phép các nút trong cây bốn nhánh xác định bốn cành khác nhau Để thực hiện các thao tác trên cây tứ phân, chúng ta định nghĩa cấu trúc nút đơn giản với thông tin như sau: qtnodetype = record INFO : infotype;

NW, SW, NE, SE : qtnodetype; end

2.3.1 Chèn và tìm kiếm trong cây tứ phân điểm

Bây giờ chúng ta hãy khảo sát tập 5 điểm (Banja Luka, Derventa, Teslic,

Cây 2-d tại Tuzla và Sinj sẽ được trình bày thông qua một cây tứ phân Hình 2.6 minh họa quá trình xây dựng cây tứ phân, với các bước được mô tả chi tiết.

1 Khởi đầu cây tứ phân là rỗng, việc chèn Banja Luka tạo ra nút gốc của cây được gán nhãn với cặp (19, 45)

2 Việc chèn Derventa tạo ra vùng miêu tả bởi Banja Luka được phân thành 4 phần thông qua việc vẽ một đường nằm ngang và một đường thẳng đứng qua (19, 45) Derventa, ở vị trí (40, 50), nằm trong góc phần tư NE, do vậy Banja Luka có con NE là Derventa

Hình 2.5 Bản đồ mẫu để xây dựng cây tứ phân điểm

Hình 2.6 Tiến trình chèn vào cây tứ phân điểm

3 Việc chèn Teslic được tiến hành như sau: Teslic nằm theo hướng Đông Nam của Banja Luka Do vùng này hiện tại chưa có điểm nào nên chúng ta đặt Teslic làm con SE của Banja Luka

4 Việc chèn Tuzla phức tạp hơn Chúng ta thấy rằng Tuzla nằm ở SE của Banja Luka Do vậy chúng ta chuyển đến nhánh SE của Banja Luka Kết quả là góc phần tư SE được chia bởi vẽ đường nằm ngang và đường thẳng đứng qua

Teslic điểm Teslic Với kết quả bốn phần được tạo ra, Tuzla ở góc SE và như vậy Tuzla trở thành nút con SE của Teslic

5 Cuối cùng, việc chèn Sinj là không quá phức tạp bởi vì nó nằm ở SW của Banja Luka Do hiện tại con trỏ này là rỗng nên ta đặt nút này chứa thông tin liên quan đến Sinj

Chiều cao tối đa của một cây tứ phân chứa n nút là n-1, cho thấy thời gian tìm kiếm và chèn trong cây này luôn nhỏ hơn số lượng nút.

2.3.2 Thao tác xoá trên cây tứ phân điểm

Khi xoá nút N từ cây tứ phân có gốc T, quy trình tương tự như việc xử lý cây 2-d để tìm nút thay thế cho các nút không phải lá Đối với các nút lá, việc xoá thực hiện đơn giản: chúng ta chỉ cần thay đổi trường liên kết của nút cha N để trỏ tới NIL và giải phóng không gian lưu trữ.

Việc xoá trong cây tứ phân rất phức tạp, như thể hiện trong hình 2.7 Mỗi nút trong cây tứ phân đại diện cho một vùng, được định nghĩa khác so với cây 2-d Trong cây 2-d, chỉ cần kết hợp 4 ràng buộc xc1, x

Ngày đăng: 17/12/2023, 01:53