文章目录

  • 图论的集合类操作
      • Base.getindex
      • Base.intersect
      • Base.join
      • Base.reverse
      • Base.reverse!
      • Base.size
      • Base.sum
      • Base.sum
      • Base.union
    • 图生成与转换
      • Graphs.cartesian_product`
      • Graphs.complement
      • Graphs.compute_shifts
      • Graphs.crosspath
      • Graphs.difference
      • Graphs.egonet
      • Graphs.induced_subgraph
      • Graphs.merge_vertices!
      • Graphs.merge_vertices
      • Graphs.symmetric_difference
      • Graphs.tensor_product
    • 其他函数
      • SparseArrays.blockdiag
      • SparseArrays.sparse

参考链接:
https://juliagraphs.org/Graphs.jl/stable/core_functions/operators/

图论的集合类操作

Base.getindex

方法

g[iter]

返回由 iter 诱导的子图。等价于 induced_subgraph(g, iter)[1]

Base.intersect

方法, 边的交集

intersect(g, h)

返回一个仅包含同时存在于图 g和图 h 中的边的图。

实现说明:此函数可能生成度数为 0 的顶点。保留输入图的 eltype。

示例

using Graphs
g1 = SimpleDiGraph([0 1 0 0 0; 0 0 1 0 0; 1 0 0 1 0; 0 0 0 0 1; 0 0 0 1 0])
g2 = SimpleDiGraph([0 1 0; 0 0 1; 1 0 0])
foreach(println, edges(intersect(g1, g2)))

Base.join

方法

join(g, h)

返回一个组合图 g 和 h 的图(使用 blockdiag),然后添加 g中的顶点与 h 中的顶点之间的所有边

实现说明:保留输入图的 eltype。如果生成的图的顶点数超出 eltype 的范围,则会报错。

示例

using Graphs
g = join(star_graph(3), path_graph(2))
println(g) # 输出: {5, 9} undirected simple Int64 graph
foreach(println, edges(g))

Base.reverse

函数 反向图

reverse(g)

返回一个有向图,其中所有边的方向都与原始有向图 g` 相反。

实现说明:保留输入图的 eltype。

示例

using Graphs
g = SimpleDiGraph([0 1 0 0 0; 0 0 1 0 0; 1 0 0 1 0; 0 0 0 0 1; 0 0 0 1 0])
foreach(println, edges(reverse(g)))

Base.reverse!

函数

reverse!(g)

有向图 g 的就地反转(修改原图)。非修改版本请参见 Base.reverse。

Base.size

方法 顶点数

size(g, i)

如果 i=1 或 i=2,则返回图 g` 的顶点数,否则返回 1。

示例

using Graphs
g = cycle_graph(4)
println(size(g, 1)) # 输出: 4
println(size(g, 2)) # 输出: 4
println(size(g, 3)) # 输出: 1

Base.sum

方法 顶点度

sum(g, i)

返回图的入度(i=1)或出度(i=2)值的向量。

示例

using Graphs
g = SimpleDiGraph([0 1 0 0 0; 0 0 1 0 0; 1 0 0 1 0; 0 0 0 0 1; 0 0 0 1 0])
println(sum(g, 2)) # 输出: [1, 1, 2, 1, 1]
println(sum(g, 1)) # 输出: [1, 1, 1, 2, 1]

Base.sum

方法 边数

sum(g)

返回图 g` 中的边数。

示例

using Graphs
g = SimpleGraph([0 1 0; 1 0 1; 0 1 0])
println(sum(g)) # 输出: 2

Base.union

方法 顶点的并,边的并

union(g, h)

通过取所有顶点和边的集合并集,返回一个组合图 g 和 h 的图。

实现说明:保留输入图的 eltype。如果生成的图的顶点数超出 eltype 的范围,则会报错。

示例

using Graphs
g = SimpleGraph(3); h = SimpleGraph(5)
add_edge!(g, 1, 2); add_edge!(g, 1, 3)
add_edge!(h, 3, 4); add_edge!(h, 3, 5); add_edge!(h, 4, 5)
f = union(g, h)
foreach(println, edges(f))

图生成与转换

Graphs.cartesian_product`

方法

cartesian_product(g, h)

返回 g 和 h 的笛卡尔积图。

实现说明:保留输入图的 eltype。如果生成的图的顶点数超出 eltype 的范围,则会报错。

示例

using Graphs
g = cartesian_product(star_graph(3), path_graph(3))
println(g) # 输出: {9, 12} undirected simple Int64 graph
foreach(println, edges(g))

Graphs.complement

方法

complement(g)

返回图 g` 的补图。

