经典算法汇总-第一章
来源:互联网 发布:面试淘宝美工常见问题 编辑:程序博客网 时间: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:两个问题的解正好相反。原问题是多项式时间,补问题是多项式时间,则原问题在多项式时间内封闭。
- 经典算法汇总-第一章
- 【算法入门经典】 第一章
- 算法竞赛入门经典第一章
- c++经典算法汇总
- 各类经典算法汇总
- 经典排序算法汇总
- 计算机经典算法汇总
- 计算机经典算法汇总
- 经典排序算法汇总(C#)
- C语言经典算法汇总
- {算法竞赛入门经典}第一章 程序设计入门
- 算法竞赛入门经典读书笔记 第一章
- 算法竞赛入门经典-第一章源代码
- 算法竞赛入门经典第一章习题答案
- 算法竞赛入门经典之第一章
- 《算法竞赛入门经典》读书笔记(第一章)
- 算法竞赛入门经典第一章习题解答
- 【算法竞赛入门经典】【第一章】课后习题
- POI生成excel数据量大时内存溢出解决
- 4650: [Noi2016]优秀的拆分
- h5 canvas 绘制的写轮眼特效
- 安卓学习 权限Permission
- 深度学习方法(十一):卷积神经网络结构变化——Google Inception V1-V4,Xception(depthwise convolution)
- 经典算法汇总-第一章
- Leetcode练习 412. Fizz Buzz
- 【作业2】客户端的配置与应用
- tree
- 简单的RecycerView
- h5 canvas绘制的旋转小球
- JSON学习笔记
- 215. Kth Largest Element in an Array
- 多线程_同步的特点及好处和弊端