这些术语在我的数据结构教科书中使用过,但解释非常简洁且不清楚。我认为这与算法在每个计算阶段拥有多少知识有关。
(请不要链接到维基百科页面:我已经阅读过它,并且仍在寻找澄清。像我十二岁一样的解释和/或示例会更有帮助。)
维基百科
维基百科页面非常清楚:
在计算机科学中,在线算法是一种可以处理其
以串行方式逐个输入,即按照
输入被馈送到算法,而不需要整个输入
从一开始就可用。相比之下,给出了离线算法
从一开始就得到整个问题数据,并需要输出一个
解决当前问题的答案。 (例如选择排序
要求在对列表进行排序之前给出整个列表,而
插入排序则不然。)
让我对上面的内容进行扩展:
离线算法需要算法开始之前的所有信息。在维基百科的例子中,选择排序 http://en.wikipedia.org/wiki/Selection_sort is offline因为步骤 1 是Find the minimum value in the list
。为此,您需要提供整个列表 - 否则,你怎么可能知道最小值是多少?你不能。
相比之下,插入排序是online因为它不需要知道将排序什么值,并且在算法运行时请求信息。简而言之,它可以在每次迭代时获取新值。
还不清楚吗?
想想下面的例子(针对四岁的孩子!)。大卫要求你解决两个问题。
在第一个问题中,他说:
“我要给你两个不同质量的球,你需要
将它们同时从塔上扔下来......只是为了确保伽利略
是正确的。你不能使用手表,我们只能用眼睛观察。”
如果我只给你一个球,你可能会看着我,想知道你应该做什么。毕竟,指示非常清楚。在问题开始时你需要两个球。这是一offline算法。
对于第二个问题,大卫说
“好吧,进展顺利,但现在我需要你继续踢
球场上有几个球。”
我先把第一个球给你。你踢它。然后我给你第二个球,你踢它。我还可以给你第三个和第四个球(你甚至不知道我要把它们给你)。这是一个例子online算法。事实上,你可能整天都在踢球。
我希望这是清楚的:D
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)