【图论】图论基础
图论不同地方讲的不太一样,本文仅限作者的理解
定义
图一般由点集  V V V 和边集  E E E 组成。
 对于  v ∈ V v\in V v∈V,称  v v v 为该图的一个节点。
 对于  e ∈ E e\in E e∈E,一般用二元组  ( u , v ) (u,v) (u,v) 表示  e e e,其中  u , v ∈ V u,v\in V u,v∈V。在无向图中,该二元组无序,即边为双向;在有向图中,该二元组有序,即边为单向。
 一个带有边权(边的长度)的图称为带权图,此时边一般记为  ( u , v , w ) (u,v,w) (u,v,w)。
 下面分别是一个无向图和一个有向图的例子:
 
 
连通性
从一个图中选出一些节点和边,构成一个合法的新图,称做原图的子图。
 扩展至最大的符合某一要求的子图被称为分量。
 通过图中的边可以使节点之间联通(单向联通也算)的图称做连通图。
 节点之间两两可以互相到达的有向图被称做强联通图。
 如果一个图中某一个点及其边被删去后,图将不再联通,则称该点为原图的一个割点。
 没有割点的图被称为点双连通图。
 如果一个图中某一条边被删去后,图将不再联通,则称该边为原图的一个割边。
 没有割边的图被称为边双连通图。
 读者可以自行理解联通子图、联通分量、强连通子图、强连通分量、点双联通子图、点双联通分量、边双联通子图、边双联通分量等概念。
树与环
一个没有环的图称为无环图。
 一个没有环的有向图称为有向无环图(DAG)。
 一个没有环且联通的无向图称为树。
 一个有恰一个环且联通的无向图称为基环树。
 一个是树且包含所有节点的子图称为原图的生成树。
存储
一般有两种存储方式,邻接矩阵和邻接表。
邻接矩阵
使用一个矩阵来存储图,对于矩阵中的一个元素  G u , v G_{u,v} Gu,v:
 在无权图中, u , v u,v u,v 之间有边为  1 1 1,无边为  0 0 0;
 在带权图中, u , v u,v u,v 之间有边为  w w w,无边为  inf  \inf inf。
邻接表
使用多个数组来存储图,对于每一个数组  G u G_u Gu
 在无权图中, u , v u,v u,v 间有边则加入  v v v;
 在带权图中, u , v u,v u,v 间有边则加入有序二元组  ( v , w ) (v,w) (v,w)。
代码
分为定义,输入和遍历三部分
- 邻接矩阵
int G[N][N];
memset(G,0,sizeof(G));//无权
memset(G,INF,sizeof(G));//带权
for (int i=1;i<=m;i++){//无权int u,v;cin>>u>>v;G[u][v]=1;G[v][u]=1;//仅限无向图//带权int u,v,w;cin>>u>>v>>w;G[u][v]=w;G[v][u]=w;//仅限无向图
}
for (int u=1;u<=n;u++) for (int v=1;v<=n;v++)if (G[u][v])//无权if (G{u][v]!=INF)//带权
- 邻接表
vector<int> G[N];//无权
//带权
struct edge{int v,w;};
vector<edge> G[N];
for (int i=1;i<=m;i++){//无权int u,v;cin>>u>>v;G[u].push_back(v);G[v].push_back(u);//仅限无向图//带权int u,v,w;cin>>u>>v>>w;G[u].push_back({v,w});G[v].push_back({u,w});//仅限无向图
}
for (int u=1;u<=n;u++)for (int v:G[u])//无权for (edge e:G[u])//带权
相关文章:
 
【图论】图论基础
图论不同地方讲的不太一样,本文仅限作者的理解 定义 图一般由点集 V V V 和边集 E E E 组成。 对于 v ∈ V v\in V v∈V,称 v v v 为该图的一个节点。 对于 e ∈ E e\in E e∈E,一般用二元组 ( u , v ) (u,v) (u,v) 表示 e e e&…...
 
