时间复杂度中的log(n)底数是多少?

问题:

最近有好几学生问我,无论是计算机算法概论、还是数据结构书中,

关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN底数究竟是多少。

解答:

算法中log级别的时间复杂度都是由于使用了分治思想,这个底数直接由分治的复杂度决定。
如果采用二分法,那么就会以2为底数,三分法就会以3为底数,其他亦然。
不过无论底数是什么,log级别的渐进意义是一样的。
也就是说该算法的时间复杂度的增长与处理数据多少的增长的关系是一样的。

我们先考虑O(logx(n))和O(logy(n)),x!=y,我们是在考虑n趋于无穷的情况。
求当n趋于无穷大时logx(n)/logy(n)的极限可以发现,极限等于lny/lnx,也就是一个常数,
也就是说,在n趋于无穷大的时候,这两个东西仅差一个常数。
所以从研究算法的角度log的底数不重要。

最后,结合上面,我也说一下关于大O的定义(算法导论28页的定义),
注意把这个定义和高等数学中的极限部分做比较,
显然可以发现,这里的定义正是体现了一个极限的思想,
假设我们将n0取一个非常大的数字,
显然,当n大于n0的时候,我们可以发现任意底数的一个对数函数其实都相差一个常数倍而已。
所以书上说写的O(logn)已经可以表达所有底数的对数了,就像O(n^2)一样。
没有非常严格的证明,不过我觉得这样说比较好理解,如果有兴趣证明,完全可以参照高数上对极限趋于无穷的证明。

其实这里的底数对于研究程序运行效率不重要,写代码时要考虑的是数据规模n对程序运行效率的影响,常数部分则忽略,同样的,如果不同时间复杂度的倍数关系为常数,那也可以近似认为两者为同一量级的时间复杂度。

现在来看看为什么底数具体为多少不重要?

读者只需要掌握(依稀记得)中学数学知识就够了。

假设有底数为2和3的两个对数函数,如上图。当X取N(数据规模)时,求所对应的时间复杂度得比值,即对数函数对应的y值,用来衡量对数底数对时间复杂度的影响。

比值为log2 N / log3 N,运用换底公式后得:(lnN/ln2) / (lnN/ln3) = ln3 / ln2,ln为自然对数,显然这三个常数,与变量N无关。

用文字表述:算法时间复杂度为log(n)时,不同底数对应的时间复杂度的倍数关系为常数,不会随着底数的不同而不同,因此可以将不同底数的对数函数所代表的时间复杂度,当作是同一类复杂度处理,即抽象成一类问题。

当然这里的底数2和3可以用a和b替代,a,b大于等于2,属于整数。a,b取值是如何确定的呢?

有点编程经验的都知道,分而治之的概念。排序算法中有一个叫做“归并排序”或者“合并排序”的算法,它用到的就是分而治之的思想,而它的时间复杂度就是N*logN,此算法采用的是二分法,所以可以认为对应的对数函数底数为2,也有可能是三分法,底数为3,以此类推。但是不可能我分数及负数。

说明:为了便于说明,本文时间复杂度一概省略 O 符号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 20. 有效的括号

题目描述: 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序…

Android UI:ViewTree中的操作

文章目录 View.invalidate操作View.requestLayout操作ViewGroup.addView操作小结View.invalidate操作 1.从下向上,利用链表结构传递dirty,dirty是需要重新渲染的区域 从调用invalidate的View对象,直到树顶的ViewRootImpl对象 涉及到的API View.invalidate() ViewGroup.inval…

关于stm32(CubeMX+HAL库)的掉电检测以及flash读写

