数学建模社区-数学中国
标题:
matlab排列组合问题
[打印本页]
作者:
tansuozhe
时间:
2009-12-26 14:18
标题:
matlab排列组合问题
各位老师:
7 V2 c' N8 W' X: W9 O: g; f8 n
我是初学matlab。现在遇到一个难题,用matlab的函数combntns()
; d* i3 Z9 Z: b, l' V0 W9 E6 y
求1-210共210个自然数的组合,我算从210个自然数中取3个进行组合(不重复),
8 E" a: @2 N) I. ^% y
在matlab命令窗口输入如下函数:
. o! W: ~$ S& B0 G( x6 @
》combntns(1:210,3)
4 @' U/ g1 d5 Y8 A5 O8 Y5 ~' T# I
运行计算都正常的列出了所有组合数,可是想算从210个自然数中取20个进行组合(不重复)
0 t% W( n( g1 U- Y- E& h
我知道这样的组合数非常大为:4.49333E+27,我在在matlab命令窗口输入如下函数:
* X" Q: F! c5 p4 x
》combntns(1:210,20)
, H$ M4 R0 \! G# ^" A* T( ]
提示出错信息如下:
& s0 Q' g7 K& ?; f$ \4 b/ W0 b
Error in ==> combntns at 71
1 J" f1 i+ F$ ?1 {3 q
out=[out; choicevec(i)*ones(size(tempout,1),1) tempout]
% u# w+ b" f/ d' ~& a' w
意思是内存不够吧,现在想请教一下几个问题:
0 y- z$ i/ ]: `, E4 T9 @
1 提示的内存不够是指内存条不够大,还是硬盘空间不够,这样的大的求组合数,matlab是
& T4 M- R3 D6 u, {
否有函数能胜任,如果有,请问是什么函数?
/ a+ {. Z' v7 `4 X% G' z
2,如果matlab的函数不能胜任,请问我如何用M文件编程计算从210个自然数中取20个的组合数并列出,
5 i2 \/ ^1 o+ {. |+ V
(我想可能一次性算出不大可能),如果分段计算,应该如何编程,烦请各位老师提供一下代码,
* v; y0 C3 Y( r: J: u# Z" D7 U
期盼各位老师指教......
作者:
厚积薄发
时间:
2009-12-26 18:33
对于你的问题一:是内存不够大,非外存不够大;不管是任何函数都不行,因为一次算出所有组合数的可能性为0
; u; r K# K" s& {- b c
所以任何函数都不可能在一次执行这么多,这是硬件资源所**的,而非软件所能左右
9 y2 C7 O1 h$ Q5 u5 P7 z
对于你的问题二:你可以先将210分成7段,即:0-25,26-50,.....,201-210;
6 {. u+ @, O6 ? U6 C
然后按下列几步进行:
# f- C! I. R% r9 {1 u
(1)在第一段内搜索排列,然后在第二段内搜索排列,然后在第三段内搜索排列。。。。。。。。。这样依次搜索各段的排列,搜索完后,保存数据,进入下一步;
) W) \3 l; N+ y0 l) G# I- r
(2)然后两段组合搜索排列,注意这次是在两段内搜索,所以得到的排列需要包含两端内的数据
( l3 R' \! I% y
(3)然后三段组合
: b% |$ \" ^) m
依次下去
6 P, r& O$ W* R# R6 o( d6 S
(。。。)最后到10段组合;
l3 D, n2 \2 q1 Z, o
这样才能处理过来。虽然比较麻烦,但是只能这样啦,除非在大型机上就不存在这种问题啦;
作者:
厚积薄发
时间:
2009-12-26 18:35
我之所以选择每段的长度是25,是因为我的机子在长度为25时,反应快,而且效果比较好
作者:
厚积薄发
时间:
2009-12-26 18:38
这么大量的计算和数据,用小型机计算有点太面前啦,应该用大型机计算比较合适
0 H: ?. e2 g2 N- {2 o' b1 Q
8 S" F% p& {7 b- X, l. e* H
我试了个每段长为27,我的机子都要计算将近两分钟(我的内存2G),更不用说你把所有的都计算完,估计至少得一天吧,而且还没有休息
作者:
shuaimao1988
时间:
2009-12-27 15:22
很好 顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者:
兄弟
时间:
2010-1-29 12:48
顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者:
hupanfeng
时间:
2010-2-18 15:30
顶!!!!!!!!!!!!!!!!!!!!!!!!!!
作者:
chendongyi
时间:
2010-7-31 23:46
受教!!!!!!
作者:
chendongyi
时间:
2010-7-31 23:48
受教!!!!!!
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5