ElberEis
发表于 2009-7-28 10:43
6# 江南织造
没错, 结果是一样的. 但是内存占用是不一样的. ones是要额外创建vector, 是占用内存的, 而加是遍历计算, 不占用内存的. 参见:
Using Memory Efficiently
Strategies for Efficient Use of Memory
第一条:
To conserve memory when creating variables, Avoid creating large temporary variables, and clear temporary variables when they are no longer needed.
ElberEis
发表于 2009-7-28 11:32
本帖最后由 ElberEis 于 2009-7-28 13:18 编辑
http://www.chinavib.com/space/63517/viewspace-16849.html
我试了一下nchoosek(a,k)和perms(), 还是内存出界
这个内存一个都省不了啊
星星和月亮
发表于 2009-7-28 20:10
这样讨论没效率.
你把你的代码当中造成内存溢出的那一部分贴上来看看
ElberEis 发表于 2009-7-28 11:39 http://www.dolc.de/forum/images/common/back.gif
for x=E:-1:1
for y=1:length(G)
if Tree_matrix(x,y)>0
t=
end
end
end
pack;
Combination_matrix=combntns(t,E);
就是这段代码溢出了~~~~~~~~~~~~~~~ {:4_298:}能不能麻烦帮我看一下啊,谢谢啦~~~~~~~~ {:4_277:}
江南织造
发表于 2009-7-28 20:17
对啊,所以我到现在也没想出来怎么解决这个问题啊~~~~~~~~~~~~~~~~~~ {:4_284:}
星星和月亮 发表于 2009-7-28 01:09 http://www.dolc.de/forum/images/common/back.gif
10的18次方个矩阵元素需要7.2760e+006 TB 的内存, 这个星球上还没这么大的内存啊MM
具体参见
http://zhidao.baidu.com/question/54002163.html
星星和月亮
发表于 2009-7-28 20:59
10的18次方个矩阵元素需要7.2760e+006 TB 的内存, 这个星球上还没这么大的内存啊MM
具体参见
http://zhidao.baidu.com/question/54002163.html
江南织造 发表于 2009-7-28 21:17 http://www.dolc.de/forum/images/common/back.gif
哎~~~~~~~~~~~~~~~ 偶哭S啊~~~~~~~~~~~~~~~~· 难道要再换个算法?{:4_297:}
江南织造
发表于 2009-7-28 23:03
哎~~~~~~~~~~~~~~~ 偶哭S啊~~~~~~~~~~~~~~~~· 难道要再换个算法?{:4_297:}
星星和月亮 发表于 2009-7-28 21:59 http://www.dolc.de/forum/images/common/back.gif
嫩到底要干吗来着?{:5_389:}
星星和月亮
发表于 2009-7-29 01:24
嫩到底要干吗来着?{:5_389:}
江南织造 发表于 2009-7-29 00:03 http://www.dolc.de/forum/images/common/back.gif
求一个点到另外一个点的最短路径的数量~~~~~~~~~~~~~ {:4_277:}
ElberEis
发表于 2009-7-29 11:03
本帖最后由 ElberEis 于 2009-7-29 12:18 编辑
同意 江南织造
如果你在n个数当中选取m个数的排列组合, 排列组合的数目是:
n! / (n-m)!
现在n=29, m=12, 排列组合的数目是29!/(29-12)!, 每一个排列组合需要12个int的存储空间.
如果要存储所有的结果, 你至少需要 大约 29 8298 8307 8195 2000 byte 的内存
现在的主流硬盘大概是1TB, 大概是1.1e12 byte
所以不可能完全存储下来. 必须修改算法, 只能存储必要的内容, 随用随消
ElberEis
发表于 2009-7-29 11:08
什么叫做 "求一个点到另外一个点的最短路径的数量" ?
既然是最短路径, 怎么会有多个?
你能不能描述一下你的算法先?
星星和月亮
发表于 2009-7-29 14:24
什么叫做 "求一个点到另外一个点的最短路径的数量" ?
既然是最短路径, 怎么会有多个?
你能不能描述一下你的算法先?
ElberEis 发表于 2009-7-29 12:08 http://www.dolc.de/forum/images/common/back.gif
就好比这个图里面点1到点5的最短路径数量就是2个,即点1到点3到点5,点1到点4到点5。这些点和连接都用矩阵来表示,然后通过矩阵来求点与点之间最短路径的数量。这个图的矩阵就是: