经典算法汇总-第一章

来源:互联网 发布:面试淘宝美工常见问题 编辑:程序博客网 时间:2024/04/30 01:57

1.    最小生成树(Minimum Spanning Trees):在加权连通图中找最小生成树连通所有点且权值最小

算法1:prim算法:任选一个起始点为蓝点集合,其余点为红点集合,找蓝点集合中与红点集合距离最小的点,加入到蓝点集合中,直到红点集合为空。

算法2:kruskal:将边权值由大到小进行排序,选择最小的边加入,且边的两点要分别在两个集合中,直到将所有的点连通。

若将该问题改成连接所有点,但不许有分支(NP问题)

2.    可满足问题

合取范式:(xVyVz)(xVy)…(pVq) 中能找到一组值使式子成立,

如每个子句少于等于2句:2-SAT问题    P问题  多项式时间可解

每个子句少于等于3句:3-SAT 问题     NP问题 指数时间

3.    Search problem/Decisionproblem:给一个问题的解,能在多项式时间段内判断是否正确

4.    如果每个子句中至少有一个正的,该子句称为霍恩公式,如果只有一个,则可以通过贪心算法找到解

5.    旅行商问题:有n个顶点,n(n-1)/2个边和一个限制b,能否找到一个圆,经过每个顶点1次,且花费少于或等于b。旅行商问题可以被认为是最小生成树的转化,不允许树有分支。

6.    将搜索问题或判定问题转成优化问题容易,优化问题转搜索问题,用二分搜索法。优化问题会多一个边界

7.    欧拉路径:若图G中存在这样一条路径使得它恰通过G中每条边一次,则称该路径为欧拉路径,若该路径是一个圈则成为欧拉回路或欧拉环。具有欧拉回路的图成为欧拉图。

8.    一个无向图存在欧拉回路,当且仅当该图所有顶点度数都为偶数,且该图是连通图。一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图。欧拉路径:无项图中有两个顶点度数为奇数,其它为偶数,则存在欧拉路径。

9.    哈密顿回路Hamilton cycle/Rudrata cycle:从指定的起点到指定的终点,途中经过所有其他节点且只经过一次。平面图可以转成欧拉图来求解。

10. 在一个图G(V,E)中V是点集,E是边集。在E中去掉一个边集C使得G(V,E-C)不连通,C就是图G(V,E)的一个割;最小割:在G(V,E)的所有割中,边权总和最小的割就是最小割。

11. 平衡割(Balancedcut):给定n个订单和限制b,将顶点分割成两个集合S和T,且两个集合的顶点数大于三分之一,使得S和T之间存在至多b个边

12. 整数线性规划(ILP):有一个集合的变量,给一组真实值让它们满足一些线性等式或者线性不等式,最大或者最小化目标函数,使满足条件的变量取值最多。ILP是一个搜索问题

13. ZOE:线性规划问题的一种,但是变量只能取0或者1

14. 3D Matching:集合x,y,z,找到x*y*z的集合使彼此相连,且每个顶点只能出现一次。它是一个搜索问题,也是npc问题。如图所示:

                    


右图中连线代表关联,如果选p0,则一定要选p2.如果选p1,则一定要选p3。所以p0和p2要一起出现,p1和p3要一起出现。所以右图可以等同于一个布尔变量,有两种取值。因此3D matching问题和3-SAT问题互相转换,因为3SAT问题一个子句最多3个,代表任一一点只能连少于3条边。

15. 独立集(Independentset)问题:给一个图G和一个整数g,找到g的顶点,让g的顶点之间互不相连。

16. 顶点覆盖问题(Vertexcover):给定一个N个点M条边的无项图G(点的编号从1至N),问是否存在一个不超过K个点的集合S,使得G中的每条边都至少有一个点在集合S中。

 

17. 团问题(Clique):

给一个图和一个整数g,找到g个顶点,使这g个点中每对顶点之间都有边。

18. 独立集和团问题互为补问题,顶点覆盖和独立集问题互为补问题,可以互相转换

19. 最长路径问题是指在给定的图中找出长度最长的道路。一条不具有任何重复顶点的路径被称为简单路径,无权图中路径的长度就是边的数量,而有权图中路径长度是边权重之和,最长路径问题是NP问题

20. 背包问题(Knapsack):给出每个物品的重量w1,w2…,wn和物品的价值v1,v2….Vn,背包的最大容量是W,希望获得的最小价值是g。动态规划解决,时间复杂度为:O(nw). 0-1背包问题有多项式时间解

21. 背包问题的特殊情况:物品重量和价值相等,目标价值和背包的容量相同,这样的话,该问题等同于子集合问题

22. 子集和问题:找到一个集合中的某个子集,让子集的和正好为W。该问题也是整数线性规划的子集ZOE。

23. 图同构问题(Graphisomorphism):两个图中对应点的连线相同

24. hard problems和easy problems

 

 25. 补问题complementation:两个问题的解正好相反。原问题是多项式时间,补问题是多项式时间,则原问题在多项式时间内封闭。

 

 

 

0 0
原创粉丝点击