一、图的定义及其相关概念的介绍
定义:图是由顶点的有穷非空集合和顶点之间边的集合组成,表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
无向图:顶点与顶点之间的连接没有方向,比如v1-v2,既可以是v1->v2,也可以是v2->v1。(上图即为)
有向图:顶点与顶点之间的连接是有方向的,比如v1->v2,就明确指定顶点间的方向是从v1指向v2的。(带箭头)
带权图:顶点与顶点的连接的边上带上一个权值的无向图。
二、图的表示方式
图的表示方式有两种:邻接矩阵、邻接表
邻接矩阵:用一个二维数组存放顶点间关系(边或弧)的数据,这个二维数组称为邻接矩阵。
(点点之间如果存在连接则为1,否则为0)
邻接表:对图的每个顶点建立一个容器(n个顶点建立n个容器),第i个容器中的结点包含顶点Vi的所有邻接顶点。(与邻接矩阵相比减少了空间的浪费,因为一个图更加关注的是点与点之间是否连接)
三、快速入门案例(简单代码实现)
案例说明:在这个案例中,从视觉上的无向图用简单代码的方式呈现出图的邻接矩阵。通过输入图的结点数和结点名称,以及结点间的连接情况,来得到一个图的邻接矩阵。
package com.datou.graph;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @author datou
* @data 2020/8/11 - 18:01
* @target 图的表示
* 要求:输入结点及结点数,各个边的连接情况,输出邻接矩阵
*/
public class