当前位置: 首页 > news >正文

极速查找(3)-算法分析

篇前小言

本篇文章是对查找(2)的续讲

二叉排序树

二叉排序树(Binary Search Tree,BST),又称为二叉查找树,是一种特殊的二叉树。

性质:

左子树的节点值小于根节点的值,右子树的节点值大于根节点的值:这是二叉排序树最基本的性质。对
于任意节点N,其左子树中的所有节点的值都小于N的值,而右子树中的所有节点的值都大于N的值。这
个性质决定了二叉排序树的有序性,使得我们可以通过比较节点值进行快速的插入、删除和查找操作。中序遍历的结果是按序排列的序列:由于二叉排序树的左子树中的节点值都小于根节点的值,而右子树
中的节点值都大于根节点的值,所以中序遍历的结果是一个按序排列的序列。这使得二叉排序树可以实
现排序功能,将节点按值的大小进行有序存储。对于任意节点,左子树和右子树也是二叉排序树:这个性质是递归地应用于每个节点的子树。由于左子
树中的节点值都小于根节点的值,右子树中的节点值都大于根节点的值,并且左子树和右子树都是二叉
排序树,因此这个性质得以满足。不存在相同值的节点:在二叉排序树中,每个节点的值是唯一的。这是为了确保树的每个节点都可以通
过值进行唯一的标识和比较。平均查找时间复杂度为O(log n):由于二叉排序树的有序性质,当树是平衡的时候,即左右子树的高
度相差不大时,平均查找时间复杂度可以达到O(log n)。这是因为每次查找都是通过二分法来进行的,
每次可以将问题规模减半。但是如果二叉排序树是不平衡的,即左右子树的高度相差较大,可能会导致
查找性能下降,退化为线性查找(O(n)时间复杂度)。可以支持插入、删除和查找操作:二叉排序树的性质使得它可以高效地支持插入、删除和查找操作。插
入操作按照节点值的大小,在合适的位置插入新节点。删除操作涉及到对不同情况进行处理,包括删除
叶子节点、删除只有一个子节点的节点以及删除有两个子节点的节点。查找操作可以通过比较给定值和
当前节点值的大小,递归地向左子树或右子树查找目标值。

特点

有序性:二叉排序树是一种有序的二叉树结构,它的左子树中的节点值都小于根节点的值,而右子树中
的节点值都大于根节点的值。这种有序性质使得二叉排序树在存储、查找和排序数据时具有很高的效率。中序遍历有序:二叉排序树的中序遍历结果是一个按序排列的序列。即按照"左子树-根节点-右子树"的
顺序遍历二叉排序树的节点,可以得到一个按节点值升序排列的序列。这种特点使得二叉排序树可以用
于实现排序功能。可以进行高效的插入、删除和查找操作:由于二叉排序树的有序性,插入、删除和查找操作可以在平均
情况下以O(log n)的时间复杂度完成。在插入操作中,根据节点值的大小,递归地插入新节点到合适的
位置。在删除操作中,根据节点值的大小,递归地删除指定节点。在查找操作中,根据节点值的大小,
递归地向左或向右查找目标节点。不允许重复值:二叉排序树中的节点值是唯一的,不存在相同值的节点。这是为了确保树的每个节点都
可以通过值进行唯一的标识和比较。可以支持快速的最小值和最大值查询:由于二叉排序树的有序性质,可以很快地找到最小值和最大值。
最小值位于树的最左边(最左子节点),而最大值位于树的最右边(最右子节点)。

优点

有序存储和排序功能:二叉排序树的节点存储是有序的,左子树中的节点值都小于根节点的值,而右子
树中的节点值都大于根节点的值。这使得二叉排序树可以通过中序遍历得到一个按节点值升序排列的序
列,实现了快速的排序功能。高效的插入、删除和查找操作:由于二叉排序树的有序性,插入、删除和查找操作可以在平均情况下以
O(log n)的时间复杂度完成。在插入操作中,根据节点值的大小,在合适的位置递归地插入新节点。在
删除操作中,根据节点值的大小,在合适的位置递归地删除节点。在查找操作中,根据节点值的大小,
在合适的位置递归地查找目标节点。这使得二叉排序树非常适合存储和操作有序的数据集合。快速的最小和最大值查询:由于二叉排序树的有序性特点,可以快速地找到最小值和最大值。最小值位
于树的最左边(最左子节点),而最大值位于树的最右边(最右子节点)。这对于需要频繁查找最小和
最大值的场景很有帮助。灵活性:二叉排序树的节点结构简单且灵活,可以根据实际需求进行扩展,如增加额外的属性或方法。
这使得二叉排序树可以支持更复杂的操作和算法,满足不同场景的需求。内存利用率高:二叉排序树在存储数据时,只需要存储节点的值和左右子树的指针,相较于其他数据结
构,它的内存占用较小。而且,由于平均查找时间复杂度为O(log n),数据量越大,二叉排序树的优势
更加明显。

