自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 算法设计与分析实验报告——实验六 随机化算法

如果算法返回结果为true,这里用1表示,则随机选择的数组元素x是数组T的主元素,如果返回的结果为false,这里用0表示,则数组T可能含有主元素,而随机选择的元素x并不是数组T的主元素。设T[1:n]是一个含有n个元素的数组。在棋盘上相继的各行中随机地放置皇后,并注意使新放置的皇后与已经放置的皇后互不攻击,直至n个皇后均已相容地放置好,或已经没有下一个皇后的可放置位置为止。②主函数中输入皇后数量,初始化Queen类,设置stop值,即停止随机选择位置的次数,然后进行循环,直到找到可以放置皇后的解为止。

2023-12-31 14:27:48 763

原创 算法设计与分析实验报告——实验五 分支限界法

3.计算剩余集装箱 r 的总重量,即将第一个节点(根节点)取出并进行检查,得到左子树或右子树的重量,检查约束条件若满足则更新 bestw,并将新的左子树加入队列,如果右子树可行,则将原 Ew 加入队列。装载问题的解空间是一棵子集树,采用队列式分支限界法来解决,该算法只求出所要求的最优值。分支限界法是一种求解最优化问题的搜索算法,在解决装载问题时,分支限界法可以通过不断扩展状态空间,并尝试所有可能的物品组合,在比较最佳的组合之后找到最优解。当一层结束时,在队列尾部增加一个-1标志。

2023-12-31 14:22:56 831

原创 算法设计与分析实验报告——实验四 回溯法

如果不满足,则换到该新结点的兄弟结点继续搜索:如果新结点没有兄弟结点,或其兄弟结点已全部搜索完毕,则扩展结点成为死结点,搜索回溯到其父结点处继续进行。4皇后问题指在4×4的棋盘上放置彼此不受攻击的 4 个皇后,皇后可以攻击与之在同一行、同一列、同一斜线上的棋子。x[t]= =x[j]表示第t个皇后和第j个皇后位置在同一列,t-j=fabs(x[t]-x[j])表示第t个皇后和第j个皇后位置在同一斜线。在第t行放置第t个皇后时,第t个皇后与前t-1个已放置好的皇后不能在同一列或同一斜线。

2023-07-04 16:41:10 1175

原创 算法设计与分析实验报告——实验三 贪心算法

选取概率最小的两个字符,分别赋予编号0和1,构建出一颗二叉树,其中两个字符分别作为叶子节点,它们的父节点包含了它们出现的概率之和,继续合并两个最小权值的结点直到所有的字符都能被编码到二叉树上。哈夫曼编码算法采取的贪心策略是每次从树的集合中取出没有双亲且权值最小的两棵树作为左右子树,构造一棵新树,新树根节点的权值为其左右子树结点权值之和,将新树插入到树的集合中。规定在树中左分支表示0,右分支表示1,从根节点到叶子节点路径上经过的所有分支组成的字符串即为该叶子节点所代表的字符的编码。

2023-07-04 16:36:32 1176

原创 算法设计与分析实验报告——实验二 动态规划

W为背包的容量,w_i为第i个物品的重量,v_i为第i个物品的价值,i表示从第1个物品到第i个物品。若当前遍历到的物品重量w[i]大于当前剩余背包容量j,则不能将当前物品放入背包中,直接跳过当前物品,c[i][j]的值为上一行同列元素c[i-1][j]的值;若放入该物品能获得更大的总价值,则c[i][j]的值为当前物品价值v[i]加上上一行同列元素c[i-1][j-w[i]]的值;若放入该物品不能获得更大的总价值,则dp[i][j]的值为上一行同列元素c[i-1][j]的值。1. 熟悉动态规划的基本思想;

2023-06-28 01:08:46 483 1

原创 算法设计与分析实验报告——实验一 分治实验

1. 熟悉分治的基本思想;2. 熟悉利用分治思想来分析解决问题3. 实现合并排序问题的分治算法。合并排序是一种基于分治思想的排序算法,其核心思想是将一个无序序列递归地划分成多个子序列,直到每个子序列中只剩下一个元素。然后按照两两合并的顺序,将这些子序列逐步合并成一个有序序列,即完成排序。合并排序具体实现可以描述为以下步骤:1. 迭代至序列只包含一个元素,此时序列已经有序;2. 将相邻的两个有序子序列合并。

2023-06-26 19:31:40 338 1

原创 算法的时间复杂度分析

我们继续看上面的例子,假设每行代码的执行时间都是一样的,我们用 1颗粒时间 来表示,那么这个例子的第一行耗时是1个颗粒时间,第三行的执行时间是 n个颗粒时间,第四行的执行时间也是 n个颗粒时间(第二行和第五行是符号,暂时忽略),那么总时间就是 1颗粒时间 + n颗粒时间 + n颗粒时间 ,即 (1+2n)个颗粒时间,即: T(n) = (1+2n)*颗粒时间,从这个结果可以看出,这个算法的耗时是随着n的变化而变化,因此,我们可以简化的将这个算法的时间复杂度表示为:T(n) = O(n)

2023-06-08 14:51:03 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除