邻接矩阵(以顶点为中心),比较稀疏时,采用邻接表;图的两种遍历

对于边比较稠密的图,可以采用邻接矩阵(以顶点为中心)的方式表示,而边比较稀疏时,采用邻接表的结构更合适。两种都不能直观表达哪两个点相连或者最短路径是什么。

深度优先遍历类似于树的先根序遍历。与树不同的是,它需要对已经访问过的节点添加标记以免被重复遍历。

public class Depth {
/**
 * 对k号节点深度遍历
 * @param a
 * @param color
 * @param k 节点
 */
public static void depthTraversal(int[][] a,int[] color,int k){
System.out.println(k);
color[k]=1;//0未染色,1染色表示遍历过
//找到与k连接的
for(int i=0;i<a[k].length;i++){
if(a[k][i]==1&&color[i]==0){
depthTraversal(a,color,i);
}
}
}
/**
 * @param args
 */
public static void main(String[] args) {
//邻接矩阵标记是否相连,1表示相连,0表示不连
int[][] a={
{0,1,1,1,0},
{1,0,1,1,1},
{1,1,0,1,1},
{1,1,0,0,1},
{1,1,1,1,0}
};

//需要一个数组来记录染色信息,
int[] color=new int[a.length];//int数组内部默认值为0
depthTraversal(a,color,0);
}
}

广度优先遍历类似于对树进行逐层遍历。它按照与开始节点的距离由近到远地进行遍历。当然,因为图的特点,也需要对遍历过的节点做标记。

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Breadth {

/**
 * @param args
 */
@SuppressWarnings("unchecked")
public static void main(String[] args) {
//邻接矩阵标记是否相连,稠密的图,我们的写法可以是邻接表
int[][] a={
{0,1,1,1,0,1},
{1,0,1,1,1,0},
{1,1,0,0,1,1},
{1,1,0,0,1,0},
{0,1,1,1,0,0},
{1,0,1,0,0,0}
};

//广度遍历
List lst=new ArrayList();//等待遍历
Set set=new HashSet();//保存已遍历的节点

lst.add(0);//先添加个0节点
while(true){
if(lst.isEmpty())break;
int node=(Integer)lst.get(0);
System.out.println(node);
set.add(node);
lst.remove(0);
for(int i=0;i<a[node].length;i++){
//相连,未遍历,lst中不含有该节点(可能这个节点的孩子中存在下个节点的孩子)
if(a[node][i]==1&&set.contains(i)==false&&lst.indexOf(i)==-1){
lst.add(i);
}
}
}
}

}

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, 矩阵
, 稀疏矩阵
, color
, 节点
, 图的遍历
, 顶点
, param
, 稀疏表示 协作表示
, 稀疏矩阵 压缩存储
, 稀疏矩阵数组link
遍历表
邻接表深度优先遍历、邻接表的深度优先遍历、邻接表的广度优先遍历、邻接表广度优先遍历、邻接表遍历,以便于您获取更多的相关知识。

时间: 2024-12-03 18:18:47

邻接矩阵(以顶点为中心),比较稀疏时,采用邻接表;图的两种遍历的相关文章

在图采用邻接表存储时,求最小生成树的Prime算法的时间复杂度为?

问题描述 在图采用邻接表存储时,求最小生成树的Prime算法的时间复杂度为? 在图采用邻接表存储时,求最小生成树的Prime算法的时间复杂度为? A o(n^2) B o(n^3) C o(n) D o(n+e) 答案是o(n+e)...不理解..求过程 解决方案 不对,这题应该选A 求顶点的入度的时间复杂度为O(e)*n=O(n*e) 遍历顶点的时间复杂度是O(n^2) 相加是O(n^2+n*e)=O(n^2) 解决方案二: 详细的解释http://www.cskaoyan.com/redir

html页面显示年月日时分秒和星期几的两种方式_javascript技巧

Js代码 复制代码 代码如下: //-----------------------------方式一--------------------------------------------- <html> <head> <script type="text/javascript"> function startTime(){ var today=new Date(); var strDate=(" "+today.getYear(

acm-邻接矩阵能进行深搜么。现在会邻接表的深搜,还用把邻接矩阵转化为邻接表吗

问题描述 邻接矩阵能进行深搜么.现在会邻接表的深搜,还用把邻接矩阵转化为邻接表吗 邻接矩阵如果能进行的话.麻烦大神给点代码啊.小白..如题...... 解决方案 void dfs(int i){ visited[i]=1; for(int j=0;j<n;j++){ if(G[i][j]==1&&visited[j]==0){ dfs(j); } } } 解决方案二: 这是用邻接矩阵求最小生成树的,题主看下能否帮的上忙,如果能帮的上,希望可以采纳 #include #include

数据中心两种常用流量模型运用mininet的实现

数据中心两种常用流量模型运用mininet的实现 编者按:在网络性能评估中一个巨大的挑战就是如何生成真实的网络流量,还好可以通过程序来创造人工的网络流量,通过建立测试环境来模拟真实的状况.本文就以数据中心网络为目标场景,来在mininet仿真环境中尽可能地还原数据中心内部的真实流量情况.目前有两种常用的流量模型: 随机模型:主机向在网络中的另一任意主机以等概率发送数据包 概率模型:在网络中,编号为m的主机分别以概率Pt .Pa .Pc .向主机编号为(m+i).(m+j).(m+k)的主机发送数

图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)

图(Graph)是一种非线性结构 图的特点(多对多),顶点之间的关系是任意的,图中任意两个顶点之间都可能相关,顶点的前驱和后继个数无限制. 图:数据元素间存在多对多关系的数据结构,加上一组基本操作构成的抽象数据类型. 图的基本术语   顶点:图中的数据元素. 弧:若 <v, w>∈VR,则 <v, w> 表示从 v 到 w 的一条弧,且称 v 为弧尾,称 w 为弧头,此时的图称为有向图.  G1 = (V1, A1)          V1 = {v1, v2, v3, v4} A

数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)

本文是[数据结构基础系列(7):图]中第4课时[图的邻接矩阵存储结构及算法]和第5课时[图的邻接表存储结构及算法],并为后续内容的实践提供支持. 图的存储结构主要包括邻接矩阵和邻接表,本算法库提供存储结构的定义,以及用于构造图存储结构.不同结构的转换及显示的代码.算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:graph.h,包含定义图数据结构的代码.宏定义.要实现算法的函数的声明: #ifndef GRAPH_H_INCLUDED #define GRAPH_H_INCLUDED

Flink运行时之生成作业图

生成作业图 在分析完了流处理程序生成的流图(StreamGraph)以及批处理程序生成的优化后的计划(OptimizedPlan)之后,下一步就是生成它们面向Flink运行时执行引擎的共同抽象--作业图(JobGraph). 什么是作业图 作业图(JobGraph)是唯一被Flink的数据流引擎所识别的表述作业的数据结构,也正是这一共同的抽象体现了流处理和批处理在运行时的统一. 相比流图(StreamGraph)以及批处理优化计划(OptimizedPlan),JobGraph发生了一些变化,已

邻接矩阵与邻接表

// 邻接矩阵 #include<stdio.h> #include<string.h> #define MAXN 100 int Edge[MAXN][MAXN]; int main() { // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); int m,n,i,j,id,od,u,v; while(scanf

图片-请问:用glassfish,jsp连接数据库,运行时出现错误如图,是什么原因?

问题描述 请问:用glassfish,jsp连接数据库,运行时出现错误如图,是什么原因? 解决方案 jsp 第2行 第77个字符处 解决方案二: jsp页面的第二行,有引用符号错误!