算法设计与分析--迭代算法

这篇具有很好参考价值的文章主要介绍了算法设计与分析--迭代算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

  • 一、迭代算法简介
  • 二、设计工作步骤
  • 三、迭代--递推法
    • 题目及运行
  • 四、迭代--倒推法
    • 题目及运行
  • 五、总结

前言

算法语言--C语言


一、迭代算法简介

迭代算法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。

迭代算法一般用于数值的计算,是读者早就熟悉的一种算法策略,程序设计语言课程中所学的累加、累乘都是迭代算法策略的基础应用。

二、设计工作步骤

利用迭代算法策略求解问题,设计工作主要有3步:

1、确定迭代模型

根据问题描述,分析得出前一个(或几个)值与其下一个值的迭代关系数学模型。当然这样的迭代关系,最终会迭代出求解的目标。

 2、建立迭代关系式

递推数学模型一般是代下标的字母,算法设计中要将其转换为“循环不变式”----迭代关系式

迭代关系式就是一个直接或间接地不断由旧值推出新值的表达式,存储新值的变量称为迭代变量

3、对迭代过程进行控制

确定在什么时候结束迭代过程,是迭代算法时必须考虑的问题。

三、迭代--递推法

1、递推法简介

递推算法是迭代算法的最基本的表现形式。

一般来讲,一种简单的递推方式,是从小规模的问题推解出大规模问题的一种方式,也称其为:正推。如累加过程就是在前n-1项和的基础上推出前n项的和,递推公式为:Sn = Sn-1 + An。

由于无需保留每次的累加结果,这样递推公式就抽象成了s = s + a。

2-1递推举例

1、兔子繁殖问题:一对兔子,从出生后第三个月起每个月都生一对小兔子,小兔子长到第三个月后又每个月又生一对小兔子,求第10个月有多少对兔子?


为了寻找题目的规律。最基本的分析方法之一就是  “枚举”,也就是将各种不同的情况一一列举出来,从中发现解决问题的方法。

下列表格中:加法前面代表老兔子,加法后面下划线的代表出生的新兔子。 

1月 2月 3月 4月 5月 6月 7月
1 1 1+1=2 2+1=3 3+2=5 5+3=8 8+5=13

 通过列举我们发现,新出生的兔子数量刚好是上上个月的兔子总数,老兔子数量是上个月的兔子总数。到此我们发现这个数列就是著名的斐波那契数列!

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

2-1代码实现

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=1,b=1;
    int c,i;
    for(i=3;i<=10;i++){
        c = a+b;//第三个月为前两个月之和
        a = b;//之后的第一个月
        b = c;//之后的第二个月
    }
    printf("10个月后的总兔子为:%d",c);
    return 0;
}

 ​​​​迭代算法,算法设计与分析,python,pandas,机器学习,数据结构,算法

 2-2递推举例

 辗转相除法求两个正整数的最大公约数。(a=18,b=12)


不妨设两个整数a>b且a除以b余c,不难看出a,b的最大公约数与b,c的最大公约数相同!同样方法推出b,c的最大公约数等于c和b%c的最大公约数。直到推解出两个数据相除的余数为0时,除数即为所求的最大公约数!

2-2代码实现

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a = 18,b = 12;
    int c = a%b;//c为余数
    while(c>0){
        a = b;//小数替换成大数
        b = c;//余数替换成小数
        c = a%b;//继续求余数
    }
    printf("最大公约数为:%d",b);//最大公约数为较小的数
    return 0;
}

迭代算法,算法设计与分析,python,pandas,机器学习,数据结构,算法 

 

四、迭代--倒推法

1、倒推法简介

所谓倒推法是对某些特殊问题所采取的违反通常习惯的,从后向前推解问题的方法。

 2-1倒推举例

猴子吃桃问题:一只小猴子摘了若干桃子,每天吃现有桃的一半多一个,到第10天只有一个桃子了,求原有多少个桃子?


数学模型:a10 = 1, a10 = a9/2-1  -- >a9 = (a10+1)*2,a8 = (a9+1)*2.........

递推公式:ai = (ai+1)*2  (i = 9,8,7...)

 2-1代码实现

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a = 1;
    int i;
    for(i=9;i>0;i--){
        a = (a+1)*2;
    }
    printf("原有的桃子数为:%d",a);
    return 0;
}

迭代算法,算法设计与分析,python,pandas,机器学习,数据结构,算法 

 2-2倒推举例 

