编程前,关于时间的想法
2008-11-10 14:11
267 查看
一亿次加法运算,就能耗费我5秒钟的时间;那么到了十亿次,50秒,勉强可以接受;100亿次,辛苦;1000亿次——等一个多小时!人都疯掉了。
所以,我干脆宏观点,考虑程序执行的时间吧!
就拿多目标函数计算的问题来说,精确到小数点后5位,那么意味着从0.00001到0.99999需要十万次计算。两个决策变量,都从0~1,那么就需要10万的平方次的计算量,再考虑一下f(x)的复杂程度(至少比加法运算麻烦1000倍吧?),再加上实际问题中是“多个目标”。保守点估计,计算量是:10万*10万*1000*2(2个目标函数)。
和我们100亿次的“辛苦程度”比较一下,相差2000倍;也就是说,当我们辛辛苦苦等待了8分钟以后,需要完成的任务才刚刚进行了2000分之一!
可想而知,要在有效时间内得出可观的结果:就是要进行这样的探索:尽可能地将时间花费在“有效”的地方。如果需要2000次才能遍历完全的空间,最好能够一次就找到重点!
将这个比例放大:从0.00001到0.99999,我不可能以每次0.000001的步长进行累加,而是增加2000倍,每次步长0.02——这实在是很大的跨度了(这种考虑给我实际的编程操作留下了把握的余地呢......)。
对比一下tsp问题的难度:144个城市,问题的规模为5.55e+249,除以100亿,结果为5.55e+239——可想而知嘛!既然遗传算法能够将tsp问题求解出来,那么对于多目标这样的问题,能够贴近于理论解,已经是相当有可能的了。
所以,我干脆宏观点,考虑程序执行的时间吧!
就拿多目标函数计算的问题来说,精确到小数点后5位,那么意味着从0.00001到0.99999需要十万次计算。两个决策变量,都从0~1,那么就需要10万的平方次的计算量,再考虑一下f(x)的复杂程度(至少比加法运算麻烦1000倍吧?),再加上实际问题中是“多个目标”。保守点估计,计算量是:10万*10万*1000*2(2个目标函数)。
和我们100亿次的“辛苦程度”比较一下,相差2000倍;也就是说,当我们辛辛苦苦等待了8分钟以后,需要完成的任务才刚刚进行了2000分之一!
可想而知,要在有效时间内得出可观的结果:就是要进行这样的探索:尽可能地将时间花费在“有效”的地方。如果需要2000次才能遍历完全的空间,最好能够一次就找到重点!
将这个比例放大:从0.00001到0.99999,我不可能以每次0.000001的步长进行累加,而是增加2000倍,每次步长0.02——这实在是很大的跨度了(这种考虑给我实际的编程操作留下了把握的余地呢......)。
对比一下tsp问题的难度:144个城市,问题的规模为5.55e+249,除以100亿,结果为5.55e+239——可想而知嘛!既然遗传算法能够将tsp问题求解出来,那么对于多目标这样的问题,能够贴近于理论解,已经是相当有可能的了。
相关文章推荐
- 编程前,关于时间的想法2
- 关于一些编程的想法
- 关于编程入门书籍选择的想法
- 关于学习编程的一点想法
- 关于互联网编程的若干想法
- 关于做指定时间进行显示倒计时的一些想法
- 【编程之旅】关于传输剩余时间估算那些事儿
- 编程菜鸟关于硬件、OS、和JAVA的关系想法(初级)
- 关于Linux下时间编程的问题
- Java网络编程(二)关于Socket的一些个人想法
- 关于对渣打编程马拉松 2013 的样题的一些想法
- Linux下关于时间概念的C语言编程
- 关于alarmmanager.set() or .setExact() 任务启动时间不准的一点想法(未实现)
- 关于时间复杂度和空间复杂度的一些想法
- 五分钟或更短时间熟悉SQLite--关于SQLite编程的快速简介
- 脱不花:关于时间管理的几个想法
- Linux下C语言编程入门-7关于时间的操作
- 编程:关于程序的时间复杂度
- 关于量子编程中主函数的的优化之减少中断时间:qvanilla
- Linux下关于时间概念的C语言编程