算法(40):separate chaining-12.2
Page 17碰撞的现实物理事实即使哈希函数设计得再好碰撞两个不同键算出同一个索引也必然会发生。这是由生日悖论Birthday Problem决定的——当插入的元素数量超过~√(πM/2)时碰撞概率就会显著升高。挑战不能用无限大的数组来避免碰撞浪费空间也不能用线性扫描来解决浪费时间。必须设计一种高效处理碰撞的数据结构。这也引出了后续两种主流的碰撞处理方案。Page 18分离链接法的物理结构这是解决碰撞的最直接思路数组 链表。物理布局创建长度为M的数组称为桶数组Bucket Array。数组中的每个槽位不再直接存储键值对而是存储一个链表的头节点指针。当两个键发生碰撞hash(key1) hash(key2)时它们会被放入同一个链表桶中。物理操作插入Insert计算哈希值i。找到第i个桶的头指针。遍历该链表。如果键已存在更新值如果不存在直接在链表头部插入新节点O(1)头插。查找Search计算哈希值i。只遍历第i个桶的链表用equals逐一比对。找到则返回找不到则返回null。内存形态存储是分散的。数组在堆上是连续的一块内存。链表节点分散在堆的其他位置通过 8 字节的next指针串联起来。Page 19-20Java 实现骨架物理代码逻辑内部类Node包含key、val、next指针和你之前学的链表栈/队列结构完全一样。put方法计算哈希定位到桶i。遍历st[i]指向的链表for (Node x st[i]; x ! null; x x.next)。如果找到匹配的key更新x.val并返回。如果遍历完链表都没找到创建一个新节点把新节点的next指向原来的头节点st[i]再把头节点指向新节点头插法。get方法同样的遍历逻辑找到则返回val找不到返回null。PPT 没有显式列出get代码但它逻辑与put的遍历部分完全一致。Page 21性能分析为什么是常数时间物理上这部分基于均匀哈希假设每个键等概率落入任一桶。在这个假设下每个桶的长度链表节点数就是N / M平均负载因子α。根据负载均衡Load Balancing理论当M个桶中投入N个球时最长的链表长度大约为Θ(log M / log log M)非常短。因此查找/插入需要遍历的节点数平均为~N/M。工程权衡如果M太大如M N大量桶为空浪费内存。如果M太小如M 1所有数据聚成一条长链表退化为线性查找。典型的工业选择是M ~ N/5使得平均链表长度约为5查找/插入的探测次数为常数~3-5次。Page 22符号表实现总结这张表将separate chaining与之前的 BST、红黑树进行对比有序迭代不支持no。哈希表打乱了键的顺序无法按升序遍历。键接口依赖equals()和hashCode()而不是compareTo()。平均成本在均匀哈希假设下为~3-5次探测常数时间。最坏成本仍为log N量级如果哈希函数极差所有键落入同一个桶退化为链表查找。但在均匀假设下这种情况不会发生。总结分离链接法用“数组桶”快速定位可能存放该键的唯一链表然后用“链表节点”处理碰撞。它放弃了有序性但换来了非常高的平均速度。Q为什么所有键落入一个桶退化为链表查找的数量级会是log n而不是n呢A我直接承认这个错误并给出准确的物理事实。直接回答你的质疑在纯链表实现下所有键落入同一个桶查找成本是O(N)不是O(log N)。我上一轮说“仍为 log N 量级”是错误的。1. 为什么你看到的 PPT 表格里写着lg NPPT 第 22 页的表格里分离链接法Separate Chaining的“最坏情况”一列确实写着lg N但仔细看它的右上角有一个星号*。表格下方有一行小字注释你发的 PPT 里就有* under uniform hashing assumption在均匀哈希假设下。物理含义在这个假设下我们不允许“所有键落入同一个桶”这种极端情况发生因为它发生的概率极低。表格里的lg N说的是“如果哈希函数表现良好桶分布均匀查找路径不会退化成一条长链表”。它不是指“最坏情况下的物理上限”。2. 真正的物理最坏情况无均匀假设如果哈希函数设计得极差或者有人故意构造恶意输入导致所有N个键的哈希值完全相同那么它们都会被挂在同一个桶的链表中。查找时你虽然只用O(1)时间定位到了那个桶但接下来你必须遍历整条链表才能找到目标键或确认它不存在。这条链表的长度是N所以查找时间是O(N)。这就是纯拉链法链地址法在不理想情况下的真实最坏复杂度。3. 为什么工业界的 HashMap 能保证O(log N)PPT 背后隐含的事实你看到的 PPT 里写了lg N其实隐含了 Java 8 及以后版本的HashMap的一个优化当链表长度超过阈值默认 8时链表会自动转换为红黑树TreeNode。物理上这意味着如果所有键落入同一个桶最初它们会堆积成一条长链表O(N)。但当链表长度超过 8 时HashMap会把这条链表重构为一棵红黑树。在红黑树中查找成本为O(log N)。所以 PPT 表格里的lg N实际上是指在“拉链法 树化Treeify”这种混合实现下的最坏保证而不是纯链表的基本实现。普林斯顿课程可能为了简化对比直接在表格中写了优化后的结果但物理上纯链表的拉链法如果哈希函数失效确实会退化为O(N)。

