自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CS创新实验室

计算机科学、人工智能、数据分析和大数据方向的研发和教学

  • 博客(461)
  • 收藏
  • 关注

原创 《机器学习数学基础》补充资料汇编

《机器学习数学基础》补充资料汇编

2025-03-13 08:56:15 571

原创 图灵奖:铸就我们数字世界的“万神殿”

图灵奖被誉为"计算机界的诺贝尔奖",纪念"计算之父"艾伦·图灵,由美国计算机协会于1966年设立。该奖项奖励那些经时间验证、对计算机领域产生深远影响的基础性贡献,如TCP/IP协议、Unix系统、RSA加密等。获奖者包括互联网之父、AI先驱等,华人科学家姚期智是唯一获奖的华人。图灵奖不仅表彰创新源头,更彰显基础科学的价值和坚持探索的意义,提醒人们感恩那些构建数字世界的科学巨匠。

2025-09-13 20:29:38 116

原创 从军用到掌心:固态硬盘(SSD)的演进与革命

固态硬盘(SSD)从军用特供品到消费级产品的演变,经历了半个多世纪的技术革新。20世纪50-70年代,磁芯存储等早期固态技术因成本高昂仅限于军工领域。1984年闪存发明为SSD奠定基础,1991年首款商用闪存SSD问世,但价格昂贵。21世纪初SATA接口普及推动SSD进入消费市场,2009年TRIM指令解决性能衰减问题。2011年后,M.2接口、PCIe通道和NVMe协议的组合使SSD速度实现质的飞跃。3D NAND技术突破进一步提升存储密度,从SLC到QLC的演进持续降低成本。中国长江存储的崛起打破了国际

2025-09-13 20:16:44 630

原创 第6章串数组:next表的优化算法

KMP算法的next表优化通过预判无效回溯路径提升效率。针对模式串中连续相同字符导致的重复回溯问题,优化算法在计算nextval表时,若发现回溯位置字符与原字符相同,则直接复用更早的优化结果。以"AAAAAB"为例,优化后的nextval表为[-1,-1,-1,-1,-1,0],避免了逐个回溯。该优化通过提前跳过必然失败的匹配位置,显著提高了算法性能,尤其适用于含重复字符的模式串。

2025-09-12 08:31:11 507

原创 第6章串数组:KMP算法

KMP算法是一种高效的字符串匹配算法,由Knuth、Morris和Pratt于1977年联合提出。其核心思想是利用预先计算的next表,在匹配失败时通过移动模式串而非回溯主串指针来提高效率。算法通过比较主串和模式串字符,匹配时指针前移,失配时模式串指针回退到next[j]位置。时间复杂度为O(n+m),优于朴素匹配算法。但当next表退化为全0时,KMP会退化为朴素算法。该算法特别适用于主串中存在大量重复字符的情况。

2025-09-12 08:20:24 646

原创 第6章串数组:KMP算法中的next表

KMP算法通过构建next表优化字符串匹配效率,避免主串指针回溯。当匹配失败时,利用模式串已匹配部分的最长公共前后缀确定右移距离。next表生成方法包括:1)计算各子串PM值(最长公共前后缀长度);2)将PM表右移一位并首项设为-1得到next表。以模式串"ABABD"为例,其PM值为[0,0,1,2,0],对应next表为[-1,0,0,1,2]。该方法确保匹配失败时主串指针不回溯,仅模式串指针根据next表回退,大幅提升匹配效率。

2025-09-11 15:10:23 953

原创 硅晶的黎明:晶体管计算机的崛起与变革

然而,旧时代的王者并不知道,在新泽西州的一间实验室里,一位即将终结其统治的颠覆者已经悄然诞生。IBM 7090成为了美国空军“弹道导弹预警系统”的核心,并在NASA的水星和双子座航天计划中扮演了关键角色,为人类迈向太空的伟大征程提供了强大的计算支持。她是最早的程序员之一,创造了第一个编译器A-0系统,并对COBOL语言的开发有着关键性的指导作用,被誉为“COBOL之母”。曾是美国AT&T公司的研发机构,是20世纪最伟大的科学实验室之一,诞生了晶体管、激光、UNIX操作系统、C语言等众多诺贝尔奖级别的发明。

2025-09-11 15:02:50 813

原创 第6章串数组:模式匹配的BF算法

BF算法是一种暴力字符串匹配算法,通过逐字符比较主串和模式串进行匹配。其基本思想是从主串起始位置依次与模式串比较,失败时主串回溯到下一位置重新匹配。算法时间复杂度在最坏情况下为O(n×m),最好情况下为O(n+m)。虽然效率不高,但思路简单直观,适用于小规模字符串匹配场景。算法通过穷举所有可能的匹配位置确保正确性,是理解更高效字符串匹配算法的基础。

2025-09-10 17:53:07 844

原创 第6章串数组:串的定义和存储结构

本章介绍了串(字符串)的定义、存储结构及相关概念。串是由零个或多个字符组成的有限序列,具有长度、子串、主串等特性。存储结构包括顺序存储(定长和堆式)和链式存储(块链结构)。顺序存储使用数组实现,链式存储则通过链表实现,需要考虑结点大小问题。串的操作通常针对整体而非单个元素,与线性表有显著区别。两种存储结构各具特点,顺序存储适合静态场景,链式存储则更灵活。

2025-09-10 17:35:21 550

原创 第5章递归:将递归转换为非递归的方法

本文介绍了递归算法转换为非递归算法的两种方法:对于尾递归可直接转换为迭代实现,如阶乘和斐波那契数列;对于复杂非尾递归,需使用栈模拟递归过程,通过保存参数、返回地址等实现转换。以汉诺塔问题为例,详细说明了利用工作栈记录任务状态的转换方法。虽然非递归实现可提高效率,但会降低代码可读性。递归因其结构清晰、易于验证正确性,在允许递归的语言中仍是首选编程方式。

2025-09-08 08:19:41 417

原创 迪杰斯特拉 (Edsger W. Dijkstra):计算机科学的结构与秩序奠基人

迪杰斯特拉:计算机科学巨匠的卓越贡献 荷兰计算机科学家艾兹赫尔·迪杰斯特拉是计算机科学领域的奠基性人物。他提出了著名的Dijkstra最短路径算法,解决了加权图中的最优路径问题,至今仍是图论和算法教学的核心内容。在操作系统领域,他发明了信号量机制和银行家算法,为并发编程和死锁处理奠定了理论基础。作为结构化编程的先驱,他批判GOTO语句的滥用,倡导使用顺序、选择和循环三种基本结构构建程序。迪杰斯特拉以严谨的数学思维和追求简洁的编程哲学著称,1972年获得图灵奖。他的工作深刻影响了现代计算机科学的多个核心领域。

2025-09-08 08:15:00 850

原创 第5章递归:分治法

分治法是一种高效的问题解决策略,通过"分解-解决-合并"三步处理复杂问题。文章详细介绍了分治法的基本原理、实施步骤和典型应用(如归并排序、快速排序),并以括号匹配问题为例,展示了分治法的具体实现。算法通过递归将问题分解为更小的子问题,根据括号平衡度找到分割点,分别处理包裹结构和并列结构,最终合并子问题的解。文中还给出了类C伪代码和详细的执行过程分析,说明分治法如何有效解决括号匹配问题。

2025-09-06 13:54:40 829

原创 你的 Python 应用应该托管在哪里?

Python应用托管方案选择指南 本文全面分析了Python应用的四种主流托管方案:PaaS、IaaS、VPS/专用服务器和无服务器计算。作者从易用性、控制权、可扩展性、成本等关键维度进行对比,为不同需求的开发者提供选择建议:初学者适合PaaS(如Heroku);初创公司可考虑PaaS转IaaS;大型应用需要IaaS(AWS等);事件驱动任务则推荐无服务器计算(AWS Lambda)。文章强调应根据项目规模、技术能力和预算需求选择最适合的方案,并指出随着项目发展可以灵活调整托管策略。

