Tìm khoảng cách ngắn nhất theo chiều ngang của các điểm trong o (n log n)?


11

Bài tập sau đây đã được trao cho các sinh viên mà tôi giám sát:

Cho n điểm trong mặt phẳng, nghĩ ra thuật toán tìm một cặp điểm có khoảng cách là tối thiểu trong số tất cả các cặp điểm. Thuật toán sẽ chạy trong thời gian o(n2) .

Có một (tương đối) đơn giản thuật toán chia để trị mà giải quyết được nhiệm vụ trong thời gian Θ(nlogn) .

Câu hỏi 1 : Có thuật toán nào giải quyết chính xác vấn đề đã cho trong trường hợp xấu nhất o(nlogn) không?

Điều khiến tôi nghi ngờ rằng điều này có thể là có thể là kết quả mà tôi nhớ đã thấy trong một số cuộc nói chuyện (tham khảo đánh giá cao). Nó nói cái gì đó dọc theo dòng mà không quá một hằng số cN điểm có thể được sắp xếp trong mặt phẳng xung quanh một số điểm p bên trong một vòng tròn bán kính rR , với r là khoảng cách tối thiểu giữa bất kỳ hai trong số những điểm tham gia . Tôi nghĩ c=7 , các điểm tạo thành một hình lục giác đều có p ở tâm (trong trường hợp cực trị).

Trong trường hợp đó, thuật toán sau sẽ giải quyết vấn đề theo n bước.

fun mindist [] | p::[] = INFINITY
|   mindist p1::p1::[] = dist(P[0], P[1])
|   mindist p::r = let m = mindist(r) in
                     min(m, nextNeighbour(p, r, m))
                   end

Lưu ý rằng điều này (tự xưng là) trong thời gian tuyến tính bởi vì chỉ có một hằng số điểm trong rthể có farer xa hơn mtừ p(giả sử ở trên tuyên bố); chỉ những điểm này phải được điều tra để tìm ra mức tối thiểu mới. Có một nắm bắt, tất nhiên; Làm thế nào để bạn thực hiện nextNeighbour(có thể với tiền xử lý trong thời gian tuyến tính)?

Câu hỏi 2 : Hãy để một tập hợp các điểm và một điểm p R . Cho m R vớiRpRmR

mmin{dist(p1,p2)p1,p2R}

Rp,m:={ppRdist(p,p)m} .

Giả sử là hữu hạn. Có thể tìm thấy với khoảng cách tối thiểu từ trong thời gian (khấu hao) không? (Bạn có thể giả sử được xây dựng bằng cách thêm từng điểm đã điều tra .) p 'R p , m p O ( 1 ) R pRp,mpRp,mpO(1)Rp


2
Tôi muốn đề xuất tìm kiếm với "cặp gần nhất" làm từ khóa.
Yoshio Okamoto

Đây là tất cả các công cụ tiêu chuẩn cho đến bây giờ, xem hai chương đầu tiên tại đây: goo.gl/pLiEO
Sariel Har-Peled

Thi thiên Nếu bạn muốn thời gian dự kiến, thì bạn thậm chí có thể tính toán tam giác Delaunay, trong đó có khoảng cách tối thiểu.
domotorp

Sau câu hỏi 1, bạn viết "không quá một số điểm không đổi có thể được sắp xếp trong mặt phẳng xung quanh một số điểm p bên trong một vòng tròn bán kính r, với r khoảng cách tối thiểu giữa p và bất kỳ điểm nào khác." Điều này chắc chắn không đúng: Bạn có thể lấy bất kỳ số điểm nào trên vòng tròn bán kính r. Tuyên bố của bạn là đúng nếu r là khoảng cách tối thiểu giữa hai điểm bất kỳ, trong trường hợp đó bằng chứng khá đơn giản.
domotorp

câu hỏi đầu tiên là những thứ trong sách giáo khoa, như đã chỉ ra: chắc chắn không phải là cấp độ nghiên cứu. tôi không hiểu câu hỏi thứ hai: đối với bất kỳ , các bạn đang yêu cầu hoặc không tồn tại hoặc là những người hàng xóm gần gũi nhất với trong . vậy điều này khác với câu hỏi 1 như thế nào? bạn đang khấu hao cái gì (nghĩa là nếu đây là câu hỏi về cấu trúc dữ liệu thì các bản cập nhật và truy vấn là gì)? p ' p RmppR
Sasho Nikolov

Câu trả lời:


12

