图论
图
Whisper_yl
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
7-34 任务调度的合理性(拓扑排序)
假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系...原创 2018-09-07 23:52:54 · 1988 阅读 · 0 评论 -
LeetCode: 785. 判断二分图
给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边:graph[i]中不存在i,并且graph[i]中没有重复的值。示例 1:输入: [[1,3], [0,2], [1,3], ..原创 2020-07-16 12:29:37 · 241 阅读 · 1 评论 -
Dijkstra(迪杰斯特拉)算法
#include<iostream>#include<memory.h>#define Longest_Length 0X0FFFFFFusing namespace std;int main(){ //Initialize int n, k, start, finish, weight; cout << "Please input the...原创 2019-01-15 17:38:29 · 262 阅读 · 0 评论 -
Bellman-Ford算法
此算法是解决单源最短路径的一种算法,Dijkstra算法虽然也是,但是有自己的局限性,就是不能存在负权边。这是为什么呢?因为Dijkstra实际上是贪心法,在每一步都选择最优解,即每次都选择最近的一个点,但是负权边的加入会打破这一性质,就使得Dijkstra算法失效了。为了解决这一问题,可以使用这里的Bellman-Ford算法,对每条边进行松弛。#include<ios...原创 2020-03-03 17:57:06 · 268 阅读 · 0 评论 -
Floyd算法
Floyd算法是用于解决多源最短路径问题的方法,可以处理带有负权边的有向图或者无向图,其实质是动态规划。 原理:代码:void Floyd(){ for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ D[i][j] = G[i][j]; path[i][j] = -1...原创 2020-03-03 18:07:04 · 348 阅读 · 0 评论 -
二分图最大匹配
二分图定义:如果一个图的所有顶点可以被分为X和Y两个集合,并且所有边的两个顶点恰好一个属于集合X,另一个属于集合Y,即每个集合内的顶点没有边相连,那么此图就是二分图。 我们把一条边成为一个匹配,现在的问题就是求二分图的最大匹配数。这里我们引入增广路,增广路的本质就是一条路径,它的起点和终点都是未被配对的点。要想解决问题,就是要找出最多的增广路。 我们的...原创 2020-03-03 20:48:41 · 255 阅读 · 0 评论
分享