2025-09-06 10:18:42 545

原创 数据的方舟:一部完整的外部存储设备进化史

摘要: 外部存储设备的进化史映射了数字时代的变革。从19世纪穿孔卡片到20世纪磁带、硬盘,再到软盘、光盘,存储介质不断小型化、大容量化。2000年后,U盘和移动硬盘凭借便携性成为主流,而固态硬盘(SSD)则带来速度革命。如今,云存储与高速接口技术并行发展,未来或向DNA存储等前沿领域探索。这场从“庞然大物”到“指尖设备”的演进,不仅是技术突破的缩影,更重塑了人类存储与共享信息的方式。

2025-09-05 10:46:05 1072

原创 第5章递归:递归算法时间复杂度分析的基本方法

本文分析了递归计算数组和的算法复杂度。通过两种方法:递归过程跟踪法发现共有n+1次递归调用,每次耗时O(1),总复杂度为O(n);递推公式法建立T(n)=T(n-1)+O(1)的等式,展开后同样得到T(n)=O(n)的结论。两种方法都证明了该递归算法的时间复杂度是线性阶O(n)。

2025-09-05 08:34:33 903

原创 抓住数据的“C位”:一文读懂集中趋势度量与Python实战

本文介绍了数据分析中的集中趋势度量概念,重点讲解了均值、中位数和众数三大核心指标。通过Python代码演示,对比了包含异常值和不含异常值的数据集计算结果,直观展示了各指标特性:均值对异常值敏感,中位数稳健,众数适用于类别数据。文章还提供了指标选择指南,帮助读者根据数据特征选用合适的统计量。通过实际案例,强调了理解这些基础统计量对准确分析数据的重要性。

2025-09-04 13:05:01 1048

原创 第5章递归:递归过程

递归过程通过调用栈实现函数自我调用。每次递归调用时,系统创建栈帧保存参数、变量和返回地址。以阶乘函数为例,递推阶段不断压入栈帧直到终止条件;回归阶段则逐层弹出栈帧并计算结果。调用栈通过后进先出特性确保递归状态不混淆,实现正确的执行顺序和终止条件,最终完成递归计算。

2025-09-03 10:05:56 574

原创 冯·诺依曼:行走在凡人中的“神”

冯·诺依曼的智慧是如此超前和广博,以至于他的同事们,包括诺贝尔奖得主,都常常开玩笑说他可能不是地球人,而是一个伪装成人类的、来自更高级文明的生命体。他的大脑仿佛是一台为处理信息和逻辑而生的完美机器,而以下这些故事,正是这台“机器”在日常生活中的生动展现。

2025-09-03 08:42:16 699

原创 第5章递归:什么是递归

本章介绍了递归的概念与应用。递归分为直接递归和间接递归,其中直接递归调用自身,而间接递归通过其他函数调用自身。递归适用于三种情况:定义本身是递归的(如阶乘)、数据结构是递归的(如链表)、问题的解法是递归的(如汉诺塔问题)。递归算法需满足三个条件:问题可分解为子问题、调用次数有限、有终止条件。本章重点讨论了直接递归的实现,包括尾递归(如阶乘计算)和数据结构递归操作(如链表遍历),并通过汉诺塔问题展示了递归解法的时间复杂度分析(指数级O(2^n))。递归虽能简化代码,但需注意其效率问题。

2025-09-02 08:17:11 892

原创 冯·诺伊曼:最后的全才与数字时代的奠基人

介绍大科学家冯·诺依曼的科研成就和对现代的影响。

2025-09-02 07:14:41 917

原创 第4章栈和队列:队列应用举例

