単純な方法とは何ですか?


回答:


15

正確な意味を持つ専門用語ではなく、単に「ナイーブ」という英単語です。コンピュータサイエンスのコンテキストでは、この単語は通常、「最初に考えられることの1つですが、それほど明白ではないが重要な事実を理解していない」というようなものを意味します。

たとえば、フィボナッチ数列の定義がであることがわかっている場合、「単純な」実装はなるFb=Fb1+Fb2

def Fib(n):
  if n <= 1:
    return 1
  else:
    return Fib(n-1) + Fib(n-2)

どうしたの?つまり、たとえばを呼び出すと、Fib(7)同じ呼び出しを何度も何度も繰り返すことになりますFib(4)(たとえば、Fib(7)呼び出しFib(6)Fib(5)Fib(6)呼び出しFib(5)Fib(4)、および両方ともFib(5)呼び出しFib(4)となどFib(3))。

したがって、ここでは、単純なソリューションとは対照的に、より「洗練された」ソリューションが動的プログラミングのようになり、すべての余分な計算を回避します。



0

素朴な実装は、単純明快で可能な限り複雑ではないソリューションです。

場合によっては、フィボナッチ関数の単純な実装(線形ではなく指数関数)のように、空間または時間の動作が適切でない場合があります。

しかし、多くの場合、ほとんどの場合、問題なく機能します。だから、素朴なアプローチには何も問題はありません、あなたはそれを3つのステップとして行うことができます:

「Make it work」(リクエストに応じて)->「Make it working / beautiful」(リファクタリング、より読みやすく)->「Make it fast」(パフォーマンスの最適化)

Javaのような「オーバーエンジニアリング」の伝統を持つプログラミング言語については、いつでも「最も簡単な解決策」をお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.