实现说明:保留输入图的 eltype。

示例

using Graphs
g = SimpleDiGraph([0 1 0 0 0; 0 0 1 0 0; 1 0 0 1 0; 0 0 0 0 1; 0 0 0 1 0])
foreach(println, edges(complement(g)))

Graphs.compute_shifts

方法

compute_shifts(n::Int, x::AbstractArray)

确定 x 中的所有元素中有多少个小于 ii 从 1 到 n

Graphs.crosspath

函数

crosspath(len::Integer, g::Graph)

返回一个将图 g 重复 len 次的图,并通过路径将每个顶点与其副本连接起来。

实现说明:保留输入图的 eltype。如果生成的图的顶点数超出 eltype 的范围,则会报错。

示例

using Graphs
g = crosspath(3, path_graph(3))
println(g) # 输出: {9, 12} undirected simple Int64 graph
foreach(println, edges(g))

Graphs.difference

方法

difference(g, h)

返回一个图,其边在图 g 中但不在图 h 中。

实现说明:此函数可能会生成具有 0 度顶点的图。保留输入图的 eltype。

示例

using Graphs
g1 = SimpleDiGraph([0 1 0 0 0; 0 0 1 0 0; 1 0 0 1 0; 0 0 0 0 1; 0 0 0 1 0])
g2 = SimpleDiGraph([0 1 0; 0 0 1; 1 0 0])
foreach(println, edges(difference(g1, g2)))

Graphs.egonet

方法

egonet(g, v, d, distmx=weights(g))

返回由距离顶点 v 为 d 的邻居诱导的子图,使用可选的权重 distmx(默认使用 weights(g))。这等价于 induced_subgraph(g, neighborhood(g, v, d, dir=dir))[1]`。

可选参数

  • dir=:out:如果 g 是有向图,此参数指定相对于 v 的边方向(即 :in 或 :out`)。

Graphs.induced_subgraph

方法

induced_subgraph(g, vlist)
induced_subgraph(g, elist)

返回由顶点列表 vlist 或边列表 elist 诱导的图 g 的子图,以及一个将新顶点映射回旧顶点的向量 vmap(子图中的顶点 i 对应于原始图中的顶点 vmap[i])。

返回的图有 length(vlist) 个顶点,新顶点 i 对应于原始图中 vlist 的第 i 个顶点。

使用示例

using Graphs
g = complete_graph(10)
sg, vmap = induced_subgraph(g, 5:8)
println(nv(sg)) # 输出: 4
println(ne(sg)) # 输出: 6
println(vm[4])  # 输出: 8sg, vmap = induced_subgraph(g, [2,8,3,4])
println(sg == g[[2,8,3,4]]) # 输出: trueelist = [Edge(1,2), Edge(3,4), Edge(4,8)]
sg, vmap = induced_subgraph(g, elist)
println(sg == g[elist]) # 输出: true

Graphs.merge_vertices!

方法

merge_vertices!(g, vs)

将 vs 中指定的顶点合并为单个顶点,其索引将是 vs 中的最小值。所有连接到 vs` 中顶点的边都将连接到新的合并顶点。

返回一个向量,其中新顶点值由原始顶点索引索引。

实现说明:仅支持 SimpleGraph`。

示例

using Graphs
g = path_graph(5)
foreach(println, edges(g)) # 输出原始边
vmap = merge_vertices!(g, [2, 3])
println(vmap) # 输出新顶点映射
foreach(println, edges(g)) # 输出合并后的边

Graphs.merge_vertices

方法

merge_vertices(g::AbstractGraph, vs)

创建一个新图,其中 vs 中的所有顶点都被别名为同一个顶点 minimum(vs)

示例

using Graphs
g = path_graph(5)
foreach(println, edges(g)) # 输出原始边
h = merge_vertices(g, [2, 3])
foreach(println, edges(h)) # 输出新图的边

Graphs.symmetric_difference

方法

symmetric_difference(g, h)

返回一个图,其边来自图 g 但不在图 h 中,或来自图 h 但不在图 g 中。

实现说明:此函数可能会生成包含 0 度顶点的图。保留输入图的 eltype。如果生成的图的顶点数超出 eltype 的范围,则会报错。

示例

using Graphs
g = SimpleGraph(3); h = SimpleGraph(3)
add_edge!(g, 1, 2)
add_edge!(h, 1, 3); add_edge!(h, 2, 3)
f = symmetric_difference(g, h)
foreach(println, edges(f))

Graphs.tensor_product

方法

tensor_product(g, h)