Không thể giải quyết vấn đề trong thời gian ít hơn trong các mô hình chuẩn, ví dụ: sử dụng cây quyết định đại số. Điều này xuất phát từ công việc của Yao và Ben-Or cho thấy rằng trong mô hình này, không thể quyết định liệu một tập hợp số đầu vào có khác nhau hay không (xem http://people.bath.ac.uk/masnnv /Teaching/AAlg11_8.pdf ). Trong trường hợp vấn đề của bạn, hãy tưởng tượng rằng tất cả chúng đều nằm trên đường thẳng thực sự. Nếu hai điểm giống nhau, thì đầu ra của bạn sẽ là hai điểm có khoảng cách bằng 0, trong khi nếu không thì giải pháp cho vấn đề của bạn cũng sẽ giải quyết vấn đề SỐ DISTINCT. Nếu bạn muốn giả sử rằng tất cả các điểm của bạn đều khác nhau, thì chỉ cần thêm vàon i ϵ x i n ϵ 2 n ϵ Ω ( n log n )cnlognniϵxiđầu vào của vấn đề SỐ DISTINCT, trong trường hợp này nếu đầu ra của bạn nhiều nhất là , thì các số đó không phải là tất cả. (Mặc dù trong trường hợp này, bạn phải sử dụng phiên bản hứa hẹn với sự khác biệt của hai số khác biệt ít nhất là , nhưng tôi nghĩ rằng bằng chứng tương tự cũng có tác dụng cho thấy bạn cũng cần trong điều này trường hợp.)nϵ2nϵΩ(nlogn)


Thật vậy, cảm ơn. Điều đó trả lời câu hỏi 2 (phủ định), quá.
Raphael

Vấn đề bạn đề cập rõ ràng còn được gọi là Vấn đề Phân biệt Yếu tố .
Raphael

Tài liệu tham khảo của @Sariel Har-Peled ( goo.gl/pLiEO ) trình bày một thuật toán thời gian tuyến tính thực tế để tìm cặp gần nhất. Tài liệu đó trực tiếp giải quyết đối số này và giải thích rằng nó không áp dụng vì thuật toán sử dụng mô hình tính toán mạnh hơn.
kevin cline

1
Có, nhưng câu hỏi đặc biệt yêu cầu thời gian chạy tồi tệ nhất. Nhưng tôi đồng ý rằng tất cả các quan sát của tôi đã xuất hiện trong luận án của Sariel.
domotorp


0

Theo như tôi hiểu câu hỏi 2, thuật toán của Rabin cũng cung cấp một loại câu trả lời cho câu hỏi đó. Ở mỗi bước, cấu trúc dữ liệu là một lưới có chiều rộng ô nhỏ hơn khoảng cách nhỏ nhất giữa các cặp điểm được nhìn thấy cho đến nay, chia cho (để không có ô nào chứa nhiều hơn một điểm). Để trả lời truy vấn trong câu hỏi 2, bạn chỉ cần ánh xạ tới một ô trong lưới và xem xét một số lượng ô không đổi xung quanh nó. Bằng cách phân tích thuật toán, nếu tập hợp điểm đầu vào được kiểm tra theo thứ tự ngẫu nhiên, hơn thời gian cập nhật được khấu hao cho lưới là cho mỗi điểm mới trong kỳ vọng. pO(1)2pO(1)


BTW Tôi không đề cập đến phiên bản của thuật toán như Lipton mô tả, mà như được mô tả trong bình luận đầu tiên (và cuốn sách của Kleinberg và Tardos).
Sasho Nikolov

Chỉ trong sự mong đợi, xem câu trả lời domotorps.
Raphael

tôi không thấy bất cứ nơi nào bạn muốn giới hạn bản thân với các thuật toán xác định. Thuật toán của rabin rất thú vị bởi vì nó đi xung quanh các giới hạn dưới của cây quyết định (điều này tương tự như các giới hạn thấp hơn để sắp xếp so sánh so với các thuật toán sắp xếp số nguyên). btw, có lẽ có nhiều hơn rabin sử dụng để đi xung quanh giới hạn dưới, cụ thể là thủ thuật băm được sử dụng để truy cập vào lưới
Sasho Nikolov

4
Re "nhiều hơn mà Rabin sử dụng": cũng là khả năng làm tròn số đầu vào số thực thành số nguyên. Người ta cần hết sức cẩn thận với điều này: nếu bạn thiết lập một mô hình tính toán trong đó người ta có thể thực hiện các phép toán số học tiêu chuẩn và làm tròn số thực, tất cả trong thời gian không đổi trên mỗi thao tác, thì có thể giải quyết các vấn đề hoàn thành PSPACE trong thời gian đa thức trong mô hình này. Nhưng Rabin chỉ làm tròn số đầu vào (đến các mức độ chính xác khác nhau trong các lần lặp khác nhau) và hình thức làm tròn được bao quanh này không có vấn đề gì.
David Eppstein

@SashoNikolov Tôi đang tìm kiếm thời gian trong trường hợp xấu nhất trong , vì vậy cũng là trường hợp xấu nhất trong câu hỏi 2. Điều này không liên quan gì đến thuật toán có tính xác định. Tôi không chắc chắn điều gì sẽ xảy ra nếu bạn kết hợp thời gian dự kiến ​​và khấu hao. O ( 1 )o(nlogn) O(1)
Raphael
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.