Vòng tròn bao quanh tối đa của bán kính cho trước


19

Tôi cố gắng tìm một cách tiếp cận vấn đề sau:

Cho tập hợp điểm và bán kính , tìm điểm trung tâm của đường tròn, sao cho đường tròn chứa số điểm tối đa từ tập hợp. Thời gian chạy phải là .r O ( n 2 )SrO(n2)

Lúc đầu, nó có vẻ giống như vấn đề vòng tròn nhỏ nhất, có thể dễ dàng giải quyết trong . Ý tưởng là để thiết lập một trung tâm tùy ý và bao vây tất cả các điểm của . Tiếp theo, từng bước, thay thế vòng tròn để chạm vào các điểm trái / phải và thu nhỏ vòng tròn đến bán kính nhất định, rõ ràng, điều này sẽ không hoạt động.SO(n2)S

Câu trả lời:


7

Tôi không biết làm thế nào để giải quyết vấn đề này trong thời gian O(n2) , nhưng thuật toán O(n2logn) vẫn tồn tại.

Đặt là đường tròn có tâm là , điểm thứ , có bán kính . Không khó để thấy rằng điểm đặt có thể được bao quanh bởi một vòng tròn có bán kính iff giao điểm của không trống. Hơn nữa, nếu không trống, phải có một số điểm trong nằm trên một số (ranh giới của ). Vì vậy, với mỗi và mỗi điểm trên liên kết của nó, chúng tôi cố gắng tìm xem có bao nhiêu vòng tròn chứas i i r P = { p 0 , p 1 , Lọ , p m } r I ( P ) C ( p 0 ) , C ( p 1 ) , Rơi , C ( p m ) I ( P ) Tôi ( P ) bd C ( p i )C(si)siirP={p0,p1,,pm}rI(P)C(p0),C(p1),,C(pm)I(P)I(P)bdC(pi)C ( s i ) p pC(pi)C(si)pp . Số lượng tối đa trong số tất cả sẽ là câu trả lời cho vấn đề này.p

Hãy xem xét các điểm trong . Có một ánh xạ một-một giữa các điểm trên và số thực trong . Đối với mỗi vòng tròn , giao điểm giữa và có thể được biểu thị bằng một khoảng . Vì vậy, đối với tất cả các vòng tròn khác ngoài , có nhiều nhất khoảng (một số vòng tròn có thể không giao nhau với ). Số lượng tối đa có thể được tìm thấy dễ dàng bằng cách sắp xếp tất cả điểm cuối của khoảng, quét chúng theo thứ tự và đếm số chồng chéo hiện tại. Cho mỗibd C ( s i ) [ 0 , 2 π ) C ( s j ) C ( s j ) bd C ( s i ) [ b e g i n j , e n d j ] C ( s i ) n - 1 C ( s i ) 2bdC(si)bdC(si)[0,2π)C(sj)C(sj)bdC(si)[beginj,endj]C(si)n1C(si)2(n1)C(si) , bước này có thể được thực hiện trong thời gian và có vòng tròn như vậy, vì vậy độ phức tạp thời gian của thuật toán này là .O(nlogn)nO(n2logn)


2
Việc sắp xếp các vòng tròn có thể được xây dựng trong thời gian (với xác suất cao) bằng thuật toán gia tăng ngẫu nhiên tiêu chuẩn. Trong thực tế, thời gian chạy là , trong đó là số cặp vòng tròn giao nhau. Xem sách giáo khoa hình học tính toán yêu thích của bạn. O(n2)O(nlogn+k)k
JeffE

2

Tôi nghĩ rằng những câu hỏi khó là biết liệu vòng tròn bạn đã chọn có thực sự là "tối đa" trong tập hợp hay không. Cách duy nhất tôi có thể nghĩ để xác định điều này là thử tất cả các kết hợp có thể có của các điểm và kiểm tra kích thước của vòng tròn bao quanh chúng.

