- 博客(10)
- 资源 (5)
- 收藏
- 关注
原创 顶点覆盖问题
输入:无向图G(V,E)输出:C属于V,C中点数最小,满足E中任意一条边中的两个顶点至少有一个在C中APPROX_Vertex_Cover(G)1 C=空集2 E' = E3 While E' != 空集 Do4 任选{u,v}属于E'5 C = C U {u,v}6 删除E'中所有与u,v相连的边7 Return CRatio Bound(近似比)设A
2015-11-25 17:45:34 12802
原创 判断两多项式之积是否等于另一多项式
问题描述:判断p(x),q(x)之积是否等于r(x),p,q,r分别为m,n,l 阶多项式Random_polynomial(p(x),q(x),r(x),m,n,l)输入:随机选取X[1:k+1]输出:p(x)*q(x)是否等于r(x)1 K =max{m+n,l}2 For k=1 to K do3 X[k]
2015-11-24 21:19:48 1605 1
原创 随机算法
1. 数值随机算法通过随机点数求解圆周率,定积分等问题。主要利用大数定律与强大数定律。2. 拉斯维加斯随机算法(Las Vegas)通过随机选择法求解集合S中的第k小的数算法得到的解一定是正确解,但算法也可能不获得问题的解,满足以上条件即为拉斯维加斯算法。3. 舍伍德随机算法(Sherwood)随机快速排序舍伍德算法能够获得问题的正确解,它的精髓在于消除算法的最坏情
2015-11-22 14:47:24 668
原创 并行机器最短调度问题
输入:数组t,存储n个任务的执行时间m台完全一样的机器输出:使任务在m台机器并行执行时间最短的一个调度策略基于贪心选择:选择具有最短任务队列的机器。#include #include using namespace std; int minTask(int *t,int n){ int tmp = t[0]; int min = 0; for(int i=0;i<n;
2015-11-19 20:44:25 3779
原创 求数组中的逆序对
#include using namespace std;int count = 0;void merge(int *a,int p,int q,int r){ int n1 = q-p+1; int n2 = r-q; int *m = new int[n1]; int *n = new int[n2]; for(int i=0;i<n1;i++) m[i] = a[p+i]
2015-11-19 15:38:09 521
原创 树搜索策略
1. 深度优先维护栈将根节点放入栈循环弹出栈顶元素,然后将栈顶元素的子节点放入栈中当栈顶元素满足约束条件,对其进行处理。当栈空时,搜索结束2. 广度优先维护队列将根节点放入队列循环弹出队首元素,然后将队首的子节点放入队列中当队首元素满足约束条件,对其进行处理。当队空时,搜索结束3. 爬山法深度优先+贪心将栈首的子节点,采用贪心策略放入栈顶
2015-11-18 20:14:13 735
原创 01背包-近似算法
void dp2(int *w, int *v, int n, int c){cout<<"dp2:"<<endl; int vs = 0; for(int i=0;i<n;i++) vs += v[i]; int **m; m = new int*[n+1]; for (int i = 0; i<n + 1; i++) { m[i] = new int[vs+1]; for
2015-11-18 16:46:17 2183
原创 动态规划算法的一般解题思路
1. 证明优化子结构对于问题的优化子结构,给出问题具有优化子结构的解代价,利用反证法,假设上解不是最优的,则存在另外一个解,其解优于上解,这与上解是最优的矛盾,于是该问题具有优化子结构。证明优化子结构问题主要利用反证法。2. 证明重复子问题给出问题的递归公式则重叠子问题鍀证。3. 递归的定义最优解的代价给出最有解的代价递归公式,利于代码编写。4. 自底向上计算最优解的代
2015-11-17 16:18:05 1501
原创 整数序列合并问题
#include using namespace std;void show(int **s,int i,int j){ if(i==j) cout<<"A"<<i; else{ cout<<"("; show(s,i,s[i][j]); show(s,s[i][j]+1,j); cout<<")"; }}void answer(int *a,int n){ i
2015-11-16 19:58:46 1094
原创 01背包
#include #include #include #include using namespace std;/**Dynamic Processing 15S103182 武雪剑*m[i,j] = max{ m[i+1,j] , m[i+1,j-w[i]]+v[i] }*/void dp(int *w, int *v, int n, int c){ vector > m;
2015-11-13 14:51:04 565
Hierarchical层次聚类算法-C++
2016-01-02
DBSCAN聚类算法-C++
2016-01-02
K-means聚类算法-C++
2016-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人