2003年最后一道离散(标准答案漏掉的题)

本文详细解释了如何利用广义Fibonacci数列来计算不同节点状态下独立集的数量,并通过具体实例展示了n=3时的规律,最后提供了CD超的抽象验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

经验证有如下的迭代成立:

f(0) = 1
f(1) = 3
f(2) = 8
f(3) = 22
f(4) = 60

……

f(n) = 2*f(n-1) + 2*f(n-2)

下面看早早的证明:

设:g(n)为不包含点An的独立集数目
  h(n)为包含点An的独立集数目

  f(n)为所有独立集数,f(n)=g(n)+h(n)

1、当不包含An时,有两种情况:包含Bn、不含Bn

  这两种情况是一样的,不影响左面的点的取法

  即:g(n) = 2*f(n-1)


2、当包含An时,不能取An-1和Bn

  此时问题等价于:左面的图中不包含An-1的取法
  即:h(n) = g(n-1) = 2*f(n-2)

 

所以,综合上述两条,

f(n) = g(n) + h(n) = 2*f(n-1) + 2*f(n-2)

即广义Fibonacci数列的应用。

感谢早早。

----------------------------

笔者在归纳n=3时,按n的取值,结合集合的势归类整理归纳,发现最右上的点,和最右下的点在关于其他点独立时,有一种关系,即有一定的等价关系。(我用具体的实例来观察规律,这里用较为复杂易见的n=3的归纳来找规律):

f(1)=3: 空集,{1},{2}

f(2)=8:空集,{1},{2},{3},{4},{1,4},{2,3},{2,4}

f(3)=22的情况分两种,如下a.含6去5b.含5去6:

当含点6时不能含点5,则保留点6, 去掉点5:

有集合2f(2)=16个:

{6}, 空集,{1},{2},{3},{4},            {1,4},{2,3},{2,4}

            {1,6},{2,6},{3,6},{4,6} {1,4,6}{2,3,6}{2,4,6}

(其中     分为f(2)的情况的枚举)

当包含点5时不能含6,则保留点5,去掉点6:

有集合:2f(1)=6个:

 {5},空集, {1},   {2}

                 {1,5},{2,5}

(其中     色部分为f(1)情况的枚举)

 

故f(3)=2f(1)+2f(2)=22

 

下面看CD超的抽象验证:

--------------------------------------

再来看codediging超的图示,如下(圈代表 In 的全部独立集):

感谢Codediging超

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值