专业课复习笔记 9

前言

学爽了。

为什么哈希函数的空间复杂度是 O(N)

我们实际使用的电话号码的数目是 N ,理论上至多有 R 个电话号码,桶数组 bucket array 的容量是 M ,满足条件 N < M < < R N<M<<R N<M<<R,因为动态扩容之类的原因,可以始终保证 N 和 M 是同阶的,那么空间复杂度就是
O ( N + M ) = O ( N ) O(N+M)=O(N) O(N+M)=O(N)

hash 散列实例

maybe 取余之后 hash(key) 是不同的,那么皆大欢喜,假设取余之后相同呢,那就发生冲突了,collision .实际上类似于,我说我是六一儿童节这天生日,然后另一个人说我也是六一儿童节生日,然后我们两的生日就冲突了。冲突了就需要处理冲突。或者这里我们可以认为是出现了同义词。明明是不同的 key ,却出现了相同的 hash(key), 然后我们映射的时候也是按照 hash(key) 去映射 value 的。一般的情况不同的 key 对应不同的 value, 当然也不是说不同的 key 不能对应相同的 value, 是说这里不行。一个电话号码不能既是 A 的,又是 B 的。

装填因子 load factor

l o a d f a c t o r : λ = N M load\ factor:\lambda=\frac N M load factor:λ=MN
怎么选 load factor 呢。非常纠结啊。到底有没有标准答案。

单射 injection

完美散列,perfect hashing .不同的输入一定对应不同的输出,也就是唯一映射。这个我印象很深刻,实际上就是高数教材第一章的内容,我高考完的暑假试图搞清楚一些东西,但是因为学的太仔细,然后也看不懂,然后也没有正反馈,当时花了很大的力气,学了第一章的内容,也没学明白,所以对我个人来说最好是高频率,多轮次,完成比完美更重要,不要在琐碎的细节上面浪费过多的时间,先把主体框架搭建好。

目标

选择冲突小的散列函数,散列就是 hash, 还有一个目标是处理冲突。

除余法

k e y % M key \% M key%M

散列表长一般就是 M ,现实中一般不是理想随机。

规律

next token prediction 。下一词元预测,实际上就是局部性。

除余法的缺陷

h a s h ( 0 ) ≡ 0 hash(0)\equiv0 hash(0)0
相邻关键码的散列地址必相邻。

MAD 法

multiply add divide

h a s h ( k e y ) = ( a ∗ k e y + b ) % M hash(key)=(a*key+b)\%M hash(key)=(akey+b)%M

散列的方法的要求

越是随机,越是没有规律越好。

伪随机数法

h a s h ( k e y ) = r a n d ( k e y ) = [ r a n d ( 0 ) ∗ a k e y ] % M hash(key)=rand(key)=[rand(0)*a^{key}]\%M hash(key)=rand(key)=[rand(0)akey]%M
r a n d ( 0 ) = ? rand(0)=? rand(0)=?
取决于伪随机数发生器,因具体平台,不同的历史版本而异。

可移植性比较差。

就地随机置乱

20 ! < 2 64 < 21 ! 20!<2^{64}<21! 20!<264<21!

hashcode

冲突难以杜绝,所以要解决冲突。发生冲突的时候要想办法排解冲突。

最后

从今天开始,晚上十点半之后就不学习了,争取晚上十一点就睡觉,早睡从我做起。。。

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

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

相关文章

【论文阅读27】-TCN–BiLSTM -滑坡预测

《A Landslide Displacement Prediction Model Based on the ICEEMDAN Method and the TCN–BiLSTM Combined Neural Network》 发表于 Water 期刊&#xff0c;2023年。 &#x1f4cc; 主要内容概述 这篇论文提出了一种滑坡位移预测模型&#xff0c;结合了&#xff1a; ICEEM…

8b10b编解码仿真

一、基本概念 8B/10B编码&#xff08;8-bit to 10-bit encoding&#xff09;是一种将8位数据&#xff08;包括数据字符和控制字符&#xff09;转换为10位符号&#xff08;Symbol&#xff09;的编码技术&#xff0c;由IBM工程师Al Widmer和Peter Franaszek于1983年提出。其核心思…

23龙信服务器wp

中规中矩的一套服务器&#xff0c;比较简单 1.服务器系统的版本号是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 2.网站数据库的版本号是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 3.宝塔面板的“超时”时间是___分钟。&#xff08;格式&#xff1a;…

Redis 存储原理与数据模型(三)

目录 存储结构 存储转换 数据组织 hash 冲突 负载因子 扩容 缩容 渐进式rehash Redis 线程模型 单线程命令处理机制 为什么Redis 命令的单线程快 机制 优化 柔性数组 Redis reactor_io 多线程网络模型 存储结构 key-value键值对通过 hash 的方式存储到数组中value 主要…

langchain4j中使用milvus向量数据库做RAG增加索引

安装milvus向量数据库 官方网址 https://milvus.io/zh 使用docker安装milvus mkdir -p /data/docker/milvus cd /data/docker/milvus wget https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh#在docker中启动milvus sh standalone_emb…

UE5.3 C++ 房屋管理系统(一)

一.框架思路 1.如何加载。房屋管理&#xff0c;既然管理。就存在动态加载&#xff0c;和静态加载的考虑。如果是静态加载&#xff0c;就是在编辑器情况下放置&#xff0c;但这样方便了摆放&#xff0c;但管理就需要在开始是将所有的房屋找到加到管理者里。你无法决定拖入场景的…

4.1【LLaMA-Factory 实战】医疗领域大模型:从数据到部署的全流程实践

【LLaMA-Factory实战】医疗领域大模型&#xff1a;从数据到部署的全流程实践 一、引言 在医疗AI领域&#xff0c;构建专业的疾病诊断助手需要解决数据稀缺、知识专业性强、安全合规等多重挑战。本文基于LLaMA-Factory框架&#xff0c;详细介绍如何从0到1打造一个垂直领域的医…

解决LangChain4j报错HTTP/1.1 header parser received no bytes

问题描述 当使用langchain4j-open-ai调用自己部署的大模型服务时报错&#xff1a; public static void main(String[] args) {OpenAiChatModel model OpenAiChatModel.builder().apiKey("none").modelName("qwen2.5-instruct").baseUrl("http://19…

阿里云codeup以及本地gitclone+http

cmd命令行乱码问题、解决 chcp 65001 git代码提交 git add . git commit -m init git push origin master

2025.05.07-淘天算法岗-第二题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 完美拼图挑战 问题描述 A先生是一位拼图爱好者,他有两种形状的拼图块: a a a

Spring Boot中Redis序列化配置详解

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 引言 在使用Spring Boot集成Redis时&#xff0c;序列化方式的选择直接影响数据存储的效率和系统兼容性。默认的JDK序列化存在可读性差、存储空间大等问题&am…

紫禁城多语言海外投资理财返利源码带前端uniapp纯工程文件

测试环境&#xff1a;Linux系统CentOS7.6、宝塔、PHP7.2、MySQL5.6&#xff0c;根目录public&#xff0c;伪静态thinkphp&#xff0c;开启ssl证书 语言&#xff1a;中文简体、英文、越南语、马来语、日语、巴西语、印尼语、泰语 前端是uniapp的源码&#xff0c;我已经把nmp给你…

搭建大数据学习的平台

一、基础环境准备 1. 硬件配置 物理机&#xff1a;建议 16GB 内存以上&#xff0c;500GB 硬盘&#xff0c;多核 CPU虚拟机&#xff1a;至少 3 台&#xff08;1 主 2 从&#xff09;&#xff0c;每台 4GB 内存&#xff0c;50GB 硬盘 2. 操作系统 Ubuntu 20.04 LTS 或 CentOS…

Linux 软硬连接详解

目录 一、软链接&#xff08;Symbolic Link&#xff09; ‌定义与特性 ‌实现方法‌使用 ln -s 命令&#xff1a; 二、硬链接&#xff08;Hard Link&#xff09; 1、是什么 2、工作机制 3、实现方式 一、软链接&#xff08;Symbolic Link&#xff09; ‌定义与特性 定义…

每日c/c++题 备战蓝桥杯(洛谷P1115 最大子段和)

洛谷P1115 最大子段和 题解 题目描述 最大子段和是一道经典的动态规划问题。题目要求&#xff1a;给定一个包含n个整数的序列&#xff0c;找出其中和最大的连续子序列&#xff0c;并输出该最大和。若所有数均为负数&#xff0c;则取最大的那个数。 输入格式&#xff1a; 第…

前端取经路——框架修行:React与Vue的双修之路

大家好,我是老十三,一名前端开发工程师。在前端的江湖中,React与Vue如同两大武林门派,各有千秋。今天,我将带你进入这两大框架的奥秘世界,共同探索组件生命周期、状态管理、性能优化等核心难题的解决之道。无论你是哪派弟子,掌握双修之术,才能在前端之路上游刃有余。准…

PyTorch API 1 - 概述、数学运算、nn、实用工具、函数、张量

文章目录 torch张量创建操作索引、切片、连接与变异操作 加速器生成器随机采样原地随机采样准随机采样 序列化并行计算局部禁用梯度计算数学运算常量逐点运算归约操作比较运算频谱操作其他操作BLAS 和 LAPACK 运算遍历操作遍历操作遍历操作遍历操作遍历操作遍历操作遍历操作遍历…

java命令行打包class为jar并运行

1.创建无包名类: 2.添加依赖jackson 3.引用依赖包 4.命令编译class文件 生成命令: javac -d out -classpath lib/jackson-core-2.13.3.jar:lib/jackson-annotations-2.13.3.jar:lib/jackson-databind-2.13.3.jar src/UdpServer.java 编译生成class文件如下 <

ABC 转 STL 全攻略:格式解析、方法实操与问题解决

在 3D 建模与设计领域&#xff0c;不同格式文件间的转换是一项基础且重要的操作。ABC&#xff08;Alembic&#xff09;和 STL&#xff08;Standard Triangle Language&#xff09;是其中常见的两种格式。ABC 格式因其高效存储和传输 3D 数据的特性&#xff0c;常被用于影视特效…

编写一个处理txt的loader插件,适用于wbepack

处理txt的webpack的loader插件 编写一个处理txt的loader插件&#xff0c;适用于wbepack 编写一个处理txt的loader插件&#xff0c;适用于wbepack 实现一个处理txt的插件&#xff0c;给文本每行前后添加**** module.exports function txtLoader(content) {// 确保 Loader 是异…