V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Idiosyncratic  ›  全部回复第 2 页 / 共 4 页
回复总数  67
1  2  3  4  
建议拆一下,我也碰过lz一样的问题,不过我的电脑是用来3年左右,基本就是开机后只要开个大点的应用,电扇就开始狂转,然后发热,一开始没怎么在意,后来整了两三个月后受不了了,擦机一看,整个通风口都被灰堵住了。。。。;
2013-05-16 11:33:07 +08:00
回复了 Idiosyncratic 创建的主题 程序员 Google 要出android studio啦
@momou 额。。,原来已经出了,好吧。。信息滞后了
2013-05-16 10:55:49 +08:00
回复了 artchencheng 创建的主题 Go 编程语言 大家如何评价Go语言?
不清楚。。。。。,看过点简介,没有体会到比目前有的语言更明显的优势。
2013-05-13 12:30:27 +08:00
回复了 chisj 创建的主题 电影 推荐《致命魔术》。
很欣赏这部片子的叙述方式,看了2/3的时候才弄明白
2013-05-10 22:11:52 +08:00
回复了 justfly 创建的主题 程序员 为什么我不习惯用递归,这方面我应该怎么加强?
@Golevka 奥,这样啊。。,好像是哦。。,= =
2013-05-10 21:33:40 +08:00
回复了 justfly 创建的主题 程序员 为什么我不习惯用递归,这方面我应该怎么加强?
@Golevka
0、我真的被你搞糊涂了,空间复杂度是O(N)没错啊,我都说了几遍了,(V是指节点个数,和我们的N是一个意思,E是边数,无环图下E=V-1),空间复杂度和渐进空间复杂度不同。。fine,你自己琢磨一下我们帖子的对答吧,;至于wiki的话,不能忽视上下文吧:“In this case, the time is still linear in the number of expanded vertices and edges (although this number is not the same as the size of the entire graph because some vertices may be searched more than once and others not at all) but the space complexity of this variant of DFS is only proportional to the depth limit”
我就不具体翻译了,大意是 "时间依然是 节点数和边数和的 倍数;但是这个dfs变种算法的空间复杂度是受深度限制的"; 这个算法是个变种,不记录节点是否遍历,和我提的那个不同;

1、 这个,空间复杂度都是N,渐进复杂度,没错递归是O(logN),但是非递归的渐进复杂度。。。,我就不仔细解释了,一次for循环只抓一个节点。。。;
2、同#1
2013-05-10 21:05:15 +08:00
回复了 justfly 创建的主题 程序员 为什么我不习惯用递归,这方面我应该怎么加强?
@Golevka
0. 空间复杂度和渐进空间复杂度嘛,你本来说渐进空间复杂度,但是却说存储了节点后的算法(我原来给的算法)的渐进空间复杂度是O(N)。而这O(N)是dfs的空间复杂度。。。
1、至于一颗1T的树。。,具体的总有trick的法子可以不用一口读这么多的,但是递归同时要存储占用更多的栈空间;具体的我没啥数据,不过我以前多一个500多M的文件夹内txt文件(随机生成的)进行单词词频统计,用递归的法子把栈挤爆过;
2、 这个问题。。,和递归效率有关系吗,咱们没讨论这个吧。。
2013-05-10 20:28:28 +08:00
回复了 justfly 创建的主题 程序员 为什么我不习惯用递归,这方面我应该怎么加强?
@Golevka 呃,一时手快,刚刚的回复打错了几个字

“1、时间复杂度” => 想打的是“1、空间复杂度”

第5行“可以说是一个特例而已,也只能说是和空间相关。” => 其实我想说的是,完全二叉树是性质很好一个种树。。
2013-05-10 20:14:18 +08:00
回复了 justfly 创建的主题 程序员 为什么我不习惯用递归,这方面我应该怎么加强?
@Golevka 大哥,我觉得你混淆了好多情况啊。。:
1、时间复杂度:一个算法的空间复杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间,是对一个算法在运行过程中临时占用存储空间大小的量度; 递归算法在结束全所有节点都不得释放,O(logN)能存的下O(N)级的内容? 不论是啥样的dfs算法,需要的空间起码是O(n)的,因为是遍历n个节点,起码记录节点遍历没有的标记符就要有N个; O(logN)那是完全二叉树的高度,是完全二叉树的递归层数,可以说是一个特例而已,也只能说是和空间相关。

2、dfs的遍历方式是给定的,只要照着dfs做,除非故意找茬(故意开个超大内存啥的),算法的空间时间复杂度都是一样;

3、栈空间和内存空间不是一回事,vc6的C语言编译器默认的栈空间只有1M(其他环境相差不大,反正默认的都不大),不然大家怎么会天天说递归容易爆栈?想要扩大栈空间只有在程序运行前在IDE或是命令行里指定,就是说程序本身决定不了,这样的递归,除非你每次运行前都先估摸这一下要用多少栈空间,不然应付各种规模数据的时候总会有爆掉的一天;相比来说,可以在内村里手动开辟的法子显然更好;

4、有一个很重要的问题,我再重复一下,dfs的空间、时间复杂度,在算法上是一样的,不是说递归层数变少,空间就变小了;层数变少,只是要存的局部变量就是变少了,但是用其他方法实现的时候完全可以不存储那些局部变量:
int a(){
int b;
if xx:
return;
a();
}
b要存下;

while(!xxx){
int b
&(&(
}
b不用存;

因此,在理论上时间,空间一致的情况下,递归还有各种实现上的开销,所以效率低;

PS:这句话:“都会先开一个容器(数组,字典都行),把所有节点的初始状态保存进去”,存的就是二叉树好吧,二叉树经常这么存储,然后在每个节点元素里加上个种信息。
本来还想在写点,但是看着已经写好多了,在写下去就太烦了。。,主要是觉得你没搞懂。。。还说我的法子不对。。有些不爽。。
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2636 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 04:39 · PVG 12:39 · LAX 20:39 · JFK 23:39
Developed with CodeLauncher
♥ Do have faith in what you're doing.