本文介绍了队列的两个应用实例。首先通过报数问题演示了循环队列的使用方法,详细描述了算法步骤和代码实现,包括初始化、入队、出队等操作。其次介绍了双端队列的概念及其特点,说明其两端均可进行入队和出队操作,并举例说明不同进队出队顺序产生的序列结果,还提及了受限类型的双端队列变体。文中配有示意图辅助理解队列操作过程。

2025-09-01 14:26:48 412

原创 RA·费舍尔与对科学的仇恨

下文是对理查德·道金斯(Richard Dawkins)在《新政治家》杂志上发表的文章《RA·费舍尔与对科学的仇恨》(RA Fisher and the science of hatred)的全文翻译。原文地址:https://www.newstatesman.com/long-reads/2020/07/ra-fisher-and-science-hatred。

2025-08-30 12:08:10 1023

原创 线性回归:从星辰大海到数据科学的基石

线性回归从19世纪初的天文学起源逐步演变为现代数据分析的基石。其发展历程可分为四个关键阶段:1)19世纪初,高斯和勒让德提出最小二乘法用于天体轨道预测;2)19世纪末,高尔顿在遗传学研究中提出"回归"概念;3)20世纪初,皮尔逊和费雪建立完整的统计推断理论;4)计算机时代,线性回归实现计算飞跃并扩展出多种变体。两百多年来,这一简单而强大的方法始终保持着在数据科学中的核心地位,成为连接古典统计与现代机器学习的重要桥梁。

2025-08-30 08:55:14 714

原创 第4章栈和队列:链队的基本操作

本文介绍了链式队列的基本操作,包括初始化、入队、出队和取队头元素,并比较了栈和队列的特性。链队初始化时构造一个头结点,入队需动态分配结点空间,出队需判断是否为空并处理特殊情况(删除最后一个元素时需重置队尾指针)。此外,文章通过表格对比了栈和队列在逻辑结构、存储结构和运算规则的差异,并以例题说明删除操作可能涉及修改头尾指针。链式存储能动态分配空间,避免了顺序存储的溢出问题。

2025-08-29 08:34:37 482

原创 从纤芯到纳米:一部计算机内存的进化史诗

计算机内存发展史经历了从磁鼓、磁芯存储器到半导体DRAM的革命性跨越。1970年Intel推出首款商用DRAM芯片,开启了半导体内存时代。随着PC普及,SDRAM和DDR技术相继问世,内存速度实现质的飞跃,从DDR到DDR5带宽持续翻倍。同时,GDDR和HBM等专用内存为图形计算提供超高频宽。当前内存技术正面临新变革,DDR6、CXL协议和非易失性内存技术将重塑未来计算架构。这段演进史见证了人类将笨重的磁芯存储器发展为纳米级芯片的智慧历程。

2025-08-29 08:30:00 1041

原创 线性相关系数:理解数据间的线性关系

本文介绍了线性相关系数(皮尔逊相关系数)的概念和应用。相关系数r的取值范围为[-1,1],衡量两个变量间的线性关系强度和方向。文章通过三个实例进行分析:房价与房间数呈正相关(r=0.52),汽车重量与燃油效率呈负相关(r=-0.83),以及随机变量间无相关性(r≈0)。同时展示了多变量相关性热图分析和统计显著性检验方法。最后强调了注意事项:相关系数只能衡量线性关系、受异常值影响、需要足够样本量,且相关不等于因果。建议分析时结合可视化、显著性检验和专业知识。

2025-08-28 10:15:09 1051

原创 第4章栈和队列:链队的基本结构

本文介绍了队列的链式存储结构——链队。链队采用带有头结点的单链表实现,通过队头指针和队尾指针分别指向链表首元和尾结点。文章给出了链队的结构定义,并分析了队空条件(Q.front == Q.rear)、入队操作(新建结点插入尾部)和出队操作(删除首元结点)的基本原理。链式存储结构使得队列长度可以动态变化,一般不考虑队满情况。

