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。这些点和连接都用矩阵来表示,然后通过矩阵来求点与点之间最短路径的数量。这个图的矩阵就是:
页: 1 [2] 3
查看完整版本: 请教关于matlab的memory的问题,谢谢啦