ここに興味深い演習があります:
P を単純であるが必ずしも凸であるとは限らない多角形とし、q を P 内にあるとは限らない任意の点とします。
P のエッジの最大数と交差する q から始まる線分を見つける効率的なアルゴリズムを設計してください。
言い換えれば、点 q に立っている場合、弾丸が最も多くの壁を通過するには、銃をどの方向に向ければよいでしょうか?
P の頂点を通過する弾丸は、1 つの壁に対してのみクレジットを取得します。
O(n log n) アルゴリズムが可能です。n は頂点またはエッジの数です。これはポリゴンであるため、エッジの数は頂点の数にほぼ等しくなります。
ここに私の考えがあります:
最初に P のすべての頂点 (N 個の頂点があるとしましょう) と q を接続します。N 行、または N-1 対の行があります。
最後の射撃ラインは、これらのペアの間にある必要があります。したがって、最大数のエッジを含むペアを見つける必要があります。
この解決策は O(n log n) ではないと思います。
何か案は?