算法理解及相关证明
pfeiKing
安安静静地先稳住
展开
-
快排优化(基本有序、基本一致)
思想:子问题:将数组中的元素小于哨兵Key的放在Key左边,大于哨兵Key的放在Key右边然后将哨兵左边的数组当作一个子问题,哨兵右边的数组当作一个子问题,然后递归#include<iostream>#include<cstring>using namespace std;void Qsort(int arr[], int s, int e){ if...原创 2020-02-26 17:04:07 · 147 阅读 · 1 评论 -
Huffman 编码
#include#include#include#include using namespace std;const int N=1000;int WPL;int n;int W[N];struct node{ int w; struct node *rson; struct node *lson;}; struct forest{ struct forest *原创 2017-02-18 19:59:23 · 294 阅读 · 0 评论 -
dijkstra单源最短路
/http://blog.csdn.net/v_july_v/article/details/6057286http://blog.163.com/cindy_19810217/http://blog.csdn.net/v_JULY_v/article/details/6126444/*用迪杰斯特拉算法求有向网G的V0顶点到其他顶点的最短路径P,以及其带权长度D。其中P是二维数组,行号转载 2016-03-06 09:30:45 · 342 阅读 · 0 评论 -
最长递增子序列
文字部分转载:一 问题描述设序列L = 是长度为n的序列,L的一个递增序列描述为:, 其中下标序列 是递增的, 子序列 也是递增的。此递增序列的长度为 k二 解法1, 转化为LCS问题先把序列 L 按照从小到大的顺序排列, 得到另一个序列S,再求L和S的最长公共子序列三 解法2,动态规划另 len[i] 表示以第 i 个元素结尾的最长递增子序列的长度原创 2015-09-23 17:33:15 · 431 阅读 · 0 评论 -
异或运算及其应用
异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。一、异或的性质交换律:a ^ b = b ^ a结合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ cd = a ^ b ^ c 可以推出 a转载 2016-03-13 20:04:21 · 285 阅读 · 0 评论 -
证明:二分图中的环只能是偶环,不可能是奇环
二分图定义:是这样一个图,其顶点可分为两集合X和Y,所有的边关联的两顶点中,恰一个属于X,另一个属于Y。同一集合的结点不相邻。证明:假设二分图中的环是奇数环。设一个环,x1,x2,x3,,,,x(2*k-1),k>=1且为整数。相邻两点有边连接,x1与x(2*k-1)相连。由二分图定义可知:x1与x2分别在X集合和Y集合,由于x2与x3的关系可知x3在X集合,则x4在Y集合,以此类推,原创 2015-12-03 19:06:42 · 9571 阅读 · 0 评论 -
求树的直径证明
树的直径(最长路) 的详细证明主要是利用了反证法:假设 s-t这条路径为树的直径,或者称为树上的最长路现有结论,从任意一点u出发搜到的最远的点一定是s、t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点,即用两遍广搜就可以找出树的最长路证明:1 设u为s-t路径上的一点,结论显然成立,否则设搜到的最远点为T则dis(u,T) >dis(转载 2015-11-30 20:21:24 · 2033 阅读 · 0 评论 -
最大权闭合图
首先我们由一道题来引入,见 [线性规划与网络流24题 2] 太空飞行计划问题 。这道题中,实验依赖于仪器,而实验和仪器都有权值,且仪器为负,实验为正。这里闭合图的概念就很好引出了。在一个图中,我们选取一些点构成集合,记为V,且集合中的出边(即集合中的点的向外连出的弧),所指向的终点(弧头)也在V中,则我们称V为闭合图。最大权闭合图即在所有闭合图中,集合中点的权值之和最大的V,我们称转载 2015-08-18 11:13:33 · 435 阅读 · 0 评论