返回 g 和 h 的张量积图。

实现说明:保留输入图的 eltype。如果生成的图的顶点数超出 eltype 的范围,则会报错。

示例

using Graphs
g = tensor_product(star_graph(3), path_graph(3))
println(g) # 输出: {9, 8} undirected simple Int64 graph
foreach(println, edges(g))

其他函数

SparseArrays.blockdiag

方法

blockdiag(g, h)

返回一个具有 |V(g)| + |V(h)| 个顶点和 |E(g)| + |E(h)| 条边的图,其中图 h 的顶点和边附加到图 g

实现说明:保留输入图的 eltype。如果生成的图的顶点数超出 eltype 的范围,则会报错。

示例

using Graphs
g1 = SimpleDiGraph([0 1 0 0 0; 0 0 1 0 0; 1 0 0 1 0; 0 0 0 0 1; 0 0 0 1 0])
g2 = SimpleDiGraph([0 1 0; 0 0 1; 1 0 0])
g = blockdiag(g1, g2)
println(g) # 输出: {8, 9} directed simple Int64 graph
foreach(println, edges(g))

SparseArrays.sparse

方法

sparse(g)

返回图 g` 的默认邻接矩阵。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【链表 - LeetCode】146. LRU 缓存

146. LRU 缓存 题解&#xff1a; class LRUCache {list<pair<int,int>>v;unordered_map<int,list<pair<int,int>>::iterator>idx;int capacity; public:LRUCache(int capacity):capacity(capacity){}int get(int key) {if(idx.count(key) 0) …

Elasticsearch vs Solr vs OpenSearch:搜索引擎方案对比与索引设计最佳实践

Elasticsearch vs Solr vs OpenSearch&#xff1a;搜索引擎方案对比与索引设计最佳实践 随着大数据和实时分析需求的爆发&#xff0c;搜索引擎已成为许多业务系统中的核心组件。本篇文章将从“技术方案对比分析型”角度切入&#xff0c;重点比较三大主流搜索引擎&#xff1a;El…

光颉科技)Viking)的CS25FTFR009 1225 0.009R/9mR 3W电阻介绍-华年商城

“**华年商城”**小编为您介绍&#xff1a;光颉科技&#xff08;Viking&#xff09;的CS25FTFR009 1225 0.009R/9mR 3W电阻 光颉CS25FTFR009合金电阻&#xff1a;0.009Ω/9mΩ 3W 1%精密采样电阻 光颉科技&#xff08;Viking&#xff09;的CS25FTFR009是一款高性能的电流检测电…

港科大开放世界长时域具身导航!LOVON:足式机器人开放词汇目标导航

作者&#xff1a;Daojie Peng1^{1}1, Jiahang Cao1,2^{1,2}1,2, Qiang Zhang1,2^{1,2}1,2, Jun Ma1,3^{1,3}1,3单位&#xff1a;1^{1}1香港科技大学&#xff08;广州&#xff09;&#xff0c;2^{2}2北京人形机器人创新中心&#xff0c;3^{3}3香港科技大学论文标题&#xff1a;L…

【前端教程】JavaScript 数组对象遍历与数据展示实战

在前端开发中&#xff0c;处理数组和对象是日常工作的基础。无论是篇文章将通过一个具体案例&#xff0c;详细讲解如何使用JavaScript遍历包含对象的数组&#xff0c;并将数据以清晰的格式展示在页面上。我们会从基础语法开始&#xff0c;逐步优化代码&#xff0c;最终实现一个…

无重复字符的最长子串,leetCode热题100,C++实现

题目来源&#xff1a;leetCode 3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 解法 class Solution { public:int lengthOfLongestSubstring(string s) {unordered_set<…

卷积神经网络中1×1卷积的作用

part I &#xff1a;来源part II &#xff1a;应用part III &#xff1a;作用&#xff08;降维、升维、跨通道交互、增加非线性&#xff09;part IV &#xff1a;从fully-connected layers的角度理解一、来源&#xff1a;[1312.4400] Network In Network &#xff08;如果11…

VMware设置Ubuntu虚拟机桥接模式完整教程

VMware 设置 Ubuntu 虚拟机桥接模式完整教程 下面是一个详细的、避免出错的 VMware Ubuntu 桥接模式设置教程&#xff0c;包含常见问题的解决方案。 准备工作 确保宿主机&#xff08;Windows 11&#xff09;已连接到网络&#xff08;有线或无线&#xff09;确认您有管理员权限关…

浅析NVMe协议:DIF

文章目录概述DIF数据格式盘片支持DIFFormatPILPIMSETLBAF协议命令DIF支持PRACTPRACT0PRACT1PRCHK相关参考概述 NVMe协议将DIF信息作为元数据的一部分进行携带。 DIF数据格式 DIF的PI由多个字段组成&#xff0c;包括&#xff1a; Guard字段&#xff1a;基于逻辑块数据计算的C…

【观成科技】蔓灵花User下载者加密通信分析

概述2025年5月7日&#xff0c;蔓灵花&#xff08;BITTER&#xff09;组织针对巴基斯坦电信公司工作人员发起钓鱼邮件攻击&#xff0c;投递伪装为安全简报的恶意邮件&#xff0c;附件为IQY类型的Web查询文件。该文件在用户执行后通过HTTP协议获取远程CMD指令并执行&#xff0c;进…

Redis 保证数据不丢失

Redis 保证数据不丢失&#xff08;或最大限度减少丢失&#xff09;的核心是通过 持久化机制 结合 合理的配置策略 实现的。具体方案如下&#xff1a;一、核心&#xff1a;开启 Redis 持久化&#xff08;防止进程崩溃丢失数据&#xff09;Redis 提供两种持久化方式&#xff0c;可…

NUMA/SNC 4种组合下Stream+MLC性能对决:双路服务器BIOS调优全攻略

关于调整 BIOS NUMA 与 SNC 选项的 Stream / MLC 性能测试总结一、测试背景与目的在现代多路 Intel Xeon 服务器上&#xff0c;NUMA&#xff08;Non-Uniform Memory Access&#xff09;与 SNC&#xff08;Sub-NUMA Clustering&#xff09;是两项决定内存访问延迟与带宽的关键 B…

Java-113 深入浅出 MySQL 扩容全攻略:触发条件、迁移方案与性能优化

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布&#xff01;“快的…

Kafka Connect + Streams 用到极致从 CDC 到流处理的一套落地方案

关键目标&#xff1a; 零丢失&#xff1a;端到端 Exactly Once&#xff08;Source 端事务 Streams exactly_once_v2 Sink DLQ&#xff09;。低延迟&#xff1a;Producer 端批量压缩 Streams 缓存 合理 poll/commit 间隔。可恢复&#xff1a;Connect/Streams 的 rebootstrap…

# `std::basic_istream`总结

std::basic_istream总结 文章目录std::basic_istream总结概述常用类型定义全局对象核心成员函数1. 格式化输入2. 非格式化输入3. 流定位4. 其他功能继承的功能来自 std::basic_ios状态检查状态管理来自 std::ios_base格式化标志流打开模式特点说明例子std::basic_istream全面用…

人工智能——课程考核

课程考核包括平时测验&#xff08;75%&#xff09;和讨论&#xff08;25%&#xff09;两个环节&#xff0c;测验采用线上随堂考试&#xff08;2-3次&#xff0c;具体会在本课堂发布&#xff09;重点考核&#xff1a;A*算法、极大极小过程&#xff08;α-β剪枝&#xff09;、不…

机器学习-时序预测1

最近面试过程中&#xff0c;Predict-then-Optimize是运筹优化算法工程师未来的发展方向。就像我之前写过的运筹优化&#xff08;OR&#xff09;-在机器学习&#xff08;ML&#xff09;浪潮中何去何从&#xff1f;-CSDN博客&#xff0c;机器学习适合预测、运筹优化适合决策。我研…

vim-plugin AI插件

文章目录一、vim 插件管理vim-plug二、如何使用和配置 vim-plug第 1 步&#xff1a;安装 vim-plug第 2 步&#xff1a;配置你的 .vimrc / init.vim第 3 步&#xff1a;安装插件常用 vim-plug 命令三、配置vim-aivim-aivim-deepseekvim升级四、配置 AI 插件GitHub Copilot第 1 步…

Adobe Photoshop 2025 最新下载安装教程,附PS2025下载

点击获取&#xff1a;Adobe Photoshop 2025 安装教程&#xff1a; 1、安装包下载后&#xff0c;鼠标右键解压安装包 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 2、双击打开解压后的安装包文件夹 3、打开setup文件夹 添加图片注释&#xff0c;不超过…

LeetCode算法日记 - Day 27: 计算右侧小于当前元素的个数、翻转对

目录 1. 计算右侧小于当前元素的个数 1.1 题目解析 1.2 解法 1.3 代码实现 2. 翻转对 2.1 题目解析 2.2 解法 2.3 代码实现 1. 计算右侧小于当前元素的个数 315. 计算右侧小于当前元素的个数 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums &#xf…