缺点

对于随机插入的数据,可能会导致树的不平衡:二叉排序树的性能高度依赖于树的平衡性。如果在插入
过程中不平衡地插入节点,可能会导致树的不平衡,使得树的深度增加,进而降低了效率。不平衡的树
可能会导致查找、插入和删除操作的时间复杂度由原来的O(log n)退化为O(n),变成线性操作,降低
了性能。效率受数据分布的影响:二叉排序树的效率受到数据分布的影响。如果数据按照有序的方式插入二叉排
序树中,比如按照升序或降序的顺序,可能会导致树的不平衡,进而降低效率。为了克服这个问题,可
以使用某些技术,如随机化插入或平衡二叉搜索树,来解决数据分布对效率的影响。需要额外的内存空间:除了存储节点的值和左右子树的指针,二叉排序树还需要额外的内存空间来存储
节点的额外信息,如父指针。而一些其他数据结构,如数组,只需要连续的内存空间即可存储数据,没
有额外的空间开销。不支持高效的范围查询:尽管二叉排序树可以快速找到最小值和最大值,并且支持单个元素的查找,但
对于范围查询(如查找在给定范围内的值)来说,并不是最优的数据结构。范围查询可能需要遍历的节
点数与树中元素的数量成比例,而不仅仅是与树的高度有关。如果需要高效地支持范围查询,可以考虑
使用其他数据结构,如平衡二叉搜索树的变种(如红黑树)或B树等。难以处理重复值:二叉排序树的每个节点值是唯一的,不允许重复值的存在。如果需要支持重复值的存
储和操作,必须引入一些额外的机制,如在节点中存储计数信息,或者在节点左右子树中维护重复值的
集合。这会增加复杂性和实现难度。

实际应用

数据库索引:在关系型数据库中,二叉排序树经常被用作索引结构,以加快数据的查找速度。数据库表
中的某一列可以作为二叉排序树的键,通过构建二叉排序树来加速对表的查询操作。字典和查找表:二叉排序树可以用于实现字典和查找表功能,其中关键字作为树的节点值,便于快速的
插入、删除和查找操作。这在文本编辑器、拼写检查器、自动补全功能等应用中非常有用。文件系统和目录结构:文件系统和目录结构可以用二叉排序树来组织和管理文件和目录。文件名或目录
名作为树的节点值,通过二叉排序树可以快速地进行文件查找、插入和删除操作。动态排名和统计:二叉排序树可以用于实现动态排名和统计功能。通过对节点进行适当的标记或调整,
可以快速找到某个节点的排名,或者统计某个范围内有多少个节点,方便计算和分析。范围查询和区间搜索:尽管二叉排序树不是最优的数据结构来支持范围查询,但在某些情况下它仍然可
以用于处理范围查询和区间搜索。可以通过递归遍历树的方式,找到满足指定范围条件的节点。数值集合操作:二叉排序树可以用于实现对数值集合进行操作,如合并集合、交集、差集等。树的节点
值可以表示数值,通过对树的遍历和操作,可以实现集合操作。

平衡二叉树

性质:

平衡性:平衡二叉树的平衡性是指树中任意节点的左子树和右子树的高度差不超过1。这意味着对于每个节点,其左子树的高度和右子树的高度之差的绝对值不大于1。平衡性是保持树的高度相对较低,从而确保树的操作性能高效的关键特性。高度的上界和下界:对于一个具有n个节点的平衡二叉树,其高度h满足以下条件:h <= log2(n+1)h >= log2(n)这意味着平衡二叉树的高度上界是O(log n),下界是O(log n)。自平衡操作:平衡二叉树通过自平衡操作来维持其平衡性。插入或删除节点时,如果导致某个节点的平衡因子大于1或小于-1,就需要通过旋转或其他操作来调整树的结构。一般来说,平衡二叉树的自平衡操作包括左旋、右旋、双旋等,以保持树的平衡状态。查找操作:平衡二叉树支持高效的查找操作。由于平衡二叉树的节点值有序排列,可以使用二分查找的方式在O(log n)时间复杂度内完成查找。插入和删除操作:插入和删除操作的平均时间复杂度为O(log n)。添加一个节点时,树可能需要进行自平衡操作来保持平衡性。删除一个节点时,也可能需要进行自平衡操作。删除操作可能需要找到一个适当的替代节点来替代被删除的节点。局部性原理的优化:
平衡二叉树利用局部性原理进行优化,即通过在内存中存储相邻节点,减少磁盘I/O的次数,提高查询
性能。

特点

平衡性:
平衡二叉树的定义是指对于树中的每个节点,其左右子树的高度差(平衡因子)不超过1。
平衡因子定义为节点的左子树高度减去右子树的高度,平衡因子的绝对值不大于1。
通过保持平衡性,平衡二叉树可以避免出现树的高度差过大的情况,提供较好的平均查找性能。快速的插入、删除和查找操作:
平衡二叉树的插入、删除和查找操作的平均时间复杂度为O(log n),其中n为树中节点的数量。
平衡二叉树通过自平衡操作来维持平衡性,在插入或删除节点后,通过旋转操作恢复平衡。
自平衡操作的时间复杂度为O(1),使得平衡二叉树的插入、删除和查找操作具有较好的性能。自适应动态数据结构:
平衡二叉树适用于动态的数据集合,即在频繁插入和删除节点的情况下能够保持树的平衡性。
平衡二叉树通过自平衡操作,能够自动调整树的结构,使得树的高度保持相对较低,适应不断变化的数
据集合。有序性操作支持:
平衡二叉树的节点按照某种顺序排列,一般是左子树节点值小于根节点,右子树节点值大于根节点的方
式。
这使得平衡二叉树可以支持快速的有序性操作,如范围查询、查找最小值和最大值等。
有序性操作在某些应用场景中非常重要,平衡二叉树提供了高效的实现方式。自平衡的数据结构:
平衡二叉树是一种自平衡的数据结构,通过特定的自平衡操作来保持树的平衡性。
在插入和删除节点时,平衡二叉树可以通过旋转和调整操作保持树的平衡状态。
自平衡的特性使得平衡二叉树相对于非平衡的二叉搜索树,如普通二叉搜索树,更加稳定和可靠。

优点

快速的插入、删除和查找操作:
平衡二叉树的插入、删除和查找操作的平均时间复杂度为O(log n),其中n为树中节点的数量。
平衡二叉树通过自平衡操作来维持平衡性,使得树的高度保持较低,从而提供快速的操作性能。
自平衡操作的时间复杂度为O(1),因此,无论树的大小如何,插入、删除和查找操作的时间复杂度都保
持在对数级别。自适应动态数据结构:
平衡二叉树适用于频繁插入和删除节点的动态数据集合。它可以在数据集合大小改变时自动调整树的结
构,维持平衡性。
自适应动态的特性使得平衡二叉树适用于场景中数据频繁变化的情况,如动态存储、实时数据处理等。有序性操作支持:
平衡二叉树的节点按照某种顺序排列,一般是左子树节点值小于根节点,右子树节点值大于根节点的方
式。
有序性的排列使得平衡二叉树支持快速的有序性操作,如范围查询、查找最小值和最大值等。
有序性操作在某些应用场景中非常重要,平衡二叉树提供了高效的实现方式。自平衡的数据结构:
平衡二叉树是一种自平衡的数据结构,通过特定的自平衡操作来保持树的平衡性。
自平衡的特性使得平衡二叉树相对于非平衡的二叉搜索树,如普通二叉搜索树,更加稳定和可靠。
在插入和删除节点时,平衡二叉树可以通过旋转和调整操作保持树的平衡状态,避免出现树的高度差过
大的情况。高效的存储和查询:
平衡二叉树可以使用相对较少的额外存储空间来存储平衡因子,使得空间占用更低。
在平衡二叉树中,节点按照有序性排列,使得查询操作可以利用二分查找的方式,在较短时间内完成。

缺点

内存空间需求较大:
平衡二叉树需要在每个节点中保存额外的平衡因子信息,以及链接指向左子树和右子树的指针。
这样的额外信息和指针会占用更多的内存空间,相对于普通的二叉搜索树,平衡二叉树需要更大的存储
空间。自平衡操作的复杂性:
平衡二叉树的自平衡操作需要在插入和删除节点时进行,以保持树的平衡性。
这些自平衡操作的实现可能较为复杂,需要额外的计算和判断,增加了代码的复杂性。自适应调整的开销:
平衡二叉树在插入和删除节点时需要进行自平衡操作,以维持树的平衡性。
这些自平衡操作可能涉及到多次旋转、调整和重新连接节点,引入了一定的开销。
尽管自平衡操作的时间复杂度为O(1),但实际上可能需要花费相对较长的时间执行。不适合频繁修改的场景:
平衡二叉树适用于频繁的查询操作,但对于频繁的插入和删除操作,可能不是最佳选择。
在频繁修改的场景中,由于每次操作都需要进行自平衡操作,可能导致频繁的树结构调整,影响效率。不适合大规模数据:
随着数据量的增加,平衡二叉树的自平衡操作会变得更加耗时,可能导致性能下降。
对于大规模数据集合,可能需要更高级的平衡二叉树变种,如B树、红黑树等。

实际应用

数据库索引结构:平衡二叉树被广泛应用于数据库中的索引结构,如B+树和红黑树。
数据库中的索引用于快速查找和访问数据,平衡二叉树的有序性和快速的插入、删除、查询操作使其成
为理想的索引结构。文件系统:
平衡二叉树经常用于文件系统中的目录结构,确保文件和目录的快速查找和访问。
文件系统中的目录和文件具有层次结构,平衡二叉树能够有效地组织和管理这种层次结构,提供高效的
文件访问。编程语言中的集合和映射:
许多编程语言的标准库或第三方库中提供了平衡二叉树的实现,用于集合和映射等数据结构。
这些实现通常提供快速的插入、删除和查找操作,以及有序性的支持,满足了许多编程任务中的需求,
如排序、搜索等。游戏开发:
平衡二叉树在游戏开发中有许多应用,如实现碰撞检测、空间划分、排序等。
平衡二叉树可以存储游戏中的对象,并支持高效的查找和更新操作,提供了快速的游戏性能。排序和搜索算法:
平衡二叉树作为搜索和排序算法的基础结构,可以用于实现各种搜索和排序算法,如二分查找、中序遍
历等。
平衡二叉树的有序性和快速的插入、删除操作使其成为实现这些算法的有效选择。

相关文章:

极速查找(3)-算法分析

篇前小言 本篇文章是对查找&#xff08;2&#xff09;的续讲二叉排序树 二叉排序树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;&#xff0c;又称为二叉查找树&#xff0c;是一种特殊的二叉树。性质&#xff1a; 左子树的节点值小于根节点的值&#xff0c;右…...

http 常见的响应状态码 ?

100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本200——交易成功201——提示知道新文件的URL202——接受和处理、但处理未完成203——返回信息不确定或不完整204——请求收到&#xff0c;但返回信息为空205——服务器完成了请求&#xff0c;用户代理…...

机器学习笔记之优化算法(四)线搜索方法(步长角度;非精确搜索)

机器学习笔记之优化算法——线搜索方法[步长角度&#xff0c;非精确搜索] 引言回顾&#xff1a;精确搜索步长及其弊端非精确搜索近似求解最优步长的条件反例论述 引言 上一节介绍了从精确搜索的步长角度观察了线搜索方法&#xff0c;本节将从非精确搜索的步长角度重新观察线搜…...

Redis 哨兵 (sentinel)

是什么 官网理论&#xff1a;https://redis.io/docs/management/sentinel/ 吹哨人巡查监控后台 master 主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新主库&#xff0c;继续对外服务。 作用&#xff1a;无人值守运维 哨兵的作用&#xff1a; 1…...

统计2021年10月每个退货率不大于0.5的商品各项指标

统计2021年10月每个退货率不大于0.5的商品各项指标_牛客题霸_牛客网s mysql&#xff08;ifnull&#xff09;&#xff1a; select product_id, format(ifnull(sum(if_click)/nullif(count(*),0),0),3) as ctr, format(ifnull(sum(if_cart)/nullif(sum(if_click),0),0),3) as c…...

【小波尺度谱】从分段离散小波变换计算小波尺度谱研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

UE5、CesiumForUnreal加载无高度地形

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 在UE5中,CesiumForUnreal插件默认的地形都是带高度的,这里加载没有高度的地形,即大地高程为0,GIF动图如下: 2.实现过程 参考官方的教程,下载无高度的DEM,再切片加载到UE中。 (1)下载无高度地形DEM0。 在官方帖子…...

关于Spring中的@Configuration中的proxyBeanMethods属性

Configuration的proxyBeanMethods属性 在Configuration注解中&#xff0c;有两个属性&#xff1a; value配置Bean名称proxyBeanMethos&#xff0c;默认是true 这个proxyBeanMethods的默认属性是true。 直接说&#xff1a;当Configuration注解的proxyBeanMeathods属性是true…...

dp1,ACM暑期培训

D - 摆花 P1077 [NOIP2012 普及组] 摆花 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Description 小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;他想在花店的门口摆上一排花&#xff0c;共 m 盆。通过调查顾客的喜好&#xff0c;小明列出了顾客最喜欢的 n 种花&…...

大厂程序员的水平比非大厂高很多嘛?

最近一个月&#xff0c;筛选了一百多份简历&#xff0c;前前后后面试了二三十人&#xff0c;基本上都是有大厂经历的人。同时&#xff0c;也录用了几个有大厂经历的。但整体而言&#xff0c;打破了对大厂出来的都是优质人才的幻觉。看到的实际情况与想象中的落差还是比较大的。…...

Java开发工具MyEclipse发布v2023.1.2,今年第二个修复版!

MyEclipse一次性提供了巨量的Eclipse插件库&#xff0c;无需学习任何新的开发语言和工具&#xff0c;便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发&#xff1b;强大的智能代码补齐功能&#xff0c;让企业开发化繁为简。 MyEclipse v2023.1.2官方正式版下载 …...

基于正交滤波器组的语音DPCM编解码算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................................g0zeros(1,lenH); g1zeros(1,l…...

VS2022和QT混合编程打包发布程序

1.在开始菜单输入 CMD 找到 Qt5.15.2(MSVC 64-bit) 2.输入windeployqt exe所在路径 3.运行完毕后&#xff0c;双击打开exe文件&#xff0c;可能会报错&#xff0c;缺少相关的dll,找到缺少的dll拷贝到运行文件夹下即可。...

Filebeat学习笔记

Filebeat基本概念 简介 Filebeat是一种轻量级日志采集器&#xff0c;内置有多种模块&#xff08;auditd、Apache、Nginx、System、MySQL等&#xff09;&#xff0c;针对常见格式的日志大大简化收集、解析和可视化过程&#xff0c;只需一条命令即可。之所以能实现这一点&#…...

【实战】 九、深入React 状态管理与Redux机制(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十六)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...

第九十五回 如何使用dio的转换器

文章目录 概念介绍使用方法使用默认的转换器自定义转换器 示例代码经验分享 我们在上一章回中介绍了"如何打造一个网络框架"相关的内容&#xff0c;本章回中将介绍 如何使用dio的转换器.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 转换器主要用来转…...

Python深度学习“四大名著”之一【赠书活动|第二期《Python机器学习:基于PyTorch和Scikit-Learn》】

近年来&#xff0c;机器学习方法凭借其理解海量数据和自主决策的能力&#xff0c;已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从AlexNet模型在2012年ImageNet大赛被提出以来&#xff0c;机器学习和深度学习迅猛发展&#xff0c;取…...

RAID相关知识

简介 RAID &#xff08; Redundant Array of Independent Disks &#xff09;即独立磁盘冗余阵列&#xff0c;通常简称为磁盘阵列。RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑磁盘&#xff0c;从而提高硬盘的读写性能和数据安全性。 数据组织形式 分块&#x…...

DataStructure--Basic

程序设计数据结构算法 只谈数据结构不谈算法就跟去话剧院看梁山伯与祝英台结果只有梁山伯在演&#xff0c;祝英台生病了没来一样。 本文的所有内容都出自《大话数据结构》这本书中的代码实现部分&#xff0c;建议看书&#xff0c;书中比我本文写的全。 数据结构&#xff0c;直…...

Intellij IDEA 双击启动报错ClassNotFoundException: com.licel.b.z@

项目场景&#xff1a; 新从官网下载了ideaIU-2023.2.win.zip &#xff0c;安装后双击启动报错&#xff0c; 无法运行idea, 提示信息如下 问题描述 Internal error. Please refer to https://jb.gg/ide/critical-startup-errorsjava.lang.ExceptionInInitializerErrorat java…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...