から要素からの和Xを検索する。これは私の問題である:4つのdifferens配列
所定数xおよび4つの配列A、B、C及びD、N個のそれぞれから、いくつかの数Aが存在するかどうかを決定Bからのb、Cからのc、およびDからのdは、x = a + b + c + dである。比較、追加、スワップがあります。最悪の場合の実行時間がn^4未満のこの問題を解決する効率的なアルゴリズムを設計します。
私はどこから始めたらいいのか分からず、助けていただければ幸いです!
から要素からの和Xを検索する。これは私の問題である:4つのdifferens配列
所定数xおよび4つの配列A、B、C及びD、N個のそれぞれから、いくつかの数Aが存在するかどうかを決定Bからのb、Cからのc、およびDからのdは、x = a + b + c + dである。比較、追加、スワップがあります。最悪の場合の実行時間がn^4未満のこの問題を解決する効率的なアルゴリズムを設計します。
私はどこから始めたらいいのか分からず、助けていただければ幸いです!
あなたは、次の手順を実行できますAとBとCとDについても同様との間のすべてのペアを加算することにより
はABは[ABI] + CD [CDI]、条件及びインクリメント/デクリメント指数をチェック調査ダイス
私たちはインデックスステップ4を行うたびにどちらかでインクリメントまたはデクリメント(またはアルゴリズムが停止した)ので、ステップ4では、最大2 *をやっているのn^2回(両方の配列全体の要素の数) - O(N^2)
したがって、すべてのすべてで、我々が持っているはO(n^2ログ(N))
右のアイデアですが...最小値を計算するのは 'O(n)'なので、マージフェーズは 'O(n^3)'です。優先度キューを使用すると 'O(n^2 log(n))'になります。これは、はるかに簡単なアプローチによっても達成されます。ステップ1をスキップします。線形配列として 'AB = A + B'を計算し、それをソートする。 「CD」と同じ。手順3と4を実行してください。 – user58697
あなたは最小限の権利について、私はそれを更新します。しかし、n^2サイズの配列をソートすることはO(n^2 log(n^2))であるので、優先度キューはO(n^2 log –
'log(n^2)= 2 log(n)'です。それは漸近定数にのみ影響します。 – user58697
あなたはそのためのすべての組み合わせを見つける必要があるのですか? – Pirate
x = a + b + c + dを満たすものだけをすべて検索する必要はありません。最悪の場合の実行時間がn^4未満のものがあれば、すべての組み合わせをチェックすると解を見つけることができます。私は彼らがそれを改善したいと思うと思う。 –