• 第四次实验


    项目一

    项目分析

    -通过 邻接矩阵 实现无向图并保存边和顶点,实现添加以及删除结点的方法,添加和删除边的方法

    • 方法包括实现size()和isEmpty(),广度优先迭代器,深度优先迭代器

    • 广度优先迭代器以及深度优先迭代器在书本的417页给出了算法示例。

    • 那么,什么是邻接矩阵呢?----邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩阵是的row和col表示的是1....n个点。对于无向图 如果顶点b1和b2是连接的,那么在二维矩阵中matrix[b1,b2]和matrix[b2,b1]位置的值置为1,如果是有向图b1指向b2,那么 matrix[b1,b2]=1,matrix[b2,b1]=0;下面用一个例子表示无向图和有向图的邻接矩阵;

    • 这里有优秀博客的解释范例
      图片名称

    • 代码运行结果
      图片名称

    项目二

    项目分析

    • 通过 十字链表 实现无向图,并将边和顶点保存,实现在添加和删除结点的方法,添加和删除边的方法

    • 方法包括实现size()和isEmpty(),广度优先迭代器,深度优先迭代器

    • 十字链表又是什么呢?-----十字链表(Orthogonal List)是有向图的另一种链式存储结构。该结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的。用十字链表来存储有向图,可以达到高效的存取效果。

    • 下面是邻接表和十字链表的关系
      图片名称
      图片名称

    • 代码运行结果
      图片名称

    项目三

    项目分析

    • pp19.9 的题目是:创建计算机网络路由系统,输入网络中点到点的线路,以及每条线路使用的费用,系统输出网络中各点之间最便宜的路径,指出不相通的所有位置

    • 娄老师给的PPT给出了计算机网络中传输的问题讲解

    • 本项目的核心在于求得顶点到任意点的最短路径,提供的常用算法有戴克斯特拉,及Dijikstra算法。该算法中需要引入一个辅助向量D,它的每个分量D[i]存放当前所找到的从源点到各个终点的最短路径长度。

    • Dijkstra算法求最短路径的过程:

      1. 令 S={v},其中v为源点,并设定D[i]的初始值为
        D[i] = |v,vi|
      1. 选择顶点vj使得
        D[j] = min {D[i]}
    • 并将顶点vj并入到集合S中。

      1. 对集合V-S中所有顶点vk,若D[j]+|vj,vk| < D[k],则修改D[k]的值为
        D[k]=D[j]+|vj,vk|
    • 4)重复操作2)3)共n-1次,由此求得从源点到所有其他顶点的最短路径
      图片名称

    • 代码运行结果
      图片名称

  • 相关阅读:
    flash 3d基础学习
    3d中的镜头
    [转]Android Canvas 切割 clipRect
    绘制球形
    绘制圆筒
    stage3d学习笔记1
    (转)Region.Op效果解析
    游戏中的镜头
    无向网的最小生成树——Prim算法(转)
    最短路径之——Dijkstra算法(转)
  • 原文地址:https://www.cnblogs.com/shuailinzhen/p/7861931.html
Copyright © 2020-2023  润新知