web-dev-qa-db-ja.com

「素朴な」アルゴリズムとは何ですか?「閉じた形式」のソリューションとは何ですか?

アルゴリズムを説明するときに使用される用語の意味について、いくつか質問があります。

まず、「単純な」アルゴリズムとはどういう意味ですか?これは、特定の問題に対する他のソリューションとどのように異なりますか?ソリューションは他にどのような形を取ることができますか?

第二に、私は「クローズド-フォーム」ソリューションを持つことへの多くの言及を聞いたことがあります。これが何を意味するのかはわかりませんが、繰り返し関係を解決しようとするとしばしば表示されます...

御時間ありがとうございます

26
user559142

A Naive algorithm is usually the most obvious solution when one is asked a problem. It may not be a smart algorithm but will probably get the job done (...eventually.)

例:ソートされた配列の要素を検索しようとしています。単純なアルゴリズムは、 線形検索 を使用することです。 Not-So Naive Solutionは、バイナリ検索を使用することです。

より良い例は、部分文字列検索の場合です Naive AlgorithmBoyer–MooreまたはKnuth–Morris–Prattアルゴリズムよりもはるかに効率的ではありません

Closed Form Solutionは、ループや関数などなしで即座に機能するシンプルなソリューションです。

例:1からnまでの整数の合計に対する反復アルゴリズム

s= 0
for i in 1 to n
s = s + i
end for
print s

閉じたフォーム(同じ問題の場合)

s = n * (n + 1 ) /2
45
st0le

ナイーブアルゴリズムは非常に単純なアルゴリズムであり、非常に単純なルールを備えています。時々頭に浮かぶ最初のもの。それは愚かで非常に遅いかもしれません、それは問題を解決しないかもしれません。場合によっては、それが最善の方法になることがあります。これは問題の例と "naive"アルゴリズムです:

問題:あなたは(2次元の)迷路にいます。あなたの道を見つけてください。 (意味: "[〜#〜] exit [〜#〜]"記号のあるスポットに:)

素朴なアルゴリズム1:歩行を開始し、出会うすべての交差点で適切なものを選択します(「EXIT」が見つかるまで)。

単純なアルゴリズム2:歩行を開始し、出会うすべての交差点でランダムなものを選択します(「EXIT」が見つかるまで)。

アルゴリズム1では、迷路から抜け出すことさえできません!

アルゴリズム2を使用すると、すべての迷路から抜け出すことができます(ただし、これを証明するのはかなり困難です)。

5
ypercubeᵀᴹ

閉じたフォームとは、1つの式をソリューションとして与えることができることを意味します。これは、反復/再帰なしにそれを解決します。ここで、そのような閉じた形を見つけることが常に可能であるとは限らないことに注意してください。

ナイーブとは、その意味するところです。問題に対する最初の愚かな解決策であり、それを解決しますが、時間/スペース効率はそれほど高くありません。実際に「素朴」と考えるのは、話者、状況、翌日の天気によって異なります。多くの場合、非常に洗練されたソリューション(ある種のトリックを使用する)を明白な実装と区別するために使用されます。

0
flolo