2011-09-08 9 views
1

私はデータの入って来るストリームと一連の変換を持っています。これらの変換はストリームにさまざまな組み合わせで適用して数値の出力値を得ることができます。私は変換のサブセットがその数を最小限にするのを見つける必要があります。入力データを変化させて出力値を最小にするアルゴリズム

データは、メタデータが付いた番号の順序付きリストです。

変換は準リニアです。これらは技術的に実行可能なTuring-complete言語のコードですが、常に停止する制限されたサブセットに属することが知られており、算術演算で入力番号を出力番号に変換し、そのフローは添付されたメタデータに依存します。さらに、操作はほぼすべて時間的に直線的です(しかし、それらは拘束されていません - これは最適化のための場所かもしれませんが、制限はありません)。

基本的には、(nはは、変換の数である)2つのN工程を含む強引なアプローチが働くだろうが、それははなはだ無効である、と私は、これは生産における規模ではないだろう、ほぼ絶対に確信しています。このタスクをより迅速に解決するアルゴリズムはありますか?

+0

nの範囲は何ですか? – Timmy

+0

実行時に変換の「コード」にアクセスできますか?言い換えれば、あなたは変換をブラックボックス関数として与えられただけですか、それともあなたが評価できる何らかの式の形式ですか?変換を分析することができれば、どの機能をどのように構成できますか? – StriplingWarrior

+0

@Timmy、おそらく最大50件ですが、これらの検索を非常に多くする必要があるので、スピードが重要です。 – whitequark

答えて

1

ほとんどすべての演算が線形の場合、ヒューリスティックとして線形計画を使用できませんか?

おそらく、いくつかの変換が特に遅いかどうかをチェックしますが、その場合は引き続きブルートフォースに切り替えることができます。

最適な出力を見つける必要はありますか?

+0

リニアプログラミングは私にはあまりにも制限があります。変換フォーマットに関する質問のコメントを参照し、2つのアルゴリズム(リニアおよびブルートフォースのアルゴリズム)を実装するのは、コストがかかりエラーを起こしやすいタスクです。私はまだそれを使用するかもしれませんが、よりよい解決策が存在するかどうかを知りたいと思います。 – whitequark

+0

はい、出力が最適である必要があります。 – whitequark

+0

ジオファントまたは非リナの最適化に移行する場合、複雑さはかなり速くなります。だから私はあなたがNP完全な問題を抱えているかどうかを決定する要因をチェックします。 – DaveFar

関連する問題