2011-07-14 7 views
3

この問題はarchived puzzle from ITA Softwareからです。パズルが引退しているので、議論するのは大丈夫だと思います。"Sling Blade Runner":オーバーラップする映画タイトルのチェーンを見つけるための効率的なアルゴリズム?

"Dead Poet's Societyの生きたままもう一度死ぬ"のような重複映画のチェーンはどれくらいの長さですか?

私はそのようなパズルを解決するための最良のアプローチ/アルゴリズムが何であるか知っています。

+0

元の質問には、ここでは言及していないより微妙な内容があります。「Mockingbirdを抹消するライセンス」のように複数単語の重複が許されています。効率性と最適性の合理的な妥協点を追求することで、常に最大のタイトルを生むとは限りません。 –

答えて

5

これはグラフの問題です。

まずあなたは、各頂点が映画を表し、グラフを構築します。映画が映画bが始まる単語と同じ単語の終わりであれば、エッジ(a、b)があります。

今、あなたは、グラフ内の最長パスを見つけたいです。これはNP完全な問題であるため、多項式解はありません。 (wikipedia

+0

これは有向グラフですが、非周期的であれば、多項式時間で解くことができます。 – Patrick

+0

真が、それはそれは、サイクルが含まれているならば、最長チェーンが無限大であるので、プログラムは多項式時間を維持しながら、最長パスを検索する前に、ベルマン・フォードを使用してサイクルを確認することができ、明らかに –

+0

が、この特定のケースでは、非環式ではありません。 – Patrick

関連する問題