Cấu trúc dữ liệu
Chia sẻ bởi Nguyễn Ngọc Phú |
Ngày 29/04/2019 |
90
Chia sẻ tài liệu: cấu trúc dữ liệu thuộc Bài giảng khác
Nội dung tài liệu:
Các cấu trúc đã học chỉ lưu trữ dữ liệu vô hướng
Ta có tập hợp các điểm trong mặt phẳng, không gian 3 chiều
Ta cần tìm một điểm -> Xét toàn bộ tập hợp
Lúc khác ta lại tìm một điểm khác -> Xét toàn bộ
Cần có một cấu trúc để lưu trữ dữ liệu có hướng như trên
Quá mất thời gian
Jon Bentley phát minh vào những năm 1970
KD-TREE viết tắc từ:K-dimenssion tree
Dimenssion: chiều
Cây có chiều: k
Là cây nhị phân tìm kiếm
Dữ liệu lưu trữ: nhiều chiều
Mỗi node đi từ gốc đến lá phải có trục là một giá trị (0 n-1).
P nằm bên phải của Q(có trục là i)
→ dữ liệu thứ i của P ≥dữ liệu thứ i của Q
Q
P
QUI TẮC:Giống qui tắc insert các cây BST khác.
Tại mỗi nút của cây.
So sánh:
Không so sánh toàn bộ dữ liệu của node.
Tọa độ thứ i của node với tọa độ thứ i
của dữ liệu sẽ được thêm vào cây.
Với i: là axis của node đang xét.
0 2 4 6 8 10
10
8
6
4
2
0
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(7,2)
(9,5)
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
Insert (9,5), (1,8)
(1,8)
(12,14,22)
(22,8,16)
(5,10,8)
(16,0,22)
(4,22,10)
(4,16,0)
0
1
2
0
Danh sách các điểm
Thêm điểm
TH2: Nhánh phải khác rỗng
- Tìm min (giả sử là p)
- Delete p
TH1: Nút cần xóa là nút lá
Remove chính nó
TH3: Nếu nhánh phải rỗng
Thông thường: Tìm max nhánh phải để thay thế
-> Có thể phạm qui tắc 2
Tìm min (giả sử là p)
p và toàn bộ con của p trở thành cây con phải của node đang được delete
Delete p
Quy tắc: Tìm min nhánh phải để thay thế
Tìm Min
?
0 2 4 6 8 10
10
8
6
4
2
0
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
(1,8)
x
y
x
y
x
Bạn có thể xóa ngay không cần kiểm tra
Tìm node có dữ liệu thứ i là bé nhất
Giả sử node đang xét là P
Trục của P bằng i
Min thuộc left của P.
Nếu left rỗng: P là min
Trục của P khác i: min có thể là
P
Con của P (trái hoặc phải)
(3,19,6)
Axis = i
Axis i
Axis i
Axis = i
Min=10
10<14
Min=3
3<8<10
Min=(3,9,6)
Ví dụ: Findmin(0)
i=0
Axis i
Axis = i
3<9
3<10
0 2 4 6 8 10
10
8
6
4
2
0
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
(1,8)
x
y
x
y
x
(1,8)
B1:tìm min trên nhánh con phải đẻ thay thế.
B2: thay thế giá trị vừa tim được vào nút cần xóa
B3: xóa nút
0 2 4 6 8 10
10
8
6
4
2
0
(7,2)
(5,4)
(9,6)
(8,1)
(2,3)
(1,1)
(9,5)
x
y
x
y
x
(3,2)
(1,2)
(1,1)
(1,1)
(1,2)
(1,2)
Left.Findmin(1)
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
(1,8)
x
y
x
y
x
(1,8)
(7,2)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
x
y
x
y
(1,1)
0 2 4 6 8 10
10
8
6
4
2
0
Input: điểm Q
Output: Tập các điễm gần Q nhất
Duyệt toàn bộ cây: tại mỗi node tính khoảng cách giữa P&Q chọn ra các điểm có khoảng cách gần nhất
Nếu số chiều & số node lớn thì sẽ rất chậm
Cải tiến:
Nếu: d>Bestdist bỏ qua không duyệt cây con P
Ứng dụng
Photo Map( bản đồ lượng từ ).
Robot.
Đồ họa không gian n chiều.
Ứng dụng trong lĩnh vực thiên văn học.
Ưu điểm:
Thuật toán đơn giản dễ tạo.
Hạn chế:
Không cân bằng.
Mất nhiều thời gian xử lý
(Nếu có số chiều lớn hơn 10 thì không hiệu quả).
Ta có tập hợp các điểm trong mặt phẳng, không gian 3 chiều
Ta cần tìm một điểm -> Xét toàn bộ tập hợp
Lúc khác ta lại tìm một điểm khác -> Xét toàn bộ
Cần có một cấu trúc để lưu trữ dữ liệu có hướng như trên
Quá mất thời gian
Jon Bentley phát minh vào những năm 1970
KD-TREE viết tắc từ:K-dimenssion tree
Dimenssion: chiều
Cây có chiều: k
Là cây nhị phân tìm kiếm
Dữ liệu lưu trữ: nhiều chiều
Mỗi node đi từ gốc đến lá phải có trục là một giá trị (0 n-1).
P nằm bên phải của Q(có trục là i)
→ dữ liệu thứ i của P ≥dữ liệu thứ i của Q
Q
P
QUI TẮC:Giống qui tắc insert các cây BST khác.
Tại mỗi nút của cây.
So sánh:
Không so sánh toàn bộ dữ liệu của node.
Tọa độ thứ i của node với tọa độ thứ i
của dữ liệu sẽ được thêm vào cây.
Với i: là axis của node đang xét.
0 2 4 6 8 10
10
8
6
4
2
0
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(7,2)
(9,5)
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
Insert (9,5), (1,8)
(1,8)
(12,14,22)
(22,8,16)
(5,10,8)
(16,0,22)
(4,22,10)
(4,16,0)
0
1
2
0
Danh sách các điểm
Thêm điểm
TH2: Nhánh phải khác rỗng
- Tìm min (giả sử là p)
- Delete p
TH1: Nút cần xóa là nút lá
Remove chính nó
TH3: Nếu nhánh phải rỗng
Thông thường: Tìm max nhánh phải để thay thế
-> Có thể phạm qui tắc 2
Tìm min (giả sử là p)
p và toàn bộ con của p trở thành cây con phải của node đang được delete
Delete p
Quy tắc: Tìm min nhánh phải để thay thế
Tìm Min
?
0 2 4 6 8 10
10
8
6
4
2
0
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
(1,8)
x
y
x
y
x
Bạn có thể xóa ngay không cần kiểm tra
Tìm node có dữ liệu thứ i là bé nhất
Giả sử node đang xét là P
Trục của P bằng i
Min thuộc left của P.
Nếu left rỗng: P là min
Trục của P khác i: min có thể là
P
Con của P (trái hoặc phải)
(3,19,6)
Axis = i
Axis i
Axis i
Axis = i
Min=10
10<14
Min=3
3<8<10
Min=(3,9,6)
Ví dụ: Findmin(0)
i=0
Axis i
Axis = i
3<9
3<10
0 2 4 6 8 10
10
8
6
4
2
0
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
(1,8)
x
y
x
y
x
(1,8)
B1:tìm min trên nhánh con phải đẻ thay thế.
B2: thay thế giá trị vừa tim được vào nút cần xóa
B3: xóa nút
0 2 4 6 8 10
10
8
6
4
2
0
(7,2)
(5,4)
(9,6)
(8,1)
(2,3)
(1,1)
(9,5)
x
y
x
y
x
(3,2)
(1,2)
(1,1)
(1,1)
(1,2)
(1,2)
Left.Findmin(1)
(7,2)
(5,4)
(4,7)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
(1,8)
x
y
x
y
x
(1,8)
(7,2)
(9,6)
(8,1)
(2,3)
(3,6)
(1,1)
(9,5)
x
y
x
y
(1,1)
0 2 4 6 8 10
10
8
6
4
2
0
Input: điểm Q
Output: Tập các điễm gần Q nhất
Duyệt toàn bộ cây: tại mỗi node tính khoảng cách giữa P&Q chọn ra các điểm có khoảng cách gần nhất
Nếu số chiều & số node lớn thì sẽ rất chậm
Cải tiến:
Nếu: d>Bestdist bỏ qua không duyệt cây con P
Ứng dụng
Photo Map( bản đồ lượng từ ).
Robot.
Đồ họa không gian n chiều.
Ứng dụng trong lĩnh vực thiên văn học.
Ưu điểm:
Thuật toán đơn giản dễ tạo.
Hạn chế:
Không cân bằng.
Mất nhiều thời gian xử lý
(Nếu có số chiều lớn hơn 10 thì không hiệu quả).
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Nguyễn Ngọc Phú
Dung lượng: |
Lượt tài: 4
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)