精华内容
下载资源
问答
  • 非连通无向图有28条边,至少有多少顶点链式队列的队头和队尾指针分别为f和r,则判断队空的条件为 在用单链表表示的链式队列Q中 完全图公式 n个端点的完全图有n个端点以及n(n − 1) / 2条边,以Kn表示 例题...
    展开全文
  • 在一具有n个顶点的无向完全中,包含________条边,在一具有n个顶点 完全中,包含________条边
  • 证明每个有n个顶点的连通图都至少有n-1条边 证明:不妨设G是无向连通图(若G为有向图,可忽略边的方向讨论对应的底图)。 设G中顶点为v1, v2, ..., vn。由连通性,必存在与v1相邻的顶点,不妨设其为v2(否则,可...

    Show that every connected graph with n vertices has at least n − 1 edges.
    证明每个有n个顶点的连通图都至少有n-1条边

    证明:不妨设G是无向连通图(若G为有向图,可忽略边的方向讨论对应的底图)。

    设G中顶点为v1, v2, ..., vn。由连通性,必存在与v1相邻的顶点,不妨设其为v2(否则,可重新编号),连接v1与v2得边e1,还是由连通性,在v3, v4, ..., vn中必存在与v1或v2相邻的顶点,不妨设为v3,将其连接得边e2,续行此法,vn必与v1, v2, ..., vn-1中的某顶点相邻,得新边\large e_{(n-1)},由此可见G中至少有n-1条边。

     

    而有关正整数n的命题通常可以用数学归纳法加以证明

    归纳基础:0、1显然成立。

    归纳假设:带有k个顶点的连通图至少具有k-1条边。

    下面我们来证明带有k+1个顶点的连通图至少具有k条边。我们把k+1个顶点分成两部分,一部分含有k个顶点,一部分只有一个顶点,对于k个顶点的连通图我们知道它至少具有k-1条边,我们只需要这样构造:把那个孤立的顶点与k个顶点中的任何一个连接形成一条边,那么显然带有k+1个顶点的连通图至少具有k条边。

    展开全文
  • ** 数组表示法建立图,建立邻接矩阵,求顶点的度 ...input_7_1.txt,每一组数据表示一图,至少包含3结点,第一行为节点数,第二行开始为无向图各个节点的邻接表示,最后一行是空行。以下为例: ...

    **

    数组表示法建立图,建立邻接矩阵,求顶点的度

    要求

    **
    对给定的任意连通无向图各个结点,使用数组表示法创建该图。其中无向图结点(0,1,3)表示该节点为0,与其相邻的结点为1和3。
    创建该图后根据邻接矩阵计算每个结点的度,并输出。
    文本输入
    input_7_1.txt,每一组数据表示一个图,至少包含3个结点,第一行为节点个数,第二行开始为无向图各个节点的邻接表示,最后一行是空行。以下为例:
    4
    0 1 3
    1 0 2 3
    2 1 3
    3 0 1 2
    文本输出
    output_7_1.txt,每一组输入数据对应一行输出数据,按输入结点的数据依次输出各个结点的度,如上述输入对应的输出为
    2 3 2 3
    如果输入数据有错,则输出ERROR
    多组输入数据则对应多行输出结果

    源码如下:

    #include<iostream>
    #include<fstream>
    #include<stdio.h>
    #include<string>
    using namespace std;
    #define max 100                                   
    #define infinity (~(1<<(sizeof(int)*8-1)))         //正无穷
    struct graph
    {
    	int Vnum;                   //顶点数
    	int edge[max][max];         //边数组
    	int str[20][20],cou[20];
    };
    //创建无向图
    void creategraph(graph *&g,int &A)
    {
    	int *f=new int, e, i=0, j=0, k,count=0;
    	char ch, d = 0; string s;
    	
    	//读文本
    	ofstream ofile;
    	ofile.open("output_7_1.txt", ios::out | ios::app);
    	ifstream ifile("input_7_1.txt", ios::in);
    	for (int a = 0; a < A;a++)
    	getline(ifile, s);          //因为一共有5组测试,getline清理前面的数据,
    	                           //不影响下一组数据的读取
    	ifile >> noskipws;                              //不跳过空格,换行,作为判断结束的条件
    	ifile >>g->Vnum>>ch;      
    	A += g->Vnum;
    	A++;
    	//把数据存到二维数组里
    	for (int a = 0; a < g->Vnum;a++)
    	{	while (d != '\n'&&!ifile.eof())
    		{
    			ifile >> g->str[i][j] >> d;
    			j++;
    			count++;
    		}
    		g->str[i][j] = '\0';
    		g->cou[i] = count;
    		d = 0; count = 0;
    		i++;
    		j = 0;
    	}
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->cou[i]; j++)
    			cout << g->str[i][j] << " ";
    		cout << endl;
    	}
    
    	//对邻接矩阵初始化
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->Vnum; j++)
    		{
    			if (i == j)
    				g->edge[i][j] = 0;
    			else
    				g->edge[i][j] = infinity;
    		}
    	}
    
    	//建立邻接矩阵
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->cou[i]; j++)
    		{
    			e = g->str[i][j];
    			for (k = 0; k < g->Vnum; k++)
    			{
    				if (g->str[k][0] == e&&k!=i)
    				{
    					g->edge[i][k] = 1;
    					
    				}
    			}
    		}
    	}
    	//判断是否邻接矩阵对称
    	int b = 0;
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->Vnum; j++)
    		{
    			if (g->edge[i][j] != g->edge[j][i])
    			{
    				ofile << "ERROR" << endl;
    				
    				exit(0);
    				system("pause");
    			}
    			
    		}
    		
    	}
    	ifile.close();
    	ofile.close();
    }
    //展示邻接矩阵
    void showgraph(graph *&g)
    {
    	cout << "邻接矩阵为:" << endl;
    	cout << '\t';
    	for (int i = 0; i < g->Vnum; i++)
    		cout <<g->str[i][0] << '\t';
    	cout << endl;
    	for (int i = 0; i < g->Vnum; i++)
    	{
    		cout << g->str[i][0] << '\t';
    		for (int j = 0; j < g->Vnum; j++)
    		{
    			if (g->edge[i][j] == infinity)
    				cout << "∞" << '\t';
    			else
    				cout << g->edge[i][j] << '\t';
    		}
    		cout << endl;
    	}
    	cout << "--------------------------------" << endl;
    }
    void add(graph *g)
    {
    	ofstream ofile;
    	ofile.open("output_7_1.txt", ios::out | ios::app);
    	int *d=new int,total=0;            //记录度的大小
    	for (int i = 0; i < g->Vnum; i++)
    	{
    		for (int j = 0; j < g->Vnum; j++)
    		{
    			if (g->edge[i][j] != infinity)
    				total += g->edge[i][j];
    			d[i] = total;
    		}
    		total = 0;
    	}
    	for (int i = 0; i < g->Vnum;i++)
    	ofile << d[i]<<" ";
    	ofile << endl;
    	ofile.close();
    }
    int main()
    {
    	static int A = 0;                      //读文本使用来清空前面数据
    	for (int i = 1; i <=5 ; i++)
    	{
    		graph *g = new graph;
    		creategraph(g, A);
    		showgraph(g);
    		add(g);
    	}
    	system("pause");
    }
    
    
    展开全文
  • 向图和无向图

    万次阅读 多人点赞 2019-04-13 18:51:19
    全部由无向构成图称为无向图(Undirected Graph),全部由构成图称为无向图(Directed Graph)。向,顾名思义,方向。本文中顶点Vertex(V),Edge(E) (1)出度和入度:如图D,以点A为例子,在所有...

    有向图、无向图

    有向图和无向图是我们常用到的术语,本文属于简单的科普帖。

    全部由无向边构成图称为无向图(Undirected Graph),全部由有向边构成图称为有向图(Directed Graph)。有向,顾名思义,有方向。本文中顶点Vertex(V),边Edge(E)

    (1)出度和入度:如图D,以点A为例子,在所有与A关联的边中,以A为起点的边的条数称为出度。而入度则刚好相反,以A为终点的边的条数则称为入读。其中,入度+出度,我们称为A的度。注意特殊情况:如图:A有一个自环,起点和终点都是自己,此时出度算一度,入度也算一度。如图:A的出度为3,入度也为2,A的度的5。

    在这里插入图片描述
    (2)描述图的邻接矩阵和关联矩阵
    【邻接矩阵】

    定义:
    设无向图G=(V,E),其中顶点集V=v1,v2,…,vn,边集 E=e1,e2,…,eε。用aij表示顶点vi与顶点vj之间的边数,可能取值为0,1,2,…,称所得矩阵A=A(G)=(aij)n×n为图G的邻接矩阵。邻接矩阵可以描述有向图和无向图。

    示例,求图所示简单图的邻接矩阵?
    在这里插入图片描述
    解:根据定义,可求得该无向图的邻接矩阵为
    在这里插入图片描述

    邻接矩阵的存储特点:
    (a)无向图的邻接矩阵一定是一个对称矩阵,有向图不一定是。
    *(b)邻接矩阵所需的存储空间值域只与顶点数有关系。
    (c)用邻接矩阵存储图,容易判断两个点之间是否有边。
    (d)如果一个有向图的邻接矩阵为三角矩阵(主对角线为0),则它的拓扑排序一定存在。
    *(e)小技巧:
    无向图:邻接矩阵的第i行或者第i列的非零元素的个数正好是第i个顶点Vi的度;
    有向图:邻接矩阵的第i行的非零元素个数正好是第i个顶点Vi的出度,第i列非零元素的个数正好是第i个顶点Vi的入度。

    【关联矩阵】

    定义:
    设任意图G=(V,E),其中顶点集V=v1,v2,…,vn,边集E=e1,e2,…,eε。用mij表示顶点vi与边ej关联的关系,可能取值为0,1,-1,称所得矩阵M(G)=(mij)n×ε为图G的关联矩阵。
    在这里插入图片描述
    mij 表示i行j列,探究顶点Vi和边Ej之间的关系,形成下列的关联矩阵
    示例:
    在这里插入图片描述
    关联矩阵
    在这里插入图片描述

    连通图、连通分量

    连通图:无向图中,若从顶点u到顶点v有路径,称为u,v是连通的。若图中任意两个顶点均是连通的,则称为连通图。
    连通分量:无向图中极大连通子图称为连通分量。

    强连通图、强连通分量

    强连通图:有向图中,若从顶点u到顶点v有路径,称为u,v是连通的。若图中任意两个顶点均是连通的,则称为强连通图。
    连通分量:无向图中极大连通子图称为强连通分量。特:强连通图只有强连通分量(本身),非强连通图有多个强连通分量。

    另外,本文参考路了下面两位作者的优秀博客
    https://blog.csdn.net/Hanging_Gardens/article/details/55670356
    https://blog.csdn.net/legendaryhaha/article/details/83049101

    展开全文
  • 3.无向图顶点数的关系

    万次阅读 2013-10-09 14:27:11
    3.(2分)我们使用一6元组来表示6节点的无向图顶点数,请问以下哪些6元组是可能的组合()  A、  B、  C、  D、 答:BD 题中的顶点数估计是度数,无向图,e为数,0 而AC中的总度数为1+2...
  • 给你一 n 点,m 条边无向图,求至少要在这的基础上加多少条无向边使得任意两点可达~  输入描述: 第一行两正整数 n 和 m 。 接下来的m行中,每行两正整数 i 、 j ,表示点i与点j之间一条无向...
  • PTA上的题目答案绝大多数都是c或者c++的,很少Java的,这是我和一学C的朋友一起写出来的,分享给大家 先给大家看看结果, 代码如下,我也有些不太理解的地方,欢迎大家留言,一起讨论 import java.io....
  • 数学归纳法: 1个顶点为0 2个顶点为1 满足1=2*1/2 ...加入第k个顶点时 与前k-1个顶点产生k-1条边 则边数一共为k^2/2-3k/2+1+k-1=k^2/2-k/2=k*(k-1)/2 即当n=k时也满足条件 因此一具有N个顶点的无向...
  • 题目7.27 采用邻接表存储结构,编写一判别无向图中任意给定的两个顶点之间是否存在一长度为k的简单路径的算法(一路径为简单路径指的是其顶点序列中不含有重现的顶点)。 void DFS(ALGraph G, int i, int j,int...
  • 给你一个无向图,问你最少删掉几点,使这图成不连通。 解题报告: 概念 (1)一具有 N 个顶点的图,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通,  而去掉 K 个顶点后的图不连通则称 G 是连通的, ...
  • #include <iostream> #include <queue> using namespace std; typedef struct ArcNode { int adjvex; struct ArcNode* nextarc; } ArcNode; typedef struct VNode { int data;... .
  • 设某无向图顶点数和边数分别为n和e,所有顶点的度数之和为d,则e=
  • 思想:G是不带权的无向连通,一条边的长度为1,因此,求距离顶点v的最远的顶点,即求距离顶点v的边数最多的顶点。利用广度优先遍历算法,从v出发进行广度遍历,类似于从顶点v出发一层层地外扩展,到达j, …,...
  • (数据结构)无向图顶点度的计算

    万次阅读 2018-06-12 19:52:42
    假设无向图G采用邻接矩阵存储,设计算法求出图G中每个顶点的度。 输入 第一行为一整数n,表示顶点的个数(顶点编号为0到n-1)。接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示...
  • 无向图顶点之间的所有最短路径

    千次阅读 2016-03-09 11:55:27
    无向图 顶点之间 所有最短路径
  • 以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j)。 问题描述:试基于图的深度优先搜索策略编写一程序,判别以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j)。 输入:顶点个数,...
  • SWUSTOJ #1058 无向图顶点度的计算

    千次阅读 2019-04-27 21:51:58
    假设无向图G采用邻接矩阵存储,设计算法求出图G中每个顶点的度。
  • 假设无向图G采用邻接矩阵存储,设计算法求出图G中每个顶点的度。 输入 第一行为一整数n,表示顶点的个数(顶点编号为0到n-1)。接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示...
  • 无向图的非递归深度优先搜索需借用一堆栈保存被访问过的顶点,以便回溯查找已被访问结点的被访问过的邻接点。 ②访问起始顶点v0,visited[v0]标记1,v0入栈,指针p指向v0对应的表首结点; ③从左到右扫描p所指的...
  • 点后会使该无向图的连通分量(连通块)数变多,那么就称该顶点为该无向图的割点。 求无向图的连通块数的基本思路是,开一 vis 数组表示顶点是否已访问,然后遍历所有 顶点,如果当前顶点还没有被访问,那么就...
  • 目录题目题解答案2018 无向连通最少包含多少条边 题目 问题描述 一包含2019结点的无向连通,最少包含多少条边?...一个有n个顶点的无向连通最多有nn-1)/2条边,最少有n-1条边。 答案 2018 ...
  • 由邻接矩阵画向图、无向图

    万次阅读 2017-07-19 10:39:08
    由邻接矩阵画向图、无向图 由邻接矩阵画向图的逻辑如下: 设邻接矩阵的行(列)数为N,矩阵中非零元素的个数为M,画布宽为W、高为H 1、向图顶点数为N数为M,问题转化为:画正N边形的所有顶点、以及顶点...
  • 设A、B是无向图G的两不相邻的顶点,最少要删除多少个顶点才使得A和B不再连通?答案是P(A,B)。 关于无向图G顶点连通度K(G)与顶点独立轨之间的关系。 Menger定理: K(G) = |V(G)| - 1 当G是完全图。
  • 向图和无向图以及拓扑的复习

    万次阅读 2018-10-14 17:43:36
    向图和无向图的定义 1)关于向图,百科中是这样描述的:一个有向图D是指一有序三元组(V(D),A(D),ψD),其中ψD为关联函数,它使A(D)中的每一元素(称为或弧)对应于V(D)中的一有序元素(称为顶点或点...
  • 判断无向图向图是否回路

    万次阅读 多人点赞 2014-03-06 00:22:47
    连接顶点u到它的某一祖先顶点v的),即在DFS对顶点进行着色过程中,若出现所指向的顶点为黑色,则此顶点是一已经遍历过的顶点(祖先),出现了后向边,若完成DFS后,则回路;另外,中变的个数E  2...
  • 判断无向图/向图中是否存在环

    千次阅读 2019-02-03 11:54:50
    本文主要针对如何判断向图/无向图中是否存在环的问题进行简单...首先,利用DFS判断无向图中是否换的原理是:若在深度优先搜索的过程中遇到回(即指向已经访问过的顶点),则必定存在环。 所以说,是否存在环...
  • 那么在有向图中要判断v到w是否可达,我们只需要以v为起点遍历一遍图,看能否遍历到w即可。当然在遍历时可以自己适当的加一些限制条件,提高算法效率,如:不需要遍历完所有顶点,只要遍历到w就可以结束遍历。所以...
  • 判断一图是否无向图 向图

    千次阅读 2017-10-24 16:29:34
    一、无向图: 方法1: 如果存在回路,则必存在一子图,是一环路。环路中所有顶点的度>=2。...n算法:  ... 第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复... 由于m条边n个顶点。  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,151
精华内容 18,460
关键字:

n个顶点的无向图有多少条边