一,图

1. 思维导图

1.

  1. 导图中的联系
    1. 连通图有n个顶点和e条边,其中n-1条边和e个顶点一个构成极小的强连通图,称该极小连通子图为此连通图的生成树
    2. 最小生成树、最短路径、关键路径与权有关
    3. Prim和Dijkstra:要计算某顶点加入以后是否改变lowest[]/dist[]的值;不过Prim是比较新加入的顶点是否与未加入顶点之间边的权值更小,而Dijkstra看的是源点是否能经由新加入的点拥有前往别的点的更小的路径

2. 基本概念

  1. 基本术语:

    1. 完全图(n个顶点和e条边):e=n(n-1)/2;

    2. 有向完全图(n个顶点和e条弧):e=n(n-1);

    3. 稀疏图与稠密图:e<nlogn ,为稀疏图;反之,为稠密图

    4. 邻接点:在同一条边/弧上的顶点

    5. 网络:带权的图

    6. 简单路径:序列号中的顶点不重复

    7. 简单回路:序列号中的第一个顶点和最后一个顶点相同的路径

    8. 连通图与连通分量(无向图里):

      1. 连通图:无向图中任意两个顶点之间都有路径相连
      2. 连通分量:若无向图为非连通图,图中各极大连通子图称为此图的连通分量
    9. 强连通图和强连通分量:

      1. 强连通图:有向图中任意两个顶点之间都有有向路径相连
      2. 强连通分量:有向图中图中各强连通子图称为此图的强连通分量
  2. 图的存储结构;

    1. 邻接矩阵:
      1. 无向图的邻接矩阵是对称的;有向图的邻接矩阵可能不对称
  3. 遍历:

    1. DFS:从某个顶点出发,递归进行DFS
  4. 最小生成树(n个顶点,e=n-1):

    1. Prim:不断加点
    2. Kruskal:在点上加边
  5. 拓扑排序与AOV网(顶点为活动,有向边表示活动优先关系):重复以下操作,将入度为0的点加入拓扑序列中,并把每个它的邻接点入度减一,直到点都在拓扑序列中

  6. 关键路径与AOE网(有向边为活动,顶点为事件):

    1. 事件vi的最早发生时间:ve(j)=max{ve(i)+dut(<i,j>)};

    2. 事件vi的最迟发生时间:vl(i)=min{vl(j)-dut(<i,j>);

    3. 活动ai的最早开始时间:e(i)=ve(i);

    4. 活动ai的最晚开始时间: l(i);

    5. 关键活动(l(i)=e(i)):现有弧<j,k>弧的权值为dut(<j,k>)

      1. ve(i)=e(j);
      2. l(i)=vl(k)-dut(<j,k>)

3. 问题+解决方案

  1. pta图着色问题计算总颜色数/一个序列里计算出现了多少种数

    1. 方案1(可能会超时):

                   cin >> a[i];
      			for (j = 1; j <i; j++) {
      				if (a[i] == a[j] ) {
      					flag1 = 0;
      					break;
      				}
      			}
      			if (flag1) {
      				count++;
      			}
      
    2. 方案2:

               int a[501] = { 0 }, b[501] = { 0 }, c[501] = { 0 };
      		for (i = 1; i <= v; i++) {
      			cin >> a[i];
      			b[a[i]]++;//计算每种颜色的数量
      			if (b[a[i]] == 1) {
      				count++;
      			}
      
      		}
      
posted @ 2020-05-17 18:33  rghli(林洁颖)  阅读(140)  评论(0编辑  收藏  举报