- 博客(10)
- 资源 (5)
- 收藏
- 关注
原创 顶点覆盖问题
输入:无向图G(V,E) 输出:C属于V,C中点数最小,满足E中任意一条边中的两个顶点至少有一个在C中 APPROX_Vertex_Cover(G) 1 C=空集 2 E' = E 3 While E' != 空集 Do 4 任选{u,v}属于E' 5 C = C U {u,v} 6 删除E'中所有与u,v相连的边 7 Return C Ratio 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 do 3 X[k]
2015-11-24 21:19:48 1606 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关注的人