Konga域名配置多个路由
云原生API网关-Kong部署与konga基本使用 Nginx server{listen 443 ssl;location / {proxy_pass http://127.0.0.1:8100;}location /openApi {proxy_pass http://172.31.233.35:7100/openApi;} } Kong {"id": "f880b21c-f7e0-43d7-a2a9-221fe86d9231&q…...
 
15.计算机网络
1.物理层的互联设备 中继器 和 集线器 2.集线器可以看做特殊的多路中继器 集线器 不可以做到自动寻址的功能 3.数据链路层 网桥 和 交换机 4.交换机是多端口网桥 5.网络层 路由器 6.应用层 网关 7.广播域 网络层 可以形成多个广播域 冲突域 网络层数据链路层 可以形成多个冲突域…...
 
【大数据·hadoop】在hdfs上运行shell基本常用命令
一、准备工作 1.1格式化并启动Hadoop服务 参见Hadoop在ubuntu虚拟机上的伪分布式部署|保姆级教程的4.7节 二、HDFS常用命令 接着,就愉快地在刚刚的命令行里敲命令啦 1.显示hdfs目录结构 hadoop fs -ls -R /hadoop fs: 这是Hadoop文件系统命令行的一部分&#x…...
TCP/IP 协议基础:构建互联网基石
目录 前言 一.网络通信协议 TCP/IP 1.网络通信协议 3.TCP/IP 协议 3.管理的组织和机构 4.RFC 二.OSI 参考模型 1.层次结构 2.通信机制 3.PDU 4.各层的功能 三.TCP/IP 协议簇 1.TCP/IP 与 OSI 的对应关系 2.TCP/IP 各层 3.TCP/IP 封装与分用 4.重要概念 5.分…...
Android OpenMAX(三)高通OMX组件实现基础
上一节了解了OMX组件实现的基础内容,这一节我们以高通OMX实现为例,简单看看如何实现一个OMX组件。本节代码参考自: omx_core_cmp.cpp qc_omx_component.h omx_vdec.h omx_vdec.cpp Tips:本篇文章旨在简单了解如何实现一个OMX组件,细节的内容不会仔细解读,代码阅读跳跃幅度…...
 
【比邻智选】MF871U模组
🚀搭载国产芯,严苛测试,稳定可靠 🛠️R16特性加持,5G LAN,纳秒级精度 🌐超低成本,丰富协议,连接无界限...
Unity 单例模式
Unity中单例模式是非常常用的写法,可以基于C#语言的几种不同方法来实现。 下面我将列出几种常见的实现方式: 1. 经典的单例模式 public class SingletonExample : MonoBehaviour {private static SingletonExample instance;public static SingletonEx…...
 
Oracle-一次TX行锁堵塞事件
问题背景: 接用户问题报障,应用服务出现大量会话堆积现象,数据库锁堵塞严重,需要协助进行问题定位和排除。 问题分析: 登录到数据库服务器上,首先查看一下数据库当前的等待事件情况,通过gv$ses…...
Gtid方式搭建主从复制+MHA高可用集群
GTID是什么 GTID(全局事务标识符),它用于唯一标识一个事务。每个GTID由三个部分组成: 服务器唯一标识符事务序列号全局事务标识符使用gtid可以简化主从复制的配置和管理,减少由于复制链路终端、主从数据不一致等问题带来的风险如何开启GTID: 在/etc/my.cnf文件中添加如下…...
 
基于matlab GUI的Alpha shapes边缘提取
1、程序介绍 本程序是基于matlab语言,使用alpha shapes算法实现点云边缘提取。算法具体原理参考博客:基于alpha shapes的边缘点提取(matlab)-CSDN博客。该程序包括3个按钮:加载点云、边缘点提取、保存。其中࿰…...
[Android]常见的包管理方式
在Android开发中,包管理主要是通过构建和依赖管理工具来处理。下面列举了几种最常见和主流的包管理方式: 一、Gradle Gradle 是 Android 官方推荐的构建工具,几乎成为了 Android 开发的标准。它支持自定义构建逻辑、依赖管理、多项目构建等…...
 
每日10亿数据的日志分析系统OOM
背景 一个每日10亿数据的日志清洗系统,主要工作就是从消息队列中消费各种各样的日志,然后对日志进行清洗,例如:用户敏感信息(姓名、手机号、身份证)进行脱敏处理,然后把清理完的数据交付给其他系统使用。 我们项目中,…...
 
智能驱动,精准管理:打造高效干部管理系统
干部管理系统是现代组织管理中不可或缺的工具,它通过信息技术的应用,提高了干部管理的效率和准确性。干部管理系统的主要功能包括: 1. 信息管理:系统可以存储和管理干部的个人信息,包括基本资料、工作经历、教育背景、…...
 
轮式机器人简介
迄今为止,轮子一般是移动机器人学和人造交通车辆中最流行的运动机构。它可达到很高的效率, 如图所示, 而且用比较简单的机械就可实现它的制作。 另外,在轮式机器人设计中,平衡通常不是一个研究问题。 因为在所有时间里,轮式机器人一般都被设计成在任何时间里所有轮子均与地接…...
已知哈夫曼节点个数,求哈夫曼字符编码数
哈夫曼编码(Huffman Coding)是一种用于无损数据压缩的嫡编码(权编码)算法。 在哈夫曼树中,每个叶子节点都代表一个字符,而节点的权重通常代表字符的频率。在哈夫曼编码中,每个字符都会被赋予一个二进制编码。为了获得这些编码,我…...
Kubernetes Cluster IP,Node IP,Pod IP间通信原理解析
目录 1、Cluster IP2、Node IP3、NodePort4、Pod IP5、LoadBalancer6、三种IP间通信6.1、Pod IP 与 Pod IP 通信6.2、Pod IP 与 Cluster IP 通信6.3、Node IP 与 Pod IP 通信6.4、Node IP 与 Cluster IP 7、YAML 示例7.1、ClusterIP Service7.2、LoadBalancer Service 1、Clust…...
 
随机链表的深拷贝
1.题目 解题思路一:暴力求解,先创建新链表,然后把旧链表中的val和next指针给复制到新链表中,根据旧链表中的random指针所指向的旧链表中的val值找到所对应的节点,记录该节点的位置,就像数组一样,…...
328_C++_HTTP_HTTP协议传输data数据,为什么要进行base64编解码操作?
http传输data数据的时候,为什么必须进行base64转码后才能有效发送,接收方也必须base64转码后才能有效接受? HTTP HTTP传输数据时,使用Base64编码并不是必须的,但它确实在某些情况下非常有用。以下是为什么在某些情况…...
 
【二叉树】Leetcode N 叉树的层序遍历
题目讲解 429. N 叉树的层序遍历 算法讲解 在做层序遍历的时候由于它的每一个结点是有val vector child组成,所以在做层序遍历的时候需要考虑它每一层结点的个数,那我们就可以使用一个queue保存每一层的结点;那么我们在做第一层的时候&am…...
 
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
 
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
 
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
 
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
Python的__call__ 方法
在 Python 中,__call__ 是一个特殊的魔术方法(magic method),它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时(例如 obj()),Python 会自动调用该对象的 __call__ 方法…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...
