好吧,再怎么抗拒还是拿到了Blog账号,那只能勉强写写了
今天下午“简单”地学习了图论及最短路径算法之—–“Floyd”虽然上课老师一直不停的强调说这堂课十分“简单”,但确实也不算难,but对于我这种连DFS与BFS都不是很懂的人还是有点费脑子
今天的“Floyd”记录了一个path数组初始化和一个简单的算法模板,具体如下:
Path数组初始化
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(e[i][j]<inf && i!=j)
path[i][j]=i;
else
path=-1;
}
}
"Floyd"最短路径算法模板“a[i][j]为到j的最短路径”
for(int k=1;k<=n;k++)//遍历中间点(注意一定要在最前面)
for(int i=1;i<=n;i++)//遍历起点
for(int j=1;j<=n;j++)//遍历中点
e[i][j]=min(e[i][j],e[i][k]+e[k][j])
除此之外还讲了一些概念,理论,对于一个图,我们可以把他转为一个邻接矩阵或一个邻接表,对于他们我好像会了又没完全会
邻接数组像这样:
0 2 ∞ ∞ 10
∞ 0 3 ∞ 7
∞ ∞ 0 4 ∞
∞ ∞ ∞ 0 5
∞ ∞ 6 ∞ 0//这是有向图
0 2 ∞ ∞ 1
2 0 3 ∞ 7
∞ 3 0 4 ∞
∞ ∞ 4 0 5
1 7 6 5 0//此为无向图
实际上这两个图本质上是一样的,对于a[i][j]都是从i到j的直接距离(无非是无向图是对称的罢了),对于“∞”是指i到j没有直接连接
其余知识如下:
(a)有向图:图的边有方向,只能按箭头方向从一点到另一点
(b)无向图:图的边没有方向,可以双向
结点的度:无向图中与结点相连的边的数目,称为结点的度。
结点的入度:在有向图中,以这个结点为终点的有向边的数目。
结点的出度:在有向图中,以这个结点为起点的有向边的数目。
权值:边的“费用”,可以形象地理解为边的长度。
连通:如果图中结点U,V之间存在一条从U通过若干条边、点到达V的通路,则称U、V 是连通的。
回路:起点和终点相同的路径,称为回路,或“环”。
完全图:一个n 阶的完全无向图含有n*(n-1)/2 条边;一个n 阶的完全有向图含有n*(n-1)条边;
稠密图:一个边数接近完全图的图。
稀疏图:一个边数远远少于完全图的图。
强连通分量:有向图中任意两点都连通的最大子图。
总的来说老师“确实好像没有欺骗我们”—–概念的确不难但打起来有点困难,但我还是没打几题,唉.明天继续加油:smiley: