基础算法(二)---数据结构之图
2017-04-30 17:13
218 查看
基本概念:
路径:一个顶点序列w1,w2,…,wN使得(wi,wi+1)属于E(边的集合),1<=i<N
路径的长:该路径上的边数,即N-1
简单路径:这条路径上所有定点都是互异的,但第一个和最后一个可能相同
有向图中的圈:满足w1=wN且长至少为1的一条路径(如果是简单路径称为简单图)
连通:在一个无向图中,从每个定点到每个其他顶点都存在一条路径
强连通:具有连通性的有向图
弱连通:一个有向图不是强连通图,但它的基础图是连通的
完全图:每一对顶点间都存在一条边的图
图的的表示:
邻接矩阵(适合稠密图):对每条边(u,v)置A[u][v]为true,否则为false,或者在其中放入该权值【邻接矩阵的空间需求为v的平方】邻接表(图的基本表示方法):对于每一个顶点,使用一个表存放所有邻接的顶点,如果边有权,这个附加信息也可以存储在邻接表中。(邻接表本身可以被保存在任何中了的List)【邻接表的空间需求为E+V】
最短路径算法:
无权最短路径:广度优先搜索(BFS):该方法按照层处理顶点,距离开始顶点最近的那些点首先被求值,而最远的那些顶点最后被求值(这很像对树的层序遍历)
广度优先搜索的详细介绍:http://blog.csdn.net/Wee_Mita/article/details/71077097
Dijkstra算法(一种贪心算法):
Dijkstra算法的详细介绍:http://blog.csdn.net/Wee_Mita/article/details/71077104
PS:贪心算法:一般分阶段求解问题,在每个阶段把出现的当做最好的处理。
最小生成树:
一个无向图的最小生成树就是由该图的那些连接G的所以顶点的边构成的树,且其总价值最低(最小生成树存在当且仅当G是连通的)
Prim算法:在每一步中都要把一个节点当做根,并往上加边,这样就把相关联的顶点家都增长的树上
Kruskal算法:连续选择权值最小的边,并且当所选的不产生圈时,就把它作为所取定的边
相关文章推荐
- 【数据结构与算法基础】二叉查找树 / Binary Search Tree
- 算法与数据结构基础知识
- 【算法学习笔记】06.数据结构基础 队列与堆栈初步
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- 【算法学习笔记】08.数据结构基础 二叉树初步练习1
- 【数据结构与算法基础】AVL树 / AVL Tree
- 【数据结构与算法的语言基础】数组与字符串
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- 【数据结构与算法基础】以数组实现的循环队列 / Circular Queue implemented by array
- Uva 算法入门经典(数据结构基础)线性表题目
- .net 数据结构与算法基础:泛型链表使用
- 数据结构与算法基础学习笔记
- 【数据结构与算法基础】栈及其应用后缀、中缀表达式 / Stack and postfix/infix expression
- php学习第一章:PHP基础语法(三)数据结构与算法:2、单向链表
- .net 数据结构与算法基础:泛型编程、时间测试
- .net 数据结构与算法基础:Hashtable
- 【算法学习笔记】09.数据结构基础 二叉树初步练习2
- 【算法学习笔记】08.数据结构基础 二叉树初步练习1