- 博客(119)
- 收藏
- 关注
原创 二叉搜索树
左子树所有节点的键值均小于根节点的键值;右子树所有节点的键值均大于根节点的键值;左右子树本身也是二叉搜索树。这一性质保证了在树中查找一个元素时,可以利用二分查找的思想,从根节点出发,根据键值大小选择左子树或右子树,从而大大减少查找次数。
2025-04-02 23:02:04
640
原创 动态规划之01背包问题
01 背包问题是一个经典的动态规划问题,给定 N 个物品和一个容量为 W 的背包,每个物品。要求在不超过背包总容量的情况下,选择装入的物品,使得。每个物品要么放入(1),要么不放入(0),不能拆分。:O(W)(相比二维 DP,节省 O(NW) 空间)即前 N 个物品在总容量 W 下能获得的最大价值。到 0(逆序遍历,防止数据覆盖),则空间复杂度可降为 O(W)。,空间复杂度为 O(NW)。当背包容量为 0 时,即。时间复杂度=O(NW)若优化为一维滚动数组。根据状态转移方程计算。能够取得的最大价值。
2025-04-02 14:31:35
212
原创 动态规划之最优三角剖分问题
个三角形,使得某个目标函数(通常是三角形边长或面积之和)达到最优(最小或最大)。最优三角剖分(Optimal Triangulation)问题是指:给定一个。,则权值通常是由三角形面积、边长的平方和或三角形权值函数。个状态,每个状态的计算需要 O(n)的比较,总复杂度为。本身就是一个三角形,无需再划分,权值直接计算。,需要枚举 k,最多有 O(n) 种选择。边形(n-gon),将其划分为。,即使其划分后的三角形权值和最小。 的子多边形的最优剖分。 的子多边形的最优剖分。 所围成的多边形的。
2025-04-01 21:58:09
242
原创 动态规划之矩阵链乘法
,目标是确定矩阵连乘的计算顺序(即括号的插入方式),使得标量乘法的计算次数最小。注意矩阵乘法满足结合律,但不同的括号顺序可能导致不同的计算量。直接递归求解会重复计算很多子问题,故采用动态规划将这些子问题解存储起来,避免重复计算。:如果一个问题的最优解包含了子问题的最优解,则可以通过递归地构造整个问题的最优解。并记录相应的分割点 k(可选,用于重构最优括号方案)。,需枚举所有可能的 k 值,最多 O(n) 次比较。的最小计算代价(标量乘法次数)。用于存储各个子问题的最小计算代价。取得最小值时的分割点 k。
2025-04-01 21:31:03
356
原创 荣耀内推码2025&实习&招聘&岗位直达
荣耀 (HONOR),成立于2013年,荣耀是全球领先智能终端提供商,致力于构建全场景、面向全渠道、服务全人群的标志性科技品牌。
2025-04-01 08:54:32
651
原创 分治算法之凸包问题
先排序,再递归分解,再合并局部凸包。归纳了递归求解与合并过程的正确性,并证明合并过程的时间复杂度为 O(n)。O(nlogn)利用Graham-scan算法是合并阶段的核心,通过不断调整候选点保证最终合并的凸包是最优解。
2025-03-31 23:28:47
423
原创 凸包构造算法—Graham 扫描法
通过选择参考点、极角排序以及利用栈检查转向,保证了每一次只保留凸包边界上的点。利用几何性质证明了只有左转时点才属于凸包,右转时弹出不符合条件的点。排序阶段 O(nlogn),扫描阶段 O(n) ,整体为 O(nlogn)。包含选择参考点、极角排序、栈初始化、扫描构造凸包以及输出结果等步骤,流程清晰且易于实现。
2025-03-31 23:21:54
670
原创 算法正确性证明之循环不变量
验证循环开始时不变量成立。假设不变量在某次迭代成立,证明经过一次循环后仍然成立。利用循环结束时的不变量,证明算法的正确性。
2025-03-31 23:09:03
426
原创 分治算法之最近点对问题
核心思想:利用分治将问题分解为左右两个子问题,再通过带状区域检查跨界点对,保证不漏检任何可能的最近点对。时间复杂度:分治递归时间复杂度为 T(n)=2T(n/2)+O(n) ,故总体时间复杂度为 O(nlogn)。算法步骤对点集按 x 坐标排序分治递归求解左右子问题构造带状区域并按 y 坐标排序扫描带状区域检查跨界点对返回全局最近点对%5Cdelta_L%5Cdelta_R%5Cdelta_L%5Cdelta_RP_LP_RP_LP_R%5Cdelta_L%5Cdelta_R。
2025-03-31 14:12:34
498
原创 经典分治算法——Karatsuba乘法算法
利用分治思想,将大整数分解为高低位两部分,通过三个子问题(而不是四个)递归计算乘积,利用加减法合并结果。递归关系为 T(n)=3T(n/2)+O(n) ,由主定理得出时间复杂度为。包括基本情况处理、分解数字、递归计算、合并结果以及返回最终乘积。%20bd.
2025-03-31 13:31:44
315
原创 有序数组的归并算法思路
通过双指针比较两个有序数组的当前元素,并依次将较小值存入结果数组,从而保持整体有序性。O(m+n),其中 m 和 n 分别为两个数组的长度。整个算法只需要扫描所有元素一次。初始化指针、循环比较、处理剩余元素、返回结果。每一步都保证了算法的正确性与高效性。
2025-03-31 12:52:59
395
原创 常用的排序算法及对比
这些算法实现简单,但时间复杂度均为 O(n²)(在最坏或平均情况下),适合数据量较小的情况。插入排序在数据部分有序时表现较好,而冒泡排序常用作教学示例。归并排序和快速排序均有 O(n log n) 的平均时间复杂度,其中归并排序稳定但需要额外空间,而快速排序在原地排序方面有优势。自然合并排序则利用了数据中已有的有序性,在实际应用中对于部分有序数据可获得较好性能。1%20+
2025-03-31 12:46:20
1111
原创 算法时间复杂度分析
分析方法对于任何算法,分析其循环、递归及分治过程,找出最耗时的基本操作,建立数学模型,再用大 O、Ω、Θ 符号描述。典型例子线性搜索:O(n)二分搜索:O(logn)冒泡排序:归并排序:O(nlogn)快速排序:平均 O(nlogn)),最坏Dijkstra 算法(无堆):n%5E2O%28n%29。
2025-03-26 23:08:01
763
原创 线性规划问题之单纯形表
整合约束条件与目标函数:把所有约束、变量、以及目标函数的系数集中显示;便于进行枢轴(pivot)操作:在每次迭代中,利用表格中各项数据确定进基变量和出基变量,并更新表格;直观观察最优性条件:通过表格最后一行(目标函数行)的检验数判断是否达到最优解。单纯形表的用法构造初始表:将约束写成等式,引入松弛变量,构造含常数项、变量系数及目标函数系数的表。选择进基变量:从目标函数行选择最“负”的系数对应的列(对于最大化问题)。确定出基变量:利用最小比值法,从正系数行中选择使得基本变量最先变为 0 的那一行。枢轴操作。
2025-03-26 14:48:23
697
原创 单纯形法之两阶段法
阶段一:构造并求解辅助问题,消除人工变量,从而获得原问题的初始基本可行解。通过构造目标函数,使得只要存在满足原约束的解,辅助问题的最优值必为 0。阶段二:利用第一阶段的解构造原问题的单纯形表,开始求解原问题。在这一阶段,人工变量被剔除,目标函数变回原始目标,然后继续利用单纯形法的换基操作寻找最优解。
2025-03-25 23:09:44
588
原创 单纯形法之大M法
由于引入了惩罚系数 M ,在目标函数中任何非零的人工变量都会使目标值大幅下降。设若在某一基本解中某个人工变量保持正值,则对应目标函数贡献为。当 M 足够大时,任何含有非零人工变量的解都不是最优解;如果存在一个可行解(即不存在必须依赖人工变量)时,最优解必然使所有人工变量取零。问题标准化:将问题写为等式约束形式,必要时引入松弛、剩余和人工变量。目标函数修改:在目标函数中对人工变量施加巨大的惩罚(对于最大化问题,人工变量前系数取 −M )。构造初始单纯型表:以包含人工变量的基本可行解作为起始点。
2025-03-25 22:56:39
762
原创 线性规划的单纯形法的理论推导
初始基本可行解:选取适当的基 B ,计算保证。计算检验数:对于每个非基变量,计算判断最优性若所有,则当前解最优;否则选择一个(通常选取绝对值最大的那个)作为进基变量。计算方向向量:计算确定允许步长与出基变量为保持,对所有满足的 i 得到限制取并将对应的作为出基变量。换基更新:更新基变量集合为同时更新解并设新进基变量。重复迭代:返回步骤2,直至所有检验数非负或判断问题无界。Ax%20+
2025-03-24 14:31:48
827
原创 线性规划的标准形式
等式形式约束 A x = b, 其中,A 是约束系数矩阵,b 是常数项向量。标准形式要求所有变量均满足非负约束,因此需要处理自由变量或带负号的变量。其中,x 是决策变量向量,c 是目标系数向量。因此,将目标函数的系数乘以 -1。:最大化线性目标函数。
2025-03-20 00:03:28
228
原创 线性规划的基本解、基本可行解和可行解
中,基本解、基本可行解和可行解是非常重要的概念,特别是在使用单纯形法求解时。下面详细解释这些概念,并说明如何计算它们。直接验证解是否满足 Ax=b 和 x≥0。如果问题是连续的,可以用几何方法描述可行解的范围。都满足非负性条件 x≥0 ,因此它们是基本可行解。检查基本解是否满足 x≥0。满足的即为基本可行解。确保问题为标准形式 Ax=b , x≥0。在标准形式中,所有约束为等式,且变量非负。的所有 x ,即位于直线。可行解的集合为满足约束。且第一象限内的所有点。
2025-03-19 21:25:46
702
原创 如何利用Cholesky 分解正定矩阵
对于一个 n×n 的矩阵 A ,我们希望找到一个下三角矩阵 L ,使得。是一种将一个正定对称矩阵 A 分解为下三角矩阵 L 和其转置。如果 A 不满足上述条件,Cholesky 分解将失败。我们进行 Cholesky 分解。
2025-03-19 16:11:05
383
原创 正定矩阵的判断方法
判断一个矩阵是否为正定矩阵可以通过以下几种方法进行验证:一个矩阵 A 是正定矩阵,当且仅当满足以下条件:基于上述定义,可以通过以下方法判断矩阵是否为正定矩阵:步骤:优点:缺点:步骤:优点:缺点:步骤:优点:缺点:步骤:优点:缺点:
2025-03-19 16:00:50
418
原创 XML、HTML 和 JSON 的区别与联系
特性XMLHTMLJSON用途数据存储与传输网页内容展示数据存储与传输结构化树形结构线性标记结构键值对嵌套结构优点描述性强,扩展性强直观,专注展示轻量,解析高效解析难度较高较低非常低。
2025-01-16 15:54:09
1412
原创 字典和 JSON 文本的格式区别
示例:Python 字典JSON(严格格式):JSON 的键必须是 字符串,用双引号 包裹。 值必须是以下几种类型:字符串、数字、布尔值( 或 )、数组(列表)、对象(字典)或 。 JSON 是纯文本数据,通常用于数据交换。示例:JSON 文本3. 数据用途字典: 用于 Python 内部数据操作和存储,便于程序逻辑处理。 不能直接用于跨平台或跨语言数据传输。 JSON: 是一种标准化的文本格式,常用于 Web 应用、API 通信和跨语言数据交换。 可以存储和
2025-01-15 21:35:09
469
原创 平均精确率均值(mAP)
而是一种更全面的性能指标,特别适用于目标检测、图像分割和信息检索等任务。它通过综合考虑精确率和召回率,能够更好地反映模型在不同类别和不同置信度阈值下的表现。在目标检测任务中,mAP 是评估模型性能的核心指标,通常与 IoU 阈值一起使用。
2025-01-15 21:14:37
1381
原创 贪心算法原理
贪心算法(Greedy Algorithm)是一种逐步构建解决方案的方法,它在每一步选择中都采取当前状态下最优的选择(即贪心选择),从而希望通过一系列局部最优解最终达到全局最优解。
2025-01-09 15:22:08
166
原创 动态规划算法(Dynamic Programming, DP)
动态规划是一种非常强大且常用于求解优化问题的算法技术,尤其适用于具有重叠子问题和最优子结构的场景。通过将大问题分解为小问题并记忆化结果,动态规划能够显著提高求解效率。掌握动态规划需要理解其核心思想,并通过大量练习来加深理解。
2025-01-09 15:10:19
671
原创 数组(Array)和链表(Linked List)
数组(Array):链表(Linked List):数组(Array):链表(Linked List):
2025-01-09 14:49:41
1120
原创 堆栈和队列的区别和联系
总结起来,堆栈和队列在数据访问顺序上有根本的区别,堆栈更适合用于需要反向访问的场景(如回溯、递归),而队列适合需要按顺序处理数据的场景(如任务调度、BFS)。
2025-01-09 14:33:52
1006
原创 深度优先搜索(DFS)和广度优先搜索(BFS)算法原理
DFS适合那些要求深入到底或者需要回溯的场景,比如路径搜索、连通分量查找等。BFS适合那些需要找到最短路径、或者逐层访问节点的场景,比如最短路径搜索、层次遍历等。
2025-01-09 14:23:32
573
原创 如何构建多层决策树
构建一颗多层的决策树时,通过递归选择最佳划分特征(依据或)对数据集进行划分,直到满足停止条件(例如叶节点纯度达到要求或树的深度限制)。以下是基于和。
2025-01-07 23:56:16
996
原创 决策树算法
信息熵:衡量数据的不确定性。信息增益:衡量通过某个特征划分数据集后信息熵的减少量。信息增益率:信息增益的归一化版本,解决信息增益偏向多值特征的问题。基尼系数:通过计算数据的不纯度来选择划分特征,CART 算法使用基尼系数作为分裂标准。
2025-01-07 16:23:02
945
原创 证明:特征值表示数据在对应特征向量方向上的方差且特征向量表示数据的主要方向
主成分分析(PCA)的目标是找到数据分布变化最大的方向,也就是数据的“主要方向”。
2025-01-07 15:08:29
447
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人