TL; DR
各トリプレットの合計、各トリプレットの積、および各トリプレットのすべての可能な組み合わせの積の合計を比較します。
ニッティ・グリティ
代数の基本定理により、N次の多項式の場合、Nの根がなければなりません。
この事実を利用して、ゼロをゼロにしますa1, a2, and a3
。ここで、この多項式の係数を見つけます。
(x - a1) * (x - a2) * (x - a3)
(x^2 - (a1 + a2) * x + a1a2) * (x - a3)
x^3 - (a1 + a2) * x^2 + (a1a2) * x - a3 * x^2 + (a1a3 + a2a3) * x - a1a2a3
x^3 + (-1 * (a1 + a2 + a3)) * x^2 + (a1a2 + a1a3 + a2a3) * x + (-1 * a1a2a3)
2つの多項式が同等である場合、それらは同じルートでなければなりません(ここでもFTAによる)。したがって、必要なのは生成された多項式の係数を比較することだけです。
だから、もし、
(-1 * (a1 + a2 + a3) == (-1 * (b1 + b2 + b3))
---equivalently---
a1 + a2 + a3 == b1 + b2 + b3
そして
(a1a2 + a1a3 + a2a3) == (b1b2 + b1b3 + b2b3)
そして
-1 * a1a2a3 == -1 * b1b2b3
---equivalently---
a1a2a3 == b1b2b3
次に、トリプレットa1, a2, a3
を結論付けることができ、b1, b2, b3
同等です。
その価値はありますか?
実用的な観点から、これがOPで示されているブルートフォースチェックよりも実際に効率的であるかどうかを見てみましょう。
最初のチェック:合計と比較。これには、合計4つの追加と1つの等価性チェックが必要です。
チェック合計= 5; 累計= 5
2番目のチェック:製品、合計、および比較。これには、合計6つの乗算、合計4つの加算、および1つの等価性チェックが必要です。
チェックの合計= 11; 累計= 16
3番目のチェック:製品と比較。これには、合計4つの乗算と1つの等価性チェックが必要です。
チェック合計= 5; 累計= 21
2つの論理AND演算を追加すると、「生成された多項式アプローチの係数」の2項演算の総数は、次の条件のみを必要とします。
23の二項演算
総当たりチェックでは、合計で18の等価チェック、12の論理AND比較、5の論理OR比較が必要です。
35の二項演算
したがって、厳密に言えば、答えは「はい」です。「生成された多項式アプローチの係数」は実際により効率的です。@WJSが指摘するようにしかし、ブルートフォース手法はのためのより多くの機会を有する短絡し、したがって実行より効率的な数学的手法よりAS /。
完全な徹底のために
各トリプレットのすべての可能な組み合わせの積の合計のチェックをスキップすることはできません。これを省略した場合、失敗する例は無数にあります。検討(23, 32, 45)
して(24, 30, 46)
*:
23 + 32 + 45 = 100
24 + 30 + 46 = 100
23 * 32 * 45 = 33120
24 * 30 * 46 = 33120
それらは同等ではありませんが、同じ合計と積を与えます。ただし、すべての可能な組み合わせの積の合計が同じになるわけではありません。
23 * 32 + 23 * 45 + 32 * 45 = 3211
24 * 30 + 24 * 46 + 30 * 46 = 3204
*上記と同様の例をどのように導出するかが気になる場合は、まず長さ3の整数Mのすべての整数パーティションを生成し、それらの積を取り、重複を見つけ、ペアを選択します。