次のアルゴリズムに関する質問はオンラインでは見つかりましたが、効率的な解決策は見つかりませんでした。
Googleのインタビューで尋ねられました。行グループを効率的にプロットするアルゴリズム
プロットする線のシーケンス(各行に開始点と終了点があります)を指定すると、
は最小限の時間で線をプロットするアルゴリズムを提供します。
開始点から線をプロットする必要はありません。
グラフの各ノードをノードとして扱うアプローチが1つありました。
2ノード間のエッジは、第1ラインの終了ノード
と第2ラインの開始ノードとの間の距離である。その後、最小スパニングツリーを計算すると、
という最適な回答が得られます。
しかし、
行が一方向にのみプロットされていると仮定しているため、これが常に最適な解決策を示しているかどうかはわかりません。
このような問題をどのように解決できるかについてのヒントはありますか?
「プロットする」という意味を明確にする必要があります。私の考えでは、描画線はそれらをラスタに書き込んだ後、そのラスタをフレームバッファに送ります。私がこれを好きなら、線を描くのに必要な時間は、線の長さと線の数に依存しますが、線の印刷順序とは無関係です。 さらに数学的に言えば、ソリューションSのコストを示し、最小化したいコスト関数 'C(S)'を提供する必要があります。 –
@Giulo - 私の推測はペンプロッターです。線の順序は、ペンを線の終点から次の線の始点に移動する時間があるために重要になります。 "b/w"は "between"を意味すると仮定すると、これは上記のグラフが各エッジに格納されているため、最小スパニングツリーはライン間描画の最小間隔を選択しています。 – Steve314
@Aman - 私は、スパニングツリーの最小単位が* undirected *グラフに基づいていることは確信しています。つまり、どちらの方向のトラバーサルも同じように許可されます。私は、木の中で頂点が奇妙な数の辺を引き出していることをもっと心配したいと思います。[セブンブリッジズオブケーニヒスバーグ](https://en.wikipedia.org/wiki/Seven_Bridges_of_K%C3%B6nigsberg# Euler.27s_analysis)なぜその問題か。申し訳ありません - それを修正するために何をすべきかわかりませんが、[Napalidon](http://stackoverflow.com/a/18523742/180247)がDijkstraについて正しいことを除いて - これは経路探索のようなものです問題。 – Steve314