Chi phí thực hiện khoảng. tìm kiếm hàng xóm gần nhất trong một phần tư bỏ qua


10

LƯU Ý : Câu hỏi đã được đưa ra trong câu trả lời của tôi: Giả sử bây giờ chúng ta có thể tìm thấy tổ tiên anh chị em thấp nhất trong thời gian , ANN có thể thực sự được thực hiện trong không?O ( log n )O(1)O(logn)


Quadtrees là các chỉ số không gian hiệu quả. Tôi có một câu đố với việc thực hiện tìm kiếm hàng xóm gần nhất trong cấu trúc tứ giác nén như được mô tả trong [2]. .

Để thuật toán của họ hoạt động, người ta phải duy trì cho mỗi nút - một hình vuông có ít nhất hai góc phần tư không trống - con trỏ cho mỗi nút tổ tiên thấp nhất (gần nhất trong hệ thống phân cấp) ở mỗi bốn hướng (bắc, tây, nam , phía đông). Chúng được biểu thị bằng các mũi tên màu xanh lá cây cho tổ tiên về phía tây của nút (mũi tên chỉ vào trung tâm của hình vuông tổ tiên).

Bài viết tuyên bố những con trỏ này có thể được cập nhật trong O (1) trong quá trình chèn và xóa điểm. Tuy nhiên, khi nhìn vào điểm chèn của điểm xanh, có vẻ như tôi cần cập nhật bất kỳ số con trỏ tùy ý nào, trong trường hợp này là sáu trong số chúng.

Tôi hy vọng cho một mẹo để thực hiện cập nhật con trỏ này trong thời gian liên tục. Có lẽ có một hình thức gián tiếp có thể được khai thác?

tứ giác trước (trái) và sau (chèn) điểm chèn

BIÊN TẬP:

Phần có liên quan từ bài báo là 6,3, trong đó ghi: "nếu đường dẫn có uốn cong, ngoài tổ tiên thấp nhất của của , chúng ta cũng nên xem xét cho mỗi hướng thấp nhất Tổ tiên của đi theo hướng đó [...] Việc tìm các ô vuông này từ có thể được thực hiện trong thời gian trên mỗi ô vuông nếu chúng ta liên kết thêm con trỏ vào mỗi ô vuông trong chỉ vào tổ tiên gần nhất của nó cho mỗi hướng Những con trỏ này cũng có thể được cập nhật trong thời gian trong khi chèn hoặc xóa điểm. "log(c/ε)q2dqqO(1)2dQ0O(1)

[2]: Eppstein, D. và Goodrich, MT và Sun, JZ, Nhạc The Skip Quadtree: Cấu trúc dữ liệu động đơn giản cho dữ liệu đa chiều, trong các tiến trình của hội nghị chuyên đề hàng năm lần thứ hai về hình học tính toán, trang 296. , 2005.


2
Đã được một thời gian, vì vậy tôi không nhớ chính xác, nhưng khi đọc lại bài báo sáng nay (cả phiên bản arxiv và tạp chí) tôi không thể tìm thấy nơi chúng tôi nói rằng chúng tôi giữ những gợi ý mà bạn nói chúng tôi cần. Tôi nghĩ rằng chúng tôi chỉ giữ con trỏ cha mẹ và con trỏ mẫu chéo. Vì vậy, có lẽ bạn có thể chỉ chính xác hơn vào văn bản trong bài báo nói những gì bạn nói.
David Eppstein

2
Xin chào David, cảm ơn bạn đã xem. Tìm kiếm ANN là phần cuối cùng (6). Vấn đề được chỉ ra trong hình. 7 (b) gần như là những gì tôi đã vẽ trong hình minh họa ở trên, nếu q nằm ở phía dưới bên trái. Tôi đã chỉnh sửa câu hỏi để bao gồm phần cụ thể của văn bản từ phần 6.3. Tôi có một số ý tưởng về cách tôi có thể thoải mái với định nghĩa về sự cân bằng có thể, nhưng tôi không chắc mình có thể chứng minh rằng bất kỳ phép đếm thay thế nào không vi phạm hiệu suất được nhắm mục tiêu ...
0__

2
Ok, có vẻ như là một vấn đề. Tôi đang thảo luận với Goodrich (chúng tôi đã mất liên lạc với Sun, người đã làm hầu hết các chi tiết ở đây). Cảm giác hiện tại của chúng tôi là chúng tôi thực sự không cần những con trỏ bổ sung này (chúng tôi không cần chúng cho các phạm vi xấp xỉ, tại sao các hàng xóm xấp xỉ phải khác nhau và thuật toán truy vấn có thể nhớ được tổ tiên mà nó nhìn thấy trên đi xuống thay vì sử dụng con trỏ để tra cứu chúng) nhưng chúng tôi sẽ liên lạc lại với bạn khi chúng tôi chắc chắn hơn một chút về các chi tiết ở đây.
David Eppstein

