# Minimum Spanning Tree
## Kruskal's alogrithm
**This alogorithm builds a minimum spanning tree**
**Let $G$ be any undirected ,conneted graph**
## steps
1. sort the cost of edges
2. if (the graph creates cycle) add the edge to $T$
3. delete edge
:::info
worst case $O(e\ log\ e)$
:::
****
## Prim's Alogorithm
**Like Kruskal, constucts edge by edge**
We add a least-cost edge (u,v) to $T$ s.t. $T\cup{(u,v)}$
```
TV = {0};
for (T=0;T contains fewer than n-1 edges;add(u,v)to T)
{
Let(u,v) be a least-cost edge s.t. u in TV and v not in TV
if(there is no such edge) break;
add v to TV;
}
if(T contain fewer n-1 edges) cout<<"no spanning tree";
```
***
## Slollin's Alogorirhm
**slollin selects several edges at each stage .
At the start of a stage,the selects edges,from a spanning Forest.(i.e. vertices = edges)
Every vertix is a tree,then pick edge .
Constuct trees each other**
:bulb: [Sollin's Graph](https://www.csie.ntu.edu.tw/~ds/ppt/ch6/sld064.htm)
# Shortest Path
1. Single Source : Nonnegative Edge Costs
2. Single Source : General Weights
3. All-Pairs Shorest path
4. Transitive Closure
$Notation :$ $dsit[u]$ **is represent the shortest path to u**
:::info
If we want go to w,the path will be $dist[u] + length(u,w)$
and $bool$ $s[i]$ is to concern i whether or not in S
:::
```
void Graph::ShortestPath(const int n,const int v)
{
for(int i=0;i<n;i++){
s[i]=false;
dist[i]=length[v][i];
}
s[v]=ture;
dist[v]=0; //initial
for(i=0;i<n-2;i++){
int u=Choose(n);
s[u]=true;
for(int w=0;w<n;w++)
if(!s[w] && dist[w]<dist[u]+length[u][w])
disw[w] = dist[u] + length[u][w];
}
}
```
# Activity Network
***
## Activity On Vertices
**For example: 課程的順序
predecessor and successor relationship**
## Activity On Edges
**Process manager
Concerning about Time to manager project
as what is the least amount of time in which the project may be completed.**
:::danger
$Earliest\ Time \ e(i)$ :
$Hint:$ $e(i)=ee(k)$ 往後推
:::
:::danger
$Latest\ Time\ l(i)$
$Hint:$ $l(i)=le(k)-lenth[i][i-1]$ 由後往前推
:::
## Critical Path
$e(i)=l(i)$ is Critical point or activity
**Speeding up critical path will be efficiently and effective**