图遍历问题

图遍历问题分为四类

遍历完所有的边而不能有重复,即所謂“一笔画问题”或“欧拉路径”;

遍历完所有的顶点而没有重复,即所谓“哈密尔顿问题”。

遍历完所有的边而可以有重复,即所谓“中国邮递员问题”;

遍历完所有的顶点而可以重复,即所谓“旅行推销员问题”。

对于第一和第三类问题已经得到了完满的解决,而第二和第四类问题则只得到了部分解决。

第一类问题就是研究所谓的欧拉图的性质,而第二类问题则是研究所谓的哈密尔顿图的性质。

图的基本知识

顶点:图中的数据元素称为顶点

有向图:有方向的图叫有向图

无向图:没有方向的图叫无线图

完全图:有n(n-1)/2条边的无向图称为完全图

有向完全图:具有n(n-1)条弧的有向图称为有向完全图

稀疏图:有很少条边或弧的图称为稀疏图,反之称为稠密图

权:与图的边或弧相关的数叫做权(weight)

例子1:

           图的深度遍历

Time Limit: 1000MS

Memory limit: 65536K

题目描述

请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。

输入

输入第一行为整数n(0 < n < 100),表示数据的组数。 对于每组数据,第一行是两个整数k,m(0 < k < 100,0 < m < k*k),表示有m条边,k个顶点。 下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。

输出

输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果。

示例输入

1
4 4
0 1
0 2
0 3
2 3

示例输出

0 1 2 3【】

原文地址:https://www.cnblogs.com/Roni-i/p/8608569.html

时间: 2024-10-07 10:32:09

图遍历问题的相关文章

图遍历的演示

[问题描述] 很多涉及图上操作的算法都是以图的遍历操作为基础的.试写一个程序,演示无向图的遍历操作. 以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历.以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集. 借助于栈类型(自己定义和实现)将深度优先遍历用非递归算法实现.(非递归算法的实现为选做内容,如能实现,适当加分) [测试数据] 在<数据结构>教材中任意找两个无向图作为测试数据. [实现提示] 设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个

树遍历以及图遍历的方法

树遍历: 根节点=D=Degree  左节点=L=Left  右节点=R=Right 1.前序遍历(DLR) 2.中序遍历(LDR) 3.后序遍历(LRD) 4.层次遍历(一层一层的遍历) 前三种遍历均可用递归或者非递归的方式来遍历. 层次遍历可以设一个队列,把元素放在队列里,每次输出队头元素. 图遍历: 1.广度优先遍历 也称为广度优先搜索(BFS)(类似于树的层次遍历) 2.深度优先遍历 也称为深度优先搜索(DFS) (类似于树的前序遍历) 这两种遍历均可用来判断图的连通性. 原文地址:ht

实验报告图遍历的演示

#include <stdio.h> #include <stdlib.h> #define MAX 30 #define N 30 #define M 10 #define NULL 0 typedef struct ebox{ int ivex,jvex; struct ebox *ilink,*jlink; }ebox,*pebox; typedef struct vexbox{ char *data; pebox firstedge; }vexbox,*pvexbox; t

数据结构作业--图遍历

数据结构老师布置一道题目,憋了一天才搞出来,还是练习地不够啊!不过班里面其他人搞出来的也不多啊! 题目 PS:头文件是老师给的. 一.请建立一个空项目,添加GraphTraverseTest.cpp源文件和AdjMWGraph.h.AdjLWGraph.h.CreatAdjWGraph.h.AdjWGraphApp.h.SeqList.h.SeqQueue.h等六个头文件.其中: AdjMWGraph.h头文件采用邻接矩阵实现带权有向图数据结构:    AdjLWGraph.h头文件采用邻接表实

算法学习笔记 二叉树和图遍历—深搜 DFS 与广搜 BFS

图的深搜与广搜 马上又要秋招了,赶紧复习下基础知识.这里复习下二叉树.图的深搜与广搜.从图的遍历说起,图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其经典应用走迷宫.N皇后.二叉树遍历等.遍历即按某种顺序访问"图"中所有的节点,顺序分为: 深度优先(优先往深处走),用的数据结构是栈, 主要是递归实现: 广度优先(优先走最近的),用的数据结构是队列,主要是迭代实现: 对于深搜,由于递归往往可以方便的利

算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS

图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其经典应用走迷宫.N皇后.二叉树遍历等.遍历即按某种顺序訪问"图"中全部的节点,顺序分为: 深度优先(优先往深处走),用的数据结构是栈, 主要是递归实现. 广度优先(优先走近期的).用的数据结构是队列.主要是迭代实现. 对于深搜.因为递归往往能够方便的利用系统栈,不须要自己维护栈.所以通常实

路径寻找(隐式图遍历)

八数码难题 参考代码:(刘汝佳<算法竞赛入门经典>,源代码在首页置顶区的代码仓库 编码和解码 //无权图上的最短路,可用BFS求解 #include<bits/stdc++.h> using namespace std; const int MAX = 1000000; typedef int State[9] ; // 定义"状态"类型 State st[MAX],goal;//状态数组 int dis[MAX];//距离数组 //ps: 如果需要答应路径,

41 蛤蟆的数据结构笔记之四十一图的遍历之深度优先

41  蛤蟆的数据结构笔记之四十一图的遍历之深度优先 本篇名言:"对于我来说 , 生命的意义在于设身处地替人着想 , 忧他人之忧 , 乐他人之乐. -- 爱因斯坦" 上篇我们实现了图的邻接多重表表示图,以及深度遍历和广度遍历的代码,这次我们先来看下图的深度遍历. 欢迎转载,转载请标明出处: 1.  原理 图遍历又称图的遍历,属于数据结构中的内容.指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次.图的遍历操作和树的遍历操作功能相似.图的遍历是图的一种基本操作,图的许多其它

C#与数据结构--图的遍历

C#与数据结构--图的遍历 8.2 图的存储结构 图 的存储结构除了要存储图中各个顶点的本身的信息外,同时还要存储顶点与顶点之间的所有关系(边的信息),因此,图的结构比较复杂,很难以数据元素在存储区 中的物理位置来表示元素之间的关系,但也正是由于其任意的特性,故物理表示方法很多.常用的图的存储结构有邻接矩阵.邻接表.十字链表和邻接多重表. 8.2.1  邻接矩阵表示法 对于一个具有n个顶点的图,可以使用n*n的矩阵(二维数组)来表示它们间的邻接关系.图8.10和图8.11中,矩阵A(i,j)=1