[x] 彻底图(complete graph):含有最多条边的无向图
html
无向图(undirected graph)
java
有向图(directed graph)
node
(Boston ,New York ,120)
、(Boston ,Philadeiphia , 199)等
最小生成树(minimum spanning tree):所含边权值之和小于其余生成树的边的权值之和。
git
断定最短路径:算法
① 断定起始顶点和目标顶点之间是否存在最短路径(两个顶点之间边数最少的路径)。
② 在加权图中找到最短路径。(Dijkstra算法)数组
邻接矩阵:用一种叫邻接矩阵的二维数组来表示任意两个顶点的交接状况。网络
无向图的邻接矩阵必定是对称的,有向图的邻接矩阵不必定对称。数据结构
“拓扑序(topological order):若是有向图中没有环路,且有一条从A到B的边,则能够把顶点A安排到顶点B以前,这种排列获得的顶点次序称为拓扑序。” |
从上能够看出,关键是寻找入度为0的顶点。oop
一种方式是遍历整个图中的顶点,找出入度为0的顶点,而后标记删除该顶点,更新相关顶点的入度,因为图中有n个顶点,每次找出入度为0的顶点后会更新相关顶点的入度,所以下一次又要从新扫描图中全部的顶点。故时间复杂度为O(n^2)。学习
一、图中顶点用一个一维数组存储,另外,对于顶点数组中,每一个数据元素还须要存储指向第一个邻接点的指针,以便于查找该顶点的边信息。
二、图中每一个顶点vi的全部邻接点构成一个线性表,因为邻接点的个数不定,因此用单链表存储,无向图称为顶点vi的边表,有向图称为顶点vi做为弧尾的出边表。
(1) 初始时,S只包含起点s;U包含除s外的其余顶点,且U中顶点的距离为"起点s到该顶点的距离"[例如,U中顶点v的距离为(s,v)的长度,而后s和v不相邻,则v的距离为∞]。
(2) 从U中选出"距离最短的顶点k",并将顶点k加入到S中;同时,从U中移除顶点k。
(3) 更新U中各个顶点到起点s的距离。之因此更新U中顶点的距离,是因为上一步中肯定了k是求出最短路径的顶点,从而能够利用k来更新其它顶点的距离;例如,(s,v)的距离可能大于(s,k)+(k,v)的距离。
(4) 重复步骤(2)和(3),直到遍历完全部顶点。
经过理解及其博客里面的代码讲解,就能够明白该算法的奥妙啦。
问题2:在作pp15.1的时候出现了越界的问题。
问题2的解决:正在改正····
问题1的改正:本题应该是错误的,选B。堆是一个彻底二叉树而不是一个二叉查找树,过低级的错误了,彻底粗心所致。
图这一章颇有趣。不少算法实现很新颖,须要好好理解消化。 还有代码实现确实很费时间呀(绕来绕去绕不过来)
正在继续告诉本身,请对专业课更加虔诚一点。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 0/0 | 1/1 | 8/8 |
第二周 | 621/621 | 1/2 | 12/20 |
第三周 | 678/1299 | 1/3 | 10/30 |
第四周 | 2734/4033 | 1/4 | 20/50 |
第五周 | 1100/5133 | 1/5 | 20/70 |
第六周 | 1574/6707 | 2/7 | 15/85 |
第七周 | 1803/8510 | 1/8 | 20/105 |
第八周 | 2855/11365 | 2/10 | 25/130 |
第九周 | 2076/13441 | 1/11 | 25/155 |