- 博客(86)
- 资源 (2)
- 收藏
- 关注
原创 python 实现第k个字典排列算法
"第k个字典排列"算法通常指的是在给定的字符集合(例如,字符串中的字符)中,找到所有可能排列的第k个排列。这个问题可以通过多种方法解决,但一个常见且高效的方法是使用“下一个排列”算法的变种,或称为“第k个排列”的直接算法。方法一:使用“下一个排列”的变种生成所有排列:首先生成所有排列,但显然这种方法对于较大的输入集合是不切实际的,因为它涉及到大量的计算和存储。排序并使用“下一个排列”:我们可以先将字符串排序(字典序最小的排列),然后调用k-1次“下一个排列”算法,直到得到第k个排列。
2024-09-07 22:54:47
184
原创 python 实现kadanes卡达内斯算法
Kadane’s算法(也被称为Kadane’s扫描算法或Kadane算法)是一种用于解决最大子数组和问题的动态规划算法。这类问题的目标是在给定整数数组中找到一个连续的子数组,使得该子数组的元素之和最大(即使数组中包含负数)。Kadane’s算法的核心思想是通过迭代数组的每个元素,同时维护两个变量来跟踪局部最优解(即在当前位置结束的最大子数组和)和全局最优解(即全局最大子数组和)。具体步骤如下:初始化两个变量:maxEndingHere表示在当前位置结束的最大子数组和,初始值为数组的第一个元素;
2024-09-07 22:51:14
149
原创 python 实现lucas数列算法
Lucas数列(Lucas sequence)是一类特殊的数学数列,它与斐波那契数列(Fibonacci sequence)有相似之处,但在定义上有所不同。Lucas数列的定义方式可能因具体情境而异,但通常它遵循与斐波那契数列类似的递推关系,但初始值不同。一般来说,Lucas数列可以由以下递推关系定义:L(1) = 1L(2) = 3L(n) = L(n-1) + L(n-2),对于n > 2这里,L(n) 表示Lucas数列的第n项。Lucas数列的算法。
2024-09-06 08:57:18
207
原创 python 实现matrix exponentiation矩阵求幂算法
矩阵求幂算法(Matrix Exponentiation)是一种通过利用矩阵乘法的结合律来高效地计算矩阵的幂的算法。这种方法特别适用于在算法竞赛和计算机科学领域中解决需要快速计算矩阵幂的问题,如求解线性递推关系、图论中的路径计数等。基本思想矩阵求幂算法的基本思想类似于整数快速幂算法(快速幂算法),通过递归或迭代的方式将矩阵幂的计算过程分解为更小的问题。具体来说,通过利用矩阵乘法的结合律ABnAnBnABnAnBn(注意这里并不总是成立,但AnBnA^nB^nAn。
2024-09-06 08:53:01
683
原创 python 实现求两个数组的中位数算法
要求两个数组的中位数,我们首先需要明确中位数的定义:如果数组是奇数长度的,中位数就是排序后位于中间的数;如果数组是偶数长度的,中位数是排序后中间两个数的平均值。对于两个数组 A 和 B,假设它们的长度分别为 m 和 n,我们可以采用以下策略来找到它们合并后的中位数:方法一:合并排序合并两个数组为一个新数组 C。对数组 C 进行排序。如果 C 的长度是奇数,中位数是 C[(len©-1)//2];
2024-09-06 08:40:43
357
原创 python 实现miller rabin米勒-拉宾素性检验算法
米勒-拉宾素性检验(Miller-Rabin prime test)算法是一种用于判断一个正整数是否为素数的概率性算法。它基于费马小定理和二次探测定理。以下是关于该算法的一些详细解释:起源卡内基梅隆大学的Gary Lee Miller教授首先提出了基于广义黎曼猜想的确定性算法,但由于广义黎曼猜想并未被证明,以色列耶路撒冷希伯来大学的Michael O. Rabin教授后来对其进行了修改,提出了不依赖于该假设的随机化算法。
2024-09-05 08:39:13
637
原创 python 实现mobius function莫比乌斯函数算法
莫比乌斯函数(Möbius function),通常用符号μ(n)表示,是数论中的一个重要函数。其算法主要基于该函数的定义和性质,以下是一种计算莫比乌斯函数的算法思路:定义与性质:当n=1时,μ(n)=1。当n存在平方因子时,μ(n)=0。当n是素数或奇数个不同素数之积时,μ(n)=-1。当n是偶数个不同素数之积时,μ(n)=1。算法实现:一个高效的算法是使用线性筛法(也称为埃拉托斯特尼筛法的扩展)来计算1到N之间所有数的莫比乌斯函数值。这种方法可以在线性时间内完成计算。
2024-09-05 08:35:11
628
原创 python 实现modular exponential模指数算法
模指数算法(Modular Exponential),也称为模幂运算算法(Modular Exponentiation),是一种用于计算大数的指数幂对指定模数取模的算法。这种算法在密码学、信息安全、计算机科学等领域有广泛的应用,如RSA加密算法等。模指数算法的基本原理是将指数表示为二进制形式,并逐位进行幂的乘法和取模操作,从而避免了大数计算时的性能问题。以下是这个算法的大致步骤:初始化结果:将结果变量result初始化为1。转换指数:将指数b转换为二进制形式。
2024-09-04 08:44:02
654
原创 python 实现monte carlo蒙特卡罗算法
Monte Carlo(蒙特卡罗)算法是一种基于随机采样的计算方法,其基本思想是通过生成随机样本并利用统计学原理来估计数学问题的解。这种方法最初由美国洛斯阿拉莫斯国家实验室的科学家斯坦尼斯拉夫·乌拉姆(Stanislaw Ulam)和尤里·维加(Nicholas Metropolis)在20世纪40年代初开发,用于模拟核反应堆中的中子传输问题。基本原理Monte Carlo算法的核心原理是利用随机数和概率统计方法来模拟问题,通过大量随机样本的采样,得到问题的概率分布或期望值。
2024-09-04 08:41:05
685
原创 python 实现perfect cube完全立方数算法
完全立方数(Perfect Cube)是一个整数,它可以表示为某个整数的三次幂,即形如n3n^3n3的数,其中 n 是整数。要判断一个给定的数 x 是否是完全立方数,或者找出小于或等于某个数 N 的所有完全立方数,我们可以采用几种不同的方法。方法一:直接计算并比较对于给定的数 x,我们可以从 1 开始,计算每个整数的三次幂,直到这个三次幂大于 x。如果在这个过程中找到了某个数的三次幂等于 x,则 x 是完全立方数。n = 1n += 1# 示例。
2024-09-03 08:55:19
659
原创 python 实现newton raphson牛顿-拉夫森算法
牛顿-拉夫森(Newton-Raphson)算法,也被称为牛顿迭代法或牛顿法,是一种在实数域和复数域上近似求解方程的方法,特别适用于非线性方程的数值求根。这种算法由艾萨克·牛顿在17世纪提出,但相关的概念在更早的时间已经被约瑟夫·拉弗森等人讨论过。基本原理牛顿-拉夫森算法的基本思想是利用泰勒级数展开式的前几项来近似求解方程。对于非线性方程f(x) = 0,设x0为初始近似值,算法通过迭代过程逐渐逼近方程的根。
2024-09-03 08:44:33
689
原创 python 实现perfect square完全平方数算法
完全平方数(Perfect Square)是一个整数,它可以表示为某个整数的平方。例如,1,4,9,16,25,… 都是完全平方数,因为112422932112422932,依此类推。要判断一个给定的数 n 是否是完全平方数,有几种方法可以实现。平方根法最直接的方法是计算该数的平方根,并检查平方根是否为整数。在编程中,由于浮点数运算的精度问题,直接比较平方根是否为整数可能不准确。
2024-09-02 08:56:32
871
原创 python 实现multiplicative persistence算法
Multiplicative Persistence算法是一种用于计算正整数乘法持续时间的算法。该算法的基本思想是将给定的正整数分解成各个位数上的数字,并将它们相乘,然后不断重复这个过程,直到最终只剩下一个一位数为止。在这个过程中,乘数持续时间(也就是乘法持续性)即为计算的次数。在Python中,可以使用递归或迭代的方式来实现Multiplicative Persistence算法。
2024-09-02 08:51:19
400
原创 python 实现用蒙特卡洛方法计算圆周率PI算法
蒙特卡洛方法是一种基于随机数的数值计算方法,它通过大量随机试验来求解数学问题。在计算圆周率π时,一个经典的蒙特卡洛方法是利用单位正方形内切圆的面积比例。具体算法如下:算法步骤初始化:设置随机试验的总次数N(N越大,结果越精确)。初始化在圆内的点数计数inside_circle = 0。随机试验:对于每一个试验(从1到N):在区间[0, 1]内随机生成两个数x和y,代表单位正方形内的一个点(x, y)。检查点(x, y)是否位于单位圆内(即检查x^2 + y^2 <= 1是否成立)。
2024-09-02 08:48:47
703
原创 python 实现检查三个点在 3D 中是否共线算法
在三维空间中,判断三个点是否共线,本质上就是判断这三个点所构成的向量是否线性相关。如果三个点Ax1y1z1Bx2y2z2Ax1y1z1Bx2y2z2和Cx3y3z3Cx3y3z3共线,那么向量AB和向量AC应该是线性相关的,即存在一个非零实数k,使得ABk∗ACABk∗AC。向量AB的坐标为x2−x1y2−y1z2−z1x2。
2024-08-31 09:03:23
2199
原创 python 实现proth number普罗斯数算法
普罗斯数(Proth number)是指形如k⋅2n1k⋅2^n+1k⋅2n1的数,其中 k 是一个正整数,n 是一个非负整数,且 k 是奇数且k2nk<2^nk2n。普罗斯数在数论中有一些重要的性质,尤其是在质数检测方面。以下是一些关于普罗斯数算法的基本概念和实现方式:基本概念定义:普罗斯数定义为Nk⋅2n1N=k⋅2^n+1Nk⋅2n1,其中k 是奇数,n 是正整数,且2nk2^n>k2nk。
2024-08-31 08:51:22
1942
原创 python 实现pythagoras哥拉斯算法
您可能是在询问“Pythagorean Theorem”(毕达哥拉斯定理,也称为勾股定理)与“Euclid’s Algorithm”(欧几里得算法,也称为辗转相除法),但这两个概念实际上是独立的,它们之间没有直接的联系。不过,我会分别解释它们。毕达哥拉斯定理(Pythagorean Theorem)毕达哥拉斯定理是一个在直角三角形中,直角边的平方和等于斜边的平方的定理。如果直角三角形的两条直角边长度分别是a和b,斜边长度是c,那么a² + b² = c²。这个定理在几何学和三角学中有着广泛的应用。
2024-08-30 08:53:18
587
原创 python 实现radians弧度制算法
弧度制(Radians)是角度的一种量度方式,与常用的度(Degrees)制不同。在数学和物理学中,弧度制是更为自然和方便的角度单位,特别是在处理三角函数和圆的扇形部分时。弧度制的定义一个完整的圆的角度是360∘360^∘360∘或 2π 弧度。
2024-08-30 08:50:05
716
原创 python 实现使用 radix-2 快速傅里叶变换的快速多项式乘法算法
使用 radix-2 快速傅里叶变换(FFT)来实现快速多项式乘法是一种高效的算法,尤其在处理大规模数据时。其基本思想是利用 FFT 将两个多项式转换到点值表示,然后在点值表示下进行乘法操作,最后再通过逆 FFT(IFFT)转换回系数表示。步骤分解多项式转点值表示假设有两个多项式Axa0a1xa2x2⋯an−1xn−1Axa0a1xa2x2⋯an−1xn−1和Bxb0b1xb2x2⋯。
2024-08-29 09:21:33
976
原创 python 实现Sigmoid函数算法
Sigmoid函数(也称作逻辑斯蒂函数或S型函数)是一种在机器学习和深度学习中广泛使用的激活函数,主要用于二分类问题。它的输出范围在0和1之间,这使得它非常适合用于表示概率。σ′x11e−xσ′x1e−x1其中,x 是输入,e 是自然对数的底数(约等于2.71828),σ(x) 是Sigmoid函数的输出。Sigmoid函数的特点平滑性:Sigmoid函数是一个平滑的、可微的函数,这对于基于梯度的优化算法(如梯度下降)是非常重要的。
2024-08-29 09:00:22
369
原创 python 实现simpson rule辛普森法则算法
辛普森法则(Simpson’s rule)是一种数值积分方法,用于估计函数在给定区间上的定积分。该方法利用二次函数来逼近被积函数,从而得到更准确的积分估计。辛普森法则的算法通常将积分区间[a,b]划分成n个小区间(n为偶数),每个小区间的长度为h=(b−a)/n。然后,它使用三个点(区间开始、中间和结束)的函数值来近似每个小区间上的积分,并累加这些近似值以得到整个区间的积分近似值。
2024-08-29 08:38:33
383
原创 python 实现计算 sin 函数算法
计算正弦(sin)函数的算法有很多,从简单的近似方法到复杂的数学公式和算法。这里我将介绍几种常见的计算sin函数的方法:泰勒级数(Taylor Series)泰勒级数是一种用函数在某点的信息描述其附近取值的数学公式。sinxx−x33!x55!−x77!x35!x5−7!x7...这个级数在x接近0时非常准确,但随着x的增大,需要更多的项来保持精度。CORDIC算法。
2024-08-28 09:02:53
1227
原创 python 实现square root平方根算法
牛顿迭代法(Newton’s Method)牛顿迭代法是一种在实数域和复数域上近似求解方程的方法。对于平方根问题,我们可以将其转化为求解方程x2−a0x^2−a=0x2−a0的正根问题。xn1xn−fxnf′xnxn1xn−f′xnfxn二分查找法(Binary Search)如果只需要找到平方根的一个近似值,并且这个值不需要非常精确,可以使用二分查找法。假设我们要找 a 的平方根,其中 a≥0。库函数。
2024-08-28 08:55:25
731
原创 python 实现inverse matrix逆矩阵算法
逆矩阵(Inverse Matrix)是线性代数中的一个重要概念,指的是一个矩阵的逆元。如果一个矩阵A和一个矩阵B的乘积是单位矩阵,即AB = I 或 BA = I(I是单位矩阵),那么就说B是A的逆矩阵,记作A^(-1) = B。高斯-约旦消元法(Gauss-Jordan Elimination)高斯-约旦消元法是求解线性方程组的一种通用方法,也可以用来计算矩阵的逆。基本思路是通过行变换(和列变换)将原矩阵变为单位矩阵,同时用相同的变换作用于单位矩阵,最终得到的矩阵即为原矩阵的逆。
2024-08-27 08:51:48
835
原创 python 实现zellers congruence泽勒一致算法
Zeller’s Congruence(泽勒一致算法)是一种用于计算给定日期是星期几的算法。这个算法可以处理公历(Gregorian calendar)和儒略历(Julian calendar)日期。其核心公式如下:此算法在处理月份时,如果月份是1月或2月,则需要将月份视为前一年的13月或14月,同时年份减1。这样做是为了保持月份在3到14的范围内,便于计算1。
2024-08-27 08:49:23
402
原创 python 实现二维矩阵运算的函数算法
在二维矩阵运算中,除了之前提到的加法和乘法之外,还有其他一些常见的运算,如矩阵的转置、求逆(针对方阵且行列式不为零)、点积(也称为内积,但通常不直接用于整个矩阵,而是矩阵的列或行向量之间)等。不过,这里我将重点补充矩阵的转置和简要提及矩阵求逆(因为求逆通常涉及更复杂的算法,如高斯-约旦消元法或LU分解)。矩阵转置矩阵的转置是将矩阵的行变成列(或将列变成行)的过程。对于矩阵A,其转置表示为A^T或A’。矩阵求逆(简要提及)
2024-08-27 08:44:27
464
原创 python 实现 hidden layers neural network浅层神经网络算法
浅层神经网络(Shallow Neural Network),也称为单隐层神经网络(a single hidden layer neural network),是一种包含输入层、一个隐藏层和输出层的神经网络结构。下面我将详细介绍浅层神经网络算法的基本概念和计算过程。神经网络结构在浅层神经网络中,网络结构通常包括三层:输入层(Input Layer):接收输入数据,不进行任何计算,只是将输入数据传递给隐藏层。
2024-08-26 08:57:41
855
原创 python 实现convolution neural network卷积神经网络算法
卷积神经网络(Convolutional Neural Networks, CNN)是一种包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks, FNN),是深度学习的代表算法之一。基本原理CNN的核心思想是通过模拟人类视觉系统的工作方式,自动提取图像中的特征,并将其用于分类、检测、分割等任务。它主要受到了生物学上感知机制的启发,模拟了人类视觉系统中的感知细胞和复杂细胞的工作方式。
2024-08-26 08:54:09
13298
原创 python 实现dijkstra银行家算法
Dijkstra的银行家算法是一种用于避免死锁的资源分配算法,由著名计算机科学家艾兹赫尔·戴克斯特拉(Edsger Dijkstra)在1965年提出。该算法通过模拟银行家在向客户贷款时的决策过程,确保系统在资源分配过程中始终处于安全状态。银行家算法的基本思想银行家算法的基本思想是通过判断系统是否处于安全状态来决定是否分配资源给进程。系统维护几个关键的数据结构,包括:可用资源(Available):表示系统中每种资源的可用数量。最大需求(Max):表示每个进程对每种资源的最大需求量。
2024-08-23 09:26:35
277
原创 python 实现check strong password检查密码强度算法
检查密码强度(也称为密码复杂度)是网络安全中非常重要的一环,旨在提高用户账户的安全性。一个强密码应该包含多种字符类型(大写字母、小写字母、数字和特殊字符),并且足够长(一般建议至少8个字符)。首先,定义几个密码强度等级,例如:弱:不满足任何强密码的条件中:满足一定条件,但不是非常强强:包含多种字符类型,并且足够长2. 编写密码强度检查函数。
2024-08-23 09:22:31
371
原创 python 实现S-DES加密算法
S-DES(Simplified Data Encryption Standard)是一种简化的数据加密标准,通常用于教学目的。基本步骤密钥处理:S-DES使用一个10位的密钥,将其分为两个5位的部分(左半部分和右半部分)。对每个5位的部分进行循环左移(1或2位),然后合并这两个部分,并通过一个固定的置换表(P8置换表)生成一个8位的子密钥。明文处理:将8位的明文块通过一个固定的置换表(IP置换表)进行重新排列。将初始置换的结果分为左半部分(L0)和右半部分(R0)。
2024-08-22 09:23:36
329
原创 python 实现horizontal projectile motion平抛运动算法
平抛运动是物体在只受重力作用下,以一定的初速度沿水平方向抛出,所做的匀变速曲线运动。在解决平抛运动问题时,我们通常会将其分解为水平方向上的匀速直线运动和竖直方向上的自由落体运动两个分运动来分别处理。我们可以使用以下公式来描述平抛运动:水平方向的位置 ( x ) 随时间 ( t ) 的变化:( x = v_0 \cdot t ),其中 ( v_0 ) 是初始水平速度。
2024-08-22 09:19:15
435
原创 python 实现 lorenz transformation 洛伦兹变换算法
洛伦兹变换(Lorentz transformation)是狭义相对论中关于不同惯性系之间物理事件时空坐标变换的基本关系式。这种变换可以用一组数学方程来表示,这组方程描述了如何在两个惯性参考系之间转换坐标和时间。用于描述两个以恒定速度相对运动的惯性参考系之间的坐标变换。这些变换对于理解时空的相对性至关重要,并且在物理学中有着广泛的应用。
2024-08-22 09:08:33
297
原创 python 实现quantum entanglement量子纠缠算法
量子纠缠(Quantum Entanglement)是量子力学中的一种奇特现象,它描述了两个或多个量子比特(qubit)之间的非经典、紧密的关联关系。这种关联关系在量子计算中起着关键作用,是量子计算的基础之一。然而,需要注意的是,当提及“量子纠缠算法”时,并没有一个特定的、普遍认可的、专门命名为“量子纠缠算法”的算法。量子纠缠本身是一个物理现象,而不是一个具体的算法。不过,量子纠缠在量子算法和量子通信中的应用是广泛且重要的。
2024-08-21 09:24:43
1276
原创 linux(arm) 双网口物理地址(phyaddr)相同
在 ARM Linux 系统中,如果两个网络接口(网口)的物理地址(PHY Address,也称为PHY ID或MII Address)相同,这通常会导致系统无法正确区分和配置这两个网络接口。如果修改硬件不可行或成本太高,考虑使用软件解决方案。在这种情况下,虽然PHY地址相同可能导致在硬件层面的一些混淆,但网络层(如IP地址)仍然可以区分这两个接口。确认是否确实存在硬件设计上的错误,即两个PHY芯片是否意外地被设置为相同的地址。如果发现硬件设计错误,且可以物理访问硬件,尝试修改PHY芯片的地址引脚设置。
2024-08-21 08:49:55
377
原创 Linux ARM生成随机的MAC地址
这就导致获取的IP都是一样的,需要让他们启动后获取各自不一样的IP,因此每个板子都需要获得其自己的MAC地址(后三个BYTE区分身份): “00:00:35:XX:XX:XX”有一批产品ARM板出来全都是同一个MAC地址: 00:00:35:00:11:55。1、临时设定网卡的MAC地址(重启后失效)用shell脚本来实现随机的MAC备用方法。
2024-08-20 09:11:55
328
原创 linux(ARM)常用MAC设置命令
这些是在Linux系统中生成一个新的MAC地址的几种方法。选择一种适合你的方法,并根据具体的情况进行操作。其中,eth0是要配置MAC地址的网络接口的名称,00:11:22:33:44:55是新的MAC地址。其中,eth0是要配置MAC地址的网络接口的名称,00:11:22:33:44:55是新的MAC地址。然后在文件中找到要配置MAC地址的网络接口,并将其MAC地址更改为新的MAC地址,保存并退出文件。其中,eth0是要配置MAC地址的网络接口的名称。这里使用的方法几乎和perl中的方法一样。
2024-08-20 09:00:24
402
原创 linux(arm)移植 macchanger
macchanger是一个用于操纵网络接口MAC地址的小工具,常用于增强网络隐私和安全性。例如,使用–host=arm-linux参数。如果一切正常,可以将macchanger安装到目标设备的适当位置,如/usr/bin。如果有必要,修改Makefile或配置脚本,以确保它们适用于你的ARM平台。安装必要的依赖项,如libpci开发库(如果macchanger需要)。提供必要的后续支持和维护。8.文档和后续支持:。1.准备开发环境:。2.获取源代码:。
2024-08-20 08:42:25
557
原创 python 实现 qubit measure量子位测量算法
在量子计算中,qubit(量子位)的测量是量子计算中的一个重要环节,也是实现量子算法的关键技术之一。量子位测量(qubit measurement)会导致量子态的坍缩,并且结果是随机的。qubit测量算法的实现方式多种多样,但基本原理相同。以下是对qubit测量算法的一些基本介绍:基本原理量子叠加与坍缩:量子位可以同时处于多个状态的叠加态,这是量子计算的重要特性。当对量子位进行测量时,量子态会坍缩到一个确定的状态(|0> 或 |1>),并且这个过程是随机的。
2024-08-19 14:08:03
519
原创 python opencv实时视频输入
这里的参数0表示使用计算机上的默认摄像头作为视频源,如果有多个摄像头,可以使用不同的索引来选择。在循环中进行帧处理的代码,例如可以对图像进行滤波、边缘检测、人脸识别等操作。方法来检测键盘按键,如果按下了 ‘q’ 键,就退出循环。运行代码后,将实时显示摄像头的视频输入。首先,需要安装OpenCV库。方法来显示处理后的视频帧。命令来安装OpenCV。方法来读取视频帧,返回值。在每一次循环中,使用。
2024-08-19 13:39:46
714
RKDevTool_Release_v2.84.zip
2022-03-08
PL2303HXA USB转串口驱动 支持win10_64.zip
2019-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人