什么是计算机科学家对"幼稚实施"的意思最清楚的解释?我需要一个很好的清晰的例子来说明 - 理想情况下,即使是非技术人员 - 这种天真的实现在技术上可能是解决问题的有效方法,但实际上完全无法使用.
我试图完全远离计算机.询问听众他们如何在字典中找到条目.(正常的单词定义词典.)
天真的实现是从一开始就开始,看看第一个单词.哦,这不是我们要找的那个词 - 看下一个,等等.值得向听众指出他们可能甚至没有想到这样做的方式 - 我们足够聪明地打折它立即!然而,这是你能想到的最简单的方式.(问他们是否可以想到更简单的东西可能会很有趣,并检查他们是否真的理解为什么它比我们实际做的更简单.)
下一个实现(和一个非常好的实现)是从字典中间开始.我们正在寻找的这个词是在它之前还是之后?如果是之前,请转到开始和我们现在之间的中间页面 - 否则,转到我们现在和结束之间的页面,等等 - 二进制斩.
实际的人类实现是利用我们的信件知识快速到达"几乎正确的地方" - 如果我们看到"大象",那么我们就会知道它将"接近开始"可能约为1/5通过的方式.一旦我们到达E(我们可以进行非常非常简单的比较),我们就会找到EL等.
StackOverflow的杰夫阿特伍德有一个很好的例子,一个与洗牌相关的天真算法.
做到最简单,最不麻烦的方法。一个例子是选择排序。
在这种情况下,天真的确实不意味着不好或无法使用。这只是意味着不是特别好。
谨记乔恩·斯基特(Jon Skeet)的建议,您可以将选择排序描述为:
在列表中找到最高值并将其放在第一位
找到下一个最大值并将其添加到列表中
重复步骤2,直到用完列表
它很容易做到且易于理解,但不一定是最好的。