【萌味】小夕说,不了解动态空间增长的程序喵都是假喵(上)

小提示:小夕会将小屋的最新动态更新到小屋的布告栏哦,口令是【nb】(口令在订阅号主界面直接回复即可使用)。          

小夕学了数据结构后,知道了链表、树、哈希表等数据结构与静态数组的固定容量不同,它们是可以动态添加元素的。这种数据结构的初始大小可能很小,甚至几乎为零,但是随着新元素的加入,其大小(内存空间占用)会不断增长,这个过程就叫做动态空间增长。那么问题来了,所有支持动态空间增长的数据结构都是相同的增长方式吗?了解这个又有什么意义呢?

前言

小夕曾经很傻很天真的认为所有支持动态空间增长的数据结构都是每增加一个元素,数据结构的大小就增加1个单位。直到在一个中规模机器学习任务的数据预处理过程中遇到了“内存爆炸”的问题,即小夕明明计算的内存够用,但是小夕可怜的电脑的内存却意外爆满了。最终小夕在某大神的指导下才知道原来数据结构的容量还能是加倍加倍的扩!小夕瞬间感到自己的智商可能只剩23.333了。

作为程序喵,不能光讲大道理。小夕为了避免讲解太过抽象,如果您是C++程序喵,那么请注意一下Vector数据结构;如果是Java程序喵,请注意一下ArrayList、LinkedList、哈希系列(HashSet/HashTable/HashMap);如果是不用Java也不用C++的程序喵,或者是已经脱离XX编程语言层次的程序喵,那么请注意一下可变数组(可增长顺序表)、链表、哈希(散列)。小夕将基于上面这些程序喵肯定知道的东西来花式讲解(哈?都不知道?报告老师,这里有一只假喵中的假喵!)。

