体積を与えて表面積を最小化するアルゴリズム


22

次のアルゴリズムタスクを検討してください。

入力:正の整数nとその素因数分解
Find:制限に従って、を最小化する正の整数x y + y z + x z x y z = nx,y,zxy+yz+xzxyz=n

この問題の複雑さは何ですか?多項式時間アルゴリズムはありますか?NPハードですか?


この問題は基本的に、体積がで寸法がすべて整数であるすべての直方体のうち、表面積が最小のものを求めます。n

この問題は、Dan Meyerによって、「1,000人の数学教師が解決できない数学問題」というタイトルで提起されました。これまでのところ、彼が働いていた数学教師の誰も、この問題に対する合理的なアルゴリズムを見つけていません。彼の文脈では、「合理的」の定義は少し不正確ですが、コンピューター科学者として、この問題の複雑さについてより正確な質問をすることができます。

明らかなアプローチは、すべての可能性を列挙することですが、これには指数関数的な時間がかかります。Dan Meyerのブログのコメンターは、残念ながらすべてが間違っていることが判明した多くの効率的な候補アルゴリズムを提案しています。マーティン・ストラウス、この問題が3パーティションを漠然と連想させるように思われると示唆していますが、それを減らすことはできません。x,y,z


また、コメント/回答で私が見たいくつかの誤解を解消させてください。

  • 2つの問題の目的関数が異なるため、各数値をそのべき乗に置き換えるだけでは、3分割から減らすことはできません。明らかな削減は単に機能しません。2 qq2q

  • 最適解のいずれピッキング含むことは真実ではない最も近い除数であるとに。私はこれが事実であると仮定している複数の人々を見ますが、実際、それは正しくありません。これは、Dan Meyerのブログ投稿で既に反証されています。たとえば、n = 68を検討します。\ sqrt [3] {68} \ approx 4、および4は68を除算するため、x、y、zの少なくとも1つは4であると考えるかもしれません。ただし、それは正しくありません。最適なソリューションはx = 2y = 2z = 17です。別の反例はn = 222\ sqrt [3] {222} \ approx 6ですが、最適なソリューションはnは3 x,y,zn N=683n3n=68、XYZ、X=2、Y=2、Z=17、N=22236834バツyzバツ=2y=2z=17n=222X=3722236バツ=37y=3z=2。(可能性があるすべてのためには事実であるn、最適なソリューションを作ることを含むの少なくとも一方においてx,y,z最小の除数のいずれかに等しくなるnより大きいn3 、または最大約数nより小さいよりn3 -私は今反例を持っていない- 。。しかし、あなたはこの文が真であると思われる場合、それは証明必要があるでしょうあなたは絶対にそれが真実であると仮定することはできません)

  • 「同じサイズにする」は、すべての場合に必ずしも最適な答えをもたらすとは限りません。反例については、Dan Meyerのブログ投稿を参照してください。または、少なくとも、「ほぼ同じサイズにする」というフレーズの合理的な解釈については、この戦略が実際には最適ではないことを示す反例があります。その種の戦略を試してみたい場合は、主張を正確に述べてから、慎重な数学的証明を提供してください。x,y,z

  • の実行時間は多項式ではありません。この問題をPにするには、実行時間は入力の長さの多項式でなければなりません。入力の長さのようなものです、ない。明白なブルートフォースアルゴリズムは、または時間で実行することができますが、それは指数関数的であるため、指数関数的アルゴリズムとしてカウントされます。したがって、それは役に立ちません。O(n3)lgnnO(n3)O(n2)lgn


1
面白い。私の素朴なアプローチは、「ほぼ同じサイズにする」ことであり、立方体は与えられた体積に対して最小の表面積を持つ直方体であるという考えを一般化します。それはうまくいくでしょうか?もしそうなら:私はそれを効率的に行う方法を見ていませんが、おそらく達成しやすい削減がありますか?x,y,z
G.バッハ

2
適切な素数を生成する方法が必要なので、削減は悪夢になります。期待できる最善の方法は、ディリクレの定理のようなものを使用して適切な素数を生成するランダムなリダクションです。
トムファンデルザンデン

