前一篇分析了求质数的两个算法,在代码执行效率和系统开销两方面进行了比较。

这在通信系统的设计和实现中,是非常重要的两点。因为需要同时面对的是巨大的用户群,和复杂的业务应用,通信系统的设计经常要面临鱼与熊掌间的选择。

用最简单和最形象的比喻,就是使用数组还是用链表结构来存储和处理数据。很多时候,硬件的资源是无法提供对数组的支持的。这时候,不得不使用链表结构的算法,而继续的优化算法也非常必要。

还是用求质数的算法来做说明。  ^_^

[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 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=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 stopwatch = new Date();
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

优化算法的意义,之二。相关推荐

  1. 基于遗传算法的多目标优化算法(附代码案例)

    一.理论基础 多目标优化问题可以描述如下: 其中,f(x) 为待优化的目标函数:x 为 待优化的变量:lb 和 ub 分别为变量 x 的下限和上限约束:Aeq * x = beq 为变量 x 的线性等 ...

  2. Pymoo:优化算法的性能指标(Performance Indicators)

    Pymoo:优化算法的性能指标 一.Pymoo中提供的多目标优化算法的性能指标简介 二.Pymoo中优化算法的性能指标实现方法 2.1 GD (Generational Distance)性能指标 2 ...

  3. 5分钟快速掌握 Adam 优化算法

    梯度下降是一种优化算法,遵循目标函数的负梯度以定位函数的最小值. 梯度下降的局限性是,所有输入变量都使用单个步长(学习率).像AdaGrad和RMSProp这样的梯度下降的扩展会更新算法,以对每个输入 ...

  4. 深度学习核心技术精讲100篇(二十八)-由浅入深概览机器学习优化算法

    前言 学习算法一直以来是机器学习能根据数据学到知识的核心技术.而好的优化算法可以大大提高学习速度,加快算法的收敛速度和效果.本文从浅层模型到深度模型纵览监督学习中常用的优化算法,并指出了每一种优化算法 ...

  5. 推荐算法炼丹笔记:科学调参在模型优化中的意义

    作者:九羽 ,公众号:炼丹笔记 基于Embedding的推荐算法模型一直是近几年研究的热门,在各大国际会议期刊都能看到来自工业界研究与实践的成果.MF(Matrix Factorization)作为传 ...

  6. 深度学习笔记(10) 优化算法(二)

    深度学习笔记(10) 优化算法(二) 1. Adam 优化算法 2. 学习率衰减 3. 局部最优的问题 1. Adam 优化算法 Adam代表的是 Adaptive Moment Estimation ...

  7. 二维光子晶体禁带的遗传优化算法实现

    二维光子晶体禁带的遗传优化算法MATLAB源代码 光子晶体中因周期性结构而存在的频率禁带称为光子禁带,光子禁带的存在是光子晶体具有广泛应用前景的重要原因. 禁带越大,可控光的频带也越宽,因此如何设计合 ...

  8. 为什么只有状态转移算法才是真正意义上的智能优化算法,其它的都是“假冒伪劣”?

    0 旁白 长期以来,"论文为王"的观念被推崇至上,没有论文就没有发言权,发表了大量学术论文才能高谈阔论.坐而论道,以至于出现"大家都忙着写论文,没有时间搞科研" ...

  9. 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)

    强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...

最新文章

  1. python datetime datetime_Python datetime.tzinfo方法代碼示例
  2. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 )
  3. this、new、apply和call详解
  4. php_mvc实现步骤五
  5. 解决浏览器跨域加载本地文件报错 Access to script at ‘xxx‘ from origin ‘null‘ has been blocked by CORS policy
  6. UI设计干货素材|动效导航,漂亮的悬停动效
  7. 关于阈值化函数cvThreshold()
  8. 常用Linux命令:
  9. Theine for Mac(电脑休眠工具)
  10. BMFont 字体生成工具使用
  11. python 运行另一个py_如何在python中执行另一个py文件
  12. python贪吃蛇的实验报告_贪吃蛇游戏程序设计实验报告.doc
  13. WIN7英文操作系统,中文语言包安装。及部分开发环境,软件中文乱码问题解决。
  14. bootstrap插件bootbox参数
  15. 图的遍历(深度优先搜索)
  16. mysql基础命令集合
  17. 计算机中rom和ram分别指什么,RAM和ROM分别是什么意思
  18. HOUR 11 Developing Advanced Pointers
  19. 戴维斯计算机科学值得读吗,2018加州大学戴维斯分校计算机科学专业基本信息详细解读...
  20. java计算机毕业设计共享充电宝管理系统源码+mysql数据库+系统+lw文档+部署(2)

热门文章

  1. dell服务器安装系统注意之二.(2003/xp 的sn)
  2. 天空之城 matlab,[转载]matlab演奏《天空之城》代码
  3. seleniumpython定位网页元素方法_使用Selenium对网页元素进行定位的诸种方法
  4. python rest 框架_python-更新用户REST框架Django
  5. Matlab 画图字体,字号的设定,图片大小和比例
  6. [MySQL]经常无故崩溃amd.dll , boot1.exe病毒
  7. java udp 接受阻塞_Java UDP发送与接收
  8. python 定义字符串变量_python 字符串(1)
  9. java自定义一个timeout,Timeout操作符 RxJava 学习笔记二十一
  10. 插入文件找不到桌面了?