NEFU离散数学实验特别篇1-树和图

这篇具有很好参考价值的文章主要介绍了NEFU离散数学实验特别篇1-树和图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

树相关概念

离散数学中,树是一种重要的数据结构,它是一种无向连通图,并且不存在环。下面是树的相关概念和公式:

1. 顶点数为n的树,边数为n-1。

2. 度数为k的树中有k个分支。

3. 一棵树中最多只有两个度数大于1的顶点,这些顶点称为树的端点或叶子,其余顶点称为分支或内部点。

4. 一棵有n个顶点的满二叉树,深度为h,共有2^(h+1)-1个结点,其中叶子结点数为2^h。

5. 一棵有n个顶点的完全二叉树,深度为h,共有2^h个结点,其中叶子结点数为2^(h-1)或2^h。

6. 一棵二叉树的深度为h,最多有2^h-1个结点,最少有h个结点。

7. 一棵n个结点的树,最多h=n-1,最小为1,树的高度即为树的深度。

8. 一个树森林(由若干棵树组成)中,所有树的节点数n等于边数m+森林中树的棵树。

9. 一棵树的生成森林中,边数为n-1。

10. 一颗有n个顶点的有根树,每个顶点都有度数,度数为0的顶点称为叶子顶点,度数不为0的顶点称为内部顶点,如果叶子顶点的数量为m,那么内部顶点的数量为n-m。

1. (程序题)2元完全正则树

NEFU离散数学实验特别篇1-树和图,算法学习笔记,算法

思路
P178概念题目啦
知道啥是2元完全正则树即可
概念拆分:
r元树:T的每个分支点至多有r个儿子
r元正则树:T的每个分支点恰好有r个儿子
r元完全正则树:T是r元正则树,且所有树叶的层数均为树高
树的层数:树根到任意一点的通路长度
树的高:最大层数

NEFU离散数学实验特别篇1-树和图,算法学习笔记,算法

可以发现,对于树高为h的2元完全正则树

顶点数=NEFU离散数学实验特别篇1-树和图,算法学习笔记,算法

边数=0+2+4+8+16....
树叶=

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
	int h;
	scanf("%d",&h);
	int edge=0;
	for(int i=1;i<=h;i++)edge+=1<<(i);
	printf("%d %d %d",(1<<(h+1))-1,edge,1<<h);
	return 0;
}

2. (程序题)树的边数

思路
2元正则树:T的每个分支点恰有2个儿子
其实想想最特殊的情况,2元完全正则树嘛(可以先看后面的一道题目)
可以发现m = 2 ( t − 1 ) m=2(t-1)m=2(t−1)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int t;
	while(~scanf("%d",&t)){
		printf("%d\n",2*(t-1));
	}
	return 0;
}

 图相关概念

离散数学是一门研究离散化的数学学科,图论是其中的一个分支,涉及到一些基本概念和公式,包括:

1. 图的基本概念:
- 顶点(vertex):图中的节点。
- 边(edge):连接顶点的线段。
- 无向图(undirected graph):图中的边没有方向。
- 有向图(directed graph):图中的边有方向。
- 加权图(weighted graph):图中的边带有权值。

2. 图的表示方法:
- 邻接矩阵:用一个矩阵来表示图中顶点之间的关系。
- 邻接表:用链表来存储图中顶点之间的关系。
- 关联矩阵:用一个矩阵来表示图中边与顶点之间的关系。

1. (程序题)度数序列

NEFU离散数学实验特别篇1-树和图,算法学习笔记,算法

思路
可以看一下书本P135的例6.3
根据握手定理:所有顶点度数之和为边数两倍。
那么有推论,奇度顶点的个数一定是偶数的。 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int n;
	while(~scanf("%d",&n)){
		int cnt=0;
		for(int i=1,x;i<=n;i++){
			scanf("%d",&x);
			if(x&1)cnt++;// 如果x是奇数,计数器cnt加1 
		}
		if(cnt&1)puts("no"); // 如果计数器cnt是奇数,输出"no"
		else puts("yes");
	}
	return 0;
}

2. (程序题)平面图 

NEFU离散数学实验特别篇1-树和图,算法学习笔记,算法

思路
书本P159定理6.16
设G为任意的连通的平面图,则n-m+r=2。其中n为顶点数,m为边数,r为面数满足

n-m+r=2 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int n,r;
	while(~scanf("%d%d",&n,&r)){
		printf("%d\n",n+r-2);
	}
	return 0;
}

 3. (程序题)计算连通分支数

NEFU离散数学实验特别篇1-树和图,算法学习笔记,算法

思路
书P159推论
G是具有k(k>=2)个连通分支的平面图,则n-m +r=k +1

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int n,m,r;
	scanf("%d%d%d",&n,&m,&r);
	printf("%d",n-m+r-1);
	return 0;
}

 4. (程序题) 求悬挂顶点

