时间计算

数据结构与算法基础------计算时间复杂度

三世轮回 提交于 2020-02-28 23:26:01
算法效率从以下两个方面考虑: 时间效率:指的是算法所耗费的时间 空间效率:指的是算法执行过程中所耗费的存储空间 时间 效率和空间效率有时候是矛盾的。 在这里我们只讨论事前分析法,因为事后分析法也和计算机的软硬件等其他客观条件有关。 事前分析法 一个算法的运行时间大致等于计算机执行一种 简单操作 (如赋值,比较,移动等)所需的时间与算法中进行的 简单操作的次数的乘积 。 以矩阵为例: for ( i = 1 ; i <= n ; i ++ ) //n+1次 for ( j = 1 ; j <= n ; j ++ ) //n*(n+1)次 { c [ i ] [ j ] = 0 ; //n*n次 for ( k = 0 ; k <= n ; k ++ ) //n*n*(n+1)次 c [ i ] [ j ] = c [ i ] [ j ] + a [ i ] [ k ] * b [ k ] [ j ] ; //n*n*n次 } 那么上述算法所消耗的时间是该算法中每条语句的执行次数之和,则消耗的时间T(n)=2n 3 +3n 2 +2n+1。 为了便于比较不同算法的时间效率,我们仅比较他们的数量级。 若某个辅助函数f(n)(即只包含最高数量级的函数),使得当n趋近于无穷大时,T(n)/f(n)的极限值为 不等于零的常数 ,则称f(n)是T(n)的同数量级函数。记作 T(n)=O(f(n)

iOS活动倒计时的两种实现方式

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-27 01:14:05
代码地址如下: http://www.demodashi.com/demo/11076.html 在做些活动界面或者限时验证码时, 经常会使用一些倒计时突出展现. 现提供两种方案: 一.使用NSTimer定时器来倒计时 二.使用GCD来倒计时(用GCD这个写有一个好处,跳页不会清零, 跳页清零会出现倒计时错误的) 压缩文件截图项目界面: 项目截图: 一. 使用NSTimer定时器来倒计时 主要步骤: Step1. 计算截止时间与当前时间差 Step2. 先递减时间差 倒计时-1(总时间以秒来计算) Step3. 给时分秒字符串通过递减过后的秒数,重新计算数值,并输出显示. 获取当天的字符串, 格式为年-月-日 时分秒: /** * 获取当天的字符串 * * @return 格式为年-月-日 时分秒 */ - (NSString *)getCurrentTimeyyyymmdd { NSDate *now = [NSDate date]; NSDateFormatter *formatDay = [[NSDateFormatter alloc] init]; formatDay.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *dayStr = [formatDay stringFromDate:now]; return dayStr; }

转一篇关于并发和并行概念的好文,附带大神评论

会有一股神秘感。 提交于 2020-02-22 05:23:47
转自:https://laike9m.com/blog/huan-zai-yi-huo-bing-fa-he-bing-xing,61/ 还在疑惑并发和并行? OK,如果你还在为并发(concurrency)和并行(parallesim)这两个词的区别而感到困扰,那么这篇文章就是写给你看的。搞这种词语辨析到底有什么意义?其实没什么意义,但是有太多人在混用错用这两个词(比如遇到的某门课的老师)。不论中文圈还是英文圈,即使已经有数不清的文章在讨论并行vs并发,却极少有能讲清楚的。让一个讲不清楚的人来解释,比不解释更可怕。比如我随便找了个网上的解释: 前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生. 并发性(concurrency),又称共行性,是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。 并行(parallelism)是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行。 来个比喻:并发和并行的区别就是一个人同时吃三个馒头和三个人同时吃三个馒头。 看了之后,你懂了么?不懂,更晕了。写出这类解释的人,自己也是一知半解,却又把自己脑子里模糊的影像拿出来写成文章,让读者阅毕反而更加疑惑。当然也有可能他确实懂了,但是写出这种文字也不能算负责。至于本文,请相信,一定是准确的,我也尽量做到讲解清晰。 OK,下面进入正题,

深度学习——循环神经网络

