数据结构-图(一)
文章目录
- 图
- 一、图的基本概念
- (一)图的定义
- (二)有向图与无向图
- (三)顶点的度、入度与出度
- (四)路径、回路与连通图
- 二、图的存储及基本操作
- (一)邻接矩阵
- (二)邻接表
- (三)邻接多重表、十字链表
- 三、图的遍历
- (一)深度优先搜索(Depth-First Search,DFS)
- (二)广度优先搜索(Breadth-First Search,BFS)
图
一、图的基本概念
(一)图的定义
图(Graph)是一种由顶点(Vertex)集合和边(Edge)集合组成的数据结构,用于描述事物之间的关系。通常用 G = ( V , E ) G=(V, E) G=(V,E) 来表示一个图,其中 V V V 是顶点的非空有限集合, E E E 是边的有限集合,每条边连接着 V V V 中的两个顶点。例如,用图来表示城市之间的交通路线,城市就是顶点,连接城市的道路就是边。
(二)有向图与无向图
- 有向图(Directed Graph):图中的边是有方向的,用有序对 ⟨ v , w ⟩ \langle v, w\rangle ⟨v,w⟩ 表示,意味着从顶点 v v v 指向顶点 w w w 的一条边,且通常情况下 ⟨ v , w ⟩ \langle v, w\rangle ⟨v,w⟩ 和 ⟨ w , v ⟩ \langle w, v\rangle ⟨w,v⟩ 是不同的两条边。比如社交网络中,用户 A 关注了用户 B,这可以用有向边来表示,从 A 指向 B。
- 无向图(Undirected Graph):图中的边没有方向,用无序对 ( v , w ) (v, w) (v,w) 表示,即边 ( v , w ) (v, w) (v,w) 和 ( w , v ) (w, v) (w,v) 是同一条边。例如,若用图表示一群朋友之间的相识关系,两人相识就是用无向边连接他们对应的顶点。
(三)顶点的度、入度与出度
- 度(Degree):在无向图中,顶点的度是与该顶点相关联的边的数目。例如在一个简单的无向图中,顶点 A A A 连接了 3 条边,那么顶点 A A A 的度就是 3。
- 入度(In-degree)和出度(Out-degree):在有向图中,顶点的入度是以该顶点为终点的边的数目,而出度是以该顶点为起点的边的数目。比如在有向图中,顶点 B B B 有 2 条边指向它,其入度为 2;同时它有 1 条边从它出发,出度就是 1。
(四)路径、回路与连通图
- 路径(Path):在图中,从顶点 v v v 到顶点 w w w 的一条路径是一个顶点序列,序列中相邻顶点之间都有边相连。例如在一个图中,从顶点 A A A 经过顶点 B B B、 C C C 到达顶点 D D D 的这一系列顶点就构成了一条路径。
- 回路(Cycle):如果一条路径的起点和终点是同一个顶点,且路径长度大于 0,则称这条路径为回路。比如在图中,从顶点 A A A 出发,经过若干其他顶点又回到顶点 A A A 的路径就是回路。
- 连通图(Connected Graph):在无向图中,如果任意两个顶点之间都存在路径,则称该图为连通图。对于有向图,如果任意两个顶点之间都互相可达(双向都有路径),则称为强连通图;若只是忽略边的方向后任意两个顶点之间存在路径,则称为弱连通图。
二、图的存储及基本操作
(一)邻接矩阵
- 原理:使用一个二维数组来表示图,数组的行和列分别对应图中的顶点。如果顶点 i i i 和顶点 j j j 之间有边相连(对于无向图)或者有从 i i i 指向 j j j 的边(对于有向图),则数组中对应的元素 a d j [ i ] [ j ] adj[i][j] adj[i][j] 为 1(或者边的权重,如果是带权图),否则为 0。
- 优点:判断两点之间是否有边、查找某个顶点的邻接点等操作都很方便,时间复杂度较低;容易实现图的一些基本算法。
- 缺点:对于稀疏图(边数相对顶点数很少的图),会浪费大量的存储空间,因为大部分数组元素都是 0。
- 示例代码(C 语言,以无向图为例):
#define MAX_VERTEX_NUM 100
typedef struct {int adj[MAX_VERTEX_NUM][MAX_VERTEX_NUM];int vexnum; // 顶点数int arcnum; // 边数
} MGraph;// 初始化邻接矩阵表示的图
void InitGraph(MGraph* G, int vexnum) {G->vexnum = vexnum;G->arcnum = 0;for (int i = 0; i < vexnum; i++) {for (int j = 0; j < vexnum; j++) {G->adj[i][j] = 0;}}
}// 添加边
void AddEdge(MGraph* G, int v, int w) {G->adj[v][w] = 1;G->adj[w][v] = 1; // 对于无向图,对称位置都要设置为 1G->arcnum++;
}
例如,对于如下无向图:
A --- B| || |C --- D
其邻接矩阵表示如下(假设顶点顺序为 A、B、C、D):
A B C D
A 0 1 1 0
B 1 0 0 1
C 1 0 0 1
D 0 1 1 0
(二)邻接表
- 原理:对于图中的每个顶点,使用一个链表来存储它的邻接点。每个链表节点包含邻接点的序号以及指向下一个邻接点的指针(如果是带权图,还可以包含边的权重信息)。同时,使用一个数组来存储所有顶点的链表头指针。
- 优点:相比于邻接矩阵,对于稀疏图能节省大量存储空间,只存储实际存在的边信息。
- 缺点:判断两点之间是否有边的操作相对邻接矩阵效率稍低,需要遍历相应顶点的链表;代码实现相对复杂一些。
- 示例代码(C 语言,以有向图为例):
#define MAX_VERTEX_NUM 100// 邻接表节点结构体
typedef struct ArcNode {int adjvex; // 邻接点在数组中的下标struct ArcNode* next;
} ArcNode;// 顶点结构体
typedef struct VNode {int data; // 顶点数据ArcNode* firstarc; // 指向第一个邻接点的指针
} VNode, AdjList[MAX_VERTEX_NUM];// 图结构体
typedef struct {AdjList vertices;int vexnum;int arcnum;
} ALGraph;// 初始化邻接表表示的图
void InitALGraph(ALGraph* G, int vexnum) {G->vexnum = vexnum;G->arcnum = 0;for (int i = 0; i < vexnum; i++) {G->vertices[i].data = i;G->vertices[i].firstarc = NULL;}
}// 添加有向边
void AddArc(ALGraph* G, int v, int w) {ArcNode* newNode = (ArcNode*)malloc(sizeof(ArcNode));newNode->adjvex = w;newNode->next = G->vertices[v].firstarc;G->vertices[v].firstarc = newNode;G->arcnum++;
}
例如,对于如下有向图:
A -> B^ || |C -> D
其邻接表表示如下(假设顶点顺序为 A、B、C、D):
- 顶点 A 的邻接表:
A -> B -> C
(表示有边从 A 指向 B 和 C) - 顶点 B 的邻接表:为空(没有边以 B 为起点)
- 顶点 C 的邻接表:
C -> D
- 顶点 D 的邻接表:为空
(三)邻接多重表、十字链表
- 邻接多重表(Adjacency Multilist):
- 原理:主要用于存储无向图,在处理涉及边的删除、遍历等操作时,相比邻接表能更方便地操作同一条边,它把每条边用一个节点表示,节点中包含这条边连接的两个顶点以及与这两个顶点相关的其他边的指针等信息,各个顶点也有对应的节点,通过指针与边节点相连。
- 应用场景:在一些需要频繁对无向图的边进行操作的场景中,比如图形编辑软件中对图形的边进行修改、删除等操作时,使用邻接多重表可以更高效地实现相关功能。
- 十字链表(Orthogonal List):
- 原理:用于存储有向图,它整合了出边和入边的信息。每个顶点有一个节点,包含数据以及分别指向以该顶点为起点的第一条出边和以该顶点为终点的第一条入边的指针;每条边也有一个节点,包含边的起点、终点以及分别指向前一条和后一条以起点为出发的边、以终点为到达的边的指针等信息。
- 应用场景:在对有向图进行一些复杂的遍历、分析,尤其是需要同时考虑边的起点和终点关系的情况时,比如在有向图的强连通分量计算等算法中,十字链表可以方便地获取相关信息,提高算法效率。
三、图的遍历
(一)深度优先搜索(Depth-First Search,DFS)
- 原理:从图中的某个顶点出发,访问该顶点,然后递归地访问它的未被访问过的邻接点,直到所有与该顶点有路径相通且未被访问的顶点都被访问完;接着回溯到上一层,继续访问其他未被访问的邻接点,重复这个过程,直到图中的所有顶点都被访问过。
- 示例代码(C 语言,以邻接矩阵表示的无向图为例):
#include <stdio.h>
#include <stdbool.h>#define MAX_VERTEX_NUM 100// 图结构体(同邻接矩阵定义中的 MGraph)
typedef struct {int adj[MAX_VERTEX_NUM][MAX_VERTEX_NUM];int vexnum;int arcnum;
} MGraph;// 标记顶点是否被访问过
bool visited[MAX_VERTEX_NUM];// 深度优先搜索函数
void DFS(MGraph G, int v) {visited[v] = true;printf("%d ", v);for (int w = 0; w < G.vexnum; w++) {if (G.adj[v][w] == 1 &&!visited[w]) {DFS(G, w);}}
}// 对整个图进行深度优先搜索
void DFSTraverse(MGraph G) {for (int v = 0; v < G.vexnum; v++) {visited[v] = false;}for (int v = 0; v < G.vexnum; v++) {if (!visited[v]) {DFS(G, v);}}
}
例如,对于如下无向图进行深度优先搜索(假设从顶点 0 开始):
0 --- 1 --- 2| || |3 --- 4
可能的访问顺序为:0 1 2 4 3
(具体顺序可能因邻接点的选择顺序不同而有差异)。
- 应用场景:常用于解决连通性问题、寻找图中的路径、拓扑排序等,比如判断一个网络是否连通,或者在迷宫中寻找从起点到终点的路径等场景都可以使用深度优先搜索算法。
(二)广度优先搜索(Breadth-First Search,BFS)
- 原理:从图中的某个顶点出发,先访问该顶点,然后依次访问该顶点的所有未被访问过的邻接点,再按照“先访问的顶点的邻接点先被访问”的顺序,依次访问这些邻接点的未被访问过的邻接点,以此类推,直到图中的所有顶点都被访问过。通常需要借助一个队列来实现按照层次顺序访问顶点。
- 示例代码(C 语言,以邻接表表示的有向图为例):
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>#define MAX_VERTEX_NUM 100// 邻接表节点结构体(同邻接表定义中的 ArcNode)
typedef struct ArcNode {int adjvex;struct ArcNode* next;
} ArcNode;// 顶点结构体(同邻接表定义中的 VNode)
typedef struct VNode {int data;ArcNode* firstarc;
} VNode, AdjList[MAX_VERTEX_NUM];// 图结构体(同邻接表定义中的 ALGraph)
typedef struct {AdjList vertices;int vexnum;int arcnum;
} ALGraph;// 标记顶点是否被访问过
bool visited[MAX_VERTEX_NUM];// 广度优先搜索函数
void BFS(ALGraph G, int v) {int queue[MAX_VERTEX_NUM];int front = 0, rear = 0;visited[v] = true;printf("%d ", v);queue[rear++] = v;while (front!= rear) {int u = queue[front++];ArcNode* p = G.vertices[u].firstarc;while (p) {int w = p->adjvex;if (!visited[w]) {visited[w] = true;printf("%d ", w);queue[rear++] = w;}p = p->next;}}
}// 对整个图进行广度优先搜索
void BFSTraverse(ALGraph G) {for (int v = 0; v < G.vexnum; v++) {visited[v] = false;}for (int v = 0; v < G.vexnum; v++) {if (!visited[v]) {BFS(G, v);}}
}
例如,对于如下有向图进行广度优先搜索(假设从顶点 A 开始,A 对应下标 0):
A -> B^ || |C -> D
可能的访问顺序为:0 1 2 3
(对应顶点 A、B、C、D,具体顺序也可能因实现细节有一定差异)。
- 应用场景:常用于求最短路径(在无权图中)、网络爬虫中按照层次遍历网页链接等场景,比如在游戏地图中计算从起点到各个位置的最短步数,就可以采用广度优先搜索算法来实现。
相关文章:
数据结构-图(一)
文章目录 图一、图的基本概念(一)图的定义(二)有向图与无向图(三)顶点的度、入度与出度(四)路径、回路与连通图 二、图的存储及基本操作(一)邻接矩阵…...
SQL面试题——抖音SQL面试题 最近一笔有效订单
最近一笔有效订单 题目背景如下,现有订单表order,包含订单ID,订单时间,下单用户,当前订单是否有效 +---------+----------------------+----------+-----------+ | ord_id | ord_time | user_id | is_valid | +---------+----------------------+--------…...
【人工智能基础05】决策树模型
文章目录 一. 基础内容1. 决策树基本原理1.1. 定义1.2. 表示成条件概率 2. 决策树的训练算法2.1. 划分选择的算法信息增益(ID3 算法)信息增益比(C4.5 算法)基尼指数(CART 算法)举例说明:计算各个…...
远程桌面协助控制软件 RustDesk v1.3.3 多语言中文版
RustDesk 是一款开源的远程桌面软件,支持多平台操作,包括Windows、macOS、Linux、iOS、Android和Web。它提供端到端加密和基于角色的访问控制,确保安全性和隐私保护。使用简单,无需复杂配置,通过输入ID和密码即可快速连…...
git的学习笔记
一,git的安装 mac电脑的安装 xcode-select --install windows安装,用指令麻烦一些 随便找个视频观看看教程,去官网下载就可以了。 centos安装 sudo yum install git -y ubuntu安装 sudo apt-get install git -y 查看git安装的版本 git --ver…...
【目标检测】YOLO:深度挖掘YOLO的性能指标。
YOLO 性能指标 1、物体检测指标2、性能评估指标详解2.1 平均精度(mAP)2.2 每秒帧数(FPS)2.3 交并比(IoU)2.4 混淆矩阵(Confusion Matrix)2.5 F1-Score2.6 PR曲线(Precisi…...
第一届帕鲁杯”应急响应“解析-上部分
这个帕鲁杯是一个模拟真实生产场景的应急响应题目,这个具有拓扑网络结构,考察综合能力以及对各个系统的应急响应 网络拓扑结构图如下 相关的资产情况如下 mysql01:10.66.1.10mysql02:10.66.1.11PC01:10.66.1.12PC02…...
前端http,ws拉流播放视频
可以在西瓜播放器官网APi调试拉取的视频流是否可以播放 类似http拉流地址为:http://localhost:8866/live?urlrtsp://admin:admin123192.168.11.50:554/cam/realmonitor?channel1&subtype01 <!DOCTYPE html> <html><head><meta charset…...
揭开广告引擎的神秘面纱:如何在0.1秒内精准匹配用户需求?
目录 一、广告系统与广告引擎介绍 (一)广告系统与广告粗分 (二)广告引擎在广告系统中的重要性分析 二、广告引擎整体架构和工作过程 (一)一般概述 (二)核心功能架构图 三、标…...
【2024】使用Docker搭建redis sentinel哨兵模式集群全流程(包含部署、测试、错误点指正以及直接部署)
目录💻 前言**Docker Compose介绍**最终实现效果 一、搭建集群1、创建文件结构2、创建redis节点3、验证节点4、创建sentinel哨兵5、验证Sentinel功能 二、spring连接1、添加依赖2、添加配置3、启动测试 三、直接部署流程1、拉取配置2、修改端口创建 前言 本篇文章主…...
Spring WebFlux与Spring MVC
Spring WebFlux 是对 Spring Boot 项目中传统 Spring MVC 部分的一种替代选择,主要是为了解决现代 Web 应用在高并发和低延迟场景下的性能瓶颈。 1.WebFlux 是对 Spring MVC 的替代 架构替代: Spring MVC 使用的是基于 Servlet 规范的阻塞式模型…...
江协科技最新OLED保姆级移植hal库
江协科技最新OLED移植到hal库保姆级步骤 源码工程存档 工程和源码下载(密码 1i8y) 原因 江协科技的开源OLED封装的非常完美, 可以满足我们日常的大部分开发, 如果可以用在hal库 ,将是如虎添翼, 为我们开发调试又增加一个新的瑞士军刀, 所以我们接下来手把手的去官网移植源码…...
Vue框架开发一个简单的购物车(Vue.js)
让我们利用所学知识来开发一个简单的购物车 (记得暴露属性和方法!!!) 首先来看一下最基本的一个html框架 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…...
探索嵌入式硬件设计:揭秘智能设备的心脏
目录 引言 嵌入式系统简介 嵌入式硬件设计的组成部分 设计流程 微控制器选择 原理图设计 PCB布局 编程与调试 系统集成与测试 深入理解微控制器 存储器管理 输入/输出接口 通信接口 电源管理 硬件抽象层(HAL) 操作系统(OS&am…...
逆向攻防世界CTF系列42-reverse_re3
逆向攻防世界CTF系列42-reverse_re3 参考:CTF-reverse-reverse_re3(全网最详细wp,超4000字有效解析)_ctfreverse题目-CSDN博客 64位无壳 _int64 __fastcall main(__int64 a1, char **a2, char **a3) {int v4; // [rsp4h] [rbp-…...
AIGC时代 | 如何从零开始学网页设计及3D编程
文章目录 一、网页设计入门1. 基础知识2. 学习平台与资源3. 示例代码:简单的HTMLCSSJavaScript网页 二、3D编程入门1. 基础知识2. 学习平台与资源3. 示例代码:简单的Unity 3D游戏 《编程真好玩:从零开始学网页设计及3D编程》内容简介作者简介…...
EMall实践DDD模拟电商系统总结
目录 一、事件风暴 二、系统用例 三、领域上下文 四、架构设计 (一)六边形架构 (二)系统分层 五、系统实现 (一)项目结构 (二)提交订单功能实现 (三࿰…...
基于多VSG独立微网的多目标二次控制MATLAB仿真模型
“电气仔推送”获得资料(专享优惠) 模型简介 本文将一致性算法引入微电网的二次频率和电压控制,自适应调节功率参考值和补偿电压,同时实现频率电压恢复、有功 无功功率的比例均分以及功率振荡抑制,提高系统的暂态和稳…...
自动化运维(k8s)之微服务信息自动抓取:namespaceName、deploymentName等全解析
前言:公司云原生k8s二开工程师发了一串通用性命令用来查询以下数值,我想着能不能将这命令写成一个自动化脚本。 起初设计的 版本一:开头加一条环境变量,执行脚本后,提示输入:需要查询的命名空间,…...
nginx 代理 web service 提供 soap + xml 服务
nginx 代理 web service 提供 soap xml 服务 最关键的配置: # Nginx默认反向后的端口为80,因此存在被代理后的端口为80的问题,这就导致访问出错。主要原因在Nginx的配置文件的host配置时没有设置响应的端口。Host配置只有host,没有对应的p…...
深入理解 MongoDB:一款灵活高效的 NoSQL 数据库
在现代应用程序开发中,数据存储技术已经从传统的关系型数据库(RDBMS)扩展到多样化的 NoSQL 数据库。MongoDB 作为一款广泛使用的文档型数据库,以其灵活性、高性能和易用性成为开发者的首选之一。本篇博文将从 MongoDB 的核心概念、…...
vue3 + vite + antdv 项目中自定义图标
前言: 去iconfont-阿里巴巴矢量图标库 下载自己需要的icon图标,下载格式为svg;项目中在存放静态资源的文件夹下 assets 创建一个存放svg格式的图片的文件夹。 步骤: 1、安装vite-plugin-svg-icons npm i vite-plugin-svg-icons …...
PDF版地形图矢量出现的问题
项目描述:已建风电场道路测绘项目,收集到的数据为PDF版本的地形图,图上标注了项目竣工时期的现状,之后项目对施工区域进行了复垦恢复地貌,现阶段需要准确的知道实际复垦修复之后的道路及其它临时用地的面积 解决方法&…...
JavaScript 高级教程:异步编程、面向对象与性能优化
在前两篇教程中,我们学习了 JavaScript 的基础和进阶内容。这篇文章将带领你进入更深层次,学习 JavaScript 的异步编程模型、面向对象编程(OOP),以及性能优化的技巧。这些内容对于构建复杂、流畅的前端应用至关重要。 …...
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。-多语言
目录 C 语言实现 Python 实现 Java 实现 Js 实现 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移…...
OCR实现微信截图改名
pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple/ ──(Sat,Nov30)─┘ pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install paddleo…...
c++stl模板总结
stl 总结stl模板vectordequelistforward_liststl集合类set&unorder_setmap&unorder_map 自适应容器栈和队列stackqueuepriority_queue 总结stl模板 vector 1.初始化 vector具有多个重载的构造函数,可以在实例化vector时指定他开始时应该包含的元素个数以…...
文本生成类(机器翻译)系统评估
在机器翻译任务中常用评价指标:BLEU、ROGUE、METEOR、PPL。 这些指标的缺点:只能反应模型输出是否类似于测试文本。 BLUE(Bilingual Evaluation Understudy):是用于评估模型生成的句子(candidate)和实际句子(referen…...
Harmony NEXT-越过相机读写权限上传图片至项目云存储中
问题成因 在制作用户注册登录界面时想要实现用户头像上传共能,查询API文档,发现有picker和PhotoAccessHelper两个包可以选择使用,但是在使用PhotoAccessHelper包拉起相册并读入所选的照片后将该照片传入云存储中产生报错,需要相册…...
C++算法练习-day53——17.电话号码的字母组合
题目来源:. - 力扣(LeetCode) 题目思路分析 题目要求我们将一个数字字符串(每个数字对应一组字母,如2对应abc,3对应def等)转换成所有可能的字母组合。这是一个典型的组合生成问题,…...
计算机网络性能
任何一个系统都可以或需要不同的指标来度量系统的优劣、状态或特性。计算机网络是综合计算机技术与通信技术的复杂系统,可以通过许多指标对一个计算机网络的整体或局部、全面或部分、静态或动态等不同方面的性能进行度量与评价 1、传输时延 当一个分组在输出链路发…...
MAC卸载Vmware Fusion后无法再安装解决方案
MAC卸载Vmware Fusion后无法再安装解决方案 执行脚本 sudo rm -rf /Library/Application Support/VMware/VMware Fusion sudo rm -rf /Library/Application Support/VMware/Usbarb.rules sudo rm -rf /Library/Application Support/VMware Fusion sudo rm -rf /Library/Prefe…...
windows 服务器角色
windows 服务器角色 Active Directory Rights Management Services Active Directory RightsManagement Services (AD RS)帮助保护信息,防止未授权使用。AD RMS 将建立用户标识,并为授权用户提供受保护信息的许可证。 ServicesActive Directory 联合身…...
NAT学习手册
NAT(Network Address Translation,网络地址转换)是一种在局域网(LAN)内部使用私有地址,而在连接到互联网时将这些私有地址转换为全球唯一且有效的公网地址的技术。这种技术的主要目的是解决IPv4地址空间不足…...
python -从文件夹批量提取pdf文章的第n页,并存储起来
python -从文件夹批量提取pdf文章的第n页,并存储起来 废话不多说,看下面代码 讲解一下下面代码 reader PyPDF2.PdfReader (file) 将文件转化为PdfReader 对象,方便使用内置方法。 first_page reader.pages[0] 提取第一页 writer PyPDF…...
RPC中定时器制作思路
定时器设计 time_event time_event 类用来封装定时时间,内部需要包含一个任务执行时间,是否重复标记、是否取消标记,对于重复任务,还需要一个重复间隔时间。以及一个回调函数,用来执行任务到期后需要执行的动作。 构…...
Flutter简单实现滑块验证
现在实现一个 Flutter 滑动验证组件,类似于许多网站和应用程序中常见的“滑动以验证”功能。它通过滑动一个滑块来完成验证操作,用户需要将滑块拖动到指定位置以完成验证。 前置知识点整理 StatefulWidget 在 Flutter 中,StatefulWidget 是…...
第33周:运动鞋识别(Tensorflow实战第五周)
目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 1.3 查看数据 二、数据预处理 2.1 加载数据 2.2 可视化数据 2.3 再次检查数据 2.4 配置数据集 2.4.1 基本概念介绍 2.4.2 代码完成 三、构建CNN网络 四、训练模型 4.1 设置动态学习率 4.2 早停与保存最佳模型…...
C#中switch语句使用
编写一个程序,使用switch语句将用户输入的分数转换成等级,如表 private static void Main(string[] args) { Console.WriteLine("请输入分数:"); int score int.Parse(Console.ReadLine()); switch (score) …...
2024.11.28(作业)
思维导图 功能函数声明文件 #ifndef _FUN_H__ #define _FUN_H__ #include <myhead.h>#define MAX 50 //数组大小 #define QAZ 20 //长度和字符串大小typedef int datatype; //数据元素类型//2.1 定义顺序表类型 typedef struct {datatype data[MAX];int len; }S…...
充分统计量(Sufficient Statistic)概念与应用: 中英双语
充分统计量:概念与应用 在统计学中,充分统计量(Sufficient Statistic) 是一个核心概念。它是从样本中计算得出的函数,能够完整且无损地表征样本中与分布参数相关的信息。在参数估计中,充分统计量能够帮助我…...
2. STM32_中断
中断 中断是什么: 打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。 中断的意义: 中断可以高效处理紧急程序,不会一直占用CPU资源。如实时控制、故障处理、处理不确定…...
CAD 文件 批量转为PDF或批量打印
CAD 文件 批量转为PDF或批量打印,还是比较稳定的 1.需要本地安装CAD软件 2.通过 Everything 搜索工具搜索,DWG To PDF.pc3 ,获取到文件目录 ,替换到代码中, originalValue ACADPref.PrinterConfigPath \ r"C:…...
明明的随机数
题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉ÿ…...
2024金盾信安杯线上赛 MISC ezpng[wp]
下载题目发现给了个password和png 图片发现损坏的 password丢随波逐流一键解 base64 给出解码的结果是 cimbar搜索发现在Github有工具 然后对附件中的图片进行小厨房xor 得到一张新图片 利用工具进行跑出答案...
C与指针。
目录 1_指针理解 1.1变量的值 1.2变量的地址 1.3指针 1.4取变量的地址 2_分析指针 2.1分析指针变量的要素 2.2根据需求定义指针变量 3_指针的使用 3.1指针对变量的读操作 3.2指针对变量的写操作 4_指针占用空间的大小与位移 4.1指针占用空间的大小 4.2指针的位移…...
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践 在这篇博客中,我们将介绍如何利用 Selenium 和 Python 爬取腾讯新闻的内容,并将结果保存到 CSV 文件中。本教程包含以下内容: 项目简介依赖安装实现功能的代码实现中的关键技…...
ElasticSearch的下载和基本使用(通过apifox)
1.概述 一个开源的高扩展的分布式全文检索引擎,近乎实时的存储,检索数据 2.安装路径 Elasticsearch 7.8.0 | Elastic 安装后启动elasticsearch-7.8.0\bin里的elasticsearch.bat文件, 启动后就可以访问本地的es库http://localhost:9200/ …...
处理HTTP请求的两种常见方式:多个处理器(Handler)、多个处理函数(HandleFunc),两者有什么区别
一、多个处理器(Handler)、多个处理函数(HandleFunc),两者的区别: 在Go语言中,处理HTTP请求的两种常见方式是使用http.Handler接口和http.HandleFunc函数。它们都用于定义如何处理HTTP请求,但它们之间有一些关键的区别࿱…...
在oracle下载jdk显示400 Bad Request Request Header Or Cookie Too Large
下载JDK17,官网地址:【https://www.oracle.com/cn/java/technologies/downloads/#jdk17-windows】 问题: 出现 400 Bad Request: Request Header Or Cookie Too Large 错误,通常是由于浏览器存储的 Cookies 或请求头过大所导致的…...