NEFU离散数学实验特别篇1-树和图,算法学习笔记,算法

思路
根据握手定理:所有顶点度数之和为边数两倍
悬挂顶点度数为1。
设有x个悬挂顶点

2m=(2+3+4+5+6)t+x
x=2m-20t 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int m,t;
	scanf("%d%d",&m,&t);
	printf("%d",2*m-20*t);
}

 文章来源地址https://www.toymoban.com/news/detail-737691.html

到了这里,关于NEFU离散数学实验特别篇1-树和图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 离散数学实验一

    实验题目:可简单图化、连通图、欧拉图和哈密顿图的判断 实验目的: 掌握可简单图化的定义及判断方法; 掌握连通图、欧拉图的判断方法; 掌握欧拉回路的搜索方法; 了解欧拉图的实际应用。 实验要求: 给定一非负整数序列(例如:(4,2,2,2,2))。 判断此非负整数序列是

    2024年02月05日
    浏览(198)
  • 离散数学实验三 · 最短路径计算

    一、实验目的 通过本实验的学习理解Dijkstra算法,并且编码实现最短路径问题。 二、实验内容 Dijkstra算法的理解; 算法概念:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,之后每求得一条最

    2024年02月03日
    浏览(29)
  • 离散数学实验----中国邮递员问题

    实验目的和要求 实验目的: 理解什么是欧拉图,熟悉欧拉路和欧拉回路的概念。 掌握Dijkstra算法,求解最短路径 掌握Fleury算法,求解欧拉回路。 了解Edmonds-Johnson算法解决中国邮递员问题的基本思路。 通过程序实现中国邮递员问题,强化其基本思想和实际应用。 实验要求:

    2023年04月12日
    浏览(26)
  • OUC离散数学II实验二(Python+Cpp)

    生成树、环路空间、断集空间的求解 1、掌握无向连通图生成树的求解方法; 2、掌握基本回路系统和环路空间的求解方法; 3、掌握基本割集系统和断集空间的求解方法; 4、了解生成树、环路空间和断集空间的实际应用。 给定一无向简单连通图的相邻矩阵 (例如: )。 1、

    2024年02月03日
    浏览(33)
  • 南邮|离散数学实验四(图的生成及欧拉(回)路的确定)

    内容:随机生成含指定节点数量 n 的无向连通图,并确定其中有无欧拉 ( 回 ) 路,若有则需要获取至少一条路径并输出。 要求:能随机生成无向连通图并正确判断其是否为 ( 半 ) 欧拉图,若是欧拉图,则还需输出至少一条欧拉 ( 回 ) 路。      

    2024年01月24日
    浏览(28)
  • 离散数学学习要点——命题逻辑

    命题 判断一句话是否是命题有两个关键 1、是陈述句 2、有且只有一个真值 2是个素数 是命题 x + y 5 不是命题,是命题函数 我正在说谎 不是命题,是悖论(从它的真可以判断它的假,从它的假又可以判断他的真。)。如果真值为T,那么他就正在说谎话,“我在说谎”这句话

    2024年01月19日
    浏览(30)
  • 离散数学 学习 之 递推方程和生成函数

    注意这里的特征根一定不是相等 特解的话一般要去设出基本的形式 这是0 次多项式

    2024年02月07日
    浏览(25)
  • 机器学习实验——使用决策树和随机森林对数据分类

    使用决策树算法和随机森林算法对income_classification.csv的收入水平进行分类。训练集和测试集的比例是7:3,选取适当的特征列,使得针对测试样本的分类准确率在80%以上,比较2种分类方法的准确率。 数据说明: 特征列: 分类标签列:income 1、读入数据并显示数据的维度和前

    2024年02月04日
    浏览(34)
  • 数据结构 实验17:Huffman树和Huffman编码——学习理解哈夫曼树

    目录 前言 实验要求 算法描述 个人想法 代码实现和思路、知识点讲解 知识点讲解 文件传输 Huffman树的存储 Huffman的构造  Huffman编码 编码和译码 代码实现 文件写入和输出 Huffman树初始化 构造Huffman树 求带权路径长度 Huffman编码 Huffman译码 结束 代码测试 测试结果 利用Huffman编

    2024年02月03日
    浏览(47)
  • 软件工程实验二----测试用例设计NEFU

    实验内容及结果: 题目:某 程序的功能规格说明如下: 输入一个日期(*年*月*日),通过计算输出该日期的前一天日期(比如,输入1999-3-6,则输出1999-3-5)。设所接收的输入日期的有效范围为1900年到2050年之间的某个日期。当输入日期无效时,输出日期值规定为:年为0,月

    2023年04月27日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包