摘要: 1.实践题目 :工作分配问题 2.问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 3.算法描述(包括解空间,画出测试样例的解空间树,剪枝(约束函数或限界函数)方法描述) 解空间 阅读全文
posted @ 2018-12-24 19:56 木屐丶 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 1.对回溯算法的理解 确定了解空间的组织结构后,回溯法从开始结点(根节点)出发,以深度优先方式搜索整个解空间。到达新的节点后,进行判断剪枝。到达新的叶子节点后,与最优解进行比较。进行剪枝或到达叶子节点后,返回上一节点,通过该方式遍历这棵“树”。 2.请说明“子集和”问题的解空间结构和约束函数 解空间 阅读全文
posted @ 2018-12-24 19:55 木屐丶 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 1.对贪心算法的理解 贪心算法包含两个性质:贪心选择性质和最优子结构性质。 贪心算法做的选择是当前状态下局部最好选择,这样子问题就不断变为一个更小的问题,原问题所得到的也是最优解。 2.汽车加油问题的贪心选择性质 判断能否到达下一个站,能到达则不加油,这样就能得到最少加油次数。 3.请说明在本章学习 阅读全文
posted @ 2018-12-02 20:07 木屐丶 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 2.问题描述 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较,还需要确定合并这个序列 阅读全文
posted @ 2018-12-02 19:25 木屐丶 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 7-2最大字段和 2.问题描述 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。 要求算法的时间复杂度为O(n)。 3.算法描述 创建一个数组m,m[ 阅读全文
posted @ 2018-11-05 23:04 木屐丶 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 1、对动态规划算法的理解 动态规划算法与分治法有点相似,都是将原问题进行不断分解,解决子问题后得到所需结果。但动态规划算法有两个重要性质:最有子结构和子问题重叠性质。最优子结构是指问题的最优解包含了其子问题的最优解。子问题重叠性质是指分解产生的子问题有可能不是一个新问题,导致有些子问题被反复多次计算 阅读全文
posted @ 2018-11-05 22:37 木屐丶 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 2.问题描述 用二分法在输入的有序排列整数中查找数x。若找到,输出x的下标和比较次数;若找不着,输出-1和比较次数 阅读全文
posted @ 2018-10-14 13:01 木屐丶 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 1.我对二分思想的体会: 二分法处理问题的效率很高,判断后,要么得到结果,要么把问题规模变为原来的一半,时间复杂度是log n级别的。 虽然二分法很方便,但二分法使用的前提条件也较为苛刻——它要求问题中数据的排序是有序的。 2.结对编程情况的汇报: 在本周算法课结对编程中,我和我的搭档一开始是各自用 阅读全文
posted @ 2018-10-13 16:04 木屐丶 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 通过第一章的学习,我了解到算法满足下述4条性质: (1)输入:有零个或多个由外部提供的量作为算法的输入。 (2)输出:算法产生至少一个量作为输出。 (3)确定性:组成算法的每条指令是清晰的,无歧义的。 (4)有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。 我还学习了根据符号 阅读全文
posted @ 2018-10-01 10:17 木屐丶 阅读(379) 评论(0) 推荐(0) 编辑