1. Trang chủ
  2. » Tất cả

Cấu trúc dữ liệu đa chiều

34 2 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

Tiêu đề Cấu trúc dữ liệu đa chiều
Trường học Đại học Bách Khoa Hà Nội
Chuyên ngành Cấu trúc dữ liệu
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 34
Dung lượng 788,7 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Math Workshop for Kids CẤU TRÚC DỮ LIỆU ĐA CHIỀU 1 Các phép toán trên dữ liệu đa chiều Giống như trong dữ liệu 1 chiều, dữ liệu đa chiều cũng sử dụng các phép toàn từ điển như 02 Tìm Kiếm Tìm trong tậ[.]

Trang 1

CẤU TRÚC DỮ LIỆU ĐA CHIỀU

Trang 2

1 Các phép toán trên dữ liệu đa chiều

Trang 3

Giống như trong dữ liệu 1 chiều, dữ liệu

đa chiều cũng sử dụng các phép toàn từ điển như :

02

Tìm Kiếm

Tìm trong tập dữ liệu điểm k

- chiều đã cho một dữ liệu khi biết vectơ các giá trị khoá của nó là (x1, …, xk).

Tóm lại : Dữ liệu đa chiều không có gì khác so với 1 chiều chỉ có điều khác là ở đây chúng ta cần tiến hành tìm kiếm, xen, loại dựa vào k giá trị khoá đã cho

Trang 4

Tìm kiếm phạm vi (Range Search)

Là phép toán quan trọng trong dữ liệu k chiều

Cho trước một điểm dữ liệu (x1, …, xk) và một số thực dương r, cần tìm trong tập dữ liệu điểm k - chiều đã cho tất cả các điểm dữ liệu cách (x1, …, xk) một khoảng cách không lớn hơn r

Ví dụ minh hoạ range search trong 2 chiều :

Trang 5

2 Cây K

chiều

Có thể hiểu đơn giản cây k - chiều để biểu

diễn tập dữ liệu điểm k - chiều

Trang 6

2.1 Cây 2 chiều

Mỗi dữ liệu điểm 2 - chiều gồm các giá trị toạ độ của điểm và các thông tin khác gắn với điểm này mà ta quan tâm Mỗi đỉnh của cây 2 chiều có dạng :

struct Node { infoType info ; double Xval ; double Yval ; Node* left ; Node* right ; } ;

Trong đó :

Xval: Hoành độ

Yval: Tung độ

Node*left : Pointer chỉ tới đỉnh trái

Node *right : Pointer chỉ tới đỉnh

phải

Trang 8

Cây 2 chiều tương ứng

Trang 9

Cây 2 chiều là cây nhị phân cần thoả

mãn các điều kiệnNếu P là đỉnh ở mức chẵn và Q là đỉnh bất kỳ thuộc cây con trái của đỉnh P thì Q -> Xval <

P -> Xval, còn nếu Q là đỉnh bất kỳ thuộc cây con phải của đỉnh P thì Q -> Xval ≥ P -> Xval

Nếu P là đỉnh ở mức lẻ và Q là đỉnh bất kỳ thuộc cây con trái của P thì Q -> Yval < P -> Yval, và nếu Q là đỉnh bất kỳ thuộc cây con phải của P thì Q -> Yval ≥ P -> Yval

Trang 10

Phép toán tìm kiếm

Cũng như trong cây nhị phân bắt đầu từ gốc Nếu khóa cần tìm bằng khóa của gốc thì khóa đó trên cây, nếu khóa cần tìm nhỏ hơn khoa ở gốc, ta phải tìm nó trên cây con trái, nếu khóa cần tìm lớn hơn khóa ở gốc, ta phải tìm nó trên cây con phải Nếu cây con (trái hoặc phải) là rỗng thì khóa cần tìm không có trên cây

Mã giả tìm kiếm

Trang 11

Phép toán xen

Phép xen bắt đầu giống như phép tìm kiếm; Nếu khóa của gốc khác khóa cần chèn ta tìm nó trong cây con trái hoặc phải Nếu cây con trái hoặc phải tương ứng là rỗng (không tìm thấy) thì thêm một nút và gán cho nút ấy khóa cần chèn

Code phép xen

Trang 12

Ví Dụ :

Chèn C(20,26) và D(8,12)

Vì 8<15 nên D vào bên trái A,

vì 20<24 nên C vào bên trái B

