小工具      在线工具  汉语词典  css  js  c++  java

一文读懂Python算法

Python算法,算法,人工智能,python 额外说明

收录于:196天前

前言:Hello大家好,我是小哥谈。一个程序主要由数据算法两部分组成。数据是程序操作的对象,而算法是程序操作的步骤。数据这个概念相信大家都有所了解,相对数据概念来说,算法这个概念似乎有些模糊,那本节课就带领大家来了解算法的含义、算法的作用、算法的基础以及常用的算法等内容。Come on!让我们一起走进算法的世界吧!-

     目录

-1.什么是算法

-2.算法的作用

-3.算法的基础

-4.算法性能分析与度量

-1.什么是算法

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。-

算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序,来解决同一个问题,这里存在两个问题:一是与计算方法密切相关的算法问题;二是程序设计的技术问题。算法和程序之间存在密切的关系。算法是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算,是对解题方案的准确与完整的描述。制定一个算法,一般要经过设计确认分析编码测试调试计时等阶段。

对算法的学习包括五个方面的内容:

设计算法。算法设计工作是不可能完全自动化的,应学习了解已经被实践证明是有用的一些基本的算法设计方法,这些基本的设计方法不仅适用于计算机科学,而且适用于电气工程、运筹学等领域;

表示算法。描述算法的方法有多种形式,例如自然语言和算法语言,各自有适用的环境和特点;

③ 确认算法。算法确认的目的是使人们确信这一算法能够正确无误地工作,即该算法具有可计算性。正确的算法用计算机算法语言描述,构成计算机程序,计算机程序在计算机上运行,得到算法运算的结果;

分析算法。算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。分析算法可以预测这一算法适合在什么样的环境中有效地运行,对解决同一问题的不同算法的有效性作出比较。

验证算法。用计算机语言描述的算法是否可计算、有效合理,须对程序进行测试,测试程序的工作由调试和作时空分布图组成。


-2.算法的作用

算法是计算机科学中的核心理论之一,也是人类使用计算机解决问题的技巧之一。算法不仅可以应用在计算机领域,还可以应用在数学、物理等一些学术领域中,不仅如此,其实在我们的生活中,也是在时时刻刻使用算法。例如:大厨制作美食的过程、制定工作计划、设计精美页面流程等,都在无形中进行着算法操作。-

(1)搜索信息方面:当今是大数据覆盖的时代,算法加数据能够演化出“五花八门”的应用。例如,我们最熟悉的搜索引擎-百度。高效的算法让用户能够精准地找到想要搜索的信息,如果没有这些“聪明”的算法,用户将迷失在互联网这个巨大的数据森林中。

(2)通信方面:算法不仅在搜索信息方面有所成就,在通信方面亦是如此。如果没有天才的编码和加密算法,我们也不可能在网络上安全地通信,天气预报也不能够如此准确。

(3)工业方面:工业生产需要大量的劳动力来推动生产线的运作,而如何对生产线进行有序管理、保障产品品质量、提高生产效率就成为工业生产中的重中之重。工业自动化管理系统通过大量精密算法的使用,能够智能化地对生产中的各个环节进行管理、监控、优化。完善。

(4)数学方面:算法领域巨大的进步就是来自于美好的思想,它指引我们更有效地解决数学问题。

(5)其他方面:除此之外,工业机器人、汽车、飞机以及几乎所有家用电器中都包含的许多的微处理器都是依赖算法才能发挥作用。


-3.算法的基础

算法是一组完成任务的指令,因此有计算机工作者这样对其进行定义:为了解决某个或者某类问题,需要把指令表示成一定的操作序列,操作序列包括一组操作,每一个操作都会完成特定的功能。简单来说,算法是解决特定问题步骤的描述,即处理问题的策略。-

算法是解决“做什么”和“怎么做”的问题,解决一个问题可能有不同的方法,但是算法分析最为核心的是算法的速度。因此解决问题的步骤是需要在有限时间内能够完成的,并且操作步骤中不可以有不明确的语句,使得步骤无法继续进行下去。通过对算法概念的分析,可以总结出一个算法必须满足五大特性,即输入确定性输出有限性有效性-

(1)输入:一个程序中的算法和数据是相互联系的,算法中需要输入的是数据的值。输入数据可以是多个,也可以是零个,其实输入零个数据并不表示这个算法没有输入,而是这个输入没有直观地显现出来,隐藏在算法本身当中。例如:Python语言中用input()函数向控制台上输入数据,代码如下:


age = input("您的年龄是:") #输入变量值

(2)确定性:一个算法中的每一个步骤的表述都应该是确定的。

(3)输出:输出就是算法实现所得到的结果。算法没有输出是没有意义的。有的算法输出的是数值,有的输出的是图形,有的输出则不显而易见。


print("123456") #输出数值 print("^-^") #输出图形 print(" ") #输出空格,不显而易见

(4)有限性:一个算法在执行有限步骤后能够实现,或者能够在有限时间内完成,就称为该算法具有有限性。

(5)有效性:算法的有效性就是指每一个步骤都能够有效地执行,并且得到确定的结果,还能够用来方便地解决一类问题。


-4.算法性能分析与度量

讲了这么多,那么算法的优劣如何来评定呢?下面就从算法的性能指标和算法效率的度量这两个方面来进行介绍。

(1)算法的性能指标

评定一个算法的优劣,主要有以下几个指标:

-正确性:一个算法必须正确才有存在的意义,这是最重要的指标,要求编程人员应用正确的计算机语言实现算法的功能。

-友好性:算法实现的功能是给用户使用的,自燃要具有良好的使用性,即用户友好型。

-可读性:算法的实现可能需要多次的修改,也可能被移植到其他的功能中,因此算法应当是可读的、可以理解的,方便程序人员对其分析、修改移植到自己的程序中实现某些功能。

-健壮性:在算法中经常出现不合理的数据或者非法的操作,所以一个算法必须具有健壮性才能够对这些问题进行检查、纠正。当读者刚开始学习写算法的时候可以忽略健壮性的存在,但是必须通过不断的学习努力让算法更加完美。

-效率:算法的效率主要是执行算法时计算机资源的消耗,包括计算机内存的消耗和计算机运行时间的消耗,两者可以统称为时空效率。一个算法只有正确性而无效率是没有意义的,通常,效率可以评定一个算法是否正确。如果一个算法需要执行几年,甚至几百年,那么这个算法会被评定为是错误的。

(2)算法效率的度量

度量算法效率的方法有两种:

第一,事后计算。先实现算法,然后运行程序并测量其时间和空间的消耗,这种度量方法有很多弊端,由于算法的运行与计算机的软件、硬件等环境因素有关,不容易发现算法本身的优劣。同样的算法用不同的编译器编译出的目标代码不一样多,完成算法所需要的时间也不同,并且当计算机的存储空间小时,算法的运行时间就会延长。

第二,事前分析估算。这种度量方法是通过比较算法的复杂性来评价算法的优劣,算法的复杂性与计算机软硬件无关,仅与计算时间和存储需求有关。


路漫漫其修远兮,吾将上下而求索。欢迎观看后面文章!

. . .

相关推荐

额外说明

windows下安装Rust后,cargo build Error: linker `link.exe` not found

D:\rust\runoob-greeting\greeting>cargo build error: linker `link.exe` not found | = note: 系统找不到指定的文件。 (os error 2) note: th

额外说明

创客板Arduino之LED控制暗到明 明到暗

布线 注意 只有PWM引脚,才能调节LED亮度。  口才能设置 引脚如: (~) 3  5  6  9  10  11 代码 演示如何通过for循环语句实现LED明暗交替(呼吸灯)效果。 */ void setup() { pinMode(9,

额外说明

oss文件上传 前端上传文件的优势,以及后端需要怎样配合

目录 1. 前言: -> 1.1  前端上传优势:  2. 下面介绍一种普通上传方式:  -> ps: 配合前端进行上传: -> 2.1 流程:   -> 2.2 查看微信小程序官方文档  -> 2.2.1 微信小程序官网位置 ---> 2.2.2  看

额外说明

【转载】RedisUtils 操作五大集合 增删改查

前排提示,我在这个工具类加了@Component注解,如果在springboot的项目使用,记得通过@Autowired注入使用。 import org.springframework.beans.factory.annotation.Autowired

额外说明

docker搭建mysql主从

前言 为什么要使用Docker搭建? 不管是使用源码安装还是离线安装,在服务器上安装一个mysql总会花费不少的时间,而且对于新人来说,中间稍不注意哪一步出错了就导致安装失败,我之前也是安装过2次才成功,更别说直接在服务器上安装mysql主从节点了 使用

额外说明

C++ STL 中的set

std::unordered_set底层实现为哈希表, std::set 和std::multiset 的底层实现是红黑树,红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。 当我们

额外说明

记录使用vue-echarts实现类似心电图

1、使用的"vue-echarts": "^3.1.0"是这个版本 2、最终效果(忽视数据,还没对接真实数据) 3、具体代码 <template> <div class="echart"> <chart :options="chartData

额外说明

无心剑中译纳瓦尔·拉维肯特《如何不靠运气致富》

How to Get Rich Without Getting Lucky 如何不靠运气致富 Naval Ravikant 纳瓦尔·拉维肯特 Source: Kyle Johnson Tumblr Seek wealth, not money or st

额外说明

利用R与NumPy实现矩阵乘法

利用R与NumPy实现矩阵乘法 一、R矩阵乘法 1、A*B——逐项相乘 2、A%*%B——矩阵相乘 3、crossprod(A, B)——A'%*%B(A’:A的转置矩阵)——交叉相乘 二、NumPy矩阵乘法 1、A*B——逐项相乘 2、np.matmu

额外说明

宝塔面板wordpress_如何在WordPress管理面板中删除菜单项

宝塔面板wordpress 您是否曾与难以理解技术的客户合作过?那么,作为顾问、设计师或开发人员,你的工作就是让他们的事情变得更容易。 WordPress 管理面板的菜单中有很多选项,但如果有必要,您可以很容易地删除它们。对于我们的一位客户,我们需要删除

ads via 小工具