找回密码
 欢迎注册
查看: 49916|回复: 10

[求助] 求解一组合计数问题

[复制链接]
发表于 2014-12-30 07:58:08 来自手机 | 显示全部楼层 |阅读模式

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

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

×
假设一长为L的随机二进制数,其中‘1’的个数为n(n<L),求解包含连续k(k<n)个连续‘1’的二进制数个数

评分

参与人数 1金币 +20 收起 理由
gxqcn + 20 首帖奖励,欢迎常来。

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-12-30 12:41:14 | 显示全部楼层
a(L,n,k)=(0...)+(1...)
(0...)=a(L-1,n,k)
(1...)=(10...)+(11...)
这样分下去的话应该会得到\(\displaystyle a(L,n,k)=C_{L-k}^{n-k}+\sum_{m=1}^k a(L-m,n-m+1,k) \)
嗯...怎么解呢...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-12-31 12:04:28 | 显示全部楼层
本帖最后由 sheng_jianguo 于 2014-12-31 12:30 编辑

假设一长为L的随机二进制数,其中‘1’的个数为n(n<L),求解包含连续k(k<n)个连续‘1’的二进制数个数。
解:设满足要求二进制数中,“1”被“0”分成m段,则
m≤L-n+1(因一共有L-n个“0”)
m≤n-k+1(因其中有一段至少有k个“1”,其它段至少有1个“1”,一共只有n个“1”)
令r=min(L-n+1, n-k+1) (即r为L-n+1与n-k+1中小者)
按线性方程的非负整数解个数公式可以推导出:“1”分成m段(和次序有关)共有\(m C_{n-k}^{n-k+1-m}\)种;每种段间加入不同“0”的种数共有\(C_{L-n+1}^{L-n+1-m}\)种。
所以,“1”被“0”分成m(≤r)段,共有\(mC_{n-k}^{n-k+1-m}\) \(C_{L-n+1}^{L-n+1-m}\)种,再将公式从m=1加到m=r,就是所求二进制数个数:\(\displaystyle \sum_{m=1}^r(mC_{n-k}^{n-k+1-m}\) \(C_{L-n+1}^{L-n+1-m} )\)。

评分

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

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-12-31 13:36:45 | 显示全部楼层
sheng_jianguo 发表于 2014-12-31 12:04
假设一长为L的随机二进制数,其中‘1’的个数为n(n


考虑"1"的时候还有些问题
L=7;n=4;k=2;r=min(L-n+1,n-k+1);
for m=1:r
        a(m)=m*nchoosek(n-k,n-k+1-m);
        b(m)=nchoosek(L-n+1,L-n+1-m);
        s(m)=m*nchoosek(n-k,n-k+1-m)*nchoosek(L-n+1,L-n+1-m);
end
sum(s)

$4=1\times 4$
1 1 1 1 0 0 0
0 1 1 1 1 0 0
0 0 1 1 1 1 0  
0 0 0 1 1 1 1

$24=4\times 6 \ne 3\times 6 =18$
1 1 1 0 1 0 0
1 1 0 1 1 0 0
1 0 1 1 1 0 0
1 1 1 0 0 1 0
0 1 1 1 0 1 0
1 1 0 0 1 1 0
0 1 1 0 1 1 0
1 0 0 1 1 1 0
0 1 0 1 1 1 0
1 1 1 0 0 0 1
0 1 1 1 0 0 1
0 0 1 1 1 0 1
1 1 0 0 0 1 1
0 1 1 0 0 1 1
0 0 1 1 0 1 1
1 0 0 0 1 1 1
0 1 0 0 1 1 1
0 0 1 0 1 1 1

$12=3\times 4$
1 0 0 1 0 1 1
0 1 0 1 0 1 1
1 1 0 1 0 1 0
1 0 1 1 0 1 0
1 0 1 0 1 1 0
1 1 0 1 0 0 1
1 0 1 1 0 0 1
1 1 0 0 1 0 1
0 1 1 0 1 0 1
1 0 0 1 1 0 1
0 1 0 1 1 0 1
1 0 1 0 0 1 1
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-12-31 15:23:36 | 显示全部楼层
每段"1"的个数为正整数,且至少有1段多于k-1个,即排除所有段的"1"都小于等于k-1个的情况
\(\displaystyle \sum_{t=1}^m (-1)^{t-1} C_m^t C_{n-(k-1)t-1}^{m-1} \)
乘进去是\(\displaystyle \sum_{m=1}^r \sum_{t=1}^m (-1)^{t-1} C_m^t C_{n-(k-1)t-1}^{m-1} C_{L-n+1}^m \)

clc;clear;
L=7;n=4;k=2;r=min(L-n+1,n-k+1);
for m=1:r
        a(m)=0;
        for t=1:m
                if(n-(k-1)*t<m)break;end
                a(m)=a(m)+(-1)^(t-1)*nchoosek(m,t)*nchoosek(n-(k-1)*t-1,m-1);
        end
        b(m)=nchoosek(L-n+1,m);
        s(m)=a(m)*b(m);
end
sum(s)

评分

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

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2014-12-31 16:59:02 来自手机 | 显示全部楼层
L=8,n=6,k=3按楼上公式算出来为0,实际是27
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-12-31 17:10:24 | 显示全部楼层
javee30 发表于 2014-12-31 16:59
L=8,n=6,k=3按楼上公式算出来为0,实际是27

无标题.png

我算不出楼上有这个值
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2014-12-31 17:43:16 来自手机 | 显示全部楼层
可能是∑的范围搞错了,谢谢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2014-12-31 17:44:19 来自手机 | 显示全部楼层
我是用递归函数计算的,计算速度太慢了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2021-3-19 21:17:17 | 显示全部楼层
我用母函數方法重新做咗
發現等於$\sum_{m=1}^{L-n+1}(-1)^{m-1}C_{L-n+1}^m C_{L-km}^{L-n}$

Permutation of consecutive items
https://artofproblemsolving.com/ ... f_a_linear_equation
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-11-22 23:01 , Processed in 0.027424 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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