摘要: 一.回溯算法的基本概念 回溯法有“通用的解题法”之称。 用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的搜索算法,它在问题的解空间树中,按深度优先策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一结点时,先判断该结点是否包含问题的解。如果不包含,则跳过对以该结 阅读全文
posted @ 2021-12-21 15:36 PGokc 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 N个独立的作业{1,2,…,n},m台相同的机器。每个作业需要在机器上加工ti时间。每个作业不能拆分成更小的作业,只能在一台机器上完成,而且处理过程不能中断.如何调度,使得全部作业在最短时间内完成? 当n ≤ m时,很简单。 当n > m时,属于NP完全难题,迄今未有效解决。 二.解题 阅读全文
posted @ 2021-12-21 15:34 PGokc 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 有向图G的每条边都有一个非负的长度c [i][j],路径的长度即为此路径所经过的边的长度之和。 给定一个源点,求出从源点出发,到该有向图中其它各顶点的最短路径. 二.解题思路 Dijkstra算法是解决单源最短路径问题的贪心算法。其基本思想是: 一个例题: 表格中默认选取的起始顶点为1 阅读全文
posted @ 2021-12-21 15:31 PGokc 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 树的带权路径长度:树中所有叶子结点的带权路径长度之和,通常记作:WPL = Σwi*li (i=1~n) 哈夫曼树,Huffman树定义:在权为w1,w2,…,wn的n个叶子结点的所有二叉树中,带权 阅读全文
posted @ 2021-12-21 15:28 PGokc 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 一.贪心算法的基本概念 贪心算法也称为优先策略 顾名思义是“择优录取”,在某些方面的应用是非常成功的,也是我们设计算法时经常使用的一种策略。国外叫做Greedy method,意即见到好的就抓住不放。它并不一定对所有问题都成功,但是对某些问题特别简单、有效。 在贪婪算法中采用逐步构造最优解的方法。在 阅读全文
posted @ 2021-12-21 15:27 PGokc 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 n个活动的集合E={1,2,…,n},在某一时间内要独占使用某个资源。每个活动i使用资源的起始时间为Si,终止时间为Fi。 活动i和活动j相容:是指[Si,Fi)与[Sj,Fj)不相交,即:Sj>=Fi 或Si>=Fj, 要求尽可能多地安排活动。即从活动集合E中选出最大相容活动子集。 阅读全文
posted @ 2021-12-21 15:27 PGokc 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 给定线性序列集中的n个元素和正整数k, 1≤ k≤ n, 求第k小元素的位置. 二.解题思路 该篇文章中我们讨论与排序问题类似的元素选择问题,元素选择问题的一般提法是:给定线性序集合中n个元素和一个整数k(1 ⇐ k ⇐ n),要求找出这n个元素中第k小的元素,即如果将这n个元素依其线 阅读全文
posted @ 2021-12-21 15:25 PGokc 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 给定一个数组,使用快速排序算法进行排序. 二.解题思路 熟悉的快排,曾经写过不知道多少遍.在此还扩展了随机选择支点的算法RandomizedQuickSort. 快排的思想很简单: 对于输入a[p: r],按以下三个步骤进行排序: 分解:取a中的一个元素为支点(pivot) 将a[p: 阅读全文
posted @ 2021-12-21 15:24 PGokc 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 将n个元素排成非递减顺序 二.解题思路 若n为1,算法终止;否则,将n个待排元素分割成k(k=2)个大致相等子集合A,B,对每一个子集合分别递归排序 再将排好序的子集归并为一个集合 合并排序算法可递归地描述如下: template<class Type> void MergeSort( 阅读全文
posted @ 2021-12-21 15:21 PGokc 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 一.问题描述 在一个2k x 2k个方格组成的棋盘中,恰有一方格残缺.残缺方格的位置有2^(2k)种。故对任何k≥0,残缺棋盘有2^(2k)种. 在棋盘覆盖问题中,要求用L型骨牌覆盖残缺棋盘上的所有方格且任何2个L型,骨牌不得重叠覆盖. 2k x 2k的棋盘覆盖中,用到的骨牌数为(4^k -1)/3 阅读全文
posted @ 2021-12-21 15:20 PGokc 阅读(116) 评论(0) 推荐(0) 编辑