什么是“天真”算法,什么是“封闭式”解决方案?

问题描述 投票:25回答:3

关于描述算法时使用的术语的语义,我有几个问题。

首先,'天真'算法是什么意思?这与给定问题的其他解决方案有何不同?解决方案可采取哪些其他形式?

其次,我听到很多关于采用“封闭式”解决方案的建议。我不知道这意味着什么 - 但通常在尝试解决复发关系时出现...

谢谢你的时间

algorithm code-analysis
3个回答
44
投票

当一个人被问到问题时,朴素算法通常是最明显的解决方案。它可能不是一个聪明的算法,但可能会完成工作(......最终。)

例如。尝试搜索已排序数组中的元素。朴素算法将使用Linear Search。一个不那么天真的解决方案是使用二进制搜索。

一个更好的例子,在子串搜索的情况下,Naive Algorithm的效率远低于Boyer–MooreKnuth–Morris–Pratt算法

封闭式解决方案是一个简单的解决方案,无需任何循环,功能等即可立即工作。

例如:从1到n的整数之和的迭代算法

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

封闭表格(针对同一问题)

s = n * (n + 1 ) /2

5
投票

朴素算法是一种非常简单的算法,具有非常简单的规则。有时会想到第一个。它可能是愚蠢而且非常慢,甚至可能无法解决问题。它有时可能是最好的。这是一个问题和“天真”算法的例子:

问题:你处于一个(二维)迷宫中。找到出路。 (意思是:到一个带“退出”标志的地方:)

朴素算法1:开始步行并在您遇到的每个交叉路口中选择正确的算法(直到找到“退出”)。

朴素算法2:开始步行并在你遇到的每个交叉路口中选择一个随机算法(直到找到“退出”)。

算法1甚至不会让你离开一些迷宫!

算法2将使你脱离所有迷宫(尽管这很难证明)。


0
投票

封闭形式意味着您可以将一个表达式作为解决方案,它可以解决它而不会重现/递归。在这里应该注意的是,并不总是能找到这样一个封闭的形式。

天真意味着它所说的:解决问题的第一个愚蠢的解决方案,但可能不是非常节省时间/空间。人们真正认为“天真”取决于演讲者,背景和第二天的天气。它通常用于区分非常复杂的解决方案(使用某种技巧)和明显的实现。

© www.soinside.com 2019 - 2024. All rights reserved.