因为后面即将发布的大量有关“图”的算法与源代码都需要用到下面的这些基础数据,为避免大家去下载,特意先发布于此。
一、图(Graph)的基础知识
图(Graph)是一组对象的图示,其中一些对象对通过链接连接。互连对象由称为顶点的点表示,连接顶点的链接称为边。
形式上,图是一对集(V,E),其中V是顶点集,E是连接顶点对的边集。
图形数据结构
数学图可以用数据结构表示。我们可以使用顶点数组和二维边数组来表示图。在继续之前,让我们先熟悉一些重要的术语−
顶点− 图的每个节点都表示为一个顶点。在以下示例中,带标签的圆表示顶点。因此,A到G是顶点。我们可以使用下图所示的数组来表示它们。这里A可以通过索引0来标识。B可以使用索引1等进行识别。
边− 边表示两个顶点之间的路径或两个顶点之间的线。在以下示例中,从A到B、B到C等的线表示边。我们可以使用二维数组来表示数组,如下图所示。这里AB可以表示为第0行第1列的1,BC可以表示为第1行第2列的1,依此类推,其他组合保持为0。
邻接关系− 如果两个节点或顶点通过边相互连接,则它们是相邻的。在以下示例中,B与A相邻,C与B相邻,依此类推。
路径− 路径表示两个顶点之间的边序列。
二、图的基本操作
以下是图形的基本主要操作:
添加顶点 — 将顶点添加到图形中。
添加边 — 在图形的两个顶点之间添加边。
显示顶点 — 显示图形的顶点。
遍历 — 深度优先遍历,宽度优先遍历;
布局 — 图的布局算法
三、图的相关数据
1、节点
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
namespace Legalsoft.Truffer.Algorithm
{
/// <summary>
/// 图的结点(坐标)信息
/// </summary>
public class Node
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; } = 0;
/// <summary>
/// X坐标
/// </summary>
public double X { get; set; } = 0.0;
/// <summary>
/// Y坐标
/// </summary>
public double Y { get; set; } = 0.0;
//public int Weight { get; set; } = 0;
/// <summary>
/// 默认构造函数
/// </summary>