Bạn có thể giảm không gian tìm kiếm mặc dù trước tiên bằng cách chia không gian điểm thành một lưới các ô vuông có chiều rộng 2r. Sau đó xác định vị trí tế bào với mật độ lớn nhất. Vì bạn đã định vị được một vòng tròn gồm X điểm, bạn có thể kết luận rằng nếu một vòng tròn tồn tại nhiều điểm hơn, thì nó phải có ít nhất X điểm trong đó. Và sử dụng điều này như một điểm khởi đầu để kiểm tra các kết hợp khác nhau của các điểm.

Nếu bạn chỉ tìm kiếm một tập hợp các điểm có khả năng là tối đa, thì bạn có thể giảm thêm số lượng kết hợp bạn cần kiểm tra bằng cách chọn các điểm nằm trong vùng lân cận có mật độ của vùng lân cận lớn hơn X.

Đã nói điều này, cả hai "mức giảm" đều có thể thất bại, và trong trường hợp xấu nhất, bạn sẽ là vòng tròn tính toán cho tất cả các kết hợp điểm có thể.


1

Ở Chazelle, B.; Lee, DT's paper Computing 36, 1-16 (1986), định lý 3 trong trang 15, nói rằng thuật toán tìm vòng tròn bao quanh tối đa phải mất chi phí thời gian .O(n2)

Tôi nghĩ rằng khóa vẫn là thuật toán xây dựng đồ thị giao nhau mà nó đề cập sớm, (hoặc xem Edelsbrunner, H. (1987), Thuật toán trong Hình học kết hợp, chương 7). Sau đó, việc tìm kiếm vòng tròn bao quanh maximun sẽ đơn giản.O(n2)

Rõ ràng, vấn đề này tương đương với việc tìm ra điểm được bao phủ bởi số vòng tròn đã cho tối đa và thật dễ dàng để chỉ biết những người chủ yếu là điểm giao nhau với n vòng tròn đã cho cần phải được coi là ứng cử viên. (Điều này cũng dẫn trực tiếp thuật toán O ( n 2 l o g ( n ) ) )2n2O(n2log(n))

Tuy nhiên, bằng cách sử dụng thuật toán xây dựng đã đề cập ở trên , nó cũng dẫn đến thuật toán O ( n 2 ) cho vấn đề này. Bởi vì đồ thị giao nhau được xây dựng với các đỉnh là các điểm giao nhau và các cạnh như các cung là một đồ thị phẳng Euler. Vì vậy, người ta chỉ có thể di chuyển tất cả các cung qua một chu kỳ Euler và một thứ tự các cung được lập chỉ mục bởi các chỉ số của các vòng tròn mà nó thuộc về và thông tin về bất kỳ cung nào là "vòng cung rời khỏi" (cong về phía sau) hoặc "đi vào cung" ( cong về phía trước) cho đỉnh gặp trong khi di chuyển mà cung này là sự cố trên sẽ được ghi lại.O(n2)O(n2)

Theo định lý của Jordan, một đỉnh giao nhau chỉ được bao quanh bởi một vòng tròn nếu nó gặp "vòng cung rời khỏi" thuộc vòng tròn đó trước hoặc có một vòng cung sự cố thuộc vòng tròn đó. Vì vậy, sau khi di chuyển toàn bộ, vòng tròn bao quanh tối đa có thể dễ dàng được tìm thấy. Nó tương tự như trường hợp quyết định thời gian che phủ cho các điểm có khoảng cách theo thứ tự dọc theo một đường thẳng, (hoặc tức là phiên bản 1D của vấn đề kèm theo này), ngoại trừ đơn hàng đã được đưa ra bởi chuyến đi. Trong khi bởi Euler của công thức V+EF=2đối với đồ thị phẳng, tổng số cung là tuyến tính với số đỉnh và vì người ta không cần phải ghi lại thông tin liên quan khi quay trở lại các đỉnh đã truy cập, bằng cách bắt tay bổ đề, tổng chi phí thời gian sẽ là .O(n2)


Nếu điều này được đọc như là một bổ sung cho câu trả lời được chấp nhận, và nên tự mình đọc nó (mà tôi không biết, vì tôi không biết gì về chủ đề này), bạn nên nói rõ về nó.
babou
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.