优化算法的意义,之二。
前一篇分析了求质数的两个算法,在代码执行效率和系统开销两方面进行了比较。
这在通信系统的设计和实现中,是非常重要的两点。因为需要同时面对的是巨大的用户群,和复杂的业务应用,通信系统的设计经常要面临鱼与熊掌间的选择。
用最简单和最形象的比喻,就是使用数组还是用链表结构来存储和处理数据。很多时候,硬件的资源是无法提供对数组的支持的。这时候,不得不使用链表结构的算法,而继续的优化算法也非常必要。
还是用求质数的算法来做说明。 ^_^
[1]这是最原始的算法,处理9000个用户数据,需要2600ms。面对10000个用户时,崩溃!
var stopwatch = new Date();
var PrimeArys = [2];
var count = 1;
var isss = 0;
var MaxNum = 9000;
for(var i=3 ;i<=MaxNum;i+=2)
{
isss = 0;
for(var j=3;j<(i/2);j+=2)
{
if(i%j==0){
isss = 1;
break;
}
}
if(isss == 0){
{
PrimeArys[ count++ ] = i;
}
}
}
var t=new Date()-stopwatch;
alert("本次运行了 "+t+" 毫秒。");
[2]分析前面的算法,发现只要不能被某个已知质数整除,就必然不能被该质数的倍数整除。所以,检查的因子就只限于已知的质数列表就可以了。这个算法,在处理9000个数据的时候,只开销了1593ms!
var PrimeArys = [2];
var count = 1;
var isss = 0;
var MaxNum = 9000;
for(var i=3 ;i<=MaxNum;i+=2)
{
isss = 0;
for(var j=0;j<count;j++)
{
if(i%PrimeArys[j]==0){
isss = 1;
break;
}
}
if(isss == 0){
{
PrimeArys[ count++ ] = i;
}
}
}
var t=new Date()-stopwatch;
alert("本次运行了 "+t+" 毫秒。");
[3]继续分析下去,没有一个数字是可以被超过自己一半的数字整除的,所以,继续优化,这样处理9000个用户只开销了1312ms。算法的优化到此,已经可以支持15000个用户了,这比起原始算法只支持9000,是一个巨大的提升!
var PrimeArys = [2];
var count = 1;
var isss = 0;
var MaxNum = 15000;
for(var i=3 ;i<=MaxNum;i+=2)
{
isss = 0;
for(var j=0;j<count;j++)
{
if(i%PrimeArys[j]==0){
isss = 1;
break;
}
}
if(isss == 0){
{
PrimeArys[ count++ ] = i;
}
}
}
var t=new Date()-stopwatch;
alert("本次运行了 "+t+" 毫秒。");
如上可见,在面对真实的应用场景时,合理的算法实现的重大意义。
转载于:https://www.cnblogs.com/Simba-5830/archive/2013/02/06/2900660.html
优化算法的意义,之二。相关推荐
- 基于遗传算法的多目标优化算法(附代码案例)
一.理论基础 多目标优化问题可以描述如下: 其中,f(x) 为待优化的目标函数:x 为 待优化的变量:lb 和 ub 分别为变量 x 的下限和上限约束:Aeq * x = beq 为变量 x 的线性等 ...
- Pymoo:优化算法的性能指标(Performance Indicators)
Pymoo:优化算法的性能指标 一.Pymoo中提供的多目标优化算法的性能指标简介 二.Pymoo中优化算法的性能指标实现方法 2.1 GD (Generational Distance)性能指标 2 ...
- 5分钟快速掌握 Adam 优化算法
梯度下降是一种优化算法,遵循目标函数的负梯度以定位函数的最小值. 梯度下降的局限性是,所有输入变量都使用单个步长(学习率).像AdaGrad和RMSProp这样的梯度下降的扩展会更新算法,以对每个输入 ...
- 深度学习核心技术精讲100篇(二十八)-由浅入深概览机器学习优化算法
前言 学习算法一直以来是机器学习能根据数据学到知识的核心技术.而好的优化算法可以大大提高学习速度,加快算法的收敛速度和效果.本文从浅层模型到深度模型纵览监督学习中常用的优化算法,并指出了每一种优化算法 ...
- 推荐算法炼丹笔记:科学调参在模型优化中的意义
作者:九羽 ,公众号:炼丹笔记 基于Embedding的推荐算法模型一直是近几年研究的热门,在各大国际会议期刊都能看到来自工业界研究与实践的成果.MF(Matrix Factorization)作为传 ...
- 深度学习笔记(10) 优化算法(二)
深度学习笔记(10) 优化算法(二) 1. Adam 优化算法 2. 学习率衰减 3. 局部最优的问题 1. Adam 优化算法 Adam代表的是 Adaptive Moment Estimation ...
- 二维光子晶体禁带的遗传优化算法实现
二维光子晶体禁带的遗传优化算法MATLAB源代码 光子晶体中因周期性结构而存在的频率禁带称为光子禁带,光子禁带的存在是光子晶体具有广泛应用前景的重要原因. 禁带越大,可控光的频带也越宽,因此如何设计合 ...
- 为什么只有状态转移算法才是真正意义上的智能优化算法,其它的都是“假冒伪劣”?
0 旁白 长期以来,"论文为王"的观念被推崇至上,没有论文就没有发言权,发表了大量学术论文才能高谈阔论.坐而论道,以至于出现"大家都忙着写论文,没有时间搞科研" ...
- 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)
强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...
最新文章
- python datetime datetime_Python datetime.tzinfo方法代碼示例
- 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 )
- this、new、apply和call详解
- php_mvc实现步骤五
- 解决浏览器跨域加载本地文件报错 Access to script at ‘xxx‘ from origin ‘null‘ has been blocked by CORS policy
- UI设计干货素材|动效导航,漂亮的悬停动效
- 关于阈值化函数cvThreshold()
- 常用Linux命令:
- Theine for Mac(电脑休眠工具)
- BMFont 字体生成工具使用
- python 运行另一个py_如何在python中执行另一个py文件
- python贪吃蛇的实验报告_贪吃蛇游戏程序设计实验报告.doc
- WIN7英文操作系统,中文语言包安装。及部分开发环境,软件中文乱码问题解决。
- bootstrap插件bootbox参数
- 图的遍历(深度优先搜索)
- mysql基础命令集合
- 计算机中rom和ram分别指什么,RAM和ROM分别是什么意思
- HOUR 11 Developing Advanced Pointers
- 戴维斯计算机科学值得读吗,2018加州大学戴维斯分校计算机科学专业基本信息详细解读...
- java计算机毕业设计共享充电宝管理系统源码+mysql数据库+系统+lw文档+部署(2)
热门文章
- dell服务器安装系统注意之二.(2003/xp 的sn)
- 天空之城 matlab,[转载]matlab演奏《天空之城》代码
- seleniumpython定位网页元素方法_使用Selenium对网页元素进行定位的诸种方法
- python rest 框架_python-更新用户REST框架Django
- Matlab 画图字体,字号的设定,图片大小和比例
- [MySQL]经常无故崩溃amd.dll , boot1.exe病毒
- java udp 接受阻塞_Java UDP发送与接收
- python 定义字符串变量_python 字符串(1)
- java自定义一个timeout,Timeout操作符 RxJava 学习笔记二十一
- 插入文件找不到桌面了?