找回密码
 欢迎注册
查看: 18421|回复: 17

[转载] 组合问题

[复制链接]
发表于 2014-5-26 08:46:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
由a,b,c三个字母组成8个字母的单词,字母可以重复,要求a与c不能挨着,可以组成多少个单词?(aaaaaaaa可以,aaaaaaac不行)
很久以前百度的问题,我编程搞定的,有没有母函数或其他方法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-26 14:22:08 | 显示全部楼层
{?,?,...}={a,?,...}+{b,?,...}+{c,?,...}
{a,?,...}={c,?,...},{b,?,...}={?,...}

{?,?,...}={?,...}+2{a,?,...}
$a_n=a_{n-1}+2b_{n-1}$

{a,?,?,...}={a,a,?,...}+{a,b,?,...}={a,?,...}+{?,...}
$b_n=a_{n-1}+b_{n-1}$

\(\begin{pmatrix} 1 & 2\\1 & 1\end{pmatrix}^7\begin{pmatrix} 3\\2 \end{pmatrix}=\begin{pmatrix} 1393\\985 \end{pmatrix}\)

$a_8=1393$

点评

是不是我太笨,没看明白怎么回事  发表于 2014-5-28 16:34
@倪举鹏 fungarwai给出了递推式,就没必要用母函数了,因为根据递推式可以反求出母函数,从而得到通项。殊途同归而已。  发表于 2014-5-26 20:53
直接用母函数比较困难,毕竟普通母函数是用于组合而不是排列。至于指数母函数可以用于排列问题,但是涉及到复杂约束就比较难用了。  发表于 2014-5-26 20:51
不知道问题复杂些,递推还容不容易,要是有什么母函数方法就好了……  发表于 2014-5-26 18:06

评分

参与人数 1威望 +12 金币 +12 贡献 +12 经验 +12 鲜花 +12 收起 理由
wayne + 12 + 12 + 12 + 12 + 12 赞一个!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-26 16:06:25 | 显示全部楼层
matlab代码,给出符合条件的组合
  1. [a,b,c,d,e,f,g,h]=ndgrid([1 2 4]);
  2. p=[a(:) b(:) c(:) d(:) e(:) f(:) g(:) h(:)];
  3. s=diff(p,[],2);
  4. id=~any(s==1|s==-1,2);
  5. tab='ac b';
  6. tab(p(id,:))
  7. disp(['以上便是满足ac不相邻的8位字串,共' num2str(sum(id)) '种.'])
复制代码

>>
aaaaaaaa
baaaaaaa
abaaaaaa
cbaaaaaa
...
abbbbbbb
cbbbbbbb
bbbbbbbb

以上便是满足ac不相邻的8位字串,共1393种.

点评

@倪举鹏,嗯嗯,是的。但是如果约束条件非常复杂的话,那还是只能用程序求解了。只是这里只要求ac不相邻而已。  发表于 2014-5-26 20:44
我也用的编程,但是如果问题复杂,数量大的话,会导致电脑穷举不完的……  发表于 2014-5-26 18:08

评分

参与人数 1威望 +2 金币 +2 贡献 +2 鲜花 +2 收起 理由
fungarwai + 2 + 2 + 2 + 2

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-26 17:18:23 | 显示全部楼层
fungarwai 发表于 2014-5-26 14:22
{?,?,...}={a,?,...}+{b,?,...}+{c,?,...}
{a,?,...}={c,?,...},{b,?,...}={?,...}

这个递推法很不错,如果题目换为a,b,c,d四个字母,要求a与c不能相邻,b与d不能相邻,这种方法还有效吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-26 18:45:48 | 显示全部楼层
kastin 发表于 2014-5-26 17:18
这个递推法很不错,如果题目换为a,b,c,d四个字母,要求a与c不能相邻,b与d不能相邻,这种方法还有效吗?

我不清楚这种方法在什么时候用得上,但这个题目还是可以递推的。

{?,?,...}={a,?,...}+{b,?,...}+{c,?,...}+{d,?,...}
=2{a,?,...}+2{b,?,...}
$x_n=2a_{n-1}+2b_{n-1}$

