Vấn đề bảo hiểm (máy phát và máy thu)


14

Tôi cố gắng giải quyết vấn đề bảo hiểm sau đây.

máy phát với vùng phủ sóng 1km và n máy thu. Quyết định trong O ( n log n ) rằng tất cả các máy thu được bảo vệ bởi bất kỳ máy phát nào. Tất cả các reveer và bộ truyền được thể hiện bằng tọa độ xy của chúng .nnO(nlogn)xy

Giải pháp tiên tiến nhất tôi có thể đi kèm với mất . Đối với mỗi máy thu sắp xếp tất cả các máy phát theo khoảng cách đến máy thu hiện tại này, sau đó lấy máy phát với khoảng cách ngắn nhất và khoảng cách ngắn nhất này phải nằm trong 0,5 km.O(n2logn)

Nhưng cách tiếp cận ngây thơ có vẻ tốt hơn nhiều về độ phức tạp thời gian . Chỉ cần tính toán tất cả khoảng cách giữa tất cả các cặp máy phát và máy thu.O(n2)

Tôi không chắc chắn nếu tôi có thể áp dụng các thuật toán tìm kiếm phạm vi trong vấn đề này. Ví dụ: cây kd cho phép chúng ta tìm các phạm vi như vậy, tuy nhiên tôi chưa bao giờ thấy một ví dụ nào và tôi không chắc có loại tìm kiếm phạm vi nào cho các vòng tròn hay không.

Độ phức tạp đã cho giả định rằng giải pháp nên bằng cách nào đó tương tự như sắp xếp.O(nlogn)


1
Nếu thời gian dự kiến không sao, tôi nghĩ bạn có thể xây dựng một k d -tree qua các máy phát (mất thời gian O ( n log n ) ), sau đó thực hiện truy vấn lân cận gần nhất cho mỗi người nhận (lấy trung bình của O ( log n ) thời gian cho mỗi người nhận). Điều này nên để lừa, nhưng tôi giả sử bạn cần sự phức tạp trong trường hợp xấu nhất. Dường như có một số thủ thuật để tăng tốc khi bạn đang thực hiện nhiều truy vấn lân cận gần nhất trong k d -tree. O(nlogn)kdO(nlogn)O(logn)kd
utdiscant

1
Tôi đoán một thuật toán dòng quét có thể thực hiện thủ thuật: sắp xếp cả máy phát và máy thu theo tọa độ x và bước qua danh sách. Quản lý thông minh của bộ các máy phát khả thi là rất cần thiết.
Raphael

@Raphael, bạn có thể vui lòng giải thích thêm một chút không, có vẻ như nó sẽ rất chậm trong trường hợp xấu nhất.
com

1
Tôi nghĩ rằng đáng để xem thuật toán của Fortune để tính toán sơ đồ Voronoi trong mặt phẳng. Nó hoạt động trong và được đưa ra một sơ đồ Voronoi, vấn đề của bạn trở nên dễ dàng. O(nlogn)
Syzygy

Câu trả lời:


4

Bạn có thể sử dụng sơ đồ Voronoi, cùng với cấu trúc dữ liệu của Kirkpatrick để giải quyết vấn đề này.

Giống như Raphael và Syzygy đã đề xuất, bạn có thể sử dụng thuật toán (đường quét) của Fortune để tạo sơ đồ Voronoi. Trường hợp xấu nhất: .Ôi(nđăng nhậpn)

Biểu đồ Voronoi sẽ có một loạt các đa giác, mỗi đa giác chứa một máy phát. Bất kỳ điểm nào trong đa giác là gần nhất với máy phát đó. Do đó, nếu bạn có thể tìm ra đa giác nào chứa máy thu, bạn có thể tìm máy phát gần nhất với nó bằng cách nào đó tìm ra nó là đa giác nào. Sau đó, bạn kiểm tra xem máy phát đó có trong vòng .1 km

Để xác định đa giác Voronoi nào chứa máy thu, trước tiên bạn phải tam giác từng đa giác trong sơ đồ. Bây giờ bạn có một lưới tam giác. Tiếp theo, bạn sử dụng cấu trúc dữ liệu của Kirkpatrick để xác định vị trí bất kỳ tam giác nào chứa điểm đã cho trong thời gian , trường hợp xấu nhất. Xây dựng cấu trúc dữ liệu của Kirkpatrick trong trường hợp xấu nhất O ( n log n ) . Một khi bạn biết hình tam giác, bạn sẽ biết đa giác chứa nó, và do đó là máy phát gần nhất. Làm điều này cho tất cả các máy thu sẽ là O ( n log n ) , trường hợp xấu nhất.Ôi(đăng nhậpn)Ôi(nđăng nhậpn)Ôi(nđăng nhậpn)

Mỗi ô trong sơ đồ Voronoi là một đa giác lồi, có thể không bị chặn.

...

Số lượng đỉnh [của sơ đồ Voronoi của n vị trí] V 2n-5

- www.cs.arizona.edu

Θ(v)vnnÔi(n)Ôi(n)Ôi(n)Ôi(n)Ôi(n)

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.