2
Tuyệt cám ơn bạn rất nhiều. Vì lý do đếm số ký tự và bố cục, tôi sẽ thêm một câu trả lời phác thảo 'ý tưởng trực quan' của tôi, có thể đó là điểm khởi đầu.
0__

Câu trả lời:


11

Giống như David, tôi không biết tại sao Jonathan đưa ra nhận xét đó về con trỏ 2 ^ d. Họ không cần thiết. Như David đã đề cập ở trên, thuộc tính quan trọng là khi chúng ta đang thực hiện một vị trí điểm đến một lá v trong Q_0, việc nhớ các nút anh chị em (và hộp của chúng) là đủ trong tứ giác bỏ qua. Khi chúng tôi xử lý một hộp từ P, chúng tôi thực hiện một vị trí điểm cho hộp lá gần điểm truy vấn nhất của chúng tôi, chèn các hộp anh chị em khi chúng tôi đi xuống. Có vẻ như điều này sẽ ít nhiều giống với câu trả lời của bạn. Ngoài ra, quy trình này rất giống nhau, ví dụ, cách vị trí điểm gần đúng được thực hiện trong bài báo sau: Arya, Sunil và Mount, David M. và Netanyahu, Nathan S. và Silverman, Ruth và Wu, Angela Y., "Một thuật toán tối ưu cho gần đúng hàng xóm gần nhất đang tìm kiếm kích thước cố định", JACM, 1998. Thật vậy,


Đó là tin tốt! Tôi chỉ không chắc chắn nếu thêm anh chị em trong bước đi xuống sẽ thay đổi giới hạn của chi phí trường hợp xấu nhất tổng thể hay không, nhưng tôi cho là không. Tôi đã xem xét bài báo của Arya và cộng sự, nhưng tôi thấy nó khó tiếp cận hơn nhiều so với bài báo
Quadtree

5
Ồ Chào mừng bạn đến với cstheory.SE!
Hsien-Chih Chang 張顯

5

Người ta có thể nghĩ về bỏ qua quadtree như một triển khai danh sách bỏ qua của cấu trúc dữ liệu lưu trữ các điểm theo thứ tự z của chúng. Nó (được cho là) ​​ít nhất là đơn giản hơn về mặt khái niệm ...

Xem chương 2 tại đây: http://goo.gl/pLiEO .

Và vâng, giả sử bạn có thể thực hiện một số thao tác thứ tự z cơ bản trong thời gian không đổi, bạn chắc chắn có thể thực hiện ANN trong thời gian logarit. Chương nói trên cũng cho thấy rằng không có cách nào để tránh có các hoạt động kỳ quái nếu một người muốn có tứ giác nén. Lưu ý rằng hoạt động LCA là không cần thiết ...


3
Có, và các biến thể xác định rất giống 2-3 cây cho cùng một thứ tự z.
David Eppstein

Cảm ơn các liên kết, tôi đã thấy giấy của bạn trước đây, thực sự. Trong mọi trường hợp, tôi không thể xác minh thực nghiệm ràng buộc với thuật toán đã cho. Tôi có cảm giác rằng tham chiếu đến Bổ đề 7, được sử dụng để ràng buộc số vòng trong định lý 13, có thể không hợp lệ, vì nó giả sử bán kính không đổi , trong khi bán kính tìm kiếm trong ANN thay đổi tăng dần, và cũng vậy tập hợp các hình vuông quan trọng. ? r
0__

Bán kính xác định co lại trong quá trình tìm kiếm. Tôi hợp lý lạc quan lập luận là chính xác.
Sariel Har-Peled

1

Tôi cũng trực giác cảm thấy rằng một người có thể sống mà không cần những con trỏ đó, và vì tôi cần phải duy trì tất cả các nút để cứng vào một lúc nào đó, bất kỳ sự giảm bớt nào về con trỏ là tuyệt vời.

Ý tưởng của tôi đại khái như sau: Ngoài điểm ứng cử viên tốt nhất (lá) , chúng tôi cũng theo dõi khoảng cách tồi tệ nhất trong mỗi vòng, . Khoảng cách xấu nhất sẽ là tối đa khoảng cách của tất cả các góc của nút đến điểm truy vấn , bất kể nằm trong ô vuông hay bên ngoài. r m a x d i s t ( v , q ) q v vlbestrmaxdist(v,q)qvv

