算法设计与分析的综合性论文_CSE领路人计划——算法设计与分析

本文介绍了算法设计与分析的重要性,特别是动态规划算法在解决0-1背包问题中的应用。通过详细的过程分析,展示了动态规划如何简化求解过程,以及算法在计算机科学中的成就和未来发展的重要性。
摘要由CSDN通过智能技术生成

算法设计与分析

 Algorithms Design and Analysis 

前言

ba3f2851d14abcf9bd7f67e964354eb3.gif

       算法分析与设计是计算机科学技术中处于核心地位的一门专业基础课,越来越受到重视。因此,算法分析与设计是我们掌握了编程语言之后所要学习的一门有趣的必修课。

       现在,让我们进入算法的世界,一起来了解算法的前生今世以及用算法解决问题的例子,感受算法的独特魅力!

01

f4fd3b10740ab5fcb714e6cc4b0f8764.gif

算法概念与起源

Concept and origin

       算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令。代表着用系统的方法描述解决问题的策略机制。它能够对一定规范的输入,在有限时间内获得所要求的输出。算法与计算机的结合,把人类从繁复的运算中解放出来。

44764660b0eb0e12b665836630a74803.png

02

f4fd3b10740ab5fcb714e6cc4b0f8764.gif

算法基本内容

Basic content of algorithm

⭐算法的五大基本特征:

可行性丨Effectiveness

算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

确切性丨Definiteness

算法的每一步骤必须有确切的定义。

输入项丨Input

一个算法有0个或多个输入,以刻画运算对象的初始情况。

输出项丨Output

一个算法有一个或多个输出,以反映对输入数据加工后的结果。

有穷性丨Finiteness

算法的有穷性是指算法必须能在执行有限个步骤之后终止。

⭐算法评估标准:

e82c7f00e878d36428218667ee25d49f.png

⭐常见算法:

0b9205ade55ca86b6a16fdae85bddd44.png

03

f4fd3b10740ab5fcb714e6cc4b0f8764.gif

算法介绍

Algorithm introduction

       到这里,相信大家对什么是算法已经有了初步的认识,接下来,就让我们来看一个经典的例子——动态规划算法求解0-1背包问题来感受一下算法在问题求解中的应用。

动态规划 · 0-1背包问题

2fd108abfcd5e1e26f39f3ae76c63190.png

问题描述

      给定n种物品和一背包。物品i的重量是wᵢ,其价值为vᵢ,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

      对于一种物品,要么装入背包,要么不装。所以对于一种物品的装入状态可以取0和1。我们设物品i的装入状态为xᵢ,xᵢ∈(0, 1),此问题称为0-1背包问题。

过程分析

      对于这个问题,若是采用暴力计算的求解方法,即依次计算对每个物品放与不放入背包是否超过背包的承重,若没超过那么已放入物品的总价值是多少,并且记录下来最大的总价值即是问题的解。显然,若是按照这种方法计算则要考虑2ⁿ种情况,恐怕也只有计算机能完成如此恐怖的计算量了,那么是否有更好的方法来简化求解过程呢?

      答案是肯定的,有多种更优秀的算法来简化0-1背包的求解过程,这里只举出一个动态规划算法求解的例子。

动态规划算法求解0-1背包

      现构造一个(n+1)*(C+1)的矩阵V,其中第i行第j列的数字V[i, j](i=0, 1, ..., n; j=0, 1, ..., C)表示从前 i 个物品中取出部分物品装入承重为 j 的背包,所得的最大价值。那么矩阵第n行第C列的值,即V[n, C]就是原问题的解。

7463f965d5f69d5f9077f81f0d98c0fb.png

      对于该矩阵第0行和第0列的所有元素显然均为0。而对于任意的第i行第j列的元素分析过程如下:

①如果第i个物品的重量大于背包承重j,它不可能被放进背包中,取V[i-1, j]作为V[i, j]的值;

②如果第i个物品的重量小于等于背包承重j,这个物品可以被放进背包中,则需要进行比较。假设这个物品重为w,价值为v,比较V[i-1, j]与V[i-1, j-w]+v的值,取两者间更大的一方作为V[i, j]的值。

1221e71ff1dd444acdab46467ef480dd.png

      按照这一方法逐个遍历矩阵的每一个元素,只需要进行n*C次尝试即可得到正确答案。

04

f4fd3b10740ab5fcb714e6cc4b0f8764.gif

算法成就

Algorithm achievement

51267d37734aa1eb2536963487683741.png

图灵奖

有“计算机界的诺贝尔奖”之称。专门奖励那些对计算机事业作出重要贡献的个人。其名称取自计算机科学的先驱、英国科学家艾伦·麦席森·图灵(Alan M. Turing)。图为艾伦·麦席森·图灵。

ecf5b33f5f22bcfa27e9a8d0690a8fb0.png

国际知名期刊

如SCI、IE、Nature等每年收录大量计算机论文,截止目前,计算机已成为国际论文的一大板块。

20af10196929cb8199f3ddca79f80e26.png

优秀的算法学家

图为Edsger Wybe Dijkstra

从算法诞生以来,许多优秀的算法学家出现,为算法的发展做出了巨大的贡献,其中比较杰出的有Don E.Knuth、Udi Manber、Edsger Wybe Dijkstra等。

05

f4fd3b10740ab5fcb714e6cc4b0f8764.gif

未来发展

Future development

81b8d21ac6ee9aff645d496612886f40.png

算法的崛起

      虽然每个人都知道摩尔定律的魔力(集成电路上可以容纳的晶体管数目在大约每经过24个月便会增加一倍,换言之,处理器的性能每隔两年翻一倍),驱动数字经济发展的性能改进遵循的就是摩尔定律,但鲜有人知道,在很多领域,算法所产生的性能改进已经超过了硬件所带来的性能提升。实际上,2010年的一份官方报告表明,算法已经为很多领域带来了显著的性能提升,比如语音识别、神经语言处理和物流。“更加令人感到吃惊但同时又令人难以理解的是,在很多领域,算法为性能带来的提升已经远远超过了处理器速度提升所带来的性能改进。”

       因此,未来属于算法,而不是代码!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值