算法7-1:图论简单介绍

无向图

无向图由顶点和边组成。边用于连接两个顶点。

以下这张地图就是无向图的一个样例。

OPTEproject

OPTEproject的目标就是绘制整个互联网的样子。

下图是2010年的互联网。互联网也是无向图的一个样例。这张图是用LGL软件进行绘制的。有兴趣的同学可以研究一下:http://www.opte.org/

术语

在图论中,有些术语是必需要知道的,不然没办法学习。

顶点:图中最主要的元素

边:连接两个顶点的线就是边

路径:由一个顶点到还有一个顶点所经过的边

环:从一个顶点出发,经过一些边。最后到达原先的顶点。那么这个路径就是环。

连接部件:全部相互连接的顶点和边就是一个连接部件。一个图中可能会有多个连接部件。以下这张图中就有三个连接部件。

图论问题

和图论有关的问题在这里罗列一下。

最短路径:从一个顶点到还有一个顶点的最短路径是什么?

路径问题:从一个顶点能不能到达另外一个顶点呢?

是否有环:一张图中是否含有环?

欧拉旅行问题:从一个顶点出发。每条边仅仅能经过一次。要求经过全部的边,请问该怎么走?

哈密尔顿旅行问题:从一个顶点出发,每一个顶点仅仅能经过一次。要求经过全部的顶点。请问该怎么走?

连接问题:有没有办法可以连接全部的顶点呢?

MST:最小生成树。

怎样用最短的边连接全部的顶点?

双向连接:是否存在一个关键的顶点。使得它的移除会造成图断裂成两个部件?

是否平面:是否能让图在一个平面中表示,并且全部的边互不交叉?

图的同构:两张图是否等价?

下图是哥尼斯堡七桥问题。

从不论什么一个岛屿開始,每一个桥仅仅能走一次,要求经过全部的桥,该怎么走?当时哥尼斯堡无法求解这个问题,并且他也不是著名的人物,于是怀着渺茫的希望请教著名数学家欧拉,给他写了一封信。万万没想到非常快就得到了欧拉的回应。欧拉不但攻克了这个问题。并且还创立了一套图论。

原文地址:https://www.cnblogs.com/mqxnongmin/p/10546503.html

时间: 2024-10-14 18:57:57

算法7-1:图论简单介绍的相关文章

[转]缓存、缓存算法和缓存框架简单介绍

引言 我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案.可是他们不知道缓存是怎么构建的.或者没有告诉你应该採用什么标准去选择缓存框架. 在这边文章,我们会去讨论缓存.缓存算法.缓存框架以及哪个缓存框架会更好. 面试 "缓存就是存贮数据(使用频繁的数据)的暂时地方,由于取原始数据的代价太大了.所以我能够取得快一些." 这就是 programmer one (programmer one 是一个面试者)在面试中的回答(一个月前,他向公司提交了简历,想要应聘要求

算法笔记_071:SPFA算法简单介绍(Java)

目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个顶点,称为起点,求取起点到其它所有顶点之间的最短距离,其显著特点是可以求含负权图的单源最短路径,且效率较高.(PS:引用自百度百科:spfa是求单源最短路径的一种算法,它还有一个重要的功能是判负环(在差分约束系统中会得以体现),在Bellman-ford算法的基础上加上一个队列优化,减少了冗余的松弛

算法7-2:图论接口

本节介绍如何在程序中表示一张图. 顶点 在程序中,顶点用整数表示就可以了.因为整数可以作为数组的下标,也可以作为哈希表的键.所以用整数是最方便的. 当然,在一张图中可能会出现一些异常情况,比如自己连接自己,两个顶点之间存在多个边.这些异常情况也是要考虑的. 接口 为了表示一张图,就要创建专门的对象来保存图.这个对象起名叫做Graph好了.它的接口是下面这样的. public class Graph { // 创建一个带有V个顶点的图 Graph(int V); // 从输入流创建一张图,输入流的

Zookeeper简单介绍

转自:ZooKeeper学习第一期---Zookeeper简单介绍 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术--分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果.这时,有人可能会说这个简单,写一个调 度算法就轻松解决了.说这句话的人,可能对分布式系统不是很了解,所以才会出现这种误解.如果这些进程全部是跑在一台机上的

TensorFlow简单介绍和在centos上的安装

##tensorflow简单介绍: TensorFlow? is an open source software library for numerical computation using data flow graphs.https://www.tensorflow.org/TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从图

MPI编程简单介绍

第三章MPI编程 3.1 MPI简单介绍 多线程是一种便捷的模型,当中每一个线程都能够訪问其他线程的存储空间.因此,这样的模型仅仅能在共享存储系统之间移植.一般来讲,并行机不一定在各处理器之间共享存储,当面向非共享存储系统开发并行程序时,程序的各部分之间通过来回传递消息的方式通信.要使得消息传递方式可移植,就须要採用标准的消息传递库.这就促成的消息传递接口(Message Passing Interface, MPI)的面世,MPI是一种被广泛採用的消息传递标准[1]. 与OpenMP并行程序不

LVS简单介绍

  简单介绍 lvs(Linux virtual server)是由章文嵩博士主导开发的工作在四层(传输层)的负载均衡软件. 3种负载方式 1.Virtual Server via Network Address Translation(VS/NAT) 通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器:真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程. 2.Virtual Server via IP Tunn

JVM内存各个区域分工简单介绍

JVM内存各个区域简单介绍: 程序计数器:程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 在使用多线程时,为了线程切换后能恢复到正确的执行位置,每条线程都需要有个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这类内存区域为"线程私有"的内存.如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址:如果正在执行的是Native方法,这个计数器值则为空(Undefined). 此内存区域是唯一一个在Java

斯坦福机器学习公开课---1.机器学习简单介绍

斯坦福机器学习公开课---1. 机器学习简单介绍 1.1  介绍 机器学习流行原因--- 1)      由人工智能AI发展来的一个领域 2)      是计算机需要开发的一项新的能力,涉及工业和基础学科中的很多内容. 应用学习算法,如设计自主机器人,计算生物学和其他被机器学习影响的领域. 1.2  机器学习应用 1)        数据挖掘 网站点击流数据.电子医疗记录.计算生物学和工程学. 2)        无法手动进行编程的领域 自动直升机.手写体识别.自然语言处理NLP和计算机视觉.