我如何解释"天真的实现"是什么?

afe*_*par 32 language-agnostic complexity-theory

什么是计算机科学家对"幼稚实施"的意思最清楚的解释?我需要一个很好的清晰的例子来说明 - 理想情况下,即使是非技术人员 - 这种天真的实现在技术上可能是解决问题的有效方法,但实际上完全无法使用.

Jon*_*eet 72

我试图完全远离计算机.询问听众他们如何在字典中找到条目.(正常的单词定义词典.)

天真的实现是从一开始就开始,看看第一个单词.哦,这不是我们要找的那个词 - 看下一个,等等.值得向听众指出他们可能甚至没有想到这样做的方式 - 我们足够聪明地打折它立即!然而,这是你能想到的最简单的方式.(问他们是否可以想到更简单的东西可能会很有趣,并检查他们是否真的理解为什么它比我们实际做的更简单.)

下一个实现(和一个非常好的实现)是从字典中间开始.我们正在寻找的这个词是在它之前还是之后?如果是之前,请转到开始和我们现在之间的中间页面 - 否则,转到我们现在和结束之间的页面,等等 - 二进制斩.

实际的人类实现是利用我们的信件知识快速到达"几乎正确的地方" - 如果我们看到"大象",那么我们就会知道它将"接近开始"可能约为1/5通过的方式.一旦我们到达E(我们可以进行非常非常简单的比较),我们就会找到EL等.

  • 这里也有机会解释非天真算法的局限性.如果列表没有排序,"智能"方法将无法正常工作,但天真的方法将...好回答,顺便说一句. (3认同)
  • 咩.一个天真的实现通常是直观的或首先想到的.正如你自己所说,你的类比在这里失败了. (2认同)

Gar*_*eth 7

StackOverflow的杰夫阿特伍德有一个很好的例子,一个与洗牌相关的天真算法.


dmc*_*kee 5

做到最简单,最不麻烦的方法。一个例子是选择排序。

在这种情况下,天真的确实意味着不好或无法使用。这只是意味着不是特别好。


谨记乔恩·斯基特(Jon Skeet)的建议,您可以将选择排序描述为:

  1. 在列表中找到最高值并将其放在第一位
  2. 找到下一个最大值并将其添加到列表中
  3. 重复步骤2,直到用完列表

它很容易做到且易于理解,但不一定是最好的。


Jos*_*hua 0

对超过 100,000,000 个条目进行冒泡排序。