C#数据结构_图
顶点的度=顶点的入度+顶点的出度。
顶点 v 的入度是指以该顶点 v 为弧头的弧的数目;顶点 v 的出度是指以该顶点 v 为弧尾的弧的数目。
简单路径:一条路径上顶点不重复出现。
回路:第一个顶点和最后一个顶点相同的路径。
简单回路:除第一个顶点和最后一个顶点相同其余顶点都不重复的回路。
连通:在无向图中,若两个顶点之间有路径。
连通图:无向图 G 中任意两个顶点之间都是连通的。
强连通图:在有向图中,若图中任意两个顶点之间都存在从一 个顶点到另一个顶点的路径。
最小生成树:边的权值总和最小的生成树。
构造有 n 个顶点的无向连通网的最小生成树必须 满足以下三个条件:
(1)构造的最小生成树必须包括 n 个顶点;
(2)构造的最小生成树有且仅有 n-1 条边;
(3)构造的最小生成树中不存在回路。
构造最小生成树的方法:普里姆(Prim);克鲁斯卡尔(Kruskal)算法。
普里姆(Prim):
假设 G=(V,E)为一无向连通网,其中,V 为网中顶点的集合,E 为网中 边的集合。设置两个新的集合 U 和 T,其中,U 为 G 的最小生成树的顶点的集 合,T 为 G 的最小生成树的边的集合。普里姆算法的思想是:令集合 U 的初值 为 U={u1}(假设构造最小生成树时从顶点 u1 开始),集合 T 的初值为 T={}。从 所有的顶点 u∈U 和顶点 v∈V-U 的带权边中选出具有最小权值的边(u,v),将顶 点 v 加入集合 U 中,将边(u,v)加入集合 T 中。如此不断地重复直到 U=V 时, 最小生成树构造完毕。此时,集合 U 中存放着最小生成树的所有顶点,集合 T中存放着最小生成树的所有边。

克鲁斯卡尔(Kruskal)算法:对一个有 n 个顶点的无向连通网,将图中的 边按权值大小依次选取,若选取的边使生成树不形成回路,则把它加入到树中; 若形成回路,则将它舍弃。如此进行下去,直到树中包含有 n-1 条边为止。

最短路径:狄克斯特拉(Dikastra)算法:设置 两个顶点的集合 S 和 T,集合 S 中存放已找到最短路径的顶点,集合 T 中存放当 前还未找到最短路径的顶点。初始状态时,集合 S 中只包含源点,设为 v0,然 后从集合 T 中选择到源点 v0 路径长度最短的顶点 u 加入到集合 S 中,集合 S 中 每加入一个新的顶点 u 都要修改源点 v0 到集合 T 中剩余顶点的当前最短路径长 度值,集合 T 中各顶点的新的最短路径长度值为原来的当前最短路径长度值与 从源点过顶点 u 到达该顶点的新的最短路径长度中的较小者。此过程不断重复, 直到集合 T 中的顶点全部加到集合 S 中为止。
C#数据结构_图的更多相关文章
- c_数据结构_图_邻接表
课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...
- c_ 数据结构_图_邻接矩阵
程序主要实现了图的深度遍历和广度遍历. #include <stdio.h> #include <stdlib.h> #include <string.h> #de ...
- java数据结构_笔记(4)_图
图一.概念.图: 是一种复杂的非线性数据结构.图的二元组定义: 图 G 由两个集合 V 和 E 组成,记为:G=(V, E) 其中: V 是顶点的有穷非空集合,E 是 V 中顶点偶对(称为边)的有穷 ...
- 利用python+graphviz绘制数据结构关系图和指定目录下头文件包含关系图
作为一名linux系统下的C语言开发,日常工作中经常遇到两个问题: 一是分析代码过程中,各种数据结构互相关联,只通过代码很难理清系统中所有结构体的整体架构,影响代码消化的效率; 二是多层头文件嵌套包含 ...
- python数据结构之图的实现
python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html 下面简要的介绍下: 比如有这么一张图: A -> B ...
- hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- python数据结构之图的实现方法
python数据结构之图的实现方法 本文实例讲述了python数据结构之图的实现方法.分享给大家供大家参考.具体如下: 下面简要的介绍下: 比如有这么一张图: A -> B A ...
- cb03a_c++_数据结构_顺序容器_STL_stack
/*cb03a_c++_数据结构_顺序容器_STL_stack堆栈:LIFO--Last In First Out后进先出,用于系统程序设计自适应容器(容器适配器),不是独立的容器,是一个适配器栈适配 ...
- cb02a_c++_数据结构_顺序容器_STL_list类_双向链表
/*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表实例化std::list对象在list开头插入元素在list末尾插入元素在list中间插入元素,插入时间恒定,非常快.数组:中间 ...
随机推荐
- C#中的Contains与IndexOf的区别
C#中要判断一个字符串是否包含另一个字符串,常用的两种方法是 str.Contains和str.IndexOf 这两个方法的区别是: Contains是找指定字符串是否包含一个字串,返回值的bo ...
- vue-cli - webpack 打包兼容 360 浏览器和 IE 浏览器
index.html增加一行代码 <head> <meta charset="utf-8"> <meta name="viewport&qu ...
- 浅谈CMDB
CMDB和运维自动化 一.运维 运维,指的是对已经搭建好的网络,软件,硬件进行维护.运维领域也是细分的,有硬件运维和软件运维 硬件运维主要包括对基础设施的运维,比如机房的设备,主机的硬盘,内存这些物理 ...
- VMWare虚拟机:三台虚拟机互通且连网
虚拟机:三台虚拟机互通且连网 目录 一.虚拟机 相关软件 虚拟机安装 Linux系统安装 1) 使用三个Linux虚拟机 多台虚拟机互通且上网 1) 多台配置注意事项 2) 虚拟机软件的配置 3) W ...
- (11)ASP.NET Core 中的配置一(Configuration)
1.前言 ASP.NET Core在应用程序上引入Microsoft.Extensions.Configuration配置,可以支持多种方式配置,包括命令行配置.环境变量配置.文件配置.内存配置,自定 ...
- JS面向对象编程(三):非构造函数的继承
一.什么是"非构造函数"的继承? 现在有一个对象,叫"中国人". var Chinese = { ...
- 10分钟了解分布式CAP、BASE理论
CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理. ...
- PID算法资料【视频+PDF介绍】
最近一直有网友看到我的博客后,加我好友,问我能不能给发一些PID的资料,今天找了一些资料放到百度网盘上,给大家下载: 视频资料 链接:https://pan.baidu.com/s/12_IlLgBI ...
- Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及区别
本篇博客主要讲解Map接口的4个实现类HashMap.Hashtable.LinkedHashMap.TreeMap的使用方法以及三者之间的区别. 注意:本文中代码使用的JDK版本为1.8.0_191 ...
- mysql主从配置详解(图文)
最近工作不是很忙,把以前整理的mysql数据库的主从配置过程记录一下,有不足之处,请各位多多纠正指教 #环境配置#master IP:192.168.46.137 slave IP:192.168.4 ...