归纳算法及例题分析

本文介绍了归纳算法的基本思想,并通过多项式求解、最大导出子图、一对一映射等7个算法样例详细阐述了如何应用归纳法设计算法。归纳过程包括基础情况和递推步骤,适用于那些可以从较小规模问题推导出较大规模问题解决方案的问题。
摘要由CSDN通过智能技术生成

前言


算法中有很多会用到归纳的思想,如递归等算法的基础都是归纳。今天来看看归纳的主要思想以及基于归纳的一些算法设计。


归纳

证明当n = 1时命题成立。
证明如果在n = k时命题成立,那么可以推导出在n = k+1时命题也成立。(m代表任意自然数)
这种方法的原理在于:首先证明在某个起点值时命题成立,然后证明从一个值到下一个值的过程有效。当这两点都已经证明,那么任意值都可以通过反复使用这个方法推导出来。

 

算法样例

 

1、多项式求解

Pn(x) = anxn+an−1xn+…+a1x+a0

求Pn(x)

归纳假设:我们已求解出Pn-1(x) = an−1xn+…+a1x+a0

则Pn(x) = Pn-1(x) + an * x^n

Tn =  Tn + n + 1

Input:a0, a1, a2 … an
Output: ans
Begin
int P(n){
    if(n == 0){
        return a[0];
    }
    else{
        P(n) = P(n - 1) + a[n] * x ^ n;
    }
}
ans = P(n)
end

 

增强归纳

同时归纳P(n)与x的n次方

Input:a0, a1, a2 … an
Output: ans
Begin
int x[n]
X[0] = 1
X[1] = x
int P(n){
    if(n == 0){
        return a[0];
    }
    else{
        x[n] = x[n - 1] * x;
        P(n) = P(n - 1) + a[n] * x[n];
    }
}
Ans = P(n)
End

Tn = Tn-1 + 3

2n次乘法,n次加法

O(3n)

 

优化

Pn-1(x) = anxn −1+an−1xn+…+a1x

Pn(x) = P(n) * x + a[N - n]

 

Tn = Tn- 1 + 2

N 次乘法,n次加法

Input: a1, a2, ... an
Output: P
Begin
    P = an;
    for(i = 1 to n){
        P = x * P + a[n - i];
    }
}
end
 

O(2n)

2. 最大导出子图

找G的最大导出子图H, H 中所有顶点的度大于或等于k

导出子图

含有原图一部分点,但点在的边一定在

生成子图

包含原图所有点,但不一定所有边

归纳假设

顶点数少于n的,我们可以找到它的导出子图

对于n的图

遍历所有点

若全都度>= k  则其就是最大的导出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值