Chiến lược tham lam để tính toán số lượng tia tối thiểu đánh vào tất cả các quả bóng


7

Các vấn đề zap tối thiểu dưới đây là tập 11 trong bài giảng Jeff Erickson về "tham lam Algorithm" .

Các vấn đề tối thiểu zap thể nói chính thức hơn như sau. Đưa ra một bộC của n các vòng tròn trong mặt phẳng, mỗi vòng tròn được chỉ định bởi bán kính của nó và (x,y) tọa độ tâm của nó, tính toán số lượng tia tối thiểu từ gốc tọa độ mọi đường tròn trong C. Mục tiêu của bạn là tìm ra một thuật toán hiệu quả cho vấn đề này. (Xem ví dụ "9 bóng bay với 4 tia" trong hình bên dưới)

9 quả bóng-4 giờ

Câu hỏi: Giả sử có thể bắn một tia không giao nhau với bất kỳ quả bóng bay nào. Mô tả và phân tích một thuật toán tham lam giải quyết vấn đề zap tối thiểu trong trường hợp đặc biệt này.


Tôi gặp khó khăn khi tiếp cận vấn đề này. Tôi nghĩ rằng một cách tiếp cận tham lam sẽ là sử dụng tia giao nhau với hầu hết các vòng tròn và tái diễn, nhưng tôi đã nói rằng điều này là sai. Tại sao lại thế này?

Và điểm của thực tế là có một tia không giao nhau với bóng bay là gì? Tôi có phải chứng minh rằng một số giải pháp tối ưu sử dụng thực tế này?

Bất kỳ trợ giúp sẽ được đánh giá cao! Tôi mới bắt đầu học thuật toán :)


Thuật toán dựa trên câu trả lời của hengxin: https://cs.stackexchange.com/a/52293/42816

Chứng minh bằng cảm ứng toán học

Lưu ý: Không sử dụng triển khai O (n log n)

Bây giờ chúng tôi sẽ chứng minh tính đúng đắn của thuật toán này bằng cách sử dụng quy nạp toán học. Chúng tôi sẽ chỉ ra rằng thuật toán tham lam của chúng tôi không thể làm tồi tệ hơn giải pháp tối ưu.

Để cho Slà tập hợp các tia bắn bởi thuật toán tham lam của chúng tôi. Để choS là tập hợp các tia bắn bởi một giải pháp tối ưu khác.

Trường hợp cơ sở của chúng tôi là khi n=1. Chỉ có một đối tượng để tiêu diệt và thuật toán tham lam của chúng tôi sử dụng 1 tia, điều này cũng xảy ra là tối ưu. Vì vậy, điều này kiểm tra ra.

Bây giờ đối với giả thuyết cảm ứng của chúng tôi, chúng tôi sẽ cho rằng thuật toán tham lam của chúng tôi là tối ưu cho tối đa n các đối tượng.

Bây giờ chúng tôi tuyên bố rằng tia đầu tiên từ α của S không thể làm tồi tệ hơn S.

Bây giờ hãy xem xét một n+1tình hình đối tượng. Sau đó, chúng tôi sắp xếpSS dựa theo α, theo chiều kim đồng hồ. Bây giờ hãy kiểm tra các tia đầu tiên xảy ra từαchiều kim đồng hồ. TrongS, tia đầu tiên này, gọi nó R, không thể làm tồi tệ hơn S, gọi nó đi R, bởi vì thuật toán tham lam của chúng tôi nói rằng tia này sẽ giao nhau với hầu hết các đối tượng, bao gồm cả vật thể đầu tiên từ α. Vì thế,R hoặc giao nhau nhiều hoặc ít đối tượng hơn R. Vì vậy, chúng ta có thể thay thếR với R trong giải pháp tối ưu S.

Bây giờ, chúng ta phải tìm ra nếu phần còn lại của S là tối ưu, cắt ra R, mà chúng tôi sẽ gọi T. Tuy nhiên, vì hiện tại có nhiều nhấtn các đối tượng, giả thuyết cảm ứng của chúng tôi nói rằng thuật toán tham lam của chúng tôi tìm ra một giải pháp tối ưu để T. Như vậy,R+Tvấn đề có một giải pháp tối ưu từ thuật toán tham lam của chúng tôi. QED


Thuật toán tham lam của chúng tôi nói rằng tia này sẽ giao nhau với hầu hết các đối tượng 'Tôi không thấy tuyên bố này hợp lý như thế nào. Các đối tượng nhất của tập hợp các hướng có thể?
jwg

Câu trả lời:


1

Nguyên tắc: Bạn cần phải bắn các tia theo một số thứ tự và chọn cẩn thận hướng / góc thích hợp cho tia đầu tiên.

