18

私はこの問題の解決策を探すのにかなり長い時間を費やしました。たくさんのハッチングされた三角形を描き、単純なケースで三角形を数え、ある種のパターンを探しました。残念ながら、私は壁にぶつかりました。私のプログラミング/数学のスキルは、この問題の前提条件を満たしていなかったと確信しています。

そこで、フォーラムにアクセスするための解決策をオンラインで見つけました。私はほとんどの方法をまったく理解していませんでした、そしていくつかはただ複雑すぎるように見えました。

誰かが私にこの問題の理解を与えることができますか?ここにある方法の1つ:http://www.math.uni-bielefeld.de/~sillke/SEQUENCES/grid-triangles(問題C)では、単一の関数を使用できました。

彼らはどのようにしてその解決策を思いついたのですか?この時点で、この興味深い問題の背後にある概念のいくつかを本当に理解したいと思います。解決策を探すことがオイラー精神の一部ではなかったことは知っていますが、とにかくこの問題を解決できなかったと確信しています。

4

2 に答える 2

4

これは本質的に、物事の組み合わせを数える技術である数え上げの組み合わせ論における問題です。それは美しい主題ですが、あなたが与えた参考文献の忍者のトリックを理解する前に、おそらくウォーミングアップが必要です。

一方、問題の解決策スレッドのコメントは、多くの人が力ずくのアプローチを使用して問題を解決したことを示しています。最も一般的なトリックの1つは、図の3つの線の可能なすべての組み合わせを取得し、それらが最大の三角形の内側にある三角形を生成するかどうかを確認することです。

線が6方向のいずれかにあることに注意することで、検索スペースを大幅に削減できます。平行な2本の線を含む線の組み合わせでは三角形が生成されないため、線のトリプルを反復処理して、トリプルの各線の方向を変えることができます。

3本の線が与えられたら、それらの交点を計算します。3つの可能性があります1)線は一致しています-それらはすべて共通の点で交差します2)2本の線は三角形の外側の点で交差します3)3つの交差点はすべて別個であり、それらはすべて外側の三角形の中にあります

条件(3)を満たすコンボを数えるだけで完了です。テストする必要のあるラインコンボの数はO(n 3)であり、これは禁止ではありません。

編集1:あなたの質問を読み直すと、ブルートフォースアプローチの概要よりも、組み合わせ論の解決策/公式の説明を得ることに興味があるかもしれないという印象を受けます。その場合は、そのように言ってください。この回答を削除します。しかし、その場合の質問はこのサイトには適さないと思います。

EDIT2:BillDalyらによる組み合わせ論的解決策も参照してください。数学的には他のものより少し穏やかです。

于 2010-05-14T18:46:49.440 に答える
0

プロジェクトオイラーのこの問題を解決していませんそして、あなたが提供した質問と解決策から外れています。単一関数の場合、提示された方法論は最終的に単純なパターン検索でした。ソルバーは、交差から存在する三角形のタイプに基づいて、提示された質問を 3 つの部分に分割しました。これは、この種の問題に対するかなり標準的なアプローチであり、より簡単に解決できるように、大きなパターンを小さなパターンに分割します。私が推測できる三角形のさまざまな形を表現するために使用される関数は、非常に鋭いパターン発見心または数論/幾何学のいずれかで生成された. また、この説明と私の知識の範囲を超えています。この問題はプログラミングとは何の関係もありません。それは基本的に完全に数学です。

于 2010-05-14T17:35:01.843 に答える