Một vòng như thế này: Nếu trống, trả về , nếu có. khác, xóa-min cung cấp hiện tại trong . Khởi tạo thành (hoặc đặt thành nếu chưa có ứng cử viên tốt nhất nào được quan sát). Đầu tiên, kiểm tra từng đứa trẻ không trống của trong . Nếu con này là một chiếc lá, hãy cập nhật và nếu cần. Nếu là một nút, hãy tính và , sau này là khoảng cách tốt nhất: Hoặc là 0, nếuPlbestp0Q0rmaxlbestp0Q0qlbestrmaxqdist(q,v)dist(q,v)v nằm bên trong hoặc khoảng cách ngắn nhất của tất cả các góc của đến .qqv

Nếu , hãy quên , nếu không hãy giữ nó. Nếu số nút giữ là , đẩy các nút lên . Kết thúc vòng thi. q 2 Pdist(q,v)>rmaxq2P

Nếu không, tiến hành tương tự như tìm kiếm ban đầu: Tìm , các nút tương ứng để ở mức cao nhất có thể , và bắt đầu từ đó: Một lần nữa, thay vì yêu cầu cho một đứa trẻ cách đều đi xuống đến, kiểm tra tất cả các trẻ em theo thủ tục trước , nghĩa là bỏ qua những người có khoảng cách tốt nhất vượt quá . Nếu sau bài kiểm tra này, một đứa trẻ vẫn còn, hạ xuống và lặp lại. Nếu không có con, hãy truy cập và lặp lại. Nếu bài kiểm tra được thực hiện trong , vòng thi kết thúc.p 0 Q j r m a x Q j - 1 Q 0qp0QjrmaxQj1Q0

Tại thời điểm này, tôi không biết liệu điều này có đảm bảo tìm được người hàng xóm gần nhất trong mọi trường hợp có thể hay không, nó cũng hoạt động tốt như thuật toán ban đầu. Ngoài ra nếu việc khởi tạo là đủ hay không. Và điều gì nên là ưu tiên trong - vẫn là khoảng cách tốt nhất? PrmaxP


EDIT (tháng 4 năm 2013)

Bây giờ tôi đã tiến hành nhiều thử nghiệm hơn với việc làm rõ thuật toán trên, sử dụng định nghĩa các nút 'trang bị' thay vì các nút cân bằng, dựa trên đặc tính giảm dần đến một nút như vậy không làm thay đổi khu vực được bao phủ bởi hình dạng truy vấn hiện tại .rmax

Thật không may, người ta có thể xây dựng các trường hợp bệnh lý (xem hình ảnh bên dưới; điểm truy vấn là trung tâm dưới cùng) trong đó hiệu suất giảm xuống các vòng .O(n)

nhập mô tả hình ảnh ở đây


0

Bây giờ tôi đã thực hiện thuật toán dựa trên cân bằng, trong đó tổ tiên anh chị em thấp nhất được tìm kiếm lực lượng vũ phu (trước khi cố gắng tìm biến thể O (1)), để xác minh số vòng tối đa được yêu cầu trong định lý 13: .O(ϵ1d(logn+logϵ1))

Tôi đang sử dụng ví dụ "bệnh lý" từ câu trả lời trước của tôi. Hình vuông gốc 2 chiều có chiều dài cạnh 512, trong đó tọa độ trung tâm là (256, 256). Các tọa độ được đưa ra trong các số nguyên, dẫn đến một đường thẳng . Các điểm được đặt cách đều nhau theo chiều ngang trên ô vuông gốc và điểm truy vấn nằm ở (256, 511) (lưu ý rằng 512 đã nằm ngoài ô vuông gốc).vϵ=1v

Trong hình bên dưới, toàn bộ cây được hiển thị và số điểm trong ví dụ này là 16. Các đường viền hình vuông màu xanh biểu thị các ô vuông thú vị được đẩy lên hàng đợi ưu tiên và các chữ số ở giữa cho biết số tròn trong mà họ bị đẩy. Điểm lá được phát hiện cũng được dán nhãn với số tròn mà chúng được tính. Ba vòng tròn màu xanh trong suốt biểu thị bán kính NN đã biết sau vòng 1, vòng 2 và vòng 7 (hàng xóm gần nhất được nhìn thấy lần đầu tiên trong vòng 7). Tổng cộng có 12 vòng (6 ô vuông duy nhất cuối cùng từ hàng đợi, nhưng không thêm bất kỳ ô vuông mới nào).Q0

Tôi đã chạy ví dụ này với một loạt các ô vuông gốc ngày càng lớn và số điểm, trong đó khoảng cách của các điểm vẫn giữ nguyên (32). Điều này đã xác nhận những gì đã hiển thị trực quan từ hình minh họa: Thuật toán cần các vòng , trong khi định lý 13 với và nói rằng chỉ cần các vòng .d=2ε=1O(logn)O(n)d=2ϵ=1O(logn)

Vì vậy, trừ khi tôi thiếu một cái gì đó quan trọng, thuật toán không thể đạt được tốc độ đã nêu. Bất kỳ ý kiến ​​hoặc ý tưởng?

đi qua

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.