Q1:Tôi nghĩ rằng một cách tiếp cận tham lam sẽ là sử dụng tia giao nhau với hầu hết các vòng tròn và tái diễn, nhưng tôi đã nói rằng điều này là sai. Tại sao lại thế này?

Xem hình trong bài toán. Giả sử chỉ có 4 quả bóng bay: hai quả xanh và hai quả xanh. Nếu bạn bắn tia đầu tiên dọc theo trục x (điều này được cho phép bởi chiến lược tham lam của bạn. Lưu ý rằng tôi cho rằng ba quả bóng lớn hơn không thể bị trúng một tia; nếu không, hãy di chuyển chúng xung quanh một chút), bạn sẽ rời khỏi hai bóng bay khác xa nhau. Kết quả là, bạn tốn 3 tia, nhưng tối ưu là 2.

Q2: Điểm của thực tế là có một tia không giao nhau với bóng bay là gì?

Vì vậy, điểm quan trọng là bắn tia đầu tiên theo đúng hướng. Ở đây có một thực tế là "có một tia không giao nhau với bất kỳ quả bóng bay nào".

Ý tưởng cơ bản là như sau:

  • đầu tiên tìm hướng / góc α dọc theo đó một tia không giao nhau với bất kỳ quả bóng bay nào;
  • sau đó xác định quả bóng đầu tiên (giả sử theo chiều kim đồng hồ) b đối với hướng / góc này α; Đâyb được định nghĩa là quả bóng đầu tiên bạn rời đi khi bạn quét một đường bắt đầu từ hướng / góc α chiều kim đồng hồ.
  • bắn một tia bĐường tiếp tuyến ngoài cùng bên phải (theo chiều kim đồng hồ) lTừ xa tất cả các quả bóng bay trúng l,
  • và sau đó tái diễn.

Q3: Tôi có phải chứng minh rằng một số giải pháp tối ưu sử dụng thực tế này?

Không dễ để chứng minh một chiến lược tham lam là chính xác. Bạn có thể cố gắng chứng minh ý tưởng trên bằng cách áp dụng toán học quy nạp và đối số trao đổi ( hoặc có thể cho thấy nó sai! ). Một gợi ý là xem xét tập hợp các tia được bắn bởi một thuật toán tùy ý, sắp xếp chúng theo các góc đối vớiα (theo chiều kim đồng hồ), sau đó so sánh nó với giải pháp tối ưu từng cái một.


Thực hiện: Trong các ý kiến, OP yêu cầu mộtnlognthuật toán. Tốt,nlgnthường có nghĩa là bạn có thể sắp xếp một số thứ đầu tiên. Có thể sắp xếp tất cả các quả bóng theo các góc rối của chúng (theo chiều kim đồng hồ một lần nữa). Sau đó, thật dễ dàng để áp dụng chiến lược tham lam ở trên. Đây là một ý tưởng sơ bộ. Làm thế nào để thực hiện nó một cách hiệu quả bằng cách chọn / thiết kế cấu trúc dữ liệu tốt là một bài tập.


Cảm ơn câu trả lời! Bây giờ nó bắt đầu trở nên rõ ràng hơn đối với tôi. Tuy nhiên bây giờ tôi cần tìm ra một ý tưởng cơ bản về cách tạo ra thuật toán O (n log n) này. Bạn sẽ có bất kỳ suy nghĩ bắt đầu? cảm ơn lần nữa
pinoyboy

@pinoyboy nlogn? Chà, điều đó thường có nghĩa là trước tiên bạn có thể sắp xếp một số thứ. Có thể sắp xếp tất cả các quả bóng theo các góc rối của chúng (theo chiều kim đồng hồ một lần nữa). Sau đó, thật dễ dàng để áp dụng chiến lược tham lam.
hengxin

Ahhh, điều đó có ý nghĩa! Tôi rất xin lỗi vì đã hỏi rất nhiều câu hỏi. Nhưng nó rất có ý nghĩa với tôi bây giờ!
pinoyboy

@pinoyboy Vui mừng khi được giúp đỡ. Lưu ý rằng tôi đã không chứng minh nó chính thức. Bạn nên thử nó. Cố gắng để chứng minh một chiến lược tham lam là một cơ hội tốt để học hỏi.
hengxin

1
Làm thế nào bạn sẽ xử lý trường hợp không có hướng ban đầu dọc theo đó một tia sẽ không giao nhau với bất kỳ quả bóng nào? Bắt đầu một thuật toán từ một góc độ tùy ý trong trường hợp này dường như không dẫn đến một giải pháp tối ưu ...
Maxim Mikhaylov
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.