各漂流トラッカーをご覧ください
あなたの仕事は、多くの浮遊魚追跡装置のバッテリーパックを最短時間で交換することです。基地を基地ヘリコプターに残し、各トラッカーを1度訪問して、基地に戻る必要があります。 最適なルートを見つけることは難しいことが知られていますが、さらに困難があります!各トラッカーにはドリフト速度があります(これはその日の定数であると想定されます)。 これは、ノードの移動という課題が追加された、巡回セールスマンの標準的な問題です。有効なツアーを簡単に見つけられるはずです。主な課題は、最適に近いツアーを見つけるアルゴリズムを開発することです。私は現在のN = 300で完璧なツアーを見つけることは不可能だと予測しています(しかし、私は間違っていると証明されたいです)。 ルール プログラムには、STDINまたはコマンドライン引数を介して、一連のトラッカーデータが提供されます。各トラッカーを1回だけ訪れてベースに戻るルートを見つける必要があります。出力は、空白で区切られたトラッカーID:時間のペアのリストである必要があります。 位置はセンチメートル(cm)で表示されます。 時間は、t = 0から始まる秒単位で測定されます。 速度はcm /秒で与えられます。 各トラッカーIDは、1から8文字の大文字です。 IDが「BASE」のベースはにあり(0,0)ます。 入力と出力のすべての数値は、符号付き整数を使用します。 入力は、1つ以上の空白またはスラッシュで区切られたトラッカーです。 各トラッカーは持っていますID:x,y,vx,vy(例:フォーマットをA:566,-344,-5,11) 時間tでは、トラッカーはにあります(x+vx*t, y+vy*t)。 ヘリコプターは速度5000 cm /秒(時速180 km)を超えてはなりません。 出力は、時間順にホワイトスペースで区切られた訪問である必要があります。 各訪問はIDにする必要があります:時刻の形式(例:A:5723) (例:あなたの出力の最後の訪問は、ベースにする必要がありますBASE:6120) 複数のトラッカーが同じ位置にある場合、それらの間を移動するのにかかる時間はゼロです。 標準の抜け穴は禁止されています。 データセットの例 A:77000,88000,-120,80 B:52000,-12000,0,-230 C:-140000,-23000,-270,110 非最適なソリューションの例: A:30 B:60 C:120 BASE:160 A:30 B:60 C:120 BASE:130ヘリコプターは10秒でベースに戻るために17268 cm /秒で飛行する必要があるため、無効になることに注意してください。 テストデータセット AA:-164247,-378265,182,113 AB:-1494514,-385520,-25,80 AC:-744551,832058,-13,-123 AD:-930133,1598806,97,177 AE:-280777,-904936,-48,305 …