2025-08-28 08:54:08 343

原创 数据会“撒谎”:相关性≠因果性

相关性衡量两个变量间的线性关系(如冰淇淋销量与溺水事故正相关),但不意味着因果性。因果性需通过严谨实验确立。常见误区包括混淆因素(如高温同时影响冰淇淋销量和溺水率)、因果倒置和纯属巧合。需用批判性思维区分相关与因果,避免数据误导。

2025-08-26 13:21:20 751

原创 别再混淆了!一份用数据看透“关联”的终极指南

本文深入浅出地讲解了相关性分析的核心概念与Python实现方法。首先阐明相关性是衡量变量间线性关系的统计指标,其系数范围在-1到1之间,分为正相关、负相关和无相关三种情况。文章通过气温与冰淇淋销量的实例,详细介绍了皮尔逊相关系数的计算原理,并给出Python代码示范(r=0.995显示强正相关)。同时强调散点图的可视化验证作用,提供完整的数据分析流程。文中特别指出相关性不等于因果性,并提醒注意非线性关系、异常值和多重共线性等常见陷阱。

2025-08-26 12:27:46 469

原创 第4章栈和队列:循环队列的基本操作

本文介绍了循环队列的基本操作及其实现方法。循环队列采用顺序存储结构,通过模运算实现环状特性,包含初始化、求长度、入队、出队和取队头元素等基本操作。与普通顺序队列不同,循环队列通过取模运算处理指针移动,有效利用存储空间。文中给出了各操作的算法描述和实现代码,并通过两道例题演示了循环队列指针运算的应用。最后指出当队列长度无法预估时,应采用链式存储结构而非顺序存储。

2025-08-26 08:49:22 369

原创 第4章栈和队列:循环队列的结构

摘要: 循环队列通过环形数组结构解决顺序队列的假溢出问题。队头(front)和队尾(rear)指针采用模运算实现环形移动:(front/rear + 1) % MAXQSIZE。队满条件为(rear + 1) % MAXQSIZE == front(牺牲一个存储单元区分队满和队空),队空条件为front == rear。该设计避免了数组越界,同时高效利用空间。

2025-08-26 08:47:19 968

原创 误导性数据图表的核心问题与表现方式

误导性图表通过扭曲数据关系误导观众,常见手法包括:1)纵轴不从0开始,放大微小差异;2)利用面积/体积制造比例失真;3)混淆相关性与因果关系;4)选择性展示有利数据;5)缺乏基准比较;6)3D效果导致视觉偏差;7)颠倒坐标轴顺序。作为消费者应检查坐标轴、质疑相关性、寻找上下文;制作者需坚持条形图从0开始、保持简洁、提供完整背景。培养数据素养能有效识别图表陷阱,确保信息传达的真实性。

2025-08-25 08:34:04 726

原创 第4章栈和队列:顺序队的基本操作

本文介绍了顺序队列的基本操作实现方法。包括队列初始化、入队、出队和取队头元素四个核心算法。初始化操作为队列分配数组空间并置空;入队在队尾插入元素;出队删除队头元素;取队头元素则返回当前队头值而不改变队列。每个操作都给出了具体的算法步骤和C语言实现代码,重点处理了队满和队空的边界条件判断。这些操作为实现先进先出的队列功能提供了基础支持。

2025-08-25 08:09:57 211

原创 第4章栈和队列:顺序队——基本结构

本文介绍了顺序队列的结构与基本操作。顺序队列采用连续存储空间和两个指针(front指向队头元素,rear指向队尾下一个位置)实现。初始化时空队列满足front=rear=0。入队操作在rear位置插入元素后rear增1,出队操作取出front位置元素后front增1。队列为空的条件是front==rear,队列满的条件是rear==MAXQSIZE(存储空间上限)。这种结构确保了入队和出队操作的时间复杂度均为O(1)。

2025-08-24 14:24:00 774

原创 第4章栈和队列:队列基础知识

