[Algorithm] Bottom-up Dynamic programming approch

Fibonacci sequence: 

The most well-known approach is memoization. Advantage is fast, but space complexity is big. O(N).

 

Bottom-up:

1 : Bottom-up dynamic programming represents recursive problems as Directed Acyclic Graph.

2. The DAG repressentation can be traversed in order of dependency.

3. Problems can be solved in minimal time and space.

F5: only depends on F3 and F4

 

Each step, we only need to keep two values in memory,  for example, caluclate F3, all we need is F1 and F2, we can dump F0.

def fib(n)
    a = 1
    b = 1
    for i in range(2, n+1):
        a, b = b, a +b

    return b

 

posted @   Zhentiw  阅读(126)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-01-18 [XState] Use an Interpreter to Instantiate a Machine
2020-01-18 [XState] Replace Enumerated States with a State Machine
2020-01-18 [Javascript] Eliminate Boolean Explosion by Enumerating States
2019-01-18 [Javascript] Deep merge in Javascript with Ramda.js mergeDeepWith
2019-01-18 [TypeScript] Export public types from your library
2019-01-18 [Functional Programming] Randomly Pull an Item from an Array with the State ADT (Pair)
2017-01-18 [Angular] Using ngOnChanges lifeCycle hook to break object reference
点击右上角即可分享
微信分享提示