为君一笑 提交于 2020-02-19 06:09:16
理解 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network)。 递归神经网络(RNN)相对于MLP和CNN的主要优点是,它能够处理序列数据,在传统神经网络或卷积神经网络中,样本(sample)输入与输出是没有“顺序”概念的,可以理解为,如果把输入序列和输出序列重新排布,对整体模型的理论性能不会有影响。RNN则不同,它保证了输入和输出至少有一端是有序列特征的。 传统的神经网络结构可以归纳为下图左边的形式,隐藏层 h 的状态是不保存的,而在RNN中,每一个时间步的隐藏层状态都是由上一层的输入和上一个时间的状态共同计算得到。 为什么循环神经网络可以往前看任意多个输入值呢? 来看下面的公式,即 RNN 的输出层 o 和隐藏层 s 的计算方法: 如果反复把式 2 带入到式 1,将得到: RNN 的训练算法为:BPTT BPTT 的基本原理和 BP 算法是一样的,同样是三步: 1、前向计算每个神经元的输出值; 2、反向计算每个神经元的误差项值,它是误差函数E对神经元j的加权输入的偏导数; 3、计算每个权重的梯度。 最后再用随机梯度下降算法更新权重。 模型参数 W_xh: 状态-输入权重 W

js根据时间戳倒计时

﹥>﹥吖頭↗ 提交于 2020-02-17 18:33:45
今天有个需求,要在页面上做当前时间距离下个月1号的倒计时。在网上找了很多案例也试了很多,大部分都是获取本地当前时间,然后设置结束时间进行计算,然后倒计时。但是有几个 问题 :   1.如果本地时间和服务器时间是一样的那么就不会出现什么问题,   2.由于无法保证所有用户的本地时间都与服务器时间相同,而使用 new Date() 获取的本地时间,那么如果用户修改本地时间,就会对倒计时进行影响,从而出现问题   解决办法:   从后台获取 开始时间和结束时间的时间戳来进行倒计时,这样的话就不用去管本地的时间是否与服务器系统时间相同 具体代码如下:  <time id="timer">26天6小时</time>    第一种使用setInterval来进行倒计时 <script> var startTime=1508428800;//开始时间 var endTime=1508428860; //结束时间 setInterval(function(){ var ts =endTime-startTime;//计算剩余的毫秒数 console.log(ts); var dd = parseInt(ts / 60 / 60 / 24, 10);//计算剩余的天数 var hh = parseInt(ts / 60 / 60 % 24, 10);//计算剩余的小时数 var mm =

js计算两个时间之间的间隔

白昼怎懂夜的黑 提交于 2020-02-17 16:03:22
计算时间间隔的方法有很多,这里只是一种方式,可以方法里直接传入两个时间,也可以传入两个字符串格式的时间,在方法里解析一下就ok,这个例子里不传入参数,直接在方法里随便写一个时间来演示一下 fun() { let startTime = new Date('2018-1-1'); // 开始时间 let endTime = new Date(); // 结束时间 let usedTime = endTime - startTime; // 相差的毫秒数 let days = Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数 let leavel = usedTime % (24 * 3600 * 1000); // 计算天数后剩余的时间 let hours = Math.floor(leavel / (3600 * 1000)); // 计算剩余的小时数 let leavel2 = leavel % (3600 * 1000); // 计算剩余小时后剩余的毫秒数 let minutes = Math.floor(leavel2 / (60 * 1000)); // 计算剩余的分钟数 return days + '天' + hours + '时' + minutes + '分'; } 当然这里这么写是为了说明每一步是为了干什么

FIFO深度计算

£可爱£侵袭症+ 提交于 2020-02-16 02:51:37
数字IC设计中我们经常会遇到这种场景,工作在不同时钟域的两个模块,它们之间需要进行数据传递,为了避免数据丢失,我们会使用到FIFO。当读数据的速率小于写数据的速率时,我们就不得不将那些还没有被读走的数据缓存下来,那么我们需要开多大的空间去缓存这些数据呢?缓存开大了会浪费资源,开小了会丢失数据,如何去计算最小FIFO深度是我们讨论的重点。 数据突发长度(burst length) 在讲解如何去计算FIFO深度之前,我们来理解一个术语burst length,如果你已经了解了可以跳过。要理解数据的突发长度,首先我们来考虑一种场景,假如模块A不间断的往FIFO中写数据,模块B同样不间断的从FIFO中读数据,不同的是模块A写数据的时钟频率要大于模块B读数据的时钟频率,那么在一段时间内总是有一些数据没来得及被读走,如果系统一直在工作,那么那些没有被读走的数据会越累积越多,那么FIFO的深度需要是无穷大的,因此 只有在突发数据传输过程中讨论FIFO深度才是有意义的 。也就是说我们一次传递一包数据完成后再去传递下一包数据,我们把一段时间内传递的数据个数称为 burst length 。在维基百科中, burst transmission 是这样解释的:In telecommunication, a burst transmission or data burst is the broadcast

体系结构复习3

送分小仙女□ 提交于 2020-02-16 02:45:28
流水线技术 访问主存的冲突解决 设置两个独立编址的存储器 指令和数据依然混合放在同一个主存,但设置两个Cache:指令Cache和数据Cache。程序空间和指令空间相互独立的系统结构称为哈佛结构。 指令和数据依然混合放在统一主存,但主存采用多体交叉结构。(有一定的局限性) 在主存和指令分析部件之间增设指令缓冲站 先行指令缓冲站 先行程序计数器PC1 先行程序计数器PC 指令缓冲 存储区 主 存 指令分析部件 指令寄存器IR 控 制 控制逻辑 器 指令缓冲存储区&控制逻辑 a) 按队列方式工作 b) 只要指令缓冲站不满,他就自动地向主存控制发取指令请求,不断地取指令 指令分析部件 a) 每分析完一条指令,就自动向指令缓冲站发出取下一条指令的请求。指令取出之后就把指令缓冲站中的指令作废。 b) 指令缓冲器中存放的指令条数是动态变化的 两个程序计数器 a) 先行程序计数器PC1:用于从主存预取指令 b) 现行程序计数器PC:用来记录指令分析部件当前正在分析的指令的地址 先行控制 先行控制技术:缓冲技术和预处理技术的结合 a) 缓冲技术:在 工作速度不固定 的两个功能部件之间设置缓冲器,用以 平滑 它们的工作。 b) 预处理技术:预取指令、对指令进行加工以及预取操作数等。 采用先行控制方式的处理机结构 主存储器 存储控制器 先行指令缓冲站 先行读数站 指令分析部件 先行操作站 运算控制器