{a,?,?,...}={a,a,?,...}+{a,b,?,...}+{a,d,?,...}
={a,?,...}+2{b,?,...}
$a_n=a_{n-1}+2b_{n-1}$

{b,?,?,...}={b,a,?,...}+{b,b,?,...}+{b,c,?,...}
=2{a,?,...}+{b,?,...}
$b_n=2a_{n-1}+b_{n-1}$

\(x_n=\begin{pmatrix} 2 & 2 \end{pmatrix} \begin{pmatrix} 1 & 2\\2 & 1\end{pmatrix}^{n-1}\begin{pmatrix} 1 \\ 1 \end{pmatrix}\)

评分

参与人数 1威望 +2 金币 +2 贡献 +2 鲜花 +2 收起 理由
kastin + 2 + 2 + 2 + 2 嗯嗯,记得曾经看到过类似的问题,是这个的.

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-26 19:12:29 | 显示全部楼层
fungarwai 发表于 2014-5-26 18:45
我不清楚这种方法在什么时候用得上,但这个题目还是可以递推的。

{?,?,...}={a,?,...}+{b,?,...}+{c,? ...

楼上的第二个和第三个可以加起来,然后得出\( a_n+b_n = 3^{n-1}*2\) ,所以 \(x_n= 4*3^{n-1}\)

点评

嗯嗯,事实上,双线性递推关系都可解的。  发表于 2014-5-26 20:47
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-26 20:50:14 | 显示全部楼层
fungarwai 发表于 2014-5-26 18:45
我不清楚这种方法在什么时候用得上,但这个题目还是可以递推的。

{?,?,...}={a,?,...}+{b,?,...}+{c,? ...

这个问题的升级版,你看看 http://tieba.baidu.com/p/411865183?pn=1&statsInfo=frs_pager
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-27 07:24:53 | 显示全部楼层
kastin 发表于 2014-5-26 20:50
这个问题的升级版,你看看 http://tieba.baidu.com/p/411865183?pn=1&statsInfo=frs_pager

A,B,C对称
D,E,F对称
a,b,c,AA,BB,CC对称
d,e,f,DD,EE,FF对称

S=3A+3D+3a+3d

A=2A+3D+3a+3d
D=2A+2D+2a+3d
a=2A+3D+2a+3d
d=2A+2D+2a+2d

\(\begin{pmatrix}3 & 3 & 3 & 3\end{pmatrix}\begin{pmatrix}2 & 3 & 3 & 3\\2 & 2 & 2 & 3\\2 & 3 & 2 & 3\\2 & 2 & 2 & 2\end{pmatrix}^{n-1}\begin{pmatrix}1\\1\\1\\1\end{pmatrix}\)

点评

很不错~  发表于 2014-5-27 17:20
AA,BB,CC处理的相当的棒!比原帖的矩阵降了2维,赞一个!  发表于 2014-5-27 09:25

评分

参与人数 1威望 +6 金币 +6 贡献 +6 经验 +6 鲜花 +6 收起 理由
wayne + 6 + 6 + 6 + 6 + 6 赞一个!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-5-27 17:45:12 | 显示全部楼层
根据8#的递推关系,简单的一阶线性递推方程组,可以求出问题的母函数
`\begin{align*}G(x)&=\begin{pmatrix}3 & 3 & 3 & 3\end{pmatrix} \begin{pmatrix}1-2x & -3x & -3x & -3x\\-2x & 1-2x & -2x & -3x\\-2x & -3x & 1-2x & -3x\\-2x & -2x & -2x & 1-2x\end{pmatrix}^{-1}\begin{pmatrix}1\\1\\1\\1\end{pmatrix}\\
&=-\frac{3(x^3+4x^2+6x+4)}{2x^4+8x^3+12x^2+8x-1}\end{align*}`
这个有理式已经是最简真分式,因此通项公式需要根据分母中4次方程的根来表示,Mathematica直接刻计算出
  1. SeriesCoefficient[-((3 (x^3 + 4 x^2 + 6 x + 4))/(
  2.   2 x^4 + 8 x^3 + 12 x^2 + 8 x - 1)), {x, 0, n}]
复制代码

这个给出的是n+1位密码锁所有组分方式种数的通项公式
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-20 13:47 , Processed in 0.052266 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表