Trang 13

● TH1: Loại P không có con

Phép loại

Nếu P là đỉnh lá, việc loại P rất đơn giản, ta chỉ cần đặt con trỏ liên kết từ đỉnh cha của P tới P bằng NULL và thu hồi bộ nhớ đã cấp phát cho P

● TH2: Cây con phải Tr không rỗng

Bước 1 Tìm đỉnh Q thuộc Tr có thể thay thế cho đỉnh P Đỉnh Q cần phải phân hoạch miền dữ liệu giống như P

Bước 2 Thay thế đỉnh P bởi đỉnh Q Điều này được thực hiện bằng cách chuyển dữ liệu chứa trong đỉnh Q lên đỉnh P,

Bước 3 Loại đệ quy đỉnh Q khỏi cây con Tr

Trang 14

Ví Dụ :

Nếu muốn loại A thì cần có 1 đỉnh phân hoạch miền dữ liệu giống A như C

C có Xval > 8 và Yval < 45 (A ở mức chẵn)

Trang 15

● TH3: Cây con phải Tr rỗng và cây con trái Tr

Bước 2 Thay thế đỉnh P bởi đỉnh Q Chuyển cây con trái của P thành cây con phải của P

Bước 3 Loại đệ quy đỉnh Q khỏi cây con phải của P

Trang 16

Phép tìm kiếm phạm vi

Được biểu diễn bằng

RangeSearch (T, H){

if (RT ∩ H = φ))return ;

Trang 17

2.2 Cây k chiều

Mỗi đỉnh của cây k chiều có dạng :

struct Node { infoType info ; double Xarray[k]

; Node* left ; Node* right ; } ;

Các thuật toán tìm kiếm, xen, loại, tìm kiếm phạm vi trên cây k chiều là sự tổng quát hoá tự nhiên của các thuật toán tương ứng trên cây 2- chiều

Trang 18

Nhận xét về cây k chiều

- Có ưu điểm dễ cài đặt

- Cũng như trên cây tìm kiếm nhị phân, thời gian thực hiện các phép toán tìm kiếm, xen, loại trên cây k-chiều là O(h) với h là chiều cao của cây

- Nếu chiều cao của cây là n thì thời gian thực hiện các phép toán là O(n)

- Thời gian thực hiện phép toán tìm kiếm phạm vị trên 378 cây k-chiều với n đỉnh là O( 1/k )

Trang 19

kn1-14.3 CÂY TỨ PHÂN

Trang 20

�- Để biểu diễn các điểm 2 chiều

�- So sánh với cây 2 chiều:

I Định Nghĩa

Cây 2 chiều Cây tứ phân

- Mỗi đỉnh của cây phân hoạch

miền của nó biểu diễn thành 2 thành phần (theo trục x,y)

- Là 1 dạng của cây nhị phân

Phân hoạch miền nó đại diện

-> 4 phần theo cả 2 chiều -4 phần bao gồm: Tây Bắc, Đông Bắc, Tây Nam, Đông Nam

=> Mỗi đỉnh trong cây tứ phân

sẽ có 4 con tương ứng với một trong 4 miền đó

Trang 21

=> Cấu trúc tương tự cây 2 chiều

=> Khác biệt là phải đưa vào 4 con trỏ

Trang 22

�Cây tứ phân với tập điểm A,B,C,D,E,F:

�Chú ý:

+ Có nhiều cách biểu diễn cây tứ phân với một tập điểm

Trang 23

�1 Phép tìm kiếm, xen:

�- Tiến hành phương pháp giống cây 2 chiều:

◦ Tìm đền miền chứa điểm cần tìm:

◦ Ví dụ: Tìm điểm G(18,23) có thuộc cây tứ phân 14.4?

◦ Điểm gốc cây A(15,31) != G(18,23) => G thuộc miền SE chứa điểm C(20,26)

◦ G != C => G thuộc miền SW của C nhưng SW point = NULL

◦ => G(18,23) không có trong cây

II Ứng dụng của các phép toán trên cây tứ phân.

Trang 24

�-Phép toán xen:

◦ Ví dụ:

● Cho cây rỗng

● Add điểm C(20,26) => Chia cây thành 4 miền

● Lần lượt add các điểm B,A,D,E vào các miền lần lượt NE, NW,

SW, SE của đỉnh C

● => Cây tứ phân của đỉnh C

