问题由来是一位非计算机专业的同学初学算法课,在一些虚拟情景下解题非常地头疼而出现的。
很有意思的是,从回答他的问题中,我也重新思考了一些问题。

Try to create a useful algorithm that takes
O(n^2) for the worst case
Omega(1) for the best case
Theta(log(n)) for the average

当写到这题的时候,我没多想就写了一连串if else,然后往里面填充算法。
可当我试图引导我同学做这道题时,出现了以下对话

”你怎么会用sorting(分类)的算法呢?“
”为什么不能用sorting啊?“
”因为sorting最快average也要O(Nlog(N))啊。“
”为什么啊?“

于是我给他看了sorting算法的表格。虽然解决了问题,但还是不能解决”为什么“啊。说实话,一开始,我也只是把这算法当做规律给记下来了。为什么sorting就不能更好了呢?是否有更好的方法来证明这个呢?

由于数学公式在segmentfault上还是很难编辑,我这里给一个链接好了。

但是似乎还是太复杂了一点,还是死记硬背的把O(Nlog(N))记下来了。

我在想,是否能够这么思考问题。假设,我们只需要找到数的相同数在一个排序好的N元素的array中,假设我们并不知道这个数是否为哪个特定index上,但必然在array中,那很简单,最快的average是O(log(N))。其次,我们要找到第二个这样的数,仍然是O(log(N))。不断循环这个问题,那最后就出现了O(Nlog(N))的排列,然后,我们将这个组合打乱。实际上是个依次逐步的反向过程。虽然打乱组合显然没有必要去一个一个找数。但这个反向过程确是正向过程的最佳方式。(我觉得这两个过程应该可以用数学证明,可惜现在还没有这个能力。)

------------------------------------------------------------分割线-------------------------------------------------------------
另一个问题,多大的概率情况下,我们需要开始考虑概率是否会影响算法。
这也是来自同学对话,但我却非常在意。为什么我们总没有一个确定性的定义划分,认为多大的概率可能会影响算法,或者说,直接将概率引进入算法中。例如,在排列好的一组从0到n取出的N个数中,用binary search找到特定数,然后greedy search找重复数。那如果出现n个数都是重复数,这个算法就变成了O(N)。但是出现这个的概率为1/n^N。所以才可以近乎不记。是否应该定义但概率的倒数小于big O的数量级时,认为该算法会受到影响。
------------------------------------------------------------分割线-------------------------------------------------------------
这篇随笔实在是非常粗浅,本来想把最近自己看的AKS算法和一些并行运算算法的知识介绍一下。但仍然没能找到一种很好的方式来叙述。最近有可能要参加ACM,所以暂时就这样吧。

一篇小的随笔,关于记忆算法和概念相关推荐

  1. 小目标检测的增强算法

    小目标检测的增强算法 Augmentation for small object detection 摘要 近年来,目标检测取得了令人瞩目的进展.尽管有了这些改进,但在检测小目标和大目标之间的性能仍有 ...

  2. 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法

    机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...

  3. 一篇小黄文牵出国内最大黑产

    "如今这年头,没被运营商"上"过(劫持)都不好意思说自己是中国网民!" 这还是乌云在2016年2月一句吐槽的话.三年时间过去了,乌云已不在,而中国网民依旧每日被 ...

  4. 运维小菜鸟随笔Linux入门级操作命令(更新中。。。)

    运维小菜鸟随笔&Linux入门级操作命令 从事实施运维行业已三年有余,却从未系统的学习过Linux,一直停留在有问题找百度的境界.近日终于痛下决心,系统的梳理一下Linux相关知识,顺便看看, ...

  5. 浅析拯救小矮人的 nlogn 算法及其证明

    浅析拯救小矮人的 nlogn 算法及其证明 题型简介: 有 $ n $ 个人,第 $ i $ 个人身高 $ a_i $ 手长 $ b_i $ ,他们为了从一个高为 $ H $ 的洞中出去,决定搭人梯. ...

  6. 小马儿随笔(三)——小标签 大学问

    目前在综合布线工程的甲乙双方和工程监理所关心的主要是工程的质量,如线缆敷设是否符合标准.能否通过测试验收.工程造价是否超预算等等,但是对与用户关系最密切的网络文档和标签标识往往被忽略.经常发生的情况就 ...

  7. QQ抢车位外挂(起始篇)--小研究成果展示

    经过几天的研究,把QQ抢车位的小外挂攻克下来了,哼哼,以后玩这个游戏再也不用进去,1辆车1辆车的换了. 研究证明,QQ对于安全方面做的还是比较好的,不像开心网(http://www.kaixin001 ...

  8. 郦旭东小可爱的大数据算法课程期末复习

    郦旭东小可爱的大数据算法课程期末复习 kmeans问题 kmeans原始问题和kmeans alg算法问题 kmeans问题 kmeans原始问题和kmeans alg算法问题 kmeans 原始问题 ...

  9. 【OpenCV 例程300篇】208. Photoshop 对比度自动调整算法

    OpenCV 例程200篇 总目录 [youcans 的 OpenCV 例程300篇]208. Photoshop 对比度自动调整算法 对比度是指图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量 ...

最新文章

  1. reg类型变量综合电路_SystemVerilog的一些可综合实用技巧
  2. 状态机系列学习笔记01
  3. python安装库 换源操作
  4. GitHub最火热的30个开源机器学习框架
  5. Developing Web Applications with Apache, MySQL, memcached, and Perl
  6. linux安装ld编译器,科学网—手动安装特定版本的gcc编译器 - 亓欣波的博文
  7. 免费数据集获取加速器|Graviti Open Datasets
  8. redis主从配置+哨兵模式
  9. POJ2826 An Easy Problem?!
  10. LoadRunner的Apache的监控
  11. 计算机主板 g41,g41主板bios设置方法
  12. 采用计算机对酒店客房进行管理,酒店客房管理系统—计算机毕业设计论文.doc...
  13. 电子邮件注册帐号大全_电子邮件
  14. java规则计算_亲属计算规则算法--java实现(关键算法摘要)
  15. 计算机一级登录密码忘了怎么办,电脑密码忘了怎么办
  16. 经典文献阅读之--PON
  17. css圆角(border-radius)的深入理解
  18. 淘宝WAP版小BUG分析
  19. 计算机网络多项式的定义,多项式的定义与概念
  20. MATLAB 设置小的tick

热门文章

  1. 转载:二叉树的前中后和层序遍历详细图解(递归和非递归写法)
  2. java小程序源码_【小程序源码分享】基于Java开发的物业管理系统!
  3. 机器人学习--定位算法AMCL全局定位方案
  4. 未来教育计算机二级为什么分数很低,计算机二级考试失分了却不知道为什么?...
  5. linux tar压缩包目录,如何在Linux上使用tar命令解压和压缩文件
  6. specgram python
  7. 工业用微型计算机(15)-指令系统(10)
  8. 工业用微型计算机笔记(13)-指令系统(8)
  9. python源码精要(9)-CPython内部原理快速指南(1)
  10. 基因分子生物学~强和弱化学键