两个矩阵是否相交的算法_数学、运筹学、计算机等领域的36个重要算法

哈哈哈教你一句话激怒各个专业!!!

中国大学的现实是:大学层次越低,上课越多,学生读书越少

30省份开学时间一览!仅剩1地未公布开学时间

88fa4af83007d3103dbb4b5fa1d361e5.png

重要算法

要学会

1.   A *搜索算法  图搜索算法,用于查找从给定初始节点到给定目标节点的路径。它采用启发式估计,通过估计通过该节点的最佳路径对每个节点进行排名。它按照此启发式估计的顺序访问节点。因此,A *算法是最佳优先搜索的示例。 

 2.   波束搜索 波束搜索是一种搜索算法,它是最佳优先搜索的优化。与最佳优先搜索一样,它使用启发式函数来评估它检查的每个节点的承诺。然而,波束搜索仅展开每个深度处的前m个最有希望的节点,其中m是固定数量,即波束宽度。 

 3.   二分搜索 通过排除每一步中的一半数据来查找线性阵列中特定值的技术。 

 4.   分支定界 用于寻找各种优化问题的最优解的一般算法方法,尤其是在离散和组合优化中。

 5.   Buchberger算法 在计算代数几何和计算交换代数中,Buchberger算法是一种将多项式理想的给定发生器组转换为Gröbner基础的方法,相对于某些单项式。可以将其视为用于单变量gcd计算的欧几里德算法和用于线性系统的高斯消元的概括。

 6.   数据压缩 数据压缩或源编码是使用比未编码表示通过使用特定编码方案使用的更少比特(或其他信息承载单元)来编码信息的过程。

 7.   Diffie-Hellman密钥交换 密码协议允许彼此没有先验知识的双方在不安全的通信信道上共同建立共享密钥。然后,该密钥可用于使用对称密钥密码加密后续通信。

 8.   Dijkstra算法 解决具有非负边权重的有向图的单源最短路问题。 

 9.   离散微分,公式f'(x)=(f(x + h) - f(xh))/ 2h。 

 10.   动态规划 动态规划是一种用于减少表现出重叠子问题和最佳子结构的属性的算法的运行时间的方法,如下所述。 

 11.   欧几里德算法 确定两个整数的最大公约数(gcd)的算法。它是已知最古老的算法之一,因为它出现在公元前300年左右的Euclid元素中。该算法不需要将两个整数分解。 

 12.   期望最大化算法(EM-Training) 在统计计算中,期望最大化(EM)算法是用于在概率模型中找到参数的最大似然估计的算法,其中模型取决于未观察到的潜在变量。EM在执行期望步骤和最大化步骤之间交替,期望步骤计算潜在变量的预期值,最大化步骤计算给定数据的参数的最大似然估计并将潜在变量设置为它们的期望。 

 13.   快速傅里叶变换(FFT) 高效算法计算离散傅里叶变换(DFT)及其逆。FFT对于各种应用非常重要,从数字信号处理到求解偏微分方程,再到快速乘以大整数的算法。 

 14.   梯度下降 梯度下降是一种优化算法,通过采用与当前点处函数的梯度(或近似梯度)的负值成比例的步长来逼近函数的局部最小值。相反,如果采用与梯度成比例的步长,则接近该函数的局部最大值; 然后将该过程称为梯度上升。 

 15.   哈希(Hashing) 用于汇总或概率识别数据的功能。通常,这意味着将数学公式应用于数据,从而生成可能或多或少独特于该数据的字符串。该字符串比原始数据短得多,但可用于唯一标识它。 

 16.   堆(堆排序) 在计算机科学中,堆是一种专门的基于树的数据结构。堆是许多应用程序最喜欢的数据结构:堆排序,选择算法(找到它们的最小值,最大值或最大值,中间线甚至是次线性时间中的任何第k个元素),图算法。

 17.   Karatsuba乘法 对于需要乘以数千位数字的系统,例如计算机代数系统和bignum库,长乘法太慢。这些系统采用Karatsuba乘法,于1962年发现。 

 18.   LLL算法 Lenstra-Lenstra-Lovasz晶格简化(LLL)算法是一种算法,在给定格子基础作为输入的情况下,输出具有短的,几乎正交的矢量的基础。LLL算法在公钥加密方案的密码分析中发现了许多应用:背包密码系统,具有特定设置的RSA等。

 19.   最大流算法   网络优化的基本算法,最大流量问题是通过最大流量网络找到合法流量。有时它被定义为找到这种流的价值。最大流量问题可以看作是更复杂的网络流量问题的特例。最大流量与Max-flow min-cut定理中的网络中的切割有关。Ford-Fulkerson算法计算流网络中的最大流量。

 20.   合并排序 用于将列表(或只能按顺序访问的任何其他数据结构,例如文件流)重新排列为指定顺序的排序算法。

 21.   牛顿方法 用于查找实值函数的零(或根)近似的高效算法。牛顿方法也是一种众所周知的算法,用于在一个或多个维度中找到方程的根。它还可用于查找函数的局部最大值和局部最小值。 牛顿法的思想是非线性函数的二次函数局部近似。

 22.   Q-learning Q-learning是一种强化学习技术,通过学习一个动作 - 值函数来实现,该函数给出了在给定状态下执行给定动作并且之后遵循固定策略的预期效用。Q-learning的优势在于它能够在不需要环境模型的情况下比较可用操作的预期效用。

 23.   二次筛子 二次筛分算法(QS)是一种现代整数分解算法,并且在实践中,已知第二种最快的方法(在数字筛分之后,NFS)。对于小数位数为110左右的整数,它仍然是最快的,并且比数字字段筛网简单得多。 

 24.  随机抽样一致算法(RANdom SAmple Consensus) 它是一种根据包含“异常值”的一组观测数据估计数学模型参数的算法。一个基本假设是数据由“内部”组成,即可以通过一组模型参数解释的数据点,以及作为不适合模型的数据点的“异常值”。 

 25.   用于公钥加密的 RSA算法 这是第一个已知适合签名和加密的算法。RSA仍然广泛用于电子商务协议中,并且被认为在给定足够长的密钥时是安全的。

 26.   Schönhage-Strassen算法 在数学中,Schönhage-Strassen算法是一种渐近快速的大整数乘法。运行时间为O(N log(N)log(log(N)))。该算法在环中使用快速傅立叶变换。 

 27.   单纯形算法 在数学优化理论中,单纯形算法是一种流行的线性规划问题数值解法。线性规划问题包括许多实变量上的线性不等式的集合和要最大化(或最小化)的固定线性函数。 

 28.   奇异值分解(SVD) 在线性代数中,SVD是矩形实数或复数矩阵的重要分解,在信号处理和统计中有多种应用,例如,计算矩阵的伪逆(解决最小二乘问题),求解超定线性系统,矩阵近似,数值天气预报。 

 29.   求解线性方程组 系统线性方程组属于数学中最古老的问题,它们有很多应用,如数字信号处理,估计,预测,一般在线性规划和数值分析中非线性问题的近似。通过Gauss-Jordan消除或Cholesky分解给出了求解线性方程组的有效方法。 

 30.   Strukturtensor 在模式识别中:计算每个像素的度量,该度量告诉您此像素是否位于同质区域中,是否属于边缘,或者它是否是顶点。 

 31.   并查集(Union-find) 给定一组元素,将它们分成许多单独的非重叠组通常很有用。不相交集数据结构是跟踪这种分区的数据结构。联合查找算法是一种对此类数据结构执行两个有用操作的算法:查找:确定特定元素所在的组。联合:将两个组合并或合并为一个组。 

