
算法
ohh-hl
这个作者很懒,什么都没留下…
展开
-
Sherwood 型线性时间选择算法(python实现)
实验内容给定任意几组数据,利用舍伍德型选择算法,找出数组中的中值并输出(若数 组为奇数个则输出中值,若数组为偶数个则输出第 n/2 小元素)。实验原理设 A 是一个确定性算法,当它的输入实例为 x 时所需的计算时间记为 tA(x)。 设 Xn 是算法 A 的输入规模为 n 的实例的全体,则当问题的输入规模为 n 时, 算法 A 所需的平均时间为 1。这显然不能排除存在 x∈Xn 使得的 2 可能性。希望获得一个随机化算法 B,使得对问题的输入规模为 n 的每一个实例均有 3。这就是舍伍德算法设计的基原创 2020-06-26 13:58:32 · 1596 阅读 · 3 评论 -
回溯法求解八皇后问题(python实现)
实验内容八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋 盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后。为了达 到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。实验原理按照 DFS 算法的策略,从跟结点出发搜索解空间树。首先根结点成为活结点, 同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成了死结点。此时应往回移动(回溯原创 2020-06-26 13:49:41 · 3530 阅读 · 1 评论 -
动态规划法求解0-1背包问题(python实现)
实验内容给定几组数据,利用动态规划算法的思想,把 0-1 背包装满并使得其价值最 大。实验原理动态规划通过拆分问题,将问题拆分成许多的子问题,定义问题状态和状态之间的关系(即状态转移方程或递推公式),使得问题能够以递推(或者说分治) 的方式去解决。按顺序求解子问题,前一子问题的解,为后一子问题的求解提供了有用的信息,在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,那么最后一个子问题就是初始问题的解。实验步骤① 把问题分解成若干个子原创 2020-06-23 20:42:59 · 5240 阅读 · 1 评论 -
分治法实现归并排序算法(python实现)
实验内容给定任意几组数据,利用分治法的思想,将数据进行排序并将排好的数据进行输出。实验原理利用分治法,将一个数组元素大于 2 的数组分成两个子数组,然后对每一个子数组递归调用,直到最下的子数组的元素个数为 1,此时子数组就不用进行排序了,再往上回溯,依据每个子数组中的元素大小对子数组进行合并,依次进行下去,最后返回的数组就是一个依据数组元素大小排序好的数组。实验步骤① 先解决小规模的问题,如数组中只有 1 个元素的情况。② 将问题分解,如果数组的元素大于等于 2个,将数组分为两个小的数组。③原创 2020-06-23 20:30:34 · 1384 阅读 · 0 评论 -
分治法查找数组元素的最大值和最小值(python实现)
分治法查找数组元素的最大值和最小值(python实现)实验内容给定任意几组数据,利用分治法的思想,找出数组中的最大值和最小值并输出实验原理利用分治法,将一个数组元素大于 2 的数组分成两个子数组,然后对每一个子数组递归调用,直到最小的子数组的元素个数为 1 个或者是 2 个,此时就能直接得出最大值与最小值,然后逐步往上合并子数组,比较 2 个子数组的最大值与最小值,依次进行下去,最后就能找到整个数组的最大值与最小值。实验步骤① 先解决小规模的问题,如数组中只有 1 个元素或者只有两个元素时候的情原创 2020-06-23 15:51:36 · 3272 阅读 · 0 评论