随笔分类 -  经典算法

博主遇到的一些经典算法题目
摘要:一.问题描述 电路板排列问题是大规模电子系统设计中提出的实际问题. 该问题是: 将n块电路板以最佳排列方案插入带有n个插槽的机箱中. n块电路板的不同的排列方式对应于不同的电路板插入方案. 将n块电路板以最佳排列方式插入带有n个插槽的机箱中。n块电路板的不同排列方式对应于不同的电路板插入方案。设B= 阅读全文
posted @ 2021-12-21 15:46 PGokc 阅读(2912) 评论(0) 推荐(0)
摘要:一.问题描述 给定n个大小不等的圆c1,c2,…,cn, 现要将这n个圆排进一个矩形框中, 且要求各圆与矩形框的底边相切。 圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。 例如, 当n=3, 且所给的3个圆的半径分别为1, 1, 2时, 这3个圆的最小长度的圆排列如图所示。其最小长度为2 阅读全文
posted @ 2021-12-21 15:45 PGokc 阅读(1030) 评论(0) 推荐(0)
摘要:一.问题描述 某售货员要到若干城市去推销商品, 已知各城市之间的路程(旅费), 他要选定一条从驻地出发, 经过每个城市一遍, 最后回到驻地的路线, 使总的路程(总旅费)最小。 二.解题思路 旅行售货员问题的解空间是一棵排列树。对于排列树的回溯法与生成1, 2, ……n的所有排列的递归算法Perm类似 阅读全文
posted @ 2021-12-21 15:44 PGokc 阅读(1554) 评论(0) 推荐(0)
摘要:一.问题描述 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各项点着色,每个项点画一种颜色.是否有一种着色法,使G中每条边的2个顶点有着不同颜色? 二.解题思路 图的m色判定问题: 给定无向连通图G和m种颜色。用这些颜色为图G的各顶点着色. 问是否存在着色方法, 使得G中任2邻接点有不同颜色。 阅读全文
posted @ 2021-12-21 15:43 PGokc 阅读(2056) 评论(0) 推荐(0)
摘要:一.问题描述 给定无向图G=(V, E), U⊆V, 若对任意u, v∈U, 有(u,v) ∈ E, 则称U是G的一个完全子图. G的完全子图U是G的一个团当且仅当U不包含在G的更大的完全子图中,G的最大团是指G中所含顶点数最多的团. 二.解题思路 无向图G的最大团和最大独立集问题都可以用回溯法在O 阅读全文
posted @ 2021-12-21 15:42 PGokc 阅读(764) 评论(0) 推荐(1)
摘要:一.问题描述 略 二.解题思路 0-1背包问题是子集选取问题.一般情况下,0-1背包问题是NP完全问题. 0-1背包问题的解空间用子集树来表示,解0-1背包问题的回溯法和解装载问题的回溯法十分相似.搜索解空间树时,只要其左儿子节点是一个可行节点,搜索就进入其左子树.当右子树中有可能包含最优解时(即上 阅读全文
posted @ 2021-12-21 15:41 PGokc 阅读(339) 评论(0) 推荐(0)
摘要:一.问题描述 N*N棋盘上放置N个皇后使得每个皇后互不受攻击. 即任二皇后不能位于同行同列和同一斜线上. 如四皇后问题的两个解: 二.解题思路 将棋盘从左至右,从上到下编号为1,...,n,皇后编号为1,...,n. 设解为(x1, ..., xn) , xi为皇后i的列号,且xi位于第i行. 解空 阅读全文
posted @ 2021-12-21 15:40 PGokc 阅读(244) 评论(0) 推荐(0)
摘要:一.问题描述 下图是由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-”。在一般情况下,符号三角形的第一行有n个符号.目标是:符号三角形问题要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同。 改为此: 二.解题思路 解向量用n 阅读全文
posted @ 2021-12-21 15:39 PGokc 阅读(636) 评论(0) 推荐(0)
摘要:一.问题描述 给定n个作业的集合J=(J1, J2, ... , Jn)。每一作业Ji都有两项 任务要分别在2台机器上完成. 每一作业须先由机器l处理, 再由机器2处理. 设tji是作业Ji在机器j上的处理时间, i=1,...,n, j=1, 2.Fji是作业Ji在机器j上完成处理的时间. 所有作 阅读全文
posted @ 2021-12-21 15:38 PGokc 阅读(553) 评论(0) 推荐(0)
摘要:一.问题描述 n个集装箱装到2艘载重量分别为c1,c2的货轮,其中集装箱i的重量为wi且Σwi ⇐ c1 + c2 , 1<=i<=n 问题要求找到一个合理的装载方案可将这n个货箱装上这2艘轮船。 例如 当n=3, c1=c2=50, w=[10, 40, 40], 可将货箱1和2装到第一艘船上;货 阅读全文
posted @ 2021-12-21 15:37 PGokc 阅读(563) 评论(0) 推荐(0)
摘要:一.回溯算法的基本概念 回溯法有“通用的解题法”之称。 用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的搜索算法,它在问题的解空间树中,按深度优先策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一结点时,先判断该结点是否包含问题的解。如果不包含,则跳过对以该结 阅读全文
posted @ 2021-12-21 15:36 PGokc 阅读(454) 评论(0) 推荐(0)
摘要:一.问题描述 N个独立的作业{1,2,…,n},m台相同的机器。每个作业需要在机器上加工ti时间。每个作业不能拆分成更小的作业,只能在一台机器上完成,而且处理过程不能中断.如何调度,使得全部作业在最短时间内完成? 当n ≤ m时,很简单。 当n > m时,属于NP完全难题,迄今未有效解决。 二.解题 阅读全文
posted @ 2021-12-21 15:34 PGokc 阅读(966) 评论(0) 推荐(0)
摘要:一.问题描述 有向图G的每条边都有一个非负的长度c [i][j],路径的长度即为此路径所经过的边的长度之和。 给定一个源点,求出从源点出发,到该有向图中其它各顶点的最短路径. 二.解题思路 Dijkstra算法是解决单源最短路径问题的贪心算法。其基本思想是: 一个例题: 表格中默认选取的起始顶点为1 阅读全文
posted @ 2021-12-21 15:31 PGokc 阅读(428) 评论(0) 推荐(0)
摘要:一.问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 树的带权路径长度:树中所有叶子结点的带权路径长度之和,通常记作:WPL = Σwi*li (i=1~n) 哈夫曼树,Huffman树定义:在权为w1,w2,…,wn的n个叶子结点的所有二叉树中,带权 阅读全文
posted @ 2021-12-21 15:28 PGokc 阅读(433) 评论(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 阅读(431) 评论(0) 推荐(0)
摘要:一.贪心算法的基本概念 贪心算法也称为优先策略 顾名思义是“择优录取”,在某些方面的应用是非常成功的,也是我们设计算法时经常使用的一种策略。国外叫做Greedy method,意即见到好的就抓住不放。它并不一定对所有问题都成功,但是对某些问题特别简单、有效。 在贪婪算法中采用逐步构造最优解的方法。在 阅读全文
posted @ 2021-12-21 15:27 PGokc 阅读(576) 评论(0) 推荐(0)
摘要:一.问题描述 给定线性序列集中的n个元素和正整数k, 1≤ k≤ n, 求第k小元素的位置. 二.解题思路 该篇文章中我们讨论与排序问题类似的元素选择问题,元素选择问题的一般提法是:给定线性序集合中n个元素和一个整数k(1 ⇐ k ⇐ n),要求找出这n个元素中第k小的元素,即如果将这n个元素依其线 阅读全文
posted @ 2021-12-21 15:25 PGokc 阅读(621) 评论(0) 推荐(0)
摘要:一.问题描述 给定一个数组,使用快速排序算法进行排序. 二.解题思路 熟悉的快排,曾经写过不知道多少遍.在此还扩展了随机选择支点的算法RandomizedQuickSort. 快排的思想很简单: 对于输入a[p: r],按以下三个步骤进行排序: 分解:取a中的一个元素为支点(pivot) 将a[p: 阅读全文
posted @ 2021-12-21 15:24 PGokc 阅读(146) 评论(0) 推荐(0)
摘要:一.问题描述 将n个元素排成非递减顺序 二.解题思路 若n为1,算法终止;否则,将n个待排元素分割成k(k=2)个大致相等子集合A,B,对每一个子集合分别递归排序 再将排好序的子集归并为一个集合 合并排序算法可递归地描述如下: template<class Type> void MergeSort( 阅读全文
posted @ 2021-12-21 15:21 PGokc 阅读(148) 评论(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 阅读(208) 评论(0) 推荐(0)