美文网首页
为什么是斐波那契

为什么是斐波那契

作者: 赵文毅 | 来源:发表于2019-05-20 23:47 被阅读0次

    为什么是斐波那契是一个困扰了很久的问题,也请教过许多人,答案大都是“随便选的”,“外国人喜欢斐波那契”,“慢慢增长的数列都行”。甚至Mike Cohn在那本《Agile Estimating and Planning》中写到:

    *“These nonlinear sequences work well because they reflect the greater uncertainty associated with estimates for larger units of work. Either sequence works well, although my slight personal preference is for the first.” *

    这里说的“Either sequence” 一个是斐波那契,一个是偶数等比数列。因此先说本文结论,翻阅各种资料显示,斐波那契数列作为规模估算,还真可能就是随便选的。但也许这个天选的数列确实有过人之处。

    参考资料:
    《Agile Estimating and Planning》
    https://kenschwaber.wordpress.com/2011/03/11/planning-poker/
    https://www.mountaingoatsoftware.com/blog/how-can-we-get-the-best-estimates-of-story-size#comments
    等等

    先表明结论处于两个目的:1 这是客观事实; 2 从这往下非常的民科,不保证这只是一种作者自己都没发现的数字游戏,而作者恰好非常讨厌民科。相信读过这篇文章之后大家至少会记住,我们敏捷估算的意义之一是在于规模。

    下面开始正文,我将尝试给这个用于用户故事规模估算的数列找一组条件(和条件设置原因)试一试推导出斐波那契是估算最优解。
    条件1: 正整数的递增队列
    原因: 显然
    条件2: 队列的前两项需要是1或者2。
    原因:估算需要有小规模,如果前两项不足够小,那整个队列每一项均减去一个常数,即可满足条件2,条件2 显然让我们的估算更有意义。
    条件3:估算产生的变异性是可控的。
    在我们用任意数列估算规模的时候,每一个数列中的数字都像一个木桶,我们只需要把故事扔到桶里面就完成了估算。当一个故事的心里点数恰好落在两个桶中央的时候,此时估算的变异性最大,50/50,多半由当时其他不可控因素决定。假设这个故事T的真实点数t就处在两个桶中央,那么此时的偏差也最大。假设M桶的点数为m,那么T到M之间的偏差为m-t,记为n。因此得到如下推论:
    推论1 n/m越小越好
    原因:代表估算偏差小。
    推论2 n/m越稳定越好
    原因:估算值的变异稳定性高。
    求此数列。显然,这是很难算出来的,有数学大神有解题思路可以联系。如果大家认可上面的条件和推论。我们可以将符合条件的常见队列带入演算,看看是否斐波那契有优势。

    第一组 等比数列
    等比值取2,最小的增幅正整数

    数值t 数值m 数值n 高估(n/m) 低估(n/f(M-1))
    N/A 1 N/A
    1.5 2 0.5 25% 50%
    3 4 1 25% 50%
    6 8 2 25% 50%
    12 16 4 25% 50%
    24 32 8 25% 50%

    可以看到变异性非常稳定,高估偏离25%,低估偏离50%

    第二组 等差数列
    等差值取1,最小等差正整数

    数值t 数值m 数值n 高估(n/m) 低估(n/f(M-1))
    N/A 1 N/A
    1.5 2 0.5 25% 50%
    2.5 3 0.5 16.67% 25%
    3.5 4 0.5 12.5% 16.67%
    4.5 5 0.5 10% 12.5%
    5.5 6 0.5 8.33% 10%

    可以看到变异性呈收敛趋势,特别不稳定(不趋近一个均值),呈收敛也意味着,随着数值增加桶的价值在消退,估算的随机性将越来越不可控制。

    第三组 质数

    数值t 数值m 数值n 高估(n/m) 低估(n/f(M-1))
    N/A 2 N/A
    1.5 3 1.5 50% 75%
    4 5 1 20% 33.33%
    6 7 1 14.29% 20%
    9 11 2 18.18% 28.57%
    12 13 1 7.69% 9.09%
    15 17 2 11.76% 15.38%
    18 19 1 5.26% 5.88%
    21 23 2 8.70% 10.53%

    可以看到估算变异性非常不稳定。

    第四组 斐波那契

    数值t 数值m 数值n 高估(n/m) 低估(n/f(M-1))
    N/A 2 N/A
    2.5 3 0.5 16.67% 25%
    4 5 1 20% 33.33%
    6.5 8 1.5 18.75% 30%
    10.5 13 2.5 19.23% 31.25%
    17 21 4 19.05% 30.77%
    27.5 34 6.5 19.12% 30.95%
    44.5 55 10.5 19.09% 30.88%
    72 89 17 19.10% 30.91%

    可以看到 变异性非常稳定,高估偏离约20%,低估偏离约30%,性能优于等比数列。

    虽然我们最终并没有证明斐波那契在估算的变异稳定性以及偏离上是最优的,但就四个常见数组来说,他是性能最好的一个。期待有小伙伴拿出更多的数列套用这套公式,也许能找出这套公式的BUG,这样便于我们最终算出某一个数列才是估算规模最好的。

    相关文章

      网友评论

          本文标题:为什么是斐波那契

          本文链接:https://www.haomeiwen.com/subject/qmulzqtx.html