由于文章过长(也就是说小夕的讲解过于认真\(//∇//)\),小夕将文章拆为三部分。万一读到停不下来,听说交出小红包,小夕就会出现哦( ̄∇ ̄)

递增式扩容

对于Java的LinkedList,也就是数据结构中的链表,其空间增长方式就是小夕一开始的设想:每增加一个元素,其大小就增加一个单位(这里的一个单位就是指一个元素占用的空间大小)。原因就在于链表在内存中的存储可以是不连续的。例如一个依次由节点1、节点2、节点3连接而成的链表在计算机内存中完全有可能是下面的存储方式。

这样的话,链表每增加一个元素,只需要在内存中找个缝将新元素插进去就好啦~所以如果小夕手里有n个元素想插入链表,则需要开辟n次内存,每次均开辟一个元素的大小。这种数据结构建立后,每次数据结构要扩容时均增加固定空间大小的做法被称为【递增式扩容】。显然链表的空间增长方式就是递增式扩容,而且递增的单位为1(这里是指1个单位,即一个结点的大小)。

可以看到,如果是链表数据结构,或者是底层基于链表而实现的数据结构,采用递增式扩容是最优选择。因为要增加一个元素,则最好的情况就是其他什么都不动,仅仅是为该元素开辟一个单位的空间,然后塞入该元素。而递增式扩容用于链表确实达到了这个最理想情况呢。因此,对于链表,以及底层基于链表结构实现的数据结构,都是采用递增式扩容即可达到最优扩容效率(最优动态空间增长)。例如哈希中的横向增长,再如基于链表实现的树(如Java中的TreeSet,TreeMap等)。因此在操纵大量数据的时候,尤其机器学习任务中常见的操纵大量样本的时候,在内存的问题上可以安心的使用此类数据结构,不会导致“内存爆炸”的问题,内存只会慢慢的起火然后轻轻的告诉你满了,23333。当然了,不能仅考虑内存,有时操纵大量数据时对数据处理效率要求更高,这时候就要舍内存保速度啦。

 

那么哪些常见数据结构采用递增式扩容无法达到最优呢?还有,小夕遇到的内存爆炸是怎么回事呢?敬请期待小夕明天的大作啦!

如果觉得小夕的讲解帮到了或者萌到了您,记得用小红包鼓励小夕哦~小夕都要买不起返校车票了嘤嘤嘤...

小夕已委托维权骑士对小夕发布文章的版权行为进行追究与维权。如需转载,请联系微信xiyaomengmengda。

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

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

相关文章

马斯克脑机接口公司被查,曾宣布6个月内进行人体试验

来源:医谷文:医谷近日,据路透社报道称,因涉嫌违反动物保护相关内容,马斯克的脑机接口公司Neuralink正面临美国联邦部门的调查。据称,其现任和前员工指出,由于马斯克要求加快研发速度的高压要求&…

【萌味】小夕说,不了解动态空间增长的程序喵都是假喵(中)

亲爱的小屋客人,昨天小夕将小屋的讨论室重新装修啦!希望您会喜欢哦~除了口令[d],现在也可以通过主页下方的“喵了个咪”进入讨论室啦。ps:昨天小夕装修讨论室的时候发生了N次差点吐血的事件,明天小夕与大家含泪分享T_T…

马斯克点赞!DeepMind神AI编剧,一句话生成几万字剧本

来源:机器学习研究组订阅你有灵光乍现的时刻吗?就是那种:这点子太好了,要是拍成电影一定能大火?之前这种想法可能只能停留在你的脑海中,而现在,一个「AI编剧大师」的出现,或许能让你…

“东数西算”之五大热点问题探讨

"“东数西算”无疑是2022年一大热词,产业界和学术界就该话题进行了深入的研究探讨。"整体上来看,“东数西算”的实施,一方面是为了更好地利用西部相对优惠的电力资源和优异的气候条件,推动数据中心的优化布局和产业整体…

科普一下人工智能领域的研究方向

路人甲:“你是学什么的?” 小夕:“学计算机嗒~” 路人甲:“哦哦,那你ps肯定很厉害!” 小夕:“我不会,我是做人工智能的。” 路人甲:“哦哦,做机器人的啊&…

编程神器Copilot被官司搞怕了?月收费19美元的商业版将提供辩护服务,最高索赔50万美元...

来源:AI前线作者:凌敏、核子可乐Copilot 的商业化“虽迟但到”。GitHub 推出商业版 Copilot据外媒 theRegister 报道,GitHub 旗下的 AI 编程神器 Copilot 现已推出商业版本,每月收费 19 美元(约合 133 元人民币&#x…

【激萌】人工智能大地图-生存能力篇

小屋的喵喵们,讨论室的投票明天就要截止了,还没有投票的喵喵快来啦。通过口令[d]或者主界面下方“喵了个咪”菜单即可进入讨论室哦。本文的封面图还是小夕设计的哦~喜欢吗(⁎⁍̴̛ᴗ⁍̴̛⁎)路人甲:“你是学什么的?”小夕&#…

Nature经典回顾:大脑中统一的物体空间模型

导语大脑能够轻而易举的完成物体识别,这一过程主要在大脑的下颞叶皮层进行。研究已经发现下颞叶皮层存在面孔、身体、场景等类别选择性区域,然而,仍有大部分下颞叶皮层未发现已知的功能特异性。这就带来一系列问题:未被理解的大片…

小夕说,不了解动态空间增长的程序喵都是假喵(下)

小夕在本系列前两篇文章中为大家介绍了各类数据结构的扩容策略,且在上篇文末,小夕提到了加倍式扩容中,倍率采用2并不是最优的,为什么呢?有没有最优倍率呢?内存复用如果倍率采用2甚至更大的数,那…

ChatGPT 与AI大模型发展简要综述

来源:数据观综合编辑:蒲蒲"日前,美国硅谷的初创公司OpenAI推出了一款新的人工智能对话模型ChatGPT,模型中首次采用RLHF(从人类反馈中强化学习)方式。目前,模型处于测试阶段,用户…

Nature Reviews Physics:人工智能怎样促进科学理解

导语一个能正确预测每个粒子物理实验结果、每个可能的化学反应产物或每个蛋白质的功能的先知将彻底改变科学和技术。然而,科学家们不会完全满意,因为他们想了解先知是如何做出这些预测的。这就是科学理解(scientific understanding&#xff0…

史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(一)

喵喵喵~大家元宵节快乐噢。有没有要陪小夕出去看烟花的吖...小夕借此给热爱学习的喵喵们献上这篇拙文,希望不要嫌弃哦~还有,小夕画的封面图是不是很棒呀( ̄∇ ̄)小夕发现现在想进军人工智能领域的程序yuan甚至少年少女喵好多呀&…

OpenAI ChatGPT走红,DeepMind不甘示弱,推出剧本写作AI,一句话生成一个剧本

来源:机器学习研究组订阅Dramatron似乎在一定程度上克服了AI大模型写长剧本前后不连贯的问题。你是否有过这种体验:某一天逛街的时候,脑子里突然冒出来一个好玩的故事,但你一时想不到更多的细节,也没有一块完整的时间去…

[完结]以C++与Java为例,详解数据结构的动态增长策略

前言 本文改编自小夕的订阅号文章《【萌味】小夕说,不了解动态空间增长的程序喵都是假喵(上)》、《【萌味】小夕说,不了解动态空间增长的程序喵都是假喵(中)》、《【萌味】小夕说,不了解动态空间增长的程序喵都是假喵(…

量子计算机创造了虫洞吗?不完全是,但揭示了量子模拟的未来

来源:光子盒研究院最近,科学家们因据称产生了一个虫洞而成为头条新闻。发表在《自然》杂志上的这项研究使用量子计算机在简化的物理模型中模拟虫洞。消息传出后不久,物理学家和量子计算专家对虫洞是否真的存在表示怀疑。这是怎么回事&#xf…

复旦大学邱锡鹏教授:语言模型即服务,走向大模型的未来

来源:智源社区作者:智源社区整理:周致毅人类一直期待AI能在处理自然语言方面大放异彩,语言大模型在近些年已逐渐成为NLP领域的标配。随着模型的扩张,当前大模型的调用已变成上游厂商开放API供下游使用的模式。这一模式…

史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(二)

谢谢你们。小夕昨晚又熬夜被发现了,谢谢对小夕的关心...有你们陪着,小夕很幸运。路人乙:“小夕,别人都说上完coursera上的那门机器学习课就已经入门机器学习了,可你又不这样认为。那你认为上完那门课,或者说…

计算机史上首篇教你从算法问题提炼算法思想的文章

路人丙:“小夕,你说学算法有什么用呢?”小夕:“好玩呀。”路人丙:“算法问题那么多,现查现用不就好了?”小夕:“好咯,既然你诚心诚意的问了~小夕就大发慈悲的震惊你(&…

美国能源部正式宣布核聚变里程碑式突破,专家点评商业化还需数10年

来源:澎拜责任编辑:郑洁图片编辑:张同泽校对:施鋆耗资35亿美元的美国国家点火装置用了10多年时间不断冲击点火目标,过程一波三折。成功点火后有两条路可走。一是冲刺更高的能量增益,未来或将再建更大能量的…

Science:找到杀死癌细胞的“单词”

来源:生物通利用新的机器学习技术,加州大学旧金山分校(UCSF)的研究人员与IBM研究院的一个团队合作,开发了一个包含数千个细胞“命令句”的虚拟分子库,基于引导工程免疫细胞寻找并不知疲倦地杀死癌细胞的“单词”组合。预测模型允许…