Fibonacci numbers已经成为计算机科学学生递归的一个受欢迎的介绍,并且有一个强烈的论据,即它们在自然界中存在。由于这些原因,我们很多人都熟悉它们。
它们也存在于其他地方的计算机科学中;在基于序列的令人惊讶的有效数据结构和算法中。
有两个主要的例子可以想到:
这些数字的某些特殊属性是否比其他数字序列更具优势?这是空间质量吗?他们还有其他可能的应用程序吗?
我觉得很奇怪,因为在其他递归问题中有很多自然数字序列,但我从未见过Catalan堆。
答案 0 :(得分:68)
Fibonacci数字具有各种非常好的数学特性,使它们在计算机科学方面表现出色。这里有几个:
我确信除此之外还有更多原因,但我确信其中一些原因是主要因素。希望这有帮助!
答案 1 :(得分:4)
Greatest Common Divisor是另一种魔力;有太多魔法,请参阅this。但Fibonacci数字很容易计算;它也有一个特定的名称。例如,自然数1,2,3,4,5有太多逻辑;所有素数都在其中; 1..n的总和是可计算的,每个人都可以与其他人一起生产,......但没有人照顾它们:)
我忘了它的一个重要事项是Golden Ratio,它在现实生活中具有非常重要的影响(例如你喜欢宽屏显示器)。
答案 2 :(得分:1)
如果你有一个可以用一个简单而简洁的方法成功解释的算法,在CS和自然界中有可以理解的例子,那么有人能提出哪种更好的教学工具?
答案 3 :(得分:1)
Fibonacci序列确实在自然界/生命中无处不在。它们可用于模拟动物种群的增长,植物细胞生长,雪花形状,植物形状,密码学,当然还有计算机科学。我听说它被称为自然的DNA模式。
斐波那契堆已经被提及;堆中每个节点的子节点数最多为log(n)。此外,以m个子节点开始节点的子树至少是(m + 2)个斐波纳契数。
像使用节点和超级节点系统的协议一样使用斐波纳契来决定何时需要新的超级节点以及它将管理多少个子节点。他们根据斐波纳契螺旋(黄金比率)进行节点管理。请参见下面的照片,如何拆分/合并节点(从一个大的广场划分为较小的广场,反之亦然)。见照片:http://smartpei.typepad.com/.a/6a00d83451db7969e20115704556bd970b-pi自然界中出现的一些事件
http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/sneezewort.GIF
http://img.blogster.com/view/anacoana/post-uploads/finger.gif
http://jwilson.coe.uga.edu/EMAT6680/Simmons/6690Pictures/pinecone3yellow.gif
答案 4 :(得分:0)
我认为没有确定的答案,但有一种可能性是将一组S分成两个分区S1和S2的操作,其中一个分区然后被分成子分区S11和S12,其中一个分区具有与S2相同的大小 - 是许多算法的可能方法,有时可以用数字描述为Fibonacci序列。
答案 5 :(得分:0)
让我为您添加另一个数据结构:Fibonacci树。它们很有趣,因为只需添加以前的节点就可以计算树中的下一个位置:
http://xw2k.nist.gov/dads/html/fibonacciTree.html
它与在AVL树上的templatetypedef的讨论很好地结合(AVL树在最坏的情况下可能具有斐波纳契结构)。在某些情况下,我也看到了在斐波那契步骤中延伸的缓冲,而不是2的幂。
答案 6 :(得分:0)
为了增加一个关于此的琐事,斐波纳契数字描述了兔子的面包屑。你从(1,1),两只兔子开始,然后他们的人口呈指数增长。
答案 7 :(得分:0)
作为[[0,1],[1,1]]矩阵的幂的计算可以被认为是运筹学中最原始的问题(有点像囚徒困境是最原始的问题博弈论)。
答案 8 :(得分:0)