• 2019-2020-20182318 《数据结构与面向对象程序设计》第十周学习总结


    学号 2019-2020-20182318 《数据结构与面向对象程序设计》第十周学习总结

    教材学习内容总结

    与树类似,图由结点和这些结点之间的连接构成。

    • 顶点(vertice):就是结点。
    • 边(edge):就是这些结点连接起来的线段。
    • 路径(path):图中的一系列边,每条边连通两个顶点。
    • 路径的长度(length):是该路径中边的条数(或者是顶点数减去1)。
    • 环路(cycle):一种首结点和末结点相同且没有重边的路径。没有环路的图称为无环的(acyclic)。
    • 完全图(completegraph):含有最多条边的无向图
    无向图
    • 边没有方向的图称为无向图。
    • 含有最多条边的无向图称为完全图:Edges=(n-1)*n/2.
    • 如果无向图中任意两个顶点间都有路径,则无向图称为连通的。
    • 路径是连接图中两个顶点的边的序列,路径长度为路径所含边的数目(顶点个数减一)
    • 第一个顶点和最后一个顶点是同一个顶点且没有重复边的路径,称为一个环。
    • 如果图中两个顶点之间有边连接,则称这两个顶点是邻接的(邻居),自己连接到自己的边称为自循环或悬挂。
    有向图
    • 如果给图的每条边规定一个方向,那么得到的图称为有向图,其边也称为有向边。在有向图中,与一个节点相关联的边有出边和入边之分,而与一个有向边关联的两个点也有始点和终点之分。
    • 顶点是有序对的图称为有向图,有向图的每条边都带有一个移动方向,这个方向有顶点的顺序指定,所以(A,B)表示只允许从A移动到B,但不允许另一个方向的移动。
    • 树就是图,树的大部分工作是针对有向树。有向树是一个有向图。
    带权图
    • 每条边都对应一个权值的图成为带权图,有时也成为网络。
    • 无向,有向带权图
    常用的图的算法
    图的遍历:
    • 广度优先遍历:从一个顶点开始,辐射状地优先遍历其周围较广的区域。就如同树中的层次遍历。
    • 深度优先遍历:图的深度优先搜索,类似于树的先序遍历,所遵循的搜索策略是尽可能“深”地搜索图。就如同树中的前序遍历。
    测试连通性:
    • 连通性:图中的任意两个顶点之间都存在一条路径,则认为这个图是连通的。
    测试方法:
    • 从任意结点开始的广度优先遍历中得到的顶点数等于图中所含顶点数。
    • 生成树(spanning tree):包含图中所有顶点及图中部分边的一棵树。
    • 最小生成树(minimum spanning tree):所含边权值之和小于其他生成树的边的权值之和。
    Prim算法和Kruskal算法
    • 判定最短路径:
      判定起始顶点和目标顶点之间是否存在最短路径(两个顶点之间边数最少的路径)。
      在加权图中找到最短路径。(Dijkstra算法)
    图的实现策略:
    • 邻接列表:用一种类似于链表的动态结点来存储每个结点带有的边。这种链表称为邻接列表。
    • 邻接矩阵:用一种叫邻接矩阵的二维数组来表示任意两个顶点的交接情况。
    • 无向图的邻接矩阵一定是对称的,有向图的邻接矩阵不一定对称。
    • 十字链表法

    教材学习中的问题和解决过程

    代码调试中的问题和解决过程

    • 问题1:在编译时无法载入
    • 问题1解决方案:自己百度,更改了路径即可。
    • 问题2:在写有向图和无向图的代码时,图中删除结点操作,能否调用删除边的操作。
    • 问题2解决方案:我认为 ,删除结点,就是把结点与其他结点的边删除,然后结点个数减1。
      但是这样是有缺陷的。删除结点后,结点消失;但是删除边,边消失,节点依然存在,因此没有起到相同的效果。

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    上周没有考试,无错题

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20182333
      • 结对照片
      • 结对学习内容

    其他(感悟、思考等,可选)

    Java学习一刻也不能放松,安卓自学还要加强

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第十周 2812/200 2/2 26/20

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:20小时

    • 实际学习时间:18小时

    • 改进情况:下周多练习

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    图论算法之查找强分支
    图论算法之拓扑排序的简单代码
    图论算法之最短路径
    由函数符号找不到联想到的动态链接过程
    linux下cp覆盖原so文件时引起的段错误原因确定
    java 中能否使用 动态加载的类(Class.forName) 来做类型转换?
    为什么java不支持多重继承?
    static inner class 什么时候被加载
    thinking in java 读书笔记 --- overriding private method
    java List排序方法 Comparator和Comparable
  • 原文地址:https://www.cnblogs.com/1400694592qq/p/11963994.html
Copyright © 2020-2023  润新知