1
G.Bach @、私はブログの記事は、(例えば、それぞれで始まる静脈のヒューリスティックの束を考えてだと思うに最も近い整数に3 x,y,zを使用して少し調整します)、それぞれの明示的な反例を示します。しかし、おそらくあなたは彼らが考慮していないアルゴリズムを持っていますか?n3
DW

3
oeis.org/A075777はアルゴリズムを主張しているようですが、間違っているようです(n = 1332は6,6,37ではなく9,4,37を生成します)
スコットファーラー

1
これは役に立つかもしれない観察結果です。与えられた、最適のy zは実際には「素朴な夢」を満たしてください:彼らはの要因のペアでなければなりませんN / Xに最も近いxy,zn/x。(これは簡単に証明できます。)最適解xyzでは、この条件は3つの変数すべてを同時に保持する必要があります。xyzに対応するペアなどです。zには、最適なペアであるxyが1つしかありません。残念ながら、(1)この条件は、最適なトリプルを一意に識別しません。(2)対応するペアを高速に見つける方法がわかりません。n/xx,y,zx,yzzx,y
usul

回答:


1

「キューブルートに近い除数を選択」アルゴリズムの修正版を以下に示します。それでも多くのケースをブルートフォースする必要があるので、すべてのケースの列挙に対してどれだけのスピード向上が得られるかはわかりません。ただし、少なくとも正確である必要があると考えているため、OEISのアルゴリズム(誤った結果を生成したアルゴリズム)の修正として提出しました。

体積nが与えられた直角プリズムの(s1、s2、s3)および表面積を見つけるアルゴリズムは次のとおりです。

  1. nが与えられたら、キューブルートを見つけます。
  2. そのキューブルートの天井に初期値整数s1を設定します。
  3. s1がnの約数であるかどうかをテストし、そうでない場合はs1を1減らします。
  4. 除数s1が見つかった場合、初期s2を(n / s1)の平方根の上限に設定します。
  5. 次に、s2がn / s1の約数であるかどうかをテストし、そうでない場合はs2を1減らします。
  6. 除数s2が見つかると、s3はn /(s1 * s2)に設定されます。
  7. 現在の表面積は、2 *(s1 * s2 + s1 * s3 + s2 * s3)で計算されます。
  8. 現在のSAは現在の最小値と比較されます。最初の表面積が計算された場合、minSAとして保存されます。最初のテストの後、現在のSAがminSAより小さいかどうかをテストし、小さい場合はminSAに保存します。

このアルゴリズムは、トリプル(s1、s2、s3)の一部を列挙しますが、キューブルートの下で除数をテストするだけです。(3つの除数すべてがキューブルートの上にあるとは限らないため)。同様に、s2はn / s1の平方根の下でn / s1の約数をテストするだけでよく、両方の約数が平方根の上にあることはありません)

ステップ3の注:キューブのルートが除数の場合、nはキューブであり、ボックス(s1、s1、s1)からの最小表面積6 * s1 ^ 2で停止できます。

Python:

import math
def minSArectprism(n):
    s1_0 = int(math.ceil(n ** (1 / 3.0))) 
    minSA=-1
    s1 = s1_0
    while s1>=1:
        while n % s1 > 0:  
            s1 = s1 - 1
        s1quot = int(n/s1) 
        s2_0 = int(math.ceil(math.sqrt(n/s1)))
        s2 = s2_0
        while s2>=1:
            while s1quot % s2 > 0:
                s2 = s2 - 1
            s3 = int(n / (s1 * s2))  
            SA = 2*(s1*s2 + s1*s3 + s2*s3)  
            if minSA==-1:
                minSA=SA
            else:
                if SA<minSA:
                    minSA=SA
            s2 = s2 - 1
        s1 = s1 - 1    
    return minSA

アルゴリズムには指数時間がかかります。各ループが調べ可能性のある候補、実行している時間があるので、O 3 n3ではない多項式時間、指数関数的です。したがって、このアルゴリズムは質問に答えません。(質問で指数時間アルゴリズムについて既に言及しました。)On32=On2/3
DW

うーん、yはnの立方根(n = 1332など)に限定されません。最終的にs1 = 2をテストします。つまり、s2は1332/2〜= 26の平方根の下になります。実際(2,18、 37)立方根の上のyとzでテストされます。
スコットファラー

@ScottFarrar、はい、知っています。複雑さの分析のすべての面倒な詳細は含めませんでした。単一のコメントにはスペースがありませんでした。あなたが血なまぐさい詳細を含めれば、私が引用した実行時間を得ることがわかると思います。あなたは私を信頼することができます:-)、または私たちの参照の質問を読んでそれらの厄介な詳細についてもっと学んでください。いずれにせよ、あなたが内側のループを削除しても、外側のループはまだありませんの反復、あなたのアルゴリズムの実行中の時間は、少なくともあるので、Ω nは1 / 3 -すなわち、それは確かにあります指数関数的。Θ(n1/3)Ω(n1/3)
DW

0

素数の分解が与えられない場合、問題はもちろん複雑さの因数分解に関連するでしょう。要因が与えられ、すべての素因数のログを取ると、この問題はパーティション合計の平均からの偏差を最小化することとほぼ同じように見えます(運動、おそらく分析的または実験的に、問題が保持されます)。k

これは3方向の場合です(パーティションの合計は)。2方向のケースは広範囲に研究されており、NPが難しい(1 ref から)。(この2ウェイケースは、既知のNP完全2ウェイと全く同じではないパーティション問題等しいパーティションの合計注パーティション和と0偏差を意味している。パーティションの合計が等しい。その逆)2 番目の REF研究3-ウェイとnウェイの分割、部分的に経験的に、2ウェイの場合ほど多くの研究はありません。log(x),log(y),log(z)n


この答えは役に立たず、質問に答えません。1.推測ではなく、証拠または証拠を探しています。偏差を最小化することが最適なソリューションをもたらすという証拠はありません。それが真実であったとしても、質問に答えることはありません。偏差を最小化する複雑さを教えてくれません。2.最初のリファレンスは、2パーティションについてです。2パーティションのリファレンスを参照しても役に立ちません。なぜ私の問題が3パーティション(または2パーティション)だけではないのかという質問ですでに説明しました。私が尋ねなかった問題の変形に関する論文は役に立ちません。
DW

平均からの絶対偏差を最小化する必要があるという主張の反例:。その後、1 4 17の絶対偏差得2.85342可能な最低絶対偏差です。しかし2 2 17は正しい(最適)溶液であり、より小さな表面積を有します。[平均からの絶対偏差によって、私は特に意味する| ログX - μ | + | ログY - μ | + |n=681,4,172.853422,2,17(ここで、 μ = log x + log y + log z / 3)。]|log(x)μ|+|log(y)μ|+|log(z)μ|μ=(log(x)+log(y)+log(z))/3
DW

OK!このアルゴリズムが正しいという主張は決してありませんでした。コメントのいくつかの例と他の提案の検査に基づいていました。これは1つの反例にすぎません(修正された投稿で最小化偏差法に欠陥があることを示しました)。このアルゴリズムが正しいソリューションを提供する「頻度」の問題は、正しい最適化メトリックへの手がかりを与える可能性があるため興味深いものです。このアルゴリズムが「しばしば」正しい答えを与えると推測します。2-way refは、ウィキペディアなどの典型的な正確なバージョンとは異なる問題の偏差バージョンを示すことです
vzn

Lakatosの証拠と反論
-vzn

0

編集

高速アルゴリズムが存在する可能性が低い理由の非公式な議論は次のとおりです。 その文は変更されていませんが、次のセクションの正式な証明のように構造化されすぎていて、議論がそのバグに追いついていたので、私はここにあったものを取り出しましたDWは親切に私に指摘してくれました。代わりに、その背後にある直観を表現してみましょう。

N

乗算と除算の代わりに加算と減算など、同じステップを別の代数に変換するとどうなりますか?アルゴリズムは、等しい製品が存在する場合、その製品が等しい3つのパーティションを検出することを知っています(下の補題を参照)。したがって、同じ手法を加法グループに変換できれば、合計が等しい3つのパーティションを見つけるか、そのようなパーティションが存在しないと判断できます。つまり、多項式時間で3分割を解くことができます。それはあまり妥当ではありません。

