Biểu đồ lớp

Một phần của tài liệu Phương pháp tổ chức dữ liệu cho các đối tượng chuyển động hỗ trợ hệ thống VNtracking (Trang 65 - 69)

Bởi vì TPR-tree là mở rộng của R*-tree, do đó kiến trúc của chúng thiết kế tương tự như của R-tree. Như thể hiện trong bảng 3.6, chúng ta có 3 lớp chính: Rtree (tương ứng với cây), RTNode (tương ứng với nút cây),, Phần tử

(tương ứng với các phần tử của nút). Bảng 3.7 minh họa nhiệm vụ chi tiết của mỗi lớp. Để xử lý truy nhập file, lớp BlockFile chứa tất cả các dữ liệu hoạt động xử lý. Mặc dù thử nghiệm của tôi không sử dụng bộ nhớ cache để test, nhưng vẫn thiết kế lớp Cache, trong đó Cacheable là các khối bộ nhớ. Bộ nhớ đệm (cache) giúp tăng hiệu suất truy vấn bằng cách lưu trữ các khối đĩa thường được truy nhập trong bộ nhớ chính. Bên cạnh các lớp chính, các lớp còn lại hỗ trợ hoạt động của R-tree và TPR-tree. Lớp linList, SortedLinList

được sử dụng cho hoạt động xóa và chèn trong việc lưu trữ các phần tử hay các nút bị xóa tạm thời (các phần tử hay các nút này sau đó được chèn vào cây). Các đối tượng Struc được sử dụng như các thành phần dữ liệu của các hoạt động.

Bảng 3.6. Chức năng của các lớp

Class name Description

RTree Lớp chính cho các chỉ mục đối tượng, nó chứa tất cả các chức năng thao tác và truy vấn cho các chỉ mục. RTNode Lớp mức thấp, trong đó xác định một giao diện node-

action để cho phép điều chỉnh thiết kế của nút.

Phần tử Lớp định nghĩa phần tử của đối tượng cũng như thao tác phần tử.

Cache, Cacheable Lớp hỗ trợ cây sử dụng bộ nhớ cache.

CachedBlockfile hay không với bộ nhớ cache. LinList,

SortedLinlist

Lớp danh sách liên kết kép hỗ trợ hoạt động lưu trữ tạm thời trong việc xóa và chèn lại các phần tử.

Linkable, Slink Cấu trúc danh dách liên kết kép để lưu trữ danh sách tạm thời.

Movingobject Một cấu trúc mảng hỗ trợ tất cả các hoạt động của đối tượng chuyển động như chèn, xóa.

TPRsortMBR Một cấu trúc hỗ trợ thuật toán chèn lại để lưu trữ danh sách theo khoảng cách từ tâm của MBR.

a. Class Rtree: là một lớp cơ bản của cây, nó chứa tất cả các chức năng thao

tác và truy vấn của cây. Sử dụng để xây dựng một cây TPR-tree từ một file giả lập được tạo. TPR-tree được xây dựng từ các tập dữ liệu:

dsfname: tên file cần tạo tfname: tên file được tạo b_len: độ dài của block c: bộ nhớ đệm

T: cây được xây dựng trong khoảng [0, T] dimension: chiều

qmbrlen: độ dài của MBR qvbr: độ dài của VBR qst: mốc thời gian bắt đầu qed: mốc thời gian kết thúc

Trong Class Rtree xây dựng một số chức năng chính như:

- Insert (Entry* d): thực hiện chèn một phần tử vào cây TPR-tree. - Load_root: tạo một node root.

- Moving_sect (Entry *_e1, Entry *_e2, float _st, float _ed): phát hiện 2 vùng di chuyển giao nhau.

- Choose_path (Entry *_newe): tìm nút lá khi gia tăng diện tích MBR.

- Check_path (Entry *_newe, float _minpen): kiểm tra đường dẫn nhận được từ choose_path đã thực sự tối ưu chưa.

- Delete_entry (Entry *_olde): xoá phần tử từ cây hiện tại - Update (char *_dsfname, int _update_time): cập nhật lại cây.

b. Class RTnode: dùng để tạo ra nút trên đĩa, tái tạo nút trên đĩa. Trong Class

Rtree xây dựng một số chức năng chính như: - RTNode (RTree *rt): để tạo ra nút trên đĩa

- RTNode (RTree *rt, int _block): tái tạo nút trên đĩa.

- Choose_subtree (Entry *_newe): thực hiện chọn cây con tốt nhất để chèn các phần tử.

- Enter (Entry *d): nhập các phần tử vào nút.

- FindLeaf (Entry *_q): thực hiện tìm các nút lá để chèn các phần tử.

- Get_mbr(): thực hiện khởi tạo mảng và trả lại mbr của nút ở thời gian hiện tại của cây TPR.

- Get_vmbr(): Chức thực hiện khởi tạo mảng và trả lại vbr của nút ở thời gian hiện tại của cây TPR.

- Insert (Entry *d, RTNode **_sn): chèn các phần tử vào nút.

- RangeQuery (Entry *_q, float _st, float _ed, int& _rsltcnt): thực hiện đưa ra kết quả của một truy vấn.

- Get_subtree_num_entries(): đưa ra số phần tử của cây con. - Model_split (RTNode *_new_nd): chức năng chia nút.

- Init_new_entries (int _size): chức năng khởi đầu cho mộ mảng các phần tử - Update_parent_entry (int _pos): cập nhật MBR, VBR tới nút con.

- Past_mbr (float *_mbr, float *_vbr, float _time, int _dim): chức năng điều chỉnh mbr theo vbr ở thời điểm t0.

- Future_mbr (float *_mbr, float *_vbr, float _time, int _dim): chức năng tạo mbr ở khoảng thời gian tương lai.

- Delete_entry (Entry *_olde): xóa phần tử ở cây hiện tại

c. Class Entry: Lớp định nghĩa phần tử của đối tượng cũng như thao tác của

các phần tử. Lớp có một số chức năng sau:

- Enlarge (Entry *_e1, Entry *_e2): chức năng lấp đầy mbr và vbr của phần tử hiện tại.

- Gen_Linkable(): chức năng tạo ra một cấu trúc linkable từ các phần tử. Các đối tượng linkable được sử dụng trong linklist.

Một phần của tài liệu Phương pháp tổ chức dữ liệu cho các đối tượng chuyển động hỗ trợ hệ thống VNtracking (Trang 65 - 69)

Tải bản đầy đủ (PDF)

(80 trang)