学习目标

  • 讨论有向图和无向图
  • 定义带权图并讨论它们的应用
  • 定义图的广度优先遍历和深度优先遍历
  • 定义最小生成树
  • 讨论图的实现策略

书中图的基本定义

  • 图是由结点及结点间的连接组成的,结点称为顶点,结点间的连接称为边,顶点通常由名字或标号来表示,边由它所连接的顶点来表示。

无向图:

  • 无向图中,表示边的顶点对是无序的,例如,标记顶点A,B,C,D,一条边可以表示为(A,B)。无向图表示顶点对是无序的,所以边(A,B)意味着A和B之间的连接是双向的,在一个无向图中,(A,B)和(B,A)所代表的边的含义完全一样。
  • 如果图中两个顶点之间有边连接,则称这两个顶点是邻接的(邻居),自己连接到自己的边称为自循环或悬挂。
  • 含有最多条边的无向图称为完全图:Edges=(n-1)*n/2.
  • 路径是连接图中两个顶点的边的序列,路径长度为路径所含边的数目(顶点个数减一)
  • 如果无向图中任意两个顶点间都有路径,则无向图称为连通的。
  • 第一个顶点和最后一个顶点是同一个顶点且没有重复边的路径,称为一个环。

有向图

  • 顶点是有序对的图称为有向图,有向图的每条边都带有一个移动方向,这个方向有顶点的顺序指定,所以(A,B)表示只允许从A移动到B,但不允许另一个方向的移动。
  • 树就是图,树的大部分工作是针对有向树。有向树是一个有向图。

带权图

  • 带权图每条边都对应一个权值,也称之为网络,根据需要带权图可以是无向也可以是有向的。
  • 对于带权图来说,使用由起始结点,结束点及权构成的三元组来表示每个边。

图的实现

书中关于图的介绍,感觉有点颠倒,书中先介绍常用的图算法:遍历和判断最小路径等,而后才是介绍了图的实现策略。所以在一开始的时候有点懵的。

邻接表

  • 因为树就是图,所以实现图的最好方式也许是采用实现树已用过的机制。使用一组结点,每个结点包含一个元素及可能和链接其他结点的一个链表。
  • 代码实现:僵硬!还未实现这个!请看下一个。

邻接矩阵

  • 为了更好的表示结点与结点之间的关系,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法。我们假设一个二维数组,它的顶点有:A ,B,C,D,E,那么数组中的一个元素aij不仅体现出了结点vi和结点vj的关系,而且aij的值正可以表示权值的大小。

如果要让aij的值表示权值的话只需要将数值重新赋值就行。

  • 算法实现

王彪-20162321-Java程序设计与数据结构2nd-第十周学习总结的更多相关文章

  1. 20172306《Java程序设计与数据结构》第十周学习总结

    20172306<Java程序设计>第十周学习总结 教材学习内容总结 本章主要的讲的是集合有关的知识: 1.集合与数据结构 - 集合是一种对象,集合表示一个专用于保存元素的对象,并该对象还 ...

  2. 王彪-20162321《程序设计与数据结构2nd》-第十一周学习总结与实验报告

    邻接矩阵实现 例图 分析 变量 需要一个链表来保存数据-即保存结点 需要一个二维数组来保存每个变得权值,有则填入具体数值,没有则用0 定义一个保存边个数的值 函数方法 得到图中边的个数 得到结点的数据 ...

  3. 20172306 2018-2019-2 《Java程序设计与数据结构》第八周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第八周学习总结 教材学习内容总结 堆 堆是具有两个附加属性的一棵二叉树 它是一个完全树 对每一结点,它小于或等于其左 ...

  4. 20172306 2018-2019-2 《Java程序设计与数据结构》第七周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第七周学习总结 教材学习内容总结 概述 二叉查找树是一种含有附加属性的二叉树,即其左孩子小于父结点,而父结点又小于或 ...

  5. 20172306 2018-2019-2 《Java程序设计与数据结构》第六周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第六周学习总结 教材学习内容总结 概述(了解一下树的一些概念) 树是一种非线性结构.树由一个包含结点和边的集构成,其 ...

  6. 20172306《Java程序设计与数据结构》第八周学习总结

    20172306<Java程序设计>第8周学习总结 教材学习内容总结 第十章最开始自己看的时候,没怎么看懂,等老师讲完之后,又看了一遍,就理解了很多.第十章主要学习了以下几点: 1.对于几 ...

  7. 20172306 《Java程序设计与数据结构》第七周学习总结

    20172306<Java程序设计>第七周学习总结 教材学习内容总结 这一章的标题是继承.主要学习了有关继承的相关知识.其中在这五节中,我学到了以下几点: 1.继承主要表达的是" ...

  8. 20172306《java程序设计与数据结构》第六周学习总结

    20172306<Java程序设计>第六周学习总结 教材学习内容总结 第八章关键学习了数组的相关内容.我觉得主要分一下几点: 1.索引是从0开始,要区分好索引值和个数值.0的索引处是第一个 ...

  9. 20162323周楠《Java程序设计与数据结构》第六周总结

    学号 2016-2017-2 <程序设计与数据结构>第六周学习总结 教材学习内容总结 继承:从已有类派生一个新类,是面向对象程序设计的一个特点 在Java中只支持单继承,不支持多继承 继承 ...

  10. 20162323周楠《Java程序设计与数据结构》第五周总结

    20162323周楠 2016-2017-2 <程序设计与数据结构>第五周学习总结 教材学习内容总结 1.面向对象软件设计的基本部分是确定程序中应该创建哪些类: 2.面向对象程序设计的核心 ...

随机推荐

  1. ActiveMQ监听消息并进行转发,监听不同的mq服务器和不同的队列

    工作中刚接触mq消息业务,其实也就是监听一下别的项目发送的消息然后进行对应的转发,但是监听的mq会有多个,而且转发的地址也可能有多个,这里就使用spring集成的方式!记录一下实现方式: 监听多个mq ...

  2. go 指针类型

    变量和内存地址 每个变量都有内存地址,可以说通过变量来操作对应大小的内存 var a int32 a = fmt.Printf(“%d\n”, a) fmt.Printf(“%p\n”, &a ...

  3. 82.Linux之VMware10.0.4_x64安装

    一直想写linux前期软件的一些安装配置的博客,因为中途去弄CORDIC算法了,今天上午刚弄好,除法,乘累加,三角函数等都能达到要求,所以现在来写这块的博客,CORDIC博客就不写了,因为网上很多.V ...

  4. linux调试工具glibc的演示分析

    偶然中发现,下面的两端代码表现不一样 void main(){ void* p1 = malloc(32);       free(p1); free(p1); // 这里会报double free ...

  5. 那些代表性的HTTP状态码,你还只知道404吗?快来看看吧【转】

    前言 在网络上发送请求后,经常会根据请求的状态码去判断请求的成功失败与否,常见的状态码有200,404,500. 不过你以为HTTP请求的状态码就只有这么几个么?其实是远远比这个多的. 今天这篇文章我 ...

  6. Django 2.0.3安装-压缩包方式

    OS:Windows 10家庭中文版,CPU:Intel Core i5-8250U Python版本:Python 2.7,Python 3.6 Django版本:2.0.3(最新2.0.5) 解压 ...

  7. less常用样式集,清除浮动、背景自适应、背景渐变、圆角、内外阴影、高度宽度计算。

    .clear-float() { content: ''; display: block; clear: both; height:; } //伪元素清除浮动 .after-clear() { &am ...

  8. Linux学习笔记:cp和scp复制文件

    拷贝文件和文件夹,在Linux上通过cp命令来实现. cp:用户当前机器的文件复制 scp:通过ssh本机和其他机器的文件复制 secure copy cp a.txt b.txt scp a.txt ...

  9. MIT6.006Lec03:插入排序,归并排序,递归树

    MIT6.006是算法导论课,Lec03主要讲插入排序,归并排序,以及分析方法(递归树)等. 插入排序,可以分为线性插入排序.二分插入排序,区别在于当把数组中某元素插入到前面的有序列表中时,前者遍历, ...

  10. 包装印刷行业裕同集团&易普优APS项目顺利验收!

    裕同集团&易普优APS项目于2017年7月启动,2018年1月上线,2018年5月初项目顺利验收!历时十个月,龙岗作为裕同集团APS的先锋试点项目,同时也是业务最复杂的分公司,双方联合团队紧密 ...