平方根の合計が整数より小さいことを見つけるための多項式時間アルゴリズムはありますか?


7

与えられた:のリスト整数および整数。バツ1バツ2バツk

決定しますです?バツ1+バツ2バツk

質問:上記の問題に対する多項式時間アルゴリズムはありますか?はいの場合、アルゴリズムを指定します。そうでなければそれを証明します。

回答:


11

Davidの答えが明確でない場合:10,000の整数があるとしましょう バツおよびk = 1,000,000。以下の浮動小数点演算を使用して、n個の整数の平方根を簡単に追加できます。O。結果が999,999.537または1,000,000.214である場合は、答えがあります。結果が1,000,000に近い場合は、浮動小数点の丸めエラーを非常に注意深く分析できます。合計が999,999.999999999であれば、おそらく答えが得られます。合計がkに近すぎる場合は、より高い精度で演算を実行できます。そのため、正確な実装に応じて定数cがあり、正しい答えを次の場所で見つけることができますc すべてのケースの大多数の時間(nが本当に大きい場合、含まれる数が膨大になるため少し時間がかかりますが、いずれにしても、寿命は寿命より長くなります)。

問題は、kに非常に近い値になる平方根の合計があることです。たとえば、f(x)=選択肢の数を定義できますバツ 平方根の合計が≤xになるように、2f '(k)* epsの選択肢を期待します バツしたがって、平方根の合計はkからeps以内です。平方根の合計がeps≥1 / 2f '(k)の場合、kからepsの範囲内にある1つの組み合わせを期待します。このepsの推定値を計算し、正しい答えを得るために必要な計算の精度と、この精度で結果を得るのにかかる時間を把握できます。これは、epsがどの程度小さいかによって、多項式である場合とそうでない場合があります。

しかし、それはもっと悪いことです。私が上で言ったのは、合計がkにどれだけ近いと期待するかです。しかし、偶然ではもっと近いかもしれません。それがひどく近づくことはできないことを証明することは非常に、非常に難しいでしょう。したがって、ほとんどの場合(> 99.9999999999%)は線形時間で答えが見つかる場合があり、すべての場合(またはそうでない場合)で多項式時間で答えが見つかると予想されますが、いずれの場合も(簡単に)はできません。これを証明し、誰もまだそうしていません。

合計を計算せずに質問に答えることできるかもしれませんが、Davidの言うところによると、多項式時間でそれを行う方法も誰も示していません。

平方根の合計が整数にどれほど近づくと予想されるかを誰かが計算した場合は、私は喜んでお知らせします。ところで。整数の平方根の合計は、すべての平方根が整数である場合にのみ整数に等しいため、簡単に除外できます。

PS。概算:それぞれ1,000,000未満の整数の10,000平方根を追加するとします。それはの平方根です1012 整数であり、それらの順序は関係がないため、約 101210000/10000合計。それ以上です1080000合計。したがって、これらの合計の1つが1080000 整数までの距離。80,000桁を超える精度の計算が必要です。

PS。与えられた整数a、b、c、d、k、およびIEEE 754倍精度演算を使用して、sqrt(a)+ sqrt(b)+ sqrt(c)+ sqrt(d)<kの最初のケースは、数学的に正しいものは、a、b、c、d = 4640、5397、3001、3222、およびk = 254の場合です。この場合、合計は、数学的な結果が254未満の場合、厳密に254として計算されます。浮動小数点の結果は整数に等しいため、切り上げられたのか切り捨てられたのかわからないため、この場合、結果は信頼されるべきではありません。

a、b、c、d = 6222、8801、14431、8132、およびk = 383の場合、計算された合計はkより大きく、数学的な結果は小さくなります。14431が3番目の番号でなければならないことを除いて、番号の順序は重要ではありません。

(sqrt(a)+ sqrt(b))+(sqrt(c)+ sqrt(d))(括弧が追加されていることに注意)を追加して演算の順序を変更すると、丸め誤差が変更され、減少する傾向があります、次に、a、b、c、d = 12558、407、16501、18308およびk = 396は、計算された合計がkより大きく、数学的な結果が小さい最初のケースです。


19

平方根の問題の複雑さは、長年にわたる未解決の問題です。問題は、平方根を効率的に計算する方法はわかっていますが、次のことを判断できるかどうかはわからないということです。Σバツk 各平方根のビットの多項式数のみを評価する。

質問で提案するアルゴリズムの特定の問題は、「各値の平方根を計算する」という語句が十分に指定されていないことです。非合理的な平方根(たとえば、2)は、無限のビット数を計算する必要があるため、使用している精度を示す必要があります。


適切な数論者はこの問題を真剣に検討しましたか?(私はそうだと思います。)ディオファントス近似と呼ばれるものには長年の研究があり、| x-(p / q)|と言う結果を証明しています。>特定の関数fと任意の非有理代数xおよび任意の有理数p / qのf(q)。xの根である多項式の次数がわかっている場合、より強い結果が得られます。数の継続的な分数展開(平方根の場合は簡単です)は通常重要です。(注:私は数論者ではありません。)
Alexander Woo 2017

@AlexanderWooこれは、計算数論と呼ばれるものの重大な未解決の問題です。ディオファントス近似が人々にこれを見られなかったとしたら、それは驚くべきことです。
デビッドリチャービー2017

このウェブサイトcs.smith.edu/~jorourke/TOPP/P33.htmlには、関連する問題に関する多くの情報があります:平方根の合計が別の平方根より大きいか大きいか。これには、平方根の合計間の最小の差に関する上限と下限の結果があります。
gnasher729 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.