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

news2024/11/29 2:43:34

树相关概念

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

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元完全正则树

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

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

顶点数=2^{h+1}-1

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

#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. (程序题)度数序列

思路
可以看一下书本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. (程序题)平面图 

思路
书本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. (程序题)计算连通分支数

思路
书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. (程序题) 求悬挂顶点

思路
根据握手定理:所有顶点度数之和为边数两倍
悬挂顶点度数为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);
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1160005.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

京东API获得JD商品详情 item_get-获得JD商品详情

item_get-获得JD商品详情 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;获取key和secret接入secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_sear…

面经(面试经验)第一步,从自我介绍开始说起

看到一位同学讲自己的面试步骤和过程&#xff0c;我心有所感&#xff0c;故此想整理下面试的准备工作。以便大家能顺利应对面试&#xff0c;通过面试... 求职应聘找工作&#xff0c;面试是必然的关卡&#xff0c;如今竞争激烈呀&#xff0c;想要得到自己喜欢的工作&#xff0c…

U盘装系统Win10步骤和详细教程

如果我们遇到系统问题&#xff0c;导致无法正常使用系统了&#xff0c;这时候就可以考虑给电脑重新安装系统。有用户想用U盘来进行系统的重装&#xff0c;但不清楚具体重装步骤&#xff0c;下面小编给大家详细介绍关于U盘重装系统Win10的详细步骤方法&#xff0c;帮助大家简单轻…

请求转发和重定向的区别

目录 一、请求转发 二、重定向 一、请求转发 request.getRequestDispatcher(页面).forwad(request,response) 请求转发&#xff1a; 客户端&#xff08;浏览器&#xff09;向服务器的资源 A 发起一次请求 ①。服务器的资源 A 接收到该请求后&#xff0c;将该请求转发到内部的…

FedAT:异步更新联邦学习方法

文章链接&#xff1a;FedAT: A Communication-Efficient Federated Learning Method with Asynchronous Tiers under Non-IID Data 发表会议: SC’21 (International Conference for High Performance Computing, Networking, Storage, and Analysis) 高性能计算&#xff0c;体…

高能有料 | 第二届OpenHarmony技术大会议程速递

第二届开放原子开源基金会OpenHarmony技术大会如约而至 让我们一起 开封无限惊喜的技术成果 开放无限前沿的议题干货 开启无限可能的未来之门 点击此处报名参会&#xff01;

接口自动化测试设计!

一、接口测试基础 1.什么是接口测试&#xff1f; 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。接口测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖…

01【保姆级】-GO语言特点 下载安装 hello

01-GO语言基本概念和安装使用 一、概念1.1 Go语言的诞生1.2 GO语言的特点&#xff1a; 二、安装go2.1 安装2.2 安装环境变量 三、下载&安装goland3.1 官网下载3.2 下载后&#xff0c;进行安装&#xff1a; 四、Go语言的特性&#xff08;重点&#xff09;4.1 第一个hello wo…

Spire.doc读取模板文档,并在书签处插入内容

在书签位置插入文字 //加载模板文档 Document document new Document(Server.MapPath("~/File/评价结果.doc")); //创建书签导航器 BookmarksNavigator bn new BookmarksNavigator(document); //添加一个section到文档 Section newSec document.AddSection(); …

Redis Sentinel 哨兵模式

Sentinel 哨兵模式 Redis Sentinel 官网 Redis 的 Sentinel 文档 -- Redis中国用户组&#xff08;CRUG&#xff09; Sentinel Redis 命令参考&#xff08;红色&#xff09; Sentinel 通过监控的方式获取主机的工作状态是否正常&#xff0c;当主机发生故障时&#xff0c; Senti…

生产制造业如何进行进销存管理?建议收藏!

进销存是什么&#xff1f;生产制造业如何进行进销存管理&#xff1f;制造进销存都能为企业提供什么&#xff1f;进销存管理系统的优势&#xff1f;本文将带大家深入浅出的聊聊制造进销存&#xff0c;全面剖析制造进销存的前世今生&#xff0c;并且为大家提供2023年十大制造进销…

「linux基础」上传代码到github/gitee

一、在gitee创建一个仓库 1.创建仓库 2.获取仓库地址 二、克隆仓库文件到linux中 1.查看Linux中是否安装git&#xff1a;git --version 如果没有&#xff0c;在root下使用指令 yum install -y git 安装。 2.使用 git clone 仓库地址&#xff0c;克隆仓库文件到linux中 三、第…

第一章 02Java入门-常环境变量的意义

前言 上次我们学习了常见的CMD命令,这次我们做一个用它做一个练习打开QQ(CMD方式打开),最后引出环境变量的意义。 一、CMD打开qq 可以看到,如果直接在CMD里面打开QQ,是不可以的,因为QQ的路径不在默认路径C盘,而在D盘下面的develop文件夹下面的qq下面的qq.exe下(自己…

软考高级之系统架构师之计算专题

操作系统 需要一定操作系统基础知识才能计算的题目。 吞吐率 某指令流水线由5段组成&#xff0c;各段所需要的时间如下图所示。连续输入100条指令时的吞吐率为&#xff08;&#xff09;。 解析&#xff1a; 指令流水线的吞吐率定义为&#xff1a; 吞吐率 T P 指令数 执行时…

Gcov 查看代码覆盖率

GCOV 工具简介 gcov是一个测试代码覆盖率的工具。 它是 gcc 自带的查看代码覆盖率的工具&#xff0c;无需额外安装&#xff0c;在嵌入式的 arm-eabi-none-gcc 中同样可以使用&#xff08;需要重写部分系统函数&#xff09;。 使用效果如下图所示&#xff1a; 程序运行完成后…

云尘-Potato(Suncsr)1

vulhub的题目 继续渗透吧 我们依旧打开nmap 开扫 首先扫描目标网段nmap -sP 127.25.0.1/24 nmap -sS -sV -p- -v 172.25.0.13然后扫描端口 获取到两个 80和 7120 80机会很多 22就一次 爆破弱口令 报完没有就去80测试 hydra -l potato -P 字典 -vV ssh://172.25.0.13:7120 …

MySQL数据库入门到精通——运维篇(1)

MySQL数据库入门到精通——运维篇&#xff08;1&#xff09; 1. 日志1.1 错误日志1.2 二进制日志1.3 查询日志1.4 慢查询日志 2. 主从复制2.1 主从复制的概述2.2 主从复制的原理2.3 主从复制的搭建2.3.1 服务器准备2.3.2 主库配置2.3.3 从库配置2.3.4 测试 1. 日志 在任何一种…

轻量封装WebGPU渲染系统示例<11>- WebGP实现的简单PBR效果(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/SimplePBRTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. 用户操作…

【Linux】第九站:make和makefile

文章目录 一、 Linux项目自动化构建工具make/Makefile1.make/makefile工作现象2.依赖关系与依赖方法3.如何清理4.为什么这里我们需要带上clean5.连续的make6.特殊符号 二、Linux下实现一个简单的进度条1.回车换行2.缓冲区3.倒计时的实现 一、 Linux项目自动化构建工具make/Make…

518抽奖软件,数字滚动抽奖,可批量生成数字号码

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 批量生成数字号码 入口&#xff1a;主界面点…