java 无向图子图_无向图的连通子图
/*
* CC.h
*
* Created on: 2014年6月3日
* Author: zhongchao
* 计算无向图中的连通分量
*/
#ifndef _CC_
#define _CC_
#include "Graph.h"
class CC
{
private:
bool* mark;
int* _id;
int num;
Graph* _graph;
hash_set nodes;
public:
CC(Graph* graph, int n);
~CC();
bool connected(int a, int b); //节点a和b是否在同一连同子图中
int count();
int id(int a); //节点a所属于的连同子图的索引
void dfs(Graph* graph, int n);
void printAllCC();
};
void dfsTest();
#endif /* _CC_*/
/*
* CC.cpp
*
* Created on: 2014年6月3日
* Author: zhongchao
*/
/*
* DFS.cpp
*
* Created on: 2014年6月1日
* Author: zhongchao
*/
#include "CC.h"
CC::CC(Graph* graph, int n): _graph(graph),num(0)
{
mark = new bool[graph->v()];
for(int i = 0; i < graph->v(); i++)
{
mark[i] = false;
}
_id = new int[graph->v()];
hash_set nodes = graph->getNodes();
for(hash_set::iterator it = nodes.begin(); it != nodes.end(); it++)
{
if(mark[*it] != true)
{
dfs(graph, *it);
num++;
}
}
}
void CC::dfs(Graph* graph, int n)
{
mark[n] = true;
_id[n] = num;
vector ns = graph->getEdges(n);
for(vector::iterator it = ns.begin(); it != ns.end(); it++)
{
if(mark[*it] == true) continue;
dfs(graph, *it);
}
}
bool CC::connected(int a, int b)
{
return _id[a] == _id[b];
}
int CC::id(int a)
{
return _id[a];
}
void CC::printAllCC()
{
hash_set nodes = _graph->getNodes();
for(hash_set::iterator it = nodes.begin(); it != nodes.end(); it++)
{
cout<
}
}
int CC::count()
{
return num;
}
CC::~CC()
{
delete[] mark;
}
void ccTest()
{
string path("/home/zhongchao/worksapce/cpp/ComputeAlgorithms/data/tinyG.txt");
Graph* graph = new Graph(path);
int n = 0;
CC* cc = new CC(graph, n);
cc->printAllCC();
}
/*
* Run.cpp
*
* Created on: 2014年5月25日
* Author: zhongchao
*/
#include "Graph.h"
#include "Prim.h"
#include "Dijkstra.h"
#include "DFS.h"
#include "BFS.h"
#include "CC.h"
void bfsTest();
void dfsTest();
void ccTest();
void dfsTopological();
int main(int argc, char** argv)
{
ccTest();
return 1;
}
3 连通子图如下
java 无向图子图_无向图的连通子图相关推荐
- 图的基本概念辨析,包括连通图、极大连通子图、连通分量、强连通图、极大强连通子图等
概念(1-4)都是针对无向图的 1.连通图 图中从一个顶点到达另一顶点,若存在至少一条路径,则称这两个顶点是连通着的.例如图 1 中,虽然 V1 和 V3 没有直接关联,但从 V1 到 V3 存在 ...
- 获得无向图连通子图_讲透学烂二叉树(一):图的概念和定义—各种属性特征浅析...
树和图的概念 图是一种特殊的数据结构,由点和边构成,它可以用来描述元素之间的网状关系,这个网状没有顺序,也没有层次,就是简单的把各个元素连接起来. 图的概念和基本性质 图(graph):图(graph ...
- Python 计算两个连通子图距离_复杂网络分析之python利器NetworkX
点击蓝字 关注我们 1 networkx介绍 networkx在2002年5月产生,是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分 ...
- 数据结构——图:极大小连通子图、图的存储结构、图的遍历
图的基本概念: 极大连通子图就是连通分量. 极大连通子图与连通分量在无向图(undirected graph)这个前提下是等同的概念. 极小连通子图: 减去任何一条边就不再连通. 不管树还是二叉树:n ...
- 无向简单图怎么判断_无向图基础
无向图是一种最简单的图模型,在这种图模型中,边仅仅是两个顶点之间的连接.我们用v-w的记法表示连接v和w的边,而w-v是这条边的另一种表示方法. 特殊的图.自环:即一条连接一个顶点和其自身的边: 连接 ...
- java判断图中两点是否连通_连通分量(求有几个连通分量+判断是否两点连通+是否为强联通图 相应例子)...
参考博客: https://blog.csdn.net/jinzk123/article/details/52231527 https://blog.csdn.net/qq_40998706/arti ...
- 判断图的连通子图个数
题目要求 给定一个具有n个顶点.m条边的无向图G,假设项点的编号为1-n.基于深度优先搜索算法,编写程序 求无向图G连通子图的个数. 输入格式: 第一行两个整数n, m,分别表示图G的顶点数和边的数量 ...
- 连通、连通分量、极大连通子图
首先,明确概念间的关系 (连通.连通分量 = 极大连通子图)∈ 无向图 (强连通.强连通分量 = 极大强连通子图)∈ 有向图 连通.强连通 连通:无向图中,顶点v可以到达顶点w,称v和w ...
- 极大连通子图与极小连通子图(带图讲解)
因为本人对于这一块知识存在疑惑,在学习了相关知识后将自己的理解分享给大家,如有错误,欢迎纠正. 首先我们先明确一下,极小连通子图与极大连通子图是在无向图中进行讨论的. 极大强连通子图是在有向图中进行讨 ...
最新文章
- git 常用命令_git常用命令的使用
- [ATF]-ARM级别/异常/状态切回时候的寄存器保存与恢复
- 【Python】find()函数居然还能指定搜索的起点和终点?
- SilverFoxServer出炉!!
- Spring boot(七):Spring boot+ mybatis 多数据源最简解决方案
- 十强决赛即将拉开帷幕!TECHSPARK星星之火IT创新大赛诚邀您观赛
- python三种变量方式_python2.x 3种变量形式调用
- [Python]网络爬虫(六):一个简单的百度贴吧的小爬虫
- Mysql排序添加名词_记面试中问到的MySQL的SQL调优问题
- 报表开发者必看:别加班了,快用这个工具让领导看到你的工作成果
- 修改windows cmd f2快捷_解放你的右手,实测12个超好用的自带快捷键
- linux 内核模块 proc,Linux 内核模块 proc文件系统.pdf
- 解决NetworkOnMainThreadException
- The proxy server received an invalid response from an upstream server.
- id3-sklearn算法实现(西瓜数据集)
- [渝粤教育】陕西师范大学《教育社会学》作业
- 2. webpack 处理 css less sass scss styl 资源
- 【jiasuba】让Win7系统下的硬盘不在狂闪的诀窍
- 赏析角度有哪些_几种分析的角度
- 雷军:相信自己,一往无前(MI10周年演讲精彩语录)