では、なぜこのようなアルゴリズムは乗算に対して機能し、加算に対して失敗するのでしょうか?考えられる理由の1つは、乗算ではすべての整数に一意の素因数分解がありますが、加算では循環的であることです。もう1つは、乗算により加算でリングが形成されるため、別の演算セットを使用できることです。もう1つは、非プリムで機能するようにアルゴリズムを一般化する必要があり、その素数に依存する可能性があることです。DWが指摘した1つは、特定の変換方法によって入力のサイズが指数関数的に増加する可能性があるということです。そして、おそらくP = NPです。

しかし、それらが高速アルゴリズムを機能させる抜け穴である場合、どこに努力を集中すべきかを示唆しているので、知ることはまだ有用だと思います。NP完全問題に適用しようとすると壊れる何かを探しているはずです。他の代数に一般化するアプローチは、おそらく間違ったツリーをbarえることです。しかし、乗算はそれが機能するのに十分な差はないのではないかと思いますが、それは単なる予感です。

補題

m=N3(am,bm,mab)ab(ab+1a+1b)m2a=b=1

xyz=N

(am)(bm)+(am)(mab)+(bm)(mab)=abm2+m2b+m2a=(ab+1a+1b)m2

f(a,b)=ab+1a+1bδfδa=b1a2 and δfδb=a1b2. The critical point where these partial derivatives are zero comes where a=b2,b=a2, and therefore, since a and b must be real numbers greater than 0, a=b=1. We see from the matrix of second-order partial derivatives that this is a global minimum.

My immediate motivation to prove this was to fill in a hand wave in my proof above that, if a perfect-cube solution exists, it is optimal. However, this formula could be useful for pruning the search tree.

Assorted Thoughts

I don’t see any obvious symmetry except the interchangeability of x, y and z, which only gives us at best a constant factor of 6. We do have some speedups for the 2-partition that basically say we’d want both terms to be as close to each other as possible, but I don’t immediately see an application to this problem.

Off the top of my head, simply taking the log of all the numbers immediately reduces this to a classic 3-partition problem using addition, or equivalently, taking some number to the power of the numbers in any 3-partition addition problem turns it into a multiplication problem such as this. That implies this problem should not be any easier. We do have here the prime factorization, whereas that factorization would not be prime, but does that help us?

Graphically, the surface xyz = 0 would look like the union of the xy-, yz- and xz-planes, and for any positive n, the equation would look like y = n/xz, so each slice along a coordinate plane would be a hyperbola. We can generally say that the quantity we’re trying to minimize is lowest at the origin and grows most rapidly along the line where x = y = z. If we can search only along this manifold, we might be able to reduce to a two-dimensional problem.


If x+y+z=n, 2^n=2^(x+y+z)=2^x*2^y*2^z, which is an instance of this problem minus the restriction that the inputs are a prime decomposition of the product. They would instead all be powers of two.
Davislor

It’s true that the weight to minimize will be different, but if x=y=z in the original problem, won’t x'y'+x'z'+y'z' be minimized in the corresponding problem where each w is replaced by w'=2^w, meaning that if a solution to the original problem exists, the reduction would find it? We might get a spurious solution from the transformed problem, but we can detect that in linear time when converting back by verifying the sums.
Davislor

as above comment by GBach suggests, maximizing xy+yz+xz subject to xyz=n likely happens when x,y,z are "close together" or have low deviation (from average). this is not necessarily the same as "close to n3". the numerical examples given by Meyer on his page appear to fit this pattern.
vzn

@vzn: We’re trying to minimize surface area, not maximize it. If the 3-partition problem has a solution, that translates into a modified box-dimension problem where the solution is a perfect cube. A hypothetical poly-time algorithm would find the factors of the sides of that cube, and we could then translate it back into the original domain, while checking for spurious solutions, in linear time. That suggests an algorithm for a slightly-relaxed problem could serve as an oracle for a hard problem, making it unlikely a better-than-exponential algorithm exists.
Davislor

? am not disagreeing with you. arent we saying the same thing? plz drop by Computer Science Chat to untangle/ sort this out further. also cant follow @D.W.s claim that the logarithmic transformation doesnt work, can you? am using some of your (seemingly on-target) analysis as basis for my own answer.
vzn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.