队列是一种操作受限的线性表,遵循"先进先出"(FIFO)原则,仅允许在队尾插入元素(入队),在队头删除元素(出队)。与栈的"后进先出"(LIFO)特性不同,队列类似于日常生活中的排队场景,先到者先得服务。队列和栈都是受限线性表,但操作特性不同:队列支持在两端分别进行入队和出队操作,而栈的所有操作都在栈顶进行。队列在广度优先搜索、任务调度等领域有广泛应用。

2025-08-24 13:36:36 244

原创 第4章栈和队列:栈的应用——后缀表达式求值

后缀表达式求值算法 摘要:后缀表达式(逆波兰式)通过栈结构实现运算,无需括号即可明确计算顺序。算法流程为:创建操作数栈,从左到右扫描表达式,遇到操作数入栈,遇到运算符则弹出栈顶两个操作数进行运算(注意顺序:后弹出的为第一操作数),结果重新入栈。最终栈底元素即为表达式值。伪代码展示了加减乘除和数字转换的具体实现,时间复杂度O(n),空间复杂度O(n)。关键点在于运算符操作数的弹出顺序,这对减法和除法至关重要。

2025-08-22 08:53:01 1076

原创 频数多边形与相对频数多边形详解

摘要: 频数多边形是一种通过连接组中点与对应频数形成的折线图,用于可视化数据分布。相对频数多边形则用比例代替频数,便于比较不同样本量的数据。构建步骤包括分组、计算频数/相对频数、确定组中点并绘制折线。应用场景包括数据分布展示、多分布比较、趋势识别及概率分布近似。解读时需关注峰值、对称性、模态和尾部特征。Python实现可通过Matplotlib、Seaborn或Pandas,包括手动计算、绘制相对频数图及多分布对比。示例代码展示了生成模拟数据、绘制单/双分布及相对频数多边形的方法。

2025-08-22 08:24:10 382

原创 掌控不平等的力量:深入解析帕雷托分布与二八法则的数学内核

摘要: 帕雷托分布(幂律分布)揭示了现实世界中普遍存在的不平衡现象,如“二八法则”。其数学本质表现为厚尾特性,由参数α决定不平等程度。通过双对数坐标图可识别分布,极大似然估计可拟合参数。该分布广泛应用于经济、社会、工程等领域。以电商用户分析为例,帕雷托分布能精准定位高价值用户(如5%用户贡献80%收入),指导分层运营与资源优化,将直觉转化为可量化的商业策略。掌握这一工具,可科学识别关键要素,优化决策效率。

2025-08-21 13:41:48 804

原创 第4章栈和队列:栈的应用——不同形式表达式的转换方法

本文介绍了表达式的基本构成要素(操作数、运算符、界限符)及其三种形式:中缀、前缀和后缀表达式。重点阐述了中缀表达式转换为后缀表达式的方法:手工转换需通过添加括号和移动运算符完成;利用栈转换时需处理运算符优先级和括号匹配,遵循特定流程进行转换。后缀表达式无需括号,运算顺序明确,适合计算机处理。文中通过具体示例演示了转换过程,并归纳了关键规则,为表达式计算提供了有效方法。该转换技术在编译器设计和计算器实现中具有重要应用价值。

2025-08-21 11:48:37 931

原创 第4章栈和队列:栈的应用——括号匹配检验

本文介绍了一种基于栈的括号匹配检验算法,用于判断表达式中圆括号是否成对出现。算法利用栈的后进先出特性,遇到左括号入栈,遇到右括号与栈顶左括号匹配。扫描完成后,若栈空则匹配成功,否则失败。时间复杂度为O(n),空间复杂度最坏为O(n)。文中给出了算法步骤、C语言实现代码,并通过示例展示了匹配过程。该算法高效且易于扩展至多类括号匹配场景,为后续分治法解决同类问题奠定了基础。

2025-08-20 08:17:47 717

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除