32.   维特比算法 用于查找最可能的隐藏状态序列的动态编程算法 - 称为维特比路径 - 导致一系列观察事件,特别是在隐马尔可夫模型的背景下。  

33.  内点法 它是由John von Neumann发明的,他利用戈尔丹的线性齐次系统提出了这种新的求解线性规划的方法。后被Narendra Karmarkar于1984年推广应用到线性规划,即Karmarkar算法。内点法不同于单纯性从边界上寻找最优解,它是从内点开始寻找最优解。目前是求解线性规划的最有效算法。

34. 迪杰斯特拉(Dijkstra) 算法 迪杰斯特拉算法由荷兰计算机科学家艾兹赫尔·迪杰斯特拉在1956年提出。迪杰斯特拉算法使用了广度优先搜索解决赋权有向图的单源最短路径问题。

35. 割平面方法  1958年由美国学者高莫利(R.E.GoMory)提出的求解全整数规划的一种比较简单的方法。其基本思想和分枝定界法大致相同,即先不考虑变量的取整约束,用单纯形法求解相应的线性规划。

36. 高斯消元算法 是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。其思想是化整为零,从零归整(分步走),以简御繁。

(以上算法不按重要性排序)

29ca654598eaf584260d265fa050ec9a.png

来源:数学与人工智能。

________________________ 声明:除特别注明原创授权转载文章外,其他文章均为转载,版权归原作者或平台所有。如有侵权,请告知删除。谢谢。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面给出使用Python实现几种常用的相似度计算算法的示例代码: 1. 余弦相似度 ```python import numpy as np def cosine_similarity(matrix1, matrix2): dot_product = np.dot(matrix1.flatten(), matrix2.flatten()) norm1 = np.linalg.norm(matrix1.flatten()) norm2 = np.linalg.norm(matrix2.flatten()) similarity = dot_product / (norm1 * norm2) return similarity ``` 其中,matrix1和matrix2是要比较的两个矩阵,该函数返回它们之间的余弦相似度。 2. 欧式距离 ```python import numpy as np def euclidean_distance(matrix1, matrix2): diff = matrix1 - matrix2 distance = np.sqrt(np.sum(np.square(diff))) return distance ``` 其中,matrix1和matrix2是要比较的两个矩阵,该函数返回它们之间的欧式距离。 3. 皮尔逊相关系数 ```python import numpy as np def pearson_correlation(matrix1, matrix2): x_mean = np.mean(matrix1) y_mean = np.mean(matrix2) x_std = np.std(matrix1) y_std = np.std(matrix2) diff_x = matrix1 - x_mean diff_y = matrix2 - y_mean covariance = np.sum(diff_x * diff_y) correlation = covariance / (x_std * y_std) return correlation ``` 其中,matrix1和matrix2是要比较的两个矩阵,该函数返回它们之间的皮尔逊相关系数。 4. Jaccard相似度 ```python import numpy as np def jaccard_similarity(matrix1, matrix2): set1 = set(matrix1.flatten()) set2 = set(matrix2.flatten()) intersection = set1 & set2 union = set1 | set2 similarity = len(intersection) / len(union) return similarity ``` 其中,matrix1和matrix2是要比较的两个矩阵,该函数返回它们之间的Jaccard相似度。 需要注意的是,不同的相似度计算算法适用于不同的场景,选择最优算法需要考虑数据特征和应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值