一、概念。
图: 是一种复杂的非线性数据结构。
图的二元组定义:
图G由两个集合V和E组成,记为:
G=(V, E) 其中: V 是顶点的有穷非空集合,
E是V中顶点偶对(称为边)的有穷集。
通常,也将图G的顶点集和边集分别记为V(G)和E(G) 。 E(G)可以是空集。若E(G)为空,则图G只有顶点而没有边。
有向图: 若图G中的每条边都是有方向的,则称G为有向图 (Digraph) 。
无向图: 若图G中的每条边都是没有方向的,则称G为无向图 (Undigraph) 。
完全图: 若无向图中的每个顶点之间存在着一条边,有向图中的每两个定点之间都存在着方向相反的两条边,则称此图为完全图。
邻接点:
有向图:如果<u, v>∈E, 则称v为u的邻接点,u为v的逆邻接点。边<u, v>与顶点u和v相关联,从u出发的边称为u的出边或邻接边,而指向顶点u的边称为u的入边或逆邻接边。
无向图:如果(u, v)∈E, 则称u与v互为邻接点。
顶点的度、入度与出度:
依附与某顶点v的边数称为度;
在有向图中,顶点v的入度指以顶点为终点的边的数目。出度指以顶点为起始点的边的数目;
连通图:无向图中,若一个顶点到另一个顶点有路径,则称这2个顶点是连通的。如果图中任意2顶点都是连通的,则称该图是连通图。
连通分量:指无向图的极大连通子图。
权:与图中边有关的实数。
带权图或网:边上具有权值的图。
二、抽象数据类型
ADT Graph{
数据对象D:具有相同性质的数据元素的集合。
数据关系R:R{<u,v>|(u,v∈D)}。
基本操作:
1 int getType();//返回图的类型
2 int getVexNum();//返回图的顶点数
3 int getEdgeNum();//返回图的边数
4 Iterator getVertex();//返回图的所有顶点
5 Iterator getEdge();//返回图的所有边
6 void remove(Vertex v);//删除一个顶点v
7 void remove(Edge e);//删除一条边e
8 Vertex insert(Vertex v);//添加一个顶点v
9 Edge insert(Edge e);//添加一条边e
10 //对图进行深度优先遍历
11 //对图进行广度优先遍历
12 //求顶点v到其他顶点的最短路径
。。。。。。。。。。。。。。。。。。。。。。
}
三、图的存储方法
1、邻接矩阵表示法:采用2个数组来表示图;一个是存储所有顶点信息的一维数组、一个是存储图中顶点之间关联关系的二维数组,这个二维数组称为邻接矩阵
对于无向图a,邻接矩阵是一个对称矩阵。第i行(i列)非0元素的个数正好是第i个顶点的度。
对于有向图b,第i行非0元素的个数是第i个顶点的出度、i列非0元素的个数是第i个顶点的入度。
邻接矩阵的不足:
(1)、由n个顶点构成的图中最多可以有n*n条边,但大多数情况下,边的数目远远达不到这个量级,邻接矩阵中大多数单元都是闲置的。
(2)、矩阵结构是静态的,大小N需要预先估计,然后创建N*N的矩阵,而图的规模往往是动态变化的,N估计过大会造成空间浪费,过小则造成空间不够用。
2、邻接表表示法:
链接表是图的一种动态的链式存储方法,类似于树的孩子链表表示法。
对于n个顶点、m条边的无向图,采用邻接表,需要n个表头节点和2m个边表节点。在边稀疏的情况下,要比使用邻接矩阵节省空间。
邻接表的特性:
在无向图中,顶点v的度为v的邻接表中表节点的个数。
在有向图中,顶点v的邻接表中边表的节点个数仅为v的出度。入度需要遍历这个邻接表或者从逆邻接表中获取。
判断2个顶点直接是否有边需要搜素2个顶点对应的邻接表。不如邻接矩阵方便。
- 大小: 28.1 KB
- 大小: 18.8 KB
分享到:
相关推荐
在C#编程中,"在图片上写字并保存类"是一个常见的图像处理任务,涉及到的主要知识点包括图形用户界面(GUI)设计、图像处理库、文本渲染以及文件操作。以下是对这些知识点的详细解释: 1. 图形用户界面(GUI)设计...
由于imwrite前使用编码在python3中已经不适用,可用imencode代替,以下代码是从视频中获取第2帧保存在中文文件夹下的实例: ...以上这篇python3下使用cv2.imwrite存储带有中文路径图片的方法就是小
在C#编程中,将图片存储到数据库并以二进制数据的形式保存,以及在DataGridView控件中显示这些图片,是一项常见的任务。这种操作在处理大量图像数据时尤其有用,例如在开发一个需要展示产品图片的电子商务应用或者...
XML数据库的数据存储方法分析XML数据库的数据存储方法分析XML数据库的数据存储方法分析XML数据库的数据存储方法分析XML数据库的数据存储方法分析XML数据库的数据存储方法分析XML数据库的数据存储方法分析XML数据库的...
这里可以根据远程图片地址,获取到图片并存储到本地或者本地服务器中,也可以并发把图片存储到本地数据库中
GAT 754-2008 电子数据存储介质复制工具要求及检测方法
标题中提到的是JavaScript实现将文件保存到本地的方法汇总,具体的知识点涵盖了以下三个方面: 1. 使用JavaScript保存文件到本地的基本方法和原理。在Web开发中,通常我们没有直接的方法去保存文件到用户的设备上,...
综上所述,“载图助手”为用户提供了一种简单高效的批量下载天猫及其他电商平台商品图片和视频的方法,并且具备自动分类保存的功能,极大地提高了工作效率,节省了宝贵的时间。无论是对于电商从业者还是需要批量处理...
在VB6(Visual Basic 6)中,保存窗口界面为图片涉及到的是图形处理和文件操作的知识。VB6提供了一些内置的API函数和控件,使得开发者可以捕获应用程序的当前视图并将其保存为图像文件。以下是实现这一功能的关键...
这段代码中,`Image.Save`方法接收两个参数:一个是保存图片的文件路径,另一个是`ImageFormat`对象,表示图片的格式。这里我们以JPEG格式为例,也可以根据需要替换为其他格式,如`ImageFormat.Png`、`ImageFormat....
在Cocos Creator中,保存图片到本地是...以上就是Cocos Creator中保存图片到本地的基本流程,涉及到Canvas、Render Texture、Blob和本地存储等多个知识点。在实际开发中,你可能需要根据具体需求进行适当的调整和优化。
5. **保存图片格式**:Delphi提供了多种方法保存图片,如BMP、JPEG、PNG等。我们可以使用`SaveToFile`函数配合相应的编码器库来实现。 下面是一个简单的示例代码,展示了如何将Delphi窗体保存为图片: ```delphi ...
### 如何将图片转换成二进制存储 在IT领域,特别是Web开发中,经常会遇到需要将图片存储到数据库的情况。通常来说,图片文件较大,不适合直接存储在数据库中,但有时为了方便检索或者实现某些特定功能(如在线查看...
在C#编程环境中,获取网络上的图片并保存到本地是一个常见的任务,这通常涉及到网络请求、数据流处理以及文件操作。下面将详细讲解这个过程,包括必要的知识点和步骤。 首先,你需要一个方法来发送HTTP请求获取图片...
在IT领域,数据库中存储图片通常以二进制流(Binary Stream)的形式进行,这是因为二进制流可以高效地处理图像数据,同时节省存储空间。本文将深入探讨如何实现从数据库中的二进制流转换为图片,并将其保存到本地...
在Android开发中,将网络上的图片保存到用户的本地相册是一项常见的需求。Android Studio作为官方推荐的集成开发环境,提供了方便的工具和方法来实现这一功能。本教程将详细讲解如何利用Android Studio将图片从网络...
C#存储图片到数据库的方法 C#语言提供了多种方式来存储图片到数据库中,下面我们来详细探讨其中的一种方法,即使用BinaryReader和SqlParameter来存储图片到数据库的Image字段中。 首先,我们需要了解存储图片...
在VB.NET中,Access数据库常被用于小型项目的数据存储,包括保存和读取不同类型的数据,如文本、数字,甚至图片。本教程将详细介绍如何利用VB.NET与Access数据库交互,实现图片文件的保存与读取,并将结果展示在...
使用SpringBoot-JPA进行自定义保存及批量保存功能 使用SpringBoot-JPA进行自定义保存及批量保存功能是指在Spring Boot应用程序中使用JPA(Java Persistence API)来实现自定义的保存和批量保存功能。JPA是一个Java ...