精华内容
下载资源
问答
  • 算法算法评价

    万次阅读 多人点赞 2019-07-05 20:42:11
    一、算法的基本概念 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。...3.可行性:一个算法是可行的,即算法描述的操作都是可以通过已经实现的基本运算执行有...

    一、算法的基本概念

     

    算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。具有以下性质:

    1.有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成

    2.确定性:算法中每条指令必须有确切的含义,不会产生二义性,对于相同的输入只能得出相同的输出。

    3.可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。

    4.输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。

    5.输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

    我们的目标是设计出正确、可读、健壮、高效率、低存储量需求的算法!

     

    二、算法效率的度量:时间复杂度与空间复杂度

    1.时间复杂度

     

    (1)基本概念

           一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级,因此通常采用算法中基本运算的频度f(n)来分析算法的时间复杂度。因此,算法的时间复杂度记为

    T(n)=O(f(n))。

    式中,O的含义是T(n)的数量级,其严格的数学定义是:若T(n)和f(n)是定义在正整数集合上的两个函数,则存在正常数C和n0 ,使得当n≥n0 时,都满足0≤T(n)≤Cf(n)。

           算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入数据的性质(如输入数据元素的初始状态)

           例如,在数组[0…n-1]中,查找给定值k的算法大致如下:

           (1)i=n-1;

           (2)while(i≥0&&(A[i]!=k)

           (3)i--;

           (4)return i;

    在上面的算法中语句(3)为基本运算,我们令t=i,则程序结束条件为t=n-1,也就是基本运算执行了n-1次,所以时间复杂度为O(n);

           当然,我们在上面也说过,时间复杂度也与输入元素取值有关,例如在上例中,若A中没有与k相同的元素,则(3)语句频度为f(n)=n;若A中最后一个元素为k,则语句(3)频度f(n)=0。

           据此,我们得到最坏时间复杂度,平均时间复杂度,最好时间复杂度。

     

    (2)最坏时间复杂度、平均时间复杂度、最好时间复杂度

    最坏时间复杂度:在最坏情况下,算法的时间复杂度。

    平均时间复杂度:在所有可能输入实例在等概率出现的情况下,算法的期望运行时间。

    最好时间复杂度:在最好情况下,算法的时间复杂度

    一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长。

     

    (3)计算规则

     

    a.加法规则

     

    b.乘法规则

     

    常用渐进时间复杂度为

     

    2.空间复杂度

           算法的空间复杂度S(n)定义为该算法所耗费的存储空间,它是问题规模n的函数。渐进空间复杂度也常简称为空间复杂度,记为S(n)=O(g(n))

     

    展开全文
  • 算法描述

    千次阅读 2019-09-22 17:40:02
    (2)描述算法的工具:算法可用自然语言、框图或高级程序设计语言进行描述。自然语言简单但易产生二义性;框图直观但不擅长表达数据的组织结构;而高级程序设计语言则较为准确、严谨,但因需考虑细节问题而显得相对...

    1.算法、语言、程序的关系

    首先分析数据结构中算法、语言和程序的关系。

    (1)算法:描述数据对象之间的关系(包括数据逻辑关系、存储关系描述)。

    (2)描述算法的工具:算法可用自然语言、框图或高级程序设计语言进行描述。自然语言简单但易产生二义性;框图直观但不擅长表达数据的组织结构;而高级程序设计语言则较为准确、严谨,但因需考虑细节问题而显得相对繁琐。

    (3)程序是算法在计算机中的实现(与所用计算机及所用语言有关)。程序设计的实质是对实际问题选择一种好的数据结构,加之设计一个好的算法,而好的算法在很大程度上取决于描述实际问题的数据结构。

    2.设计实现算法过程的步骤

    (1)找出与求解有关的数据元素之间的关系(建立结构关系)

    (2)确定在某一数据对象上所施加的运算。

    (3)考虑数据元素的存储表示。

    (4)选择描述算法的语言。

    (5)设计实现求解的算法,并用程序语言加以描述。

    3.描述算法的语言选择

    高级语言描述算法具有严格、准确的优点,但用于描述算法,也有语言细节过多的弱点,为此可采用类语言形式。所谓类语言,是指接近于高级语言而又不是严格的高级语言,它具有高级语言的一般语句,撇掉语言中的细节,以便把注意力集中在算法处理步骤本身的描述上。

    传统的描述语言是采用Pascal语言,由于该语言语法规范严谨,非常适合于数据结构。在Windows环境下,又出现了一系列功能强大且面向对象的程序开发工具,如visual C++、Borland C++、Visual Basic等。近年来在计算机科学研究、系统开发、教学以及应用开发中,C语言的使用范围越来越广,C语言成为许多学校计算机专业与非计算机专业必修的高级程序设计语言。C语言类型丰富,执行效率高。

     

    展开全文
  • 写算法系列之--匈牙利算法

    万次阅读 多人点赞 2013-07-18 13:39:59
    【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程,这只是刚开始的样稿,其实我们也才刚开始】 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是...

    【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】


    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。

    -------等等,看得头大?那么请看下面的版本:

    通过数代人的努力,你终于赶上了剩男剩女的大潮,假设你是一位光荣的新世纪媒人,在你的手上有N个剩男,M个剩女,每个人都可能对多名异性有好感(惊讶-_-||暂时不考虑特殊的性取向),如果一对男女互有好感,那么你就可以把这一对撮合在一起,现在让我们无视掉所有的单相思(好忧伤的感觉快哭了),你拥有的大概就是下面这样一张关系图,每一条连线都表示互有好感。


    本着救人一命,胜造七级浮屠的原则,你想要尽可能地撮合更多的情侣,匈牙利算法的工作模式会教你这样做:

    ===============================================================================

    先试着给1号男生找妹子,发现第一个和他相连的1号女生还名花无主,got it,连上一条蓝线


    ===============================================================================

    接着给2号男生找妹子,发现第一个和他相连的2号女生名花无主,got it


    ===============================================================================

    接下来是3号男生,很遗憾1号女生已经有主了,怎么办呢?

    我们试着给之前1号女生匹配的男生(也就是1号男生)另外分配一个妹子。

    (黄色表示这条边被临时拆掉)

    与1号男生相连的第二个女生是2号女生,但是2号女生也有主了,怎么办呢?我们再试着给2号女生的原配(发火发火)重新找个妹子(注意这个步骤和上面是一样的,这是一个递归的过程)


    此时发现2号男生还能找到3号女生,那么之前的问题迎刃而解了,回溯回去

    2号男生可以找3号妹子~~~                  1号男生可以找2号妹子了~~~                3号男生可以找1号妹子

    所以第三步最后的结果就是:


    ===============================================================================

    接下来是4号男生,很遗憾,按照第三步的节奏我们没法给4号男生出来一个妹子,我们实在是无能为力了……香吉士同学走好。

    ===============================================================================

    这就是匈牙利算法的流程,其中找妹子是个递归的过程,最最关键的字就是“ ”字

    其原则大概是:有机会上,没机会创造机会也要上

    【code】

    bool find(int x){
    	int i,j;
    	for (j=1;j<=m;j++){    //扫描每个妹子
    		if (line[x][j]==true && used[j]==false)      
    		//如果有暧昧并且还没有标记过(这里标记的意思是这次查找曾试图改变过该妹子的归属问题,但是没有成功,所以就不用瞎费工夫了)
    		{
    			used[j]=1;
    			if (girl[j]==0 || find(girl[j])) { 
    				//名花无主或者能腾出个位置来,这里使用递归
    				girl[j]=x;
    				return true;
    			}
    		}
    	}
    	return false;
    }
    

    在主程序我们这样做:每一步相当于我们上面描述的一二三四中的一步

    for (i=1;i<=n;i++)
    {
    	memset(used,0,sizeof(used));    //这个在每一步中清空
    	if find(i) all+=1;
    }



    展开全文
  • 用贪心算法写的删除c描述,没有备注看懂书再看,自编
  • 夜深人静写算法(十)- 单向广搜

    万次阅读 2021-01-25 18:54:50
  • GBDT基本原理及算法描述

    万次阅读 多人点赞 2018-08-25 13:16:21
    在AdaBoost基本原理与算法描述中,我们介绍了AdaBoost的基本原理,本篇博客将介绍boosting系列算法中的另一个代表算法GBDT(Gradient Boosting Decision Tree,梯度提升树)算法。这里对GBDT的学习做一个总结,也...
  • 算法

    万次阅读 2018-02-08 00:13:09
    算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有...
  • 算法性能评价

    千次阅读 2019-08-30 18:28:57
    文章目录在前面的话算法性能评价几种常见时间复杂度对比 在前面的话 文档没有任何商业因素,本着共享的精神进行分享,如有素材侵权,请给我留言; 文档都是自己平时看书或工作中的笔记,观点错误的地方...
  • 大多数据结构课本中,串涉及的内容即串的模式匹配,需要掌握的是朴素算法、KMP算法及next值的求法。在考研备考中,参考严奶奶的教材,我也是在...4、手动出较短串的next值的方法 5、最难理解的、足足有5行的代码...
  • 算法效率评价

    千次阅读 2019-05-24 14:15:19
    1.算法效率评价标准 对于同样的编程问题,使用不同的算法最终的结果是一样的,但计算机计算过程是消耗的时间和空间却不一样,但是我们又不能去计算每个算法用的时间和空间,我们只能通过数学的方法来估算这个算法,...
  • 算法算法评价

    千次阅读 2018-04-16 22:02:52
     算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中  每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要的  特性。  (1)、有穷性  一个算法必须总是(对任何合法的输入值)在执行...
  • 12 算法描述与设计.doc

    2020-11-09 05:34:14
    1.2 算法描述与设计 内容分析 本节课主要上让学生了解什么是算法及其特征掌握三种描述算法的方法 教学目标 知识与技能进一步理解什么是算法知道算法的多样性能够对设计的算法做简装的评价学会利用自然语言流程图和伪...
  • 读者者问题的者优先算法

    千次阅读 2019-11-16 11:33:38
    读者者问题的者优先算法问题描述者优先问题分析:需要用到的变量和信号量:算法如下: 问题描述: 有读者(reader)和者(writer)两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会...
  • 1. 典型聚类算法 1.1 基于划分的方法 代表:kmeans算法 ·指定k个聚类中心 ·(计算数据点与初始聚类中心的距离) ·(对于数据点,找到最近的{i}ci(聚类中心),将分配到{i}ci中) ·(更新聚类中心点,是新类别...
  • 常用聚类算法以及算法评价

    千次阅读 2016-07-24 17:02:45
    聚类模型是一种非监督的学习方法,聚类的输入是一组未标记... 主要算法 划分方法 k-Means,k-Medoids(k中心点),CLANRANS(基于选择的算法) 层次分析方法 BIRCH(平均迭代规约和聚类),CURE(代表点聚类),CHAMELEON(动态
  • 数据结构算法算法效率评价

    千次阅读 2017-11-24 14:25:20
    算法(Algorithm):是针对特定问题的问题求解步骤的一种描述。它是指令的有限序列;算法具有如下五个重要特征: 1.1、有穷性:有穷步骤,有穷计算时间; 1.2、确定性:每一条指令必须有确切的含义。换句话说就是:...
  • 算法描述

    千次阅读 2020-04-13 21:34:45
    <center>算法描述</center> 注:本文为学习《C语言从入门到精通》时,对部分章节的总结 1、自然语言 人们日常使用的语言,通俗易懂,但用来描述较为复杂的算法...正确性食指所算法应能安祖具体...
  • 贪心匹配算法 —— 稳定婚姻
  • 写算法的方法

    2010-04-05 14:55:00
    写算法步骤:(以下方法,都是...) 自然语言描述算法,也就是注释(自然语言可以快速描述整个算法的轮廓,对算法有指导意义) 代码(先对 参数列表中参数进行合法性检查。参数合法是操作的前提)(对数据结构中属
  • 基于K-近邻算法的手写数字识别研究

    千次阅读 2017-05-10 10:06:49
    摘要:基于K-近邻算法研究手写数字(0-9)的识别问题,本文通过对手数字的图像进行处理,提取特征向量,使用Python实现了K-近邻算法,并在此基础上开发了一个GUI测试程序,不仅能够实时测试手写识别的结果和调整k...
  • 算法描述---伪代码

    千次阅读 2017-11-23 14:13:40
    算法描述  算法描述是指对设计出的算法,用一种方式进行详细的描述,以便与人交流。描述可以使用自然语言、伪代码,也可使用程序流程图,但描述的结果必须满足算法的五个特征。  使用自然语言描述算法显然很有...
  • 文章描述算法的latex模板,简单实用
  • 一些用于理解的概念: 内排序和外排序 在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序; 在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的...1. 性能评价标准
  • LibTomCtypt中为密码算法定义了一个算法描述子cipher_descriptor,可以把它理解为一个类,里面描述了密码算法应该有的变量和函数操作。密码算法描述子的详细描述可以参见tomcrypt_cipher.h   extern struct ltc_...
  • 分类算法评价标准

    万次阅读 2016-04-06 17:24:07
    在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。 正确率确实是一个...
  • 算法及其描述

    千次阅读 2018-03-01 16:48:00
    算法有五个重要的特性1)有穷性 2)确定性 3)可行性 4)有输入 5)有输出算法设计应满足以下几条目标: 1)正确性 2)可使用性 3)可读性 4)健壮性 5)高效率和低存储量需求二、 算法时间复杂度分析通常有两种衡量算法效率的...
  • C语言_常用算法描述,各种算法,都是用C语言的。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,075,244
精华内容 430,097
关键字:

算法描述怎么写