卡方检验再次复习

。_饼干妹妹 提交于 2020-02-08 02:57:47
两类问题介绍: 两个样本之间的比例是否一样,比如两个城市的有钱人和穷人比例是否一致。 两个分类变量之间是否独立,比如时间和级别是否存在依赖关系。时间可以划分n个等级,级别也可以划分几个等级,然后df为(r-1)*(c-1) 二者区别: 感觉上计算卡方值公式都是一样的,但实际上是由区别。 1:抽样顺序不同,前者是已经分好类,再抽,后者是直接抽再分类 2:假设检验的内容不同,前面是各类别的比例等于某个期望概率,后者是两个变量是否相互独立 3:计算前者卡方是∑(实际-期望)*2/期望,后者是概率相乘 计算方法: 1:excel可以用chitest函数 2:r语言用chisq.test tablefc1<-matrix(c(36.67,66.66,90,93.33,93.33,33.33,63.34,63.33,76.67,76.67),nrow=2,ncol=5) chisq.test(tablefc1) 来源: https://www.cnblogs.com/marszhw/p/12275398.html

【深度学习基础】从零开始的炼丹生活09——循环神经网络

我只是一个虾纸丫 提交于 2020-02-08 01:24:03
往期回顾: 06——深度学习中的正则化 07——深度模型中的优化 08——卷积网络 为了处理一维序列数据,我们转向神经网络框架中另一强大的特化,循环神经网络。(主要参考《深度学习》和cousera上吴恩达的课程) 循环神经网络 (recurrent neural network)或 RNN ,是一类用于处理序列数据的神经网络。大多数循环网络都能处理可变长度的序列。循环网络强调参数共享,这使得模型能够扩展到不同形式的样本并进行泛化。例如 “我八点吃的早饭” 和 “我早饭在八点吃” ,要提取时间信息。如果我们训练一个前馈网络,需要分别学习句子每个位置的所有语言规则,而循环网络在几个时间步内共享相同的权重,不需要在每个位置都分别学习。 循环网络的计算图有两种表现方式,如图。左边循环图展开后就是右边展开图。 一、循环神经网络 RNN 的设计模式主要有以下几种: 每个时间步都有输出,并且隐藏单元之间有循环连接的循环网络。如图: 每个时间步产生一个输出,只有当前时刻的输出到下个时刻的隐藏单元之间有循环连接的循环网络。如图: 隐藏单元之间存在循环连接,读取整个序列后产生单个输出的循环网络,如图: 现在我们研究第一种情形的 RNN 前向传播公式。这种循环网络可以计算任何图灵可计算的函数。我们使用 tanh 作为激活函数,RNN 从特定的初始状态 h ( 0 ) \boldsymbol h^{(0)