若G(V,E)是含n个顶点的图,表示图G的矩阵为mat[n][n]
存在边的矩阵为mat[i][j]=1
不存在边的矩阵为mat[i][j]=0
无向图的相邻矩阵为对称
有向图的相邻矩阵为非对称
因上述的串链表示法空间需求较大,因此可改为一维的方式将图中所有顶点将图中所有顶点集合。
阵列的空间表示方式为mat[n+2e+1],n为顶点数,2e为顶点数*分支度。
以G4为例,索引0~8为阵列的初始位置,9~22为储存值
实作连结:矩阵串链表示法
先略
#define FALSE 0
#define TRUE 1
short int visited[MAX_VERTICES];
void dfs(int v){
node_pointer w;
visited[v]= TRUE;
printf(“%5d”, v);
for (w=graph[v]; w; w=w->link)
if (!visited[w->vertex]){
dfs(w->vertex);
}
}
时间复杂度:
typedef struct queue *queue_pointer;
typedef struct queue {
int vertex;
queue_pointer link;
};
queue_pointer front, rear;
void addq(int); // int 为顶点编号
int deleteq();
void bfs(int v){
node_pointer w;
front = rear = NULL;
printf(“%5d”, v);
visited[v] = TRUE;
addq(v);
while (front) {
v= deleteq();
for (w=graph[v]; w; w=w->link)
if (!visited[w->vertex]) {
printf(“%5d”, w->vertex);
addq(w->vertex);
visited[w->vertex] = TRUE;
}
}
}
时间复杂度:
实作连结:DFS与BFS追踪
一个所有边具有成本权重的无向图,其最小成本和为最小成本扩张树
以下为利用贪婪法(greedy method)生成最小成本扩张树的演算法
Kruskal’s 演算法
一次以最小成本加一个边,当天家的边产生回圈则跳过
演算法
T= {};
while (T 包含少於 n-1 个边且 E 不是空集合) {
从E选择一个最小成本之边 (v, w) ;
从E删除 (v, w)边;
若边(v, w) 不会在T中产生回圈,则
将 (v, w)边加入T中
否则
放弃(v, w)边;
}
若T包含少於 n-1个边,则
印出”无扩张树”之讯息;
Prim’s 演算法
每次加一个周围最小成本的边加入树中,每一次添加後还是一棵树,直到这棵树包含n-1个边为止
演算法:
T={};
TV={0}; /* 从顶点0开始 */
while (T包含少於 n-1个边) {
令 (u, v) 为最小成本之边,使得 u ? TV
且 v ? TV
若无此种边则停止;否则
将顶点 v 加入 TV;
将边 (u, v) 加入T;
}
若T包含少於 n-1个边,则
印出”无扩张树”之讯息;
Sollin’s 演算法
待补
找出单一来源到所有顶点的最短路径
图表法
Dijkstra’s 演算法
步骤:
所有序对时间复杂度:
最短路径法O(n^2)*执行n次=O(n^3)
AOV网路
有向图中的工作次序关系
前辈一定出现在继承者前面
图形中的拓朴次序(Topological order)
AOE网路
最早时间(e) :一个活动可以发生的最短时间
最晚时间(l) :一个活动可以发生的最迟时间
临界程度 (时间伸缩程度):l(i) - e(i) 的差值
e(i)=l(i)的活动称为临界活动
>>: Day 16 - 卷积神经网络 CNN (1)-壹页AI战国史
试想想,你现在正在为一间酒店,制作一个网站,您需要为这间酒店加入订房的画面。当然,床数量,有没有浴缸...
这篇主要是我之前看官方文件的笔记,还有对於几个 Basic Concepts 的理解,可能比较没有结...
接下来终於要谈谈,让我们更轻松的物件了 其实网路上有很多相关的文章,都可以带你更深入JS时,但常常问...
今天要写的是一个亲戚请求帮忙的网站小游戏 主要是要给国小小朋友学习「小数点的加法」 获得的道具有,甜...
Burp Suite 使用环境:VMware Windows 7 设定攻击的Payloads pa...