相关新闻

离散制造工艺路线动态建模实践:基于JVS-APS三层柔性机制的技术实现

离散制造工艺路线动态建模实践:基于JVS-APS三层柔性机制的技术实现

本文以技术视角解析离散制造中PMC与车间协同失效的根因,聚焦工艺路线建模的结构性缺陷。通过JVS-APS平台的三层柔性机制(模板主干扩展属性人员事件),给出可落地的技术实现路径:包括模板配置策略、字段级扩展绑定方法、…

2026/8/26 15:33:33 阅读更多 →
具身智能TVA-VLA神经符号融合与因果推理机制

具身智能TVA-VLA神经符号融合与因果推理机制

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”或“TVA视觉智能体”)是依托Transformer架构与“因式智能体”理论构建的系统级视觉技术框架。它融合深度强化学习(DRL)、卷积神…

2026/8/26 15:41:28 阅读更多 →
WRC上听了三小时!越发感觉具身的ChatGPT时刻正在逼近。

WRC上听了三小时!越发感觉具身的ChatGPT时刻正在逼近。

19号WRC第一天,就去各种探展。 当天下午,银河通用举办了一场叫“具身智能大模型的进化之路”的论坛。 现场来的嘉宾很重磅,有银河通用创始人王鹤、王晓刚(大晓机器人)、王仲远(北京智源人工智能研究院院长…

2026/8/25 14:14:07 阅读更多 →

最新新闻

第06篇-工具系统

第06篇-工具系统

【OpenClaw 从入门到精通】第 6 篇:工具系统 — Agent 的能力边界 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 OpenClaw 工具…

2026/8/26 17:34:07 阅读更多 →
豪车模拟器

豪车模拟器

🚗 工具简介许多车迷和短视频创作者都渴望体验豪华品牌车辆的手机控车交互界面,但实车体验门槛较高。为此,一款名为“豪车模拟器”的纯本地UI仿真工具应运而生。它能在手机端高度还原奔驰、路虎、奥迪等主流豪华车型的车主App页面&#xff0c…

2026/8/26 17:34:07 阅读更多 →
Winform/Sunny.UI的DataGridView数据展示、uiPagination分页

Winform/Sunny.UI的DataGridView数据展示、uiPagination分页

一:准备1:数据库CREATE DATABASE lwq; --创建数据库 USE lwq; --使用数据库 --创建表 CREATE TABLE diviceinfo (id INT IDENTITY(1,1) NOT NULL, -- 主键diviceName NVARCHAR(100) NOT NULL, -- 设备名称status TINYINT NO…

2026/8/26 17:34:07 阅读更多 →
第08篇-Workspace与上下文文件

第08篇-Workspace与上下文文件

【OpenClaw 从入门到精通】第 8 篇:Workspace 与上下文文件 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 Workspace 概念与目录…

2026/8/26 17:34:07 阅读更多 →
第10篇-通道架构与Telegram配置

第10篇-通道架构与Telegram配置

【OpenClaw 从入门到精通】第 10 篇:通道架构概览与 Telegram 配置 本系列定位:零基础入门,从安装配置到高级架构全覆盖。无论你是开发者、运维工程师、还是技术爱好者,本系列带你彻底掌握 OpenClaw。 本篇你将学到 OpenClaw 25 …

2026/8/26 17:34:07 阅读更多 →
把浏览器搬进 Agent 沙箱:Lexmount 在 CubeSandbox 上的一线实战

把浏览器搬进 Agent 沙箱:Lexmount 在 CubeSandbox 上的一线实战

作者|Lexmount 揽岳智能全栈工程师 熊袖璋编者按| Agent 浏览器运行时是一个"复合工作负载"。它对AI Agent沙箱的运行有四个核心层面的硬需求:出站网络能否连到真实互联网、批量拉起时的启动时序稳不稳、每个沙箱的运行时状态能否…

2026/8/26 17:33:06 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →