算法学习(一)

开放寻址法 开始之前先引用一个牛人对开放寻址法的介绍,http://blog.youkuaiyun.com/shaobingj126/article/details/8156675。在此基础上,本文进行更为准确更为恶心地补充说明。在进行坑位选择时,顾客对所有的坑位有一个喜好排序,然后按照特定排序方法,尽量选择最喜欢的坑位,检查里面是否有人,然后进行蹲坑,这就是进行insert操作。而search,可以认为是有人来厕所找人 阅读详情

1.散列表:一个数组,它的每个下标与该单元所存储的数据元素的关键字是相互映射的关系。数据元素的关键字k作为输入,经过散列函数hash(k)计算后,得到对应的存储位置的下标;并且,有可能多个数据元素映射到散列表的同一位置,从而使得散列表的存储位置个数要比数据元素的个数少。散列表采用了其他的方法解决这种多个元素映射到同一地址的冲突问题,实现了一定的存储空间容纳更多的数据元素,同时又一定程度上保留了对数组进行随机访问的时间的高效性,也就是实现了高效的存储和读取速度。

    读取(查找)的速度:链接法散列,即用一个双向链表解决映射到同一下标的冲突问题,链接法散列表的性能可以用装载因子n/m来衡量,n是可能存放的元素数量,m是散列表的存储位置个数。无论是查找成功还是查找不成功,链接法散列表的查找时间复杂度都是O(1+n/m),所以当存储位置数目与待存储数据元素的数量成正比增长时,链接法散列表的读取(查找)速度(时间复杂度)一直保持在O(1)的数量级。


除数散列法: 散列函数是一个取余函数mod m,将所有的数据元素映射到m个纯存储单元。一个用所有元素个数除以装载因子得到的附近的不太接近2的整数幂的素数,是通常对m的好的选择。

乘法散列法: 原理是将k放大s倍之后取k*s的低w位上的一部分数位上的值作为散列地址(下标),其中w是关键字k的存储单元的长度(位数),比如计算机的字长,而p则是目标散列表长度的位数(比如散列表长2的14次方,即可以存储16384个数据元素,那么p就是14)。用公式表示则是先乘以一个分数s/(2的w次方),然后截取得到小数部分,再乘以m,并且向下取整得到最终散列值。(略复杂)


开放寻址法:与链接法散列相比较,它不能将所有数据元素都存入到存储散列表中,当待存元素个数超过散列表的长度时,就无法存入,也使得散列表的装载因子总是小于等于1。开放寻址法的散列函数有两个输入:一是待存元素的关键字,而是探查号(一般地,探查号有m个,m是散列表的长度)。散列函数一般有三种:(一)线性探查,(二)二次探查,(三)双重探查。线性探查最简单,就是在辅助散列函数(比如出发散列函数或者乘法散列函数)的基础上,向后逐个探查后续的位置。但是这会导致一次群集的发生,严重影响查找的性能。二次探查是对一次探查的改进,但是不能避免二次群集的发生,它使用了一个简单二次多项式而不是直接线性的向后探查(公式:h(k, j) = ( h'(k) + c1*i + c2*i^2 ) mod m。双重散列:引入了两个辅助散列函数,使的散列的位置更加随机,公式:h(k, i) = (h1(k) + i*h2(k)) mod m,对于第二个辅助散列函数以及散列表长度的选择,h2(k) 产生的散列值必须和表长度m互质;最一般的双重散列函数:h1(k) = k mod m, h2(k) = 1 + (k mod m'),m是一个素数,m'是比m略小的数。不成功的探查次数最多为1/(1-a),a是装载因子。



强化学习算法实践(一)——策略梯度算法 策略梯度是一种基于策略的算法,相比于DQN一类的基于价值的算法,它会直接显式的学习一个目标策略。梯度下降的基础知识可以参考之前的博客强化学习(六)策略梯度和《动手学强化学习》部分内容。[1] 《动手学强化学习》 https://hrl.boyuai.com/ [2] David Silver: https://www.youtube.com/watch?v=KHZVXao4qXs&t=4609s我们假设目标策略πθ(a∣s)\pi_\theta(a|s)πθ​(a∣s)是一种随机策略,并且处处可微,θ\th 阅读详情

相关推荐

Reptile算法:一阶元学习的简洁力量

本文深入解析Reptile算法,探讨其一阶元学习的简洁设计与高效性能。通过对比MAML,揭示Reptile在计算复杂度、内存效率和数据利用率上的优势,并提供PyTorch实现代码及参数调优指南。特别适合小样本学习和边缘设备部署场景,展现元学习的实用价值。

weixin_30600197的博客 198

双散列法:为什么rehash(key)函数值要与散列表的容量tablesize互质?

采用双散列法进行元素的插入与搜索时,要求rehash(key)这个函数值与散列表容量tablesize互质。 个人认为原因如下: 1.(关于rehash()函数简单介绍) rehash()函数的作用:当在散列表中搜索key关键码时,首先用hash()函数计算hash(key)的值H0,找到下标为H0的位置,若此位置上已有其他元素,则称发生冲突,此时用rehash()函数计算rehash(key)的值r(此值还要求小于tablesize),使Hi=(H(i-1)+r)%tablesize(寻找下一个位置

weixin_41726671的博客 664

ECC算法学习(一)算法公式

ECC全称为“Ellipse Curve Ctyptography”,是一种基于椭圆曲线数学的公开密钥加密算法。与传统的基于大质数分解难题的加密算法不同,该加密方式基于 “离散对数” 这种数学难题。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。

旭日的博客 6515

散列表(Hash Table)全解析

之前经常听到散列表/哈希表这么个概念,但是一直没静下来好好研究这个东西。现在借着读《算法导论》这个机会,好好整理一下有关散列表的知识。留待以后复习使用。形象地来理解,散列表就相当于是一个字典。我们使用字典的时候通过拼音找到想要的字,那些读音相近的字都集合在一起,这样查找起来就很方便。或者,你可以把它理解成在手机通讯录,如果我现在想要找一个人的电话,一般是直接键入这个人的姓的字母,比如林**,我键入

LinJM-机器视觉 5734

《算法第四版》学习心得一——怎么学算法

 一、算法的两个核心 算法的核心内容实际上有两个: 算法的概念和思路。 算法的编程实现。 两者相互关联影响,缺一不可。 不理解基本概念和思路,就算把实现代码背下来,也无济于事,因为脑袋里依然是一片模糊。理解了概念和思路,不去用代码实现,脑袋里有的只是概念,无法根据真实需求实现解决方案。 二、学算法需要什么基础 首先,必须要有一定的编程语言基础,要理解语言中最基本的概念:数据类型,类,成...

illikang的博客 3909

13、留一法误差与学习算法稳定性

本文探讨了留一法误差与学习算法稳定性之间的关系,分析了留一法误差作为泛化误差估计的有效性及其理论界限。文章介绍了均匀稳定性和部分稳定性等概念,并讨论了它们在推导误差界限中的作用。针对核机器(如支持向量机和正则化网络),给出了平方损失下留一法误差的精确计算方法及一般损失下的上界分析。此外,还探讨了留一法误差在转导学习、特征选择与缩放中的应用,并指出了敏感性分析、稳定性判断以及先验知识融入等方面的开放性问题,为未来研究提供了方向。

u9v0w的博客 82

算法导论笔记:11散列表(哈希表)

在前面讨论的各种数据结构中,记录在各种结构中的相对位置是随机的,和在记录的关键字之间不存在有确定的关系,因此在查找记录是需要进行一系列和关键字的比较。 而理想的情况是不希望进行任何的比较,一次存取便能得到所查记录。那就必须在记录的存储位置和它的关键字之间建立一种确定的关系f,使每个关键字和结构中有一个唯一的存储位置与之相对应。我们称这个对应关系f为哈希函数,而按这个思...

weixin_30786657的博客 412

数据标注的下一代SOP,可能不是Word,而是一段Prompt

再给几个反例:“这个只是正常纹理,不算。真正用于数据生产的Prompt,可能至少包含:任务定义、正例、反例、边界案例、优先级、输出格式、验收逻辑。一个项目100个人,如果100个人对这句话有100种理解,最后返工的就不是一个框,而可能是几十万帧数据。一个项目启动以后,项目经理先研究SOP,培训组长,组长再培训标注员,最后几百个人按照同一套规则干活。实际上一个成熟的项目经理,最重要的能力之一,就是:把客户的业务语言翻译成生产规则。真正让项目难交付的,从来不是80%的普通数据,而是那20%的长尾数据。

AI数据标注猿 295

【机器学习】一阶规则学习:原理、算法与实战

本文系统介绍了一阶规则学习的概念、原理与实现。首先阐述一阶规则学习的基础概念,包括与命题规则的区别及其优势;重点讲解其核心原理,如序贯覆盖策略、剪枝优化机制及FOIL算法流程;通过实例展示如何用Python实现FOIL算法,包括数据结构定义、规则生成与评估;分析医疗和金融领域的典型应用案例。文章指出一阶规则学习具有可解释性强、可处理复杂关系等优势,在可解释AI和复杂数据分析领域具有广阔前景。全文坚持技术中立原则,以客观严谨的方式呈现了一阶规则学习的理论框架与实践方法。

大雨淅淅的博客 949

2025反爬终极方案:Python破解Cloudflare v2行为指纹,设备伪装+轨迹模拟拦截率压至1%

Cloudflare v2的反爬逻辑越来越接近“人类行为识别”,单纯的技术破解已失效,核心竞争力变成“模拟真实用户的能力”。本文的终极方案本质是“全方位复刻人类行为”——从设备指纹到操作轨迹,从网络特征到交互模式,让爬虫成为“无法被区分的真实用户”。这套方案的优势是“通用性强”,不仅适用于Cloudflare v2,也能破解大多数高反爬网站(如小红书、知乎、跨境电商)的行为检测;且代码可直接复用,新手只需替换目标URL和数据提取逻辑,就能快速落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2353

vue使用 APlayer+Meting实现音乐播放,支持多平台音乐:网易云、腾讯、虾米、酷狗、百度

  我之前写过一篇博客:使用 APlayer 实现音乐播放器,虽然 APlayer 让我实现了想要的音乐播放器效果,但是音频列表 audio 的音频链接、音频封面、歌词等,是需要自己去补充的。   那么这些数据从哪里来呢?   我昨天有发愁一会儿会儿,也去搜了获取音乐列表的接口,可以发请求去获取数据嘛。   也有瞅见MetingJS,A powerful plugin connect APlayer and Meting,一个连接APlayer和Meting的功能强大的插件,附上GitHub地址:https

小R.的博客 4797

机器学习基石作业一PLA算法

本文实现机器学习基石课程作业一种关于PLA算法的实现,算法由python实现。   机器学习基石作业一中15-17题,pla算法是有错才更新,直到算法在看到的数据上全部正确它就会停下来(当然前提是数据线性可分才行)。   第15题的题干如下:   16题如下:   17题如下:         从上面的描述可以看出,15题仅仅需要执行一

Light_blue_love的专栏 1887

多智能体记忆架构设计:从分层模型到一致性实践

多智能体记忆架构本质上是一个有状态、分布式、支持遗忘的知识系统。从分层模型入手,结合RBAC隔离、版本向量一致性以及混合存储,可以构建出既灵活又健壮的生产级方案。可微分记忆:让记忆的读写操作嵌入端到端训练。基于大模型的记忆压缩:用LLM自动生成情景摘要,取代规则式遗忘。联邦记忆:不同组织之间的多智能体系统在不共享原始数据的情况下协同记忆。希望本文能为你的多智能体项目提供一块坚实的基石。欢迎在评论区分享你在实践中遇到的记忆架构难题。

Ven%的博客 169

基于python的机器学习(八)—— 评估算法(一)

评估的核心目标包括验证泛化能力、识别过拟合或欠拟合问题,以及比较不同算法的优劣。 常用评估指标有准确率、精确率、召回率、F1分数、ROC曲线和AUC值等;交叉验证技术如K折交叉验证、留一法交叉验证和分层交叉验证。

歆歆~黯了 1580

一文学会python基础知识

1. python 运行环境 1.1 脚本式环境 1.2 交互式环境 2. python 注释 3. 变量及变量命名 4. 关键词 BIFS 5. 标准操作符 6. 条件判断 7. 循环 8. python 数据类型 9. python 序列 9.1 序列-字符串(str) 9.2 序列-列表 9.3 序列-元组 10. 字典 11. 集合 12. python内存管理及可变、不可变对象 13. 函数 13.1 函数参数 13.2 return and yiled(生成器) 13.3 参数传递处理 ...

weixin_43178406的博客 26万+

DA14531-外设驱动篇-UART收发通信应用

宏定义注解CFG_PRINTF用户开启串口串口打印宏设置波特率选择115200。

hejinwu1314的博客 729

算法学习练习一

算法学习练习一 初始步:循环开始之前,L1为真。pow1为真 ​归纳步:如果在循环的第j个迭代前, Li-1 为真,则在循环的第j+1个迭代前, L i为真;在Lj的时候,Li-1就是a^(i-1),a的(i-1)次方了,Lj-1为真。在循环的第j+1迭代前,Lj,就是在Li-1上面再乘以了一个a,即为a的i次方,为真 终止步: 当循环终止时, L n 为真。当i=n+1时,循环结束,此时p...

Claire的博客 967

第八节:Orin NX 修改pinmux

读SPI1对应的寄存器,看对应的GPIO口是否被复用为SPI功能。说明GPIO口的功能已经被复用为SPI。烧录或者命令行烧录,都是根据。这里我们把文件统一命名成。文件,Orin NX的。测试SPI功能,基于。

孤独旅客的博客 792

《图解算法》学习笔记(一)

已有半年没有在csdn上写文章了,在这半年中发生了挺多事情,目前计划把最近看的一些书进行记录总结。 算法对前端的日常工作来说,应用场景真的非常非常少,我之前通过贼厚的算法书学习的内容已经忘记的差不多了。但算法对一个程序猿来说又是一个不可或缺的知识,它能看出一个人解决问题的能力。所以最近又复习了一遍《图解算法》这本书,同时进行一个总结。每本书的学习笔记将会在第一篇文章中展示笔记所有内容大纲。 笔记大...

dd的博客 699

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

《算法学习》 一:为什么要学习算法?时间复杂度

前言: 最近有社友在问,有没有算法方面的资料,说我最近面试经常被问到。例如冒泡排序、插入排序、选择排序、二分法等等。 为什么要学习算法和结构? 面试必问,面试官一上来,就让你写一个冒泡排序 ,你一脸懵逼,心想啥是冒泡排序,这就尴尬了,只能跟这家公司说good bye了,继续开始你的面试之旅。 作为一个开发人员,你想在这条道路上越走越远,算法是必学的,大部分的人员都是忙于框...

程序猿学社的博客 8927

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

算法学习(一)——Minimax算法

作者:还想养只小短腿 链接:https://www.zhihu.com/question/27221568/answer/140874499 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 先来说极小极大算法主要应用于什么样的游戏: 1. 零和游戏(Zero-sum Game):意思就是你死我活,一方的胜利代表另一方的失败,比如,象棋,五子棋等。 2. 完全信息(Perfect Information):玩家知道之前所有的步骤。象棋就是完全信息,因为玩家是交替着落子,.

星之所望的博客 7580

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

机器学习算法——集成算法(一)

集成算法(Emseble Learning)是构建多个学习器,然后通过一定策略结合把它们来完成学习任务的,常常可以获得比单一学习显著优越的学习器。周志华的书上说,“个体学习器的"准确性"和"多样性"本身就存在冲突,一般准确性很高之后,要增加多样性就需牺牲准确性。事实上,如何产生并结合‘好而不同’的个体学习器,恰是集成学习研究的核心”(对准确性和多样性的论述还不是很理解)。 按照个体学习器之间的关...

chkay399的博客 1万+

算法学习基础(一)

作为一名普通的二本学校,我在很早之前就有一个目标,那就是大学之后好好找一个软件开发工作。因此学习了很多的编程基础,不过近几天面试发现,技术官总是喜欢问你算法知识。编程语言不断变化,但是很底层的知识与算法密切相关,算法也就是体现程序员内功所在。因此,从此我要好好学算法。 本笔记参考马士兵老师的视频教程:https://www.bilibili.com/video/av46562560 一、基本概...

极客开发者的博客 8275

【算法学习】递归、搜索与回溯算法(一)

【算法学习】关于递归、搜索与回溯算法的经典例题的讲解!!

2301_80220607的博客 3838

机器学习算法一:详解Boosting系列算法一Adaboost

本文主要介绍boosting算法得基本原理,以及的三种典型算法原理:adaboost,GBM(Gradient bossting machine),XGBoost。 Boosting方法原理 boosting算法是一类将弱学习器提升为强学习器的集成学习算法,它通过改变训练样本的权值,学习多个分类器,并将这些分类器进行线性组合,提高泛化性能。 先介绍一下“强学习”和“弱学习”的概念:一个分类,如果存...

weixin_42126632的博客 1272
上一篇: 海量数据处理:十道面试题与十个海量数据处理方法总结
下一篇: Linux系统的启动过程
cmdssd1
博客等级 码龄17年 24粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值