草庐IT

经典之作

全部标签

经典动态规划题(python)

python动态规划性质最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

摘要随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要。同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学习和可信执行环境多个技术分支的热门研究方向。本文对经典同态加密算法Pailier算法及其相关技术进行介绍,重点分析了Paillier的实现原理和性能优化方案,同时对基于公钥的加密算法中的热门算法进行了横向对比。最后介绍了Paillier算法的一些实际应用。【关键词】:同态加密,多方安全计算,联邦学习,隐私计算1背景知识1.1同态加密同态加密(HomomorphicEncryption,HE)[1]是

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

摘要随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要。同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学习和可信执行环境多个技术分支的热门研究方向。本文对经典同态加密算法Pailier算法及其相关技术进行介绍,重点分析了Paillier的实现原理和性能优化方案,同时对基于公钥的加密算法中的热门算法进行了横向对比。最后介绍了Paillier算法的一些实际应用。【关键词】:同态加密,多方安全计算,联邦学习,隐私计算1背景知识1.1同态加密同态加密(HomomorphicEncryption,HE)[1]是

四大经典算法思想

最经典的算法思想有以下几种:贪心算法:每一步都采用最优的选择,从而希望结果是最好的分治算法:将原问题拆分成多个结果类似的子问题,递归解决后再合并其结果回溯算法:类似于试探性枚举搜索,用于指导深度优先搜索这样的经典算法动态规划:优化自顶向下的重复子问题,自底向上地推算出问题的最优解贪心算法理论贪心算法是一种在每一步选择当中都采取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效,简单地说,就是问题能够分解成子问题来解决,子问题的最优解就能递推到最终问题的最优解。细节创建数学模型来描述问题;把问题分成若干个子问题;对每一子问题求解,得

四大经典算法思想

最经典的算法思想有以下几种:贪心算法:每一步都采用最优的选择,从而希望结果是最好的分治算法:将原问题拆分成多个结果类似的子问题,递归解决后再合并其结果回溯算法:类似于试探性枚举搜索,用于指导深度优先搜索这样的经典算法动态规划:优化自顶向下的重复子问题,自底向上地推算出问题的最优解贪心算法理论贪心算法是一种在每一步选择当中都采取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。贪心算法在有最优子结构的问题中尤为有效,简单地说,就是问题能够分解成子问题来解决,子问题的最优解就能递推到最终问题的最优解。细节创建数学模型来描述问题;把问题分成若干个子问题;对每一子问题求解,得

十大经典排序算法(Java)--正在更新。。

十大经典排序算法(2022年11月12日更新)1、冒泡排序冒泡排序是接下来的十大排序中最简单的排序。1.1方法描述简单来说,排序方法就是重复地走过要排序的数列,一次比较相邻的两个元素,如果顺序不满足从小到大(从大到小),就将这两个元素交换,重复地进行,知道没有再需要交换。排序方式:In-place(需要申请额外空间-临时变量)1.2算法描述从第一个元素开始比较,比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。对每一对相邻元素做同样的工作,不断重复,直到排序完成。1.3动图描述1.4代码实现(Java语言)从小到大排序:packageSort;//自己定义的包importjava.u

十大经典排序算法(Java)--正在更新。。

十大经典排序算法(2022年11月12日更新)1、冒泡排序冒泡排序是接下来的十大排序中最简单的排序。1.1方法描述简单来说,排序方法就是重复地走过要排序的数列,一次比较相邻的两个元素,如果顺序不满足从小到大(从大到小),就将这两个元素交换,重复地进行,知道没有再需要交换。排序方式:In-place(需要申请额外空间-临时变量)1.2算法描述从第一个元素开始比较,比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。对每一对相邻元素做同样的工作,不断重复,直到排序完成。1.3动图描述1.4代码实现(Java语言)从小到大排序:packageSort;//自己定义的包importjava.u

经典算法——最短路径(Floyd+Dijkstra)

Floyd时间复杂度:O(n^3)简介:作为最短路算法中复杂度最高的算法没有之一,标志性结构三层循环,核心结构本质DP思想具 有动态规划的无后效性他真的没有优点啦?!不,他有!虽然SPFA,Dijkstra比他跑得快,但是只能算一个点到任意一点的最短路径,可Floyd是解决多源最短路的最佳方法,他能计算任意两点之间的最短距离if(d[i][j]>d[i][k]+d[k][j]) d[i][j]=d[i][k]+d[k][j]想必这个代码我们在这个算法里并不陌生设:总共有n个节点我们在寻找的任意两点之间最短路时在中转点k我们为何能够确定下这个k点,是因为我们由三层循环已经判断了在这个点k前的

经典算法——最短路径(Floyd+Dijkstra)

Floyd时间复杂度:O(n^3)简介:作为最短路算法中复杂度最高的算法没有之一,标志性结构三层循环,核心结构本质DP思想具 有动态规划的无后效性他真的没有优点啦?!不,他有!虽然SPFA,Dijkstra比他跑得快,但是只能算一个点到任意一点的最短路径,可Floyd是解决多源最短路的最佳方法,他能计算任意两点之间的最短距离if(d[i][j]>d[i][k]+d[k][j]) d[i][j]=d[i][k]+d[k][j]想必这个代码我们在这个算法里并不陌生设:总共有n个节点我们在寻找的任意两点之间最短路时在中转点k我们为何能够确定下这个k点,是因为我们由三层循环已经判断了在这个点k前的

java算法:青蛙跳台阶问题(经典算法)

问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n 级的台阶总共有多少种跳法。答案需要取模1e9+7(1000000007),如计算初始结果为:1000000008,请返回1。解决1、动态规划classSolution{publicintnumWays(intn){//**3.动态规划**:穷举可以发现f(n)=f(n-1)+f(n-2);确定边界:f(0)=1,f(1)=1,f(2)=2;最佳解f(n)=f(n-1)+f(n-2);得到最终解决方案(边界+最优解)if(n==0)return1;if(nmap=newHashMap();//定义hashmap应该放在方法