1.掉电检测 CubeMX配置 只需使能PVD中断即可 但是使能了PVD中断后还需要自行配置一些PWR寄存器中的参数,我也通过HAL库进行编写 void PVD_config(void) {//配置PWRPWR_PVDTypeDef sConfigPVD; sConfigPVD.PVDLevel PWR_PVDLEVEL_7; …

Python学习笔记1:Pycharm首次安装环境搭建汉化

Pycharm首次安装环境搭建汉化笔记 1.下载网址 首先下载专业版的pycharm,这里建议下载专业版是因为功能更全面,社区版的往往没有远程调控等实践功能。 网址贴在下方: https://www.jetbrains.com/pycharm/download/?sectionwindows •Profe…

揭秘!财务高手必备的四大分析秘籍,轻松掌握财务奥秘!

导语:在这个信息爆炸的时代,财务数据分析已经成为了企业和个人成功的关键。掌握财务数据分析的精髓,不仅能够揭示企业的财务状况,还能为决策提供有力支持。今天,就让我们一起深入探索财务数据分析的四大秘籍——财务五…

解决gpt无法发送对话的问题

问题描述 如图,今天登上去发现怎么无法发送消息 解决 可能是cookie问题,重新删除了就行了 cookie删除后,需要重新登录,主题色也重置为原来的白色了

摄像机内存卡删除的视频如何恢复?恢复指南来袭

在现代社会,摄像机已成为记录生活、工作和学习的重要设备。然而,随着使用频率的增加,误删或意外丢失视频的情况也时有发生。面对这样的情况,许多用户可能会感到无助和困惑。那么,摄像机内存卡删除的视频真的无法恢复吗…

大语言模型系列-GPT-3.5(ChatGPT)

文章目录 前言一、GPT-3.5的创新点二、GPT-3.5的训练流程SFT数据集RM数据集PPO数据集 三、ChatGPT的诞生总结 前言 《Training language models to follow instructions with human feedback,2022》 前文提到了GPT-3的缺点,其中最大的问题是&#xff1…

面试经典-5-删除有序数组中的重复项

题目 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#x…

创建vue3 ts项目 tsc.config在vscode下标红

Vue3TypeScriptPinia初始化项目,vscode报错解决办法!_vscode vue3ts 老是提示代码错误-CSDN博客

KNN算法对鸢尾花进行分类:添加网格搜索和交叉验证

优化——添加网格搜索和交叉验证 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection imp…

Claude3发布,将取代ChatGPT4?

目录标题 前言Claude简介Claude 3 的能力高级推理视觉分析代码生成多语言处理 性能比较 前言 一夜之间,全球最强 AI 模型易主。大模型行业再次经历变革。OpenAI 最大的竞争对手 Anthropic 发布了新一代 AI 大模型系列 ——Claude 3。该系列包含三个模型&#xff0c…

【论文阅读】Natural Adversarial Examples 自然对抗的例子

文章目录 一、文章概览(一)摘要(二)导论(三)相关工作 二、IMAGENET-A 和 IMAGENET-O(一)数据集构造方式(二)数据收集过程 三、模型的故障模式四、实验&#x…

vscode ubuntu c++运行环境配置

官方教程地址:Get Started with C on Linux in Visual Studio Code(Get Started with C on Linux in Visual Studio Code) 1、下载安装vscode Visual Studio Code - Code Editing. Redefined(Visual Studio Code - Code Editing…

气膜建筑是由什么材料制成的?PVDF膜材的革新应用值得期待吗?

随着科技的不断进步和发展,建筑行业也在不断涌现新型的建筑材料。气膜建筑作为其中一种创新的建筑膜材,在体育馆、运动场馆、展览厅等场所得到了广泛的应用。那么,究竟是什么材料构成了气膜建筑呢?轻空间小编将为您详细介绍。 气膜…

Win11系统启动VMware上虚拟机蓝屏解决办法

背景 最近有在做一个项目的过程中需要使用虚拟机,用原来装好的的Vmware14打开虚拟机,直接蓝屏了,尝试了如下几种方法来解决,最好用的就是第二种,直接下载最新版本(在软件管家中直接下载)。 虚拟机 目前常用的虚拟机软…

Docker 中 MySQL 的部署与管理

目录 一、Docker 中部署 MySQL1.1 部署 MySQL1.2 进入容器并创建数据库1.3 Navicat 可视化工具连接 二、可能存在的问题2.1 1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server 参考资料 一、Docker 中部署 MySQL 1.1 部署 MySQL 首先,从…

Java常见问题

文章目录 引言I Eclipse1.1 编辑tomcat运行环境II JDK2.1 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接2.2 restriction on required library2.3 The type javax.servlet.http.HttpServletRequest cannot be resolved.的解决方法III npm3.1 npm报错:…

[WiFi] 802.11w/802.11k/802.11v/802.11r/802.11u/802.11ai/802.11ah简介

802.11w(PFM) Protected Management Frames,802.11w协议主要基于现有的对数据报文的加密形式,对管理帧进行类似的加密。802.11w需要加密的管理帧包括解关联帧、去认证帧及强壮Action帧。 802.11k(RRM) Radio Resource …

启发式合并学一学

来自题解 CF600E 【Lomsat gelral】: 先简单说一下启发式合并吧 这道题我们可以遍历整棵树,并用一个数组ap(appear)记录每种颜色出现几次 但是每做完一棵子树就需要清空ap,以免对其兄弟造成影响。 而这样做它的祖先时就…