穿越沙漠问题:用一辆吉普车穿越2000公里的沙漠。吉普车的总装油量为600加仑,耗油率为1加仑/公里。由于沙漠中没有油库,必须先用这辆车在沙漠中建立临时油库。该吉普车以最少的耗油量穿越沙漠,应在什么地方建油库,以及各处的贮油量。

  2-2代码实现

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int dis,k,oil;
    dis=600;k=1;oil=2000;
    do{
        k=k+1;
        dis = dis+600/(2*k-1);
        oil = 600*k;
    }while(dis<2000);
    oil=600*(k-1)+(2000-dis)*(2*k-1);
    printf("%d %d %d\n",k,oil,dis);
    return 0;
}

迭代算法,算法设计与分析,python,pandas,机器学习,数据结构,算法

 


 

五、总结

迭代算法主要是:在已知的基础上推出下一轮,反复循环!

主要步骤:1、确定是迭代的模型,2、建立迭代关系式,3、对迭代过程进行控制

多算多敲多理解!文章来源地址https://www.toymoban.com/news/detail-708468.html

到了这里,关于算法设计与分析--迭代算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python课程设计项目-基于机器学习的糖尿病风险预警分析系统

    这个东西是我大二时候做的,做的挺一般的,当时也没想着搭建界面啥的,测试的也不够,就是单纯的分享一下吧,不足之处大家多多指正,我会把所有的代码和数据在文章最后都放出来,喜欢的话点个赞吧! [摘 要] 糖尿病是一种全球性的流行性疾病,随着经济生活的高速

    2024年02月03日
    浏览(55)
  • 机器学习强基计划8-1:图解主成分分析PCA算法(附Python实现)

    机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。强基计划实现从理论到实践的全面覆盖,由本人亲自从底层编

    2024年02月02日
    浏览(70)
  • 计算机设计大赛 深度学习人脸表情识别算法 - opencv python 机器视觉

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习人脸表情识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/

    2024年02月21日
    浏览(171)
  • 机器学习强基计划8-3:详细推导核化主成分分析KPCA算法(附Python实现)

    机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。强基计划实现从理论到实践的全面覆盖,由本人亲自从底层编

    2023年04月09日
    浏览(43)
  • 数据分析毕业设计 大数据糖尿病预测与可视化 - 机器学习 python

    # 1 前言 🚩 基于机器学习与大数据的糖尿病预测 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 选题指导,项目分享: https://gitee.com/yaa-dc/warehouse-1/blob/master/python/README.md 本项目的目的主要是对糖尿病进行预测。主要依托某医院体检数

    2024年02月08日
    浏览(55)
  • 【毕业设计】基于大数据的京东消费行为分析与可视化 - python 机器学习

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月04日
    浏览(62)
  • 毕业设计-基于深度学习玉米叶病虫害识别系统 YOLO python 机器学习 目标检测 人工智能 算法

    目录 前言 设计思路 一、课题背景与意义 二、算法理论原理 2.1 卷积神经网络 2.2 YOLOv5算法 三、检测的实现 3.1 数据集 3.2 实验环境搭建 3.3 实验及结果分析 实现效果图样例 最后        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准

    2024年02月03日
    浏览(136)
  • 基于Python机器学习算法农业数据可视化分析预测系统(完整系统源码+数据库+详细文档+论文+部署教程)

    基于python机器学习XGBoost算法农业数据可视化分析预测系统,旨在帮助农民和相关从业者更好地预测农作物产量,以优化农业生产。该系统主要包括四个功能模块。 首先,农作物数据可视化模块利用Echarts、Ajax、Flask、PyMysql技术实现了可视化展示农作物产量相关数据的功能。

    2024年04月27日
    浏览(42)
  • 【算法与数据结构】--算法基础--算法设计与分析

    一、贪心算法 贪心算法是一种解决优化问题的算法设计方法,其核心思想是在每一步选择当前状态下的最优解,从而希望最终达到全局最优解。下面将介绍贪心算法的原理、实现步骤,并提供C#和Java的实现示例。 1.1 原理: 贪心算法的原理基于局部最优选择,通过在每一步选

    2024年02月07日
    浏览(52)
  • 数据结构与算法设计分析—— 数据结构及常用算法

    1、顺序表与链表 线性表是 线性结构 ,是包含n个数据元素的有限序列,通过顺序存储的线性表称为 顺序表 ,它是将线性表中所有元素按照其逻辑顺序,依次存储到指定存储位置开始的一块连续的存储空间里;而通过链式存储的 链表 中,每个结点不仅包含该元素的信息,还

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包