热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

2021年信息学部物联网工程学院学生科协算法科普

2021年信息学部物联网工程学院学生科协算法科普一、什么是算法二、算法重要吗三、算法有好坏吗四、常用算法介绍1.查找算法概述顺序查找二分查找2.排序算法概述冒泡排序选择排序快速排序


2021年信息学部物联网工程学院学生科协算法科普

  • 一、什么是算法
  • 二、算法重要吗
  • 三、算法有好坏吗
  • 四、常用算法介绍
    • 1.查找算法
      • 概述
      • 顺序查找
      • 二分查找
    • 2.排序算法
      • 概述
      • 冒泡排序
      • 选择排序
      • 快速排序
    • 3.图的搜索算法
      • 概述
      • 深度优先搜索
      • 广度优先搜索
    • 4.贪心算法
      • 核心思想
      • 举例
      • 总结
    • 5.动态规划
      • 核心思想
      • 举例


一、什么是算法

在数学领域里,算法是用于解决某一类问题的公式和思想。 计算机领域的算法本质上是用于解决特定问题的指令序列。它和数学上的算法有许多共通之处。比如,他们都是为了解决某一问题,或者是简化某一问题的解决步骤而生的;他们都体现了一些计算的思路等等。


二、算法重要吗


真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”。


算法在我们日常生活中也有着很广泛的应用。比如我们的导航,就是靠着一些关系和图论相关的算法,帮我们找到最佳路线。双十一,就更不用说了,面对一分钟上百亿的交易流水,保证交易不延迟,不出错,这也是算法在背后发挥着作用。


三、算法有好坏吗

一般来说,我们评价一个算法的好坏一般可以从四个角度去分析,时间复杂度、空间复杂度、正确性和健壮性。
在判断一个算法的好坏时,我们往往最关心的、也是最直观的就是时间复杂度。
时间复杂度是定性描述算法运行时间的一个指标,通常用大O表示法表示。通常,我们总是希望时间复杂度越低越好。
在这里插入图片描述
在这里插入图片描述


四、常用算法介绍


1.查找算法


概述

查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如在学生表里找到指定学生姓名的学号。


顺序查找

顺序查找即从线性表的第一个元素开始,逐一向后查找,知道找到想找的元素或查找失败。


二分查找

二分查找是一种在每次比较之后将查找空间一分为二的算法。

举例:在下列升序列表中查找48。
在这里插入图片描述
第一次查找
在这里插入图片描述
第二次查找
在这里插入图片描述

第三次查找
在这里插入图片描述


2.排序算法


概述

在生活中,我们离不开排序。例如上体育课时,同学们会按照身高 顺序进行排队;又如每一场考试后,老师会按照考试成绩排名次。
在编程的世界中,应用到排序的场景也比比皆是。例如当开发一个 学生管理系统时,需要按照学号从小到大进行排序;当开发一个电商平台时,需要把同类商品按价格从低到高进行排序等等。


冒泡排序

在这里插入图片描述


选择排序

在这里插入图片描述


快速排序

基本思想
选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到全部数据变成有序。
在这里插入图片描述


3.图的搜索算法


概述

搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。


深度优先搜索


  • 核心思想:一条道走到黑、不碰南墙不回头。
  • 做法:从某个顶点出发, 首先访问这个顶点, 然后找出刚访问这个节点的第一个未被访问的子节点,然后再以此子节点为顶点, 继续找它的下一个顶点进行访问。重复此步骤,直至所有节点都被访问完为止。

广度优先搜索


  • 核心思想:一石激起千层浪
  • 做法:将树按照层级层层遍历,直到某一层全部遍历完毕再遍历下一层级,直到所有节点全部遍历完成。

4.贪心算法


核心思想

不从整体最优上加以考虑,仅考虑局部最优解。


举例

假如你是学校教务老师,你有如下课程表,你希望将尽可能多的课程安排在某间教室上。


课程开始时间开始时间
美术9:0010:00
英语9:3010:30
数学9:0011:00
计算机10:3011:30
音乐11:0012:00

思路:
从日常生活角度看,我们一般会考虑最早结束的课放在最前面上。我们模仿这样的思想,那么这些课程里最早结束的就是美术。我们把他放在第一节。所以从9点到10点这个时间段内就被占用了,而10点到12点就是完整的空闲时间。然后我们从10点开始找最早结束的,也就是数学。现在9点到11点都已经安排好了。最后我们再把音乐安排上去。这样,仅从局部最优考虑,也得到了全局最优解。


总结

总是作出当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,他所做出的选择只是在某种意义上的局部最优选择。但对许多问题它能产生整体最优解。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。


5.动态规划


核心思想

动态规划与分治思想类似,通过解决子问题后组合子问题的解来来求解原问题。


举例

假设你是个贪婪的小偷,背着可装4磅重东西的背包,在商场伺机盗窃各种可装入背包的商品。 你力图往背包中装入价值最高的商品,你会怎么呢?
在这里插入图片描述


  • 方法一:穷举
    将8种可能的情况一一列出,找出可行的最优解。
    在这里插入图片描述
    存在的问题:当数据量增大时,该方法需要枚举的可能性将按指数规律增长,即该算法的时间复杂度为O(2n)O(2^n)O(2n)。在解决实际问题时显然不可行。
  • 方法二:动态规划
    ①先把4磅的大背包拆分成1磅、2磅、3磅、4磅这四种规格。
    也就是说,一个4磅的大背包可以通过小背包组合而成。
    ②先考虑只偷吉他
    在这里插入图片描述
    ③再考虑偷吉他和笔记本
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ④最后考虑偷吉他、笔记本和音箱
    在这里插入图片描述
    在这里插入图片描述
    此时,原问题的结果被我们通过对子问题的结果进行组合解决了,答案就是3500美元。

推荐阅读
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 计算成像的原理与应用研究
    本文探讨了计算成像的原理与应用研究。首先介绍了小孔成像实验和软件方面的相关内容。随后从傅里叶光学的角度简单谈了成像的过程。成像是观测样品分布的一种方法,通过成像系统接收光的强度来呈现图像。视网膜作为接收端接收到的图像实际上是由像元组成的矩阵,每个元素代表相应位置像元接收光的强度。大脑通过对图像的分析,得出一系列信息,如识别物体、判断距离等。计算成像是一种采集记录系统,通过处理数据得到样品分布与像的对应关系,用于后续问题的分析。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 词袋模型的通俗介绍
    词,袋, ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
author-avatar
曉--伍_621
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有