● Chèn F(13,9) thuộc miền SW của C trỏ tới D và sẽ nằm ở miền

SE của D

● => F sẽ là cây con SE của D theo hình vẽ dưới

Trang 26

Cây 2 chiều + tứ phân Cây tứ phân Mx

- Hình dạng cây phụ thuộc vào

điểm xen

- Hiệu quả phép toán phụ thuộc

vào độ cao của cây

-Hình dạng cây không phụ thuộc vào thứ tự điểm

⇒ được biểu diễn duy nhất 1 cây

- Các phép toán được thực hiện

dễ dàng hơn

14.4 Cây tứ phân Mx

Trang 27

�Ví dụ:

◦ Xây dựng cây Mx:

●Tập điểm thuộc miền hình vuông dạng (2^k.2^k) ô

●Điểm O(0,0) nằm ở góc dưới trái

●Điểm K(2^k,2^k) nằm ở góc trên phải

●Chọn k sao cho 0<=i,j<=2^k-1 ( với i,j là tung độ và hoành

độ max của tập điểm)

Hình 14.6: lưới 22 x 22 ô vuông (k = 2) với các điểm được quan tâm là A(1, 2), B(2, 2), C(1, 0), D(2, 3) và E(0, 1)

Trang 28

�Cấu trúc đỉnh của cây tứ phân MX giống như cấu trúc đỉnh của cây tứ phân ta đã đưa ra

�Mỗi đỉnh của cây tứ phân MX biểu diễn miền hình vuông với điểm dưới bên trái (i, j) cạnh a, ta ký hiệu hình vuông này là [(i, j), a], và sẽ phân chia hình vuông này thành bốn hình vuông con bằng nhau(14.7)

Trang 29

�Hình 14.8 Cây tứ phân MX biểu diễn các điểm A,

B, C, D, E trên lưới hình 14.6

Trang 30

�Kết luận:

◦ cây tứ phân MX biểu diễn tập điểm dữ liệu trên lưới 2k x 2k là cây tứ phân có độ cao k

◦ tất cả các đỉnh lá đều nằm trên cùng một mức (mức k) và các điểm dữ liệu chỉ chứa trong các đỉnh lá

Trang 31

�Ví dụ: Xen các điểm A(1, 2), B(2, 2), C(1, 0), D(2, 3), E(0, 1) vào 1 cây rỗng

◦ Thực hiện

●Tạo ra gốc cây biểu diễn hình vuông [(0, 0), 22 ]

●=> chia hình vuông thành 4 hình vuông con

●A nằm trong hình vuông NW

●Tạo đỉnh con NW biểu diễn hình vuông [(0, 1), 2]

●Đỉnh chia hình vuông thành bống hình vuông con cạnh là 1

●Điểm A thuộc hình vuông con NE

●Xen điểm B(2, 2) Điểm B nằm trong hình vuông con NE của hình vuông được biểu diễn bởi gốc.

●Điểm B nằm trong hình vuông con SW, và do đó con trỏ SW của đỉnh đó

sẽ trỏ tới một đỉnh lá chứa điểm B, ta nhận được cây hình 14.9b

●Thực hiện lặp lại các bước => nếu thay đổi thú tự xen của các đỉnh ta vãn thu được cây nhu hình 14.8

Phép toán tìm kiếm và phép

toán xen

Trang 33

�Tính chất cây MX:Tất cả đỉnh thuộc lá đều có cùng mức và chỉ đỉnh lá mới chứa các điểm dữ liệu.

◦ Tìm đỉnh lá chứa điểm (x, y), giả sử đó là đỉnh P

◦ Giả sử cha của đỉnh P là đỉnh Q

◦ đặt con trỏ trong đỉnh Q trỏ tới P bằng NULL và thu hội vùng nhớ của đỉnh P

◦ nếu đỉnh Q còn chứa con trỏ khác NULL thì không cần làm gì nữa, nếu bốn con trỏ trong Q đều là NULL, tức Q trở thành đỉnh lá, thì ta lại loại đỉnh Q

◦ Lặp lại quá trình trên, trường hợp xấu nhất quá trình trên dẫn

ta tới xem xét gốc cây có là đỉnh lá hay không

Phép toán loại

Trang 34

�Các bước thực hiện:

Phép toán tìm kiếm phạm vi

Ngày đăng: 26/02/2023, 19:37

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w