首页 > 其他分享 >图论入门题

图论入门题

时间:2023-07-27 20:23:14浏览次数:39  
标签:图论 入门 短路 Dijkstra 距离 算法 枚举 节点

图论简介:

图(Graph)

图可以被表示为 G={V, E},其中 V={v1, ... , vN}表示n个点,E= {e1, ... , eM}表示m条边。

常用的储存方式包括邻接表和邻接矩阵。

连通分量(Connected Component):各节点间至少存在一条边可以连通。

最短路算法:

Dijkstra算法是一种求单源最短路的算法,即从一个点开始到所有其他点的最短路。其基本原理是:每次新扩展一个距离最短的未被扩展的点,更新与其相邻的点的距离。当所有边权都为正时,由于不会存在一个距离更短的没扩展过的点,所以这个点的距离永远不会再被改变,因而保证了算法的正确性。不过根据这个原理,用Dijkstra求最短路的图不能有负权边,因为扩展到负权边的时候会产生更短的距离,有可能就破坏了已经更新的点距离不会改变的性质。Dijkstra算法每一次操作分两步:

(1)找到所有未被更新过的节点中,与源点距离最短的点k。

(2)用该节点更新所有点与源节点的距离:

Floyd算法与前两种算法不同,它是求解顶点之间两两最短距离。其基本思想是,如果节点i.k的距离加上k,j的距离小于i,j的距离,则更新i,j的距离。该思想与动态规划的思想类似。需要注意的是,在枚举的过程中,需要先枚举k,再枚举ij。Floyed算法时间复杂度为O(N3)。虽然该复杂度与枚举起始节点的Dijkstra算法一致,但是Floyed算法常数复杂度比Dijkstra小很多。

拓补排序:

拓扑排序是对一个有向图构造拓扑序列,解决工程是否能顺利进行的问题。构造时有 2 种结果:

  1. 此图全部顶点被输出:说明说明图中无「环」存在, 是 AOV 网
  2. 没有输出全部顶点:说明图中有「环」存在,不是 AOV 网

AOV(Activity On Vertex Network) :一种 有向 无回路 的图。

求解方法:每次删除一个入度边个数为 0 的点,并刷新其他点的出度边个数

 

标签:图论,入门,短路,Dijkstra,距离,算法,枚举,节点
From: https://www.cnblogs.com/CLGYPYJ/p/17585918.html

相关文章

  • 正点原子Ubuntu入门015---shell脚本入门
    一、什么是shell脚本shell脚本类似于Windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件shell脚本提供数组、循环、条件判断功能。shell脚本一般是Linux运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握基本的命令即可二、shell脚本的写法shell脚......
  • Systemd 入门教程
    Systemd入门教程:命令篇Systemd是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置。本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。一、由来历史上,Linux的启动一直采用init进程。下面的命令用来启动服务。$sudo/et......
  • 正点原子Ubuntu入门014---Makefile基本语法
    一、Makefile规则格式目标……:依赖文件集合(Tab键)命令1(Tab键)命令2(Tab键)命令3……  先判断依赖文件是否存在,存在才依次运行命令 main:main.oinput.ocalcu.ogcc-omainmain.oinput.ocalcu.omain.o:main.cgcc-cmain.cinput.o:input.c......
  • Redis从入门到放弃(2):数据类型
    在Redis中,数据以键值对的形式存储。Redis支持五种主要的数据类型,每种类型都有不同的用途和特性。本文将介绍Redis的五种数据类型:字符串(string),哈希(hash),列表(list),集合(set)和有序集合(sortedset)。1.字符串(String)介绍字符串是Redis中最基本的数据类型。每个键都可以关联一个字符串......
  • [图论]强连通分量
    强连通分量一、强连通分量1.DFS森林和强连通分(1)DFSForestTreeEdge指树边BackEdge指连向祖先的边(返祖边)ForwardEdge指连向子孙的边(前向边,它主要是在搜索的时候遇到了一个已经访问过的结点,但是这个结点并不是当前结点的祖先。)CrossEdge指连向树其他分支的边(横......
  • 图论选做
    P3465[POI2008]CLO-Toll[基环树][并查集][提高+/省选-]考虑依照题意,只要有一个环并且图连通,就能满足每个点在一些边定向后,都有为1的入度。即选择一些边构成一个外向基环树,就可以满足题意solution:先跑出一棵生成树找一条非树边(这样就能找到一个环),并对这个环定向然后依......
  • 正点原子Ubuntu入门012---Linux C编程
    一、编写C语言程序Ubuntu中编写和编译是分开的,一般使用vim编辑器编写程序,或者使用vscode编写;使用gcc进行编译设置vim编辑器,一个Tab=4字节使用vi打开文件/etc/vim/vimrc,在此文件最后输入以下代码setts=4  设置vim编辑器,显示行号 测试案例:1#include......
  • SpringMVC从入门到精通深入学习路线?
    SpringMVC从入门到精通深入学习路线?如果你想深入学习SpringMVC,以下是一个从入门到精通的学习路线:1.Java基础知识:了解Java语言的基本语法和特性,包括面向对象编程(OOP),异常处理等。这将为你后续学习SpringMVC打下基础。2.Servlet和JSP:学习Servlet和JSP的基本概念和用法。了解Serv......
  • Mybatis从入门到精通深入学习路线?
    Mybatis从入门到精通深入学习路线?1.MyBatis基本概念和原理:-学习MyBatis的基本概念,包括SqlSessionFactory、SqlSession、Mapper等的作用和关系。-了解MyBatis的工作原理,包括SQL解析、参数映射、结果集映射等核心流程。2.环境搭建和配置:-下载MyBatis和相关依赖,并配置开发环境......
  • MyBatisPlus入门案例
              ......