文章目录

  • 图数据的读写
    • Graphs.loadgraph
    • Graphs.loadgraphs
    • Graphs.savegraph
      • 保存单个图
      • 保存图字典
    • Graphs.loadlg_mult
    • Graphs.savelg
    • Graphs.savelg_mult
  • 图的生成器
    • 1. 随机图模型
      • 1.1 Erdős–Rényi 模型
      • 1.2 巴拉巴西-阿尔伯特模型 (无标度网络)
      • 1.3 小世界网络模型
      • 1.4 随机块模型 (SBM)
      • 1.5 配置模型
      • 1.6 静态适应度模型
    • 2. 规则图与拓扑结构
      • 2.1 完全图
      • 2.2 路径与环
      • 2.3 树结构
      • 2.4 星形与轮形
      • 2.5 网格与格子
      • 2.6 特殊结构
    • 3. 基于几何的图生成
      • 3.1 欧几里得图
    • 4. 其他随机图生成方法
      • 4.1 正则图
      • 4.2 锦标赛图
      • 4.3 有向无环图 (DAG)
      • 4.4 特殊算法
    • 5. 预定义的特殊图
    • 使用示例

图数据的读写

Graphs.loadgraph

loadgraph(file, gname="graph", format=LGFormat())

file 中读取以 format 格式命名的图,命名为 gname

实现说明gname 与图格式相关,仅在文件包含多个图时使用。如果文件格式不支持多个图,则忽略此值。默认值将来可能会更改。

Graphs.loadgraphs

loadgraphs(file, format=LGFormat())

file 中以 format 格式加载多个图。返回一个将图名称映射到图的字典。

实现说明:对于未命名的图,将使用默认名称 “graph”。此默认值将来可能会更改。

Graphs.savegraph

保存单个图

savegraph(file, g, gname="graph", format=LGFormat())

将名为 gname 的图 gformat 格式保存到 file。返回已写入的图的数量。

实现说明:分配的默认图名称 gname 将来可能会改变。

保存图字典

savegraph(file, d, format=LGFormat())

format 格式保存图字典 d(格式为 graphname => graph)到 file。返回已写入的图的数量。

示例

using Graphs
g1 = SimpleGraph(5,8)
g2 = SimpleGraph(7,10)
d = Dict("graph_1" => g1, "graph_2" => g2);
savegraph("myfile.txt", d, LGFormat())

实现说明:仅当文件格式支持多种图形类型时才有效。

Graphs.loadlg_mult

loadlg_mult(io)

从 IO 流 io 加载返回 (name=>graph) 字典。

Graphs.savelg

savelg(io, g, gname)

将以专有格式命名的图 g(名称 gname)写入指定的 IO 流 io。返回 1(写入的图的数量)。

Graphs.savelg_mult

savelg_mult(io, graphs)

(name=>graph) 字典 graphs 写入 IO 流 io,使用默认 GZip 压缩。返回已写入的图的数量。

图的生成器

下面将 Graphs.jl 中的图生成方法分为几个主要类别,并提供了每个方法的简要说明、参数和示例。

1. 随机图模型

1.1 Erdős–Rényi 模型

erdos_renyi(n, ne::Integer; is_directed=false, rng=nothing, seed=nothing)
erdos_renyi(n, p::Real; is_directed=false, rng=nothing, seed=nothing)
  • 功能: 创建带有 n 个顶点和 ne 条边或以概率 p 连接顶点的随机图
  • 参数:
    • n: 顶点数
    • ne: 边数(第一种形式)
    • p: 连接概率(第二种形式)
    • is_directed: 是否生成有向图
    • rng: 随机数生成器
    • seed: 随机数种子

1.2 巴拉巴西-阿尔伯特模型 (无标度网络)

barabasi_albert(n::Integer, n0::Integer, k::Integer; is_directed=false, complete=false, rng=nothing, seed=nothing)
barabasi_albert(n, k; is_directed=false, complete=false, rng=nothing, seed=nothing)
barabasi_albert!(g::AbstractGraph, n::Integer, k::Integer; rng=nothing, seed=nothing)
  • 功能: 创建具有幂律度分布的无标度网络图
  • 参数:
    • n: 最终顶点数
    • n0: 初始顶点数
    • k: 每个新顶点连接的边数
    • complete: 初始图是否为完全图
    • is_directed: 是否生成有向图

1.3 小世界网络模型

watts_strogatz(n, k, β; remove_edges=true, is_directed=false, rng=nothing, seed=nothing)
newman_watts_strogatz(n, k, β; is_directed=false, rng=nothing, seed=nothing)
  • 功能: 创建小世界网络图
  • 参数:
    • n: 顶点数
    • k: 每个顶点的初始邻居数
    • β: 边重连概率

1.4 随机块模型 (SBM)

stochastic_block_model(c, n; rng=nothing, seed=nothing)
stochastic_block_model(cint, cext, n; rng=nothing, seed=nothing)
  • 功能: 根据随机块模型生成图,节点被分配到不同的块,块内和块间有不同的连接概率

1.5 配置模型

random_configuration_model(n, k; rng=nothing, seed=nothing, check_graphical=false)
  • 功能: 根据给定的度序列创建随机图
  • 参数:
    • k: 每个节点的度组成的数组

1.6 静态适应度模型

static_fitness_model(m, fitness; rng=nothing, seed=nothing)
static_fitness_model(m, fitness_out, fitness_in; rng=nothing, seed=nothing)
  • 功能: 根据适应度模型创建随机图,节点间的连接概率与适应度值的乘积成正比

2. 规则图与拓扑结构

2.1 完全图

complete_graph(n)              # 无向完全图
complete_digraph(n)           # 有向完全图
complete_bipartite_graph(n1, n2)  # 完全二分图
complete_multipartite_graph(partitions)  # 完全多部图

2.2 路径与环

path_graph(n)      # 路径图
path_digraph(n)    # 有向路径图
cycle_graph(n)     # 环图
cycle_digraph(n)   # 有向环图

2.3 树结构

binary_tree(k)          # 二叉树
double_binary_tree(k)   # 双二叉树
uniform_tree(n; rng=nothing, seed=nothing)  # 均匀随机树

2.4 星形与轮形

star_graph(n)      # 星形图
star_digraph(n)    # 有向星形图
wheel_graph(n)     # 轮形图
wheel_digraph(n)   # 有向轮形图

2.5 网格与格子

grid(dims; periodic=false)  # 网格图
circular_ladder_graph(n)     # 循环梯形图
ladder_graph(n)             # 梯形图

2.6 特殊结构

barbell_graph(n1, n2)    # 杠铃图
lollipop_graph(n1, n2)   # 棒棒糖图
clique_graph(k, n)       # 团图
turan_graph(n, r)       # Turán图
roach_graph(k)          # Roach图

3. 基于几何的图生成

3.1 欧几里得图

euclidean_graph(N, d; rng=nothing, seed=nothing, L=1., p=2., cutoff=-1., bc=:open)
euclidean_graph(points; L=1, p=2, bc=:open)
  • 功能: 生成欧几里得空间中的随机几何图
  • 参数:
    • N: 点数
    • d: 维度
    • L: 空间范围 [0, L]^d
    • p: 距离度量参数 (p=2 为欧氏距离)
    • cutoff: 连接距离阈值
    • bc: 边界条件 (:open:periodic)

4. 其他随机图生成方法

4.1 正则图

random_regular_graph(n, k; rng=nothing, seed=nothing)      # 无向正则图
random_regular_digraph(n, k; dir=:out, rng=nothing, seed=nothing)  # 有向正则图

4.2 锦标赛图

random_tournament_digraph(n; rng=nothing, seed=nothing)  # 有向锦标赛图

4.3 有向无环图 (DAG)

random_orientation_dag(g; rng=nothing, seed=nothing)  # 随机有向无环图

4.4 特殊算法

dorogovtsev_mendes(n; rng=nothing, seed=nothing)  # Dorogovtsev-Mendes 生成器
expected_degree_graph(ω; rng=nothing, seed=nothing)  # 期望度图
static_scale_free(n, m, α; rng=nothing, seed=nothing, finite_size_correction=true)  # 静态无标度图

5. 预定义的特殊图

smallgraph(s)  # 创建预定义的小图

支持的小图包括::bull, :chvatal, :cube, :desargues, :diamond, :dodecahedron, :frucht, :heawood, :house, :housex, :icosahedron, :karate, :krackhardtkite, :moebiuskantor, :octahedron, :pappus, :petersen, :sedgewickmaze, :tetrahedron, :truncatedcube, :truncatedtetrahedron, :truncatedtetrahedron_dir, :tutte等。

使用示例

using Graphs
# 创建一个 Erdős–Rényi 随机图
g1 = erdos_renyi(10, 0.3)
# 创建一个巴拉巴西-阿尔伯特无标度网络
g2 = barabasi_albert(50, 3)
# 创建一个小世界网络
g3 = watts_strogatz(20, 4, 0.2)
# 创建一个随机几何图
g4, dists = euclidean_graph(30, 2, cutoff=0.4)
# 创建一个完全图
g5 = complete_graph(8)
# 创建一个路径图
g6 = path_graph(6)
# 使用预定义的特殊图
g7 = smallgraph(:petersen)

这些方法涵盖了从经典随机图模型到规则图、从几何图到特殊拓扑结构的多种图生成方式,可以满足不同场景下的图生成需求。

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

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

相关文章

Go指针全解析:从基础到实战

基本概念与定义指针的定义指针是一种特殊的变量类型,它存储的不是实际数据值,而是另一个变量在计算机内存中的地址。在底层实现上,指针本质上是保存内存位置的无符号整数,它直接指向内存中的特定位置,允许程序直接操作…

Oracle 查询有哪些用户 提示用户名密码无效

要查询 Oracle 数据库中的所有用户,可以使用以下 SQL 查询语句。这个查询将返回数据库中所有用户的列表。 [] SELECT username FROM all_users ORDER BY username;如果你有足够的权限(通常是 DBA 权限),你也可以使用 dba_users 视…

小白成长之路-develops -jenkins部署lnmp平台

文章目录一、准备工作1.1两台虚拟机1.2配置文件1.3免密登录二、实战1.构建主item2.测试nginx,php,mysql2.1新建测试项目2.2与正式项目绑定构建后的操作2.3测试2.4导入discuz项目总结一、准备工作 1.1两台虚拟机 服务器:192.168.144.24 客户端:192.168.…

【HarmonyOS 6】仿AI唤起屏幕边缘流光特效

【HarmonyOS 6】仿AI唤起屏幕边缘流光特效 一、前言 最近在做 HarmonyOS 6.0 的适配,发现 Beta1版本里多了个很实用的视效功能——自带背景的双边流光。 之前做屏幕边缘流光特效的时候,要么得自己写渐变动画拼效果,要么就得套好几个组件叠层&…

跟做springboot尚品甄选项目

springbootvue3 【尚硅谷Java项目《尚品甄选》 SpringBootSpringCloud萌新学会企业级java项目】003.后台系统-搭建前端环境(工程创建)_哔哩哔哩_bilibili E:\project\AllProJect\Shangpin Selection\项目材料素材\课件\尚品甄选项目课件 前端套用框架…

【Linux】创建线程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文章目录 一、为什么需要线程? 创建线程 示例:计算斐波恩夕法 一、为什么需要线程? 在多核处理器的计算机上,线程可…

HTML应用指南:利用POST请求获取全国九号电动车体验店服务店位置信息

九号公司(Ninebot)作为全球领先的智能短途出行解决方案提供商,始终秉持“智慧移动,愉悦生活”的品牌理念,致力于为个人用户打造安全、智能、时尚的城市出行体验。依托“智能硬件 + 数字服务 + 线下触点”三位一体的战略布局,九号公司已建立起覆盖全国、辐射全球的销售与服…

Kafka面试精讲 Day 4:Consumer消费者模型与消费组

【Kafka面试精讲 Day 4】Consumer消费者模型与消费组 在“Kafka面试精讲”系列的第四天,我们将深入探讨Kafka的核心组件之一——Consumer消费者模型与消费组(Consumer Group)。这是Kafka实现高吞吐、可扩展消息消费的关键机制,也…

使用 Uni-app 打包 外链地址APK 及 iOS 注意事项

本文详细介绍了如何使用 Uni-app 框架将项目打包为 Android APK 和 iOS 应用,重点讲解了 minSdkVersion、targetSdkVersion 和 abiFilters 的配置,以及 iOS 开发的注意事项。文章还包含了您提供的 WebView 示例代码,并提供了关键的注意事项&a…

异常处理小妙招——3.构造函数的安全第一原则:为什么不在构造函数中抛出异常?

文章目录灾难性的生日派对构造函数:对象的出生证明安全第一:严格的出生检查为什么要在构造函数中严格验证?1. 避免"僵尸对象"2. Fail-Fast(快速失败)原则现实世界的实践建议1. 使用工厂方法模式2. 使用Build…

iptables 和 ip route

文章目录iptables原理及常用命令表链链表链表总结iptables 常用命令及参数1. 规则管理命令 (Commands)2. 规则匹配参数 (Rule-Specification - Matches)3. 目标动作参数 (Target)命令示例配置流程示例ip route常用命令iptables和ip route的联系实用命令示例对比iptables原理及常…

RPC和HTTP的区别?

RPC和HTTP是两种不同的通信协议,它们在通信方式、性能效率以及灵活性可扩展性等方面存在区别。以下是具体分析: 通信方式 RPC:RPC是基于远程过程调用的二进制协议,它允许客户端像调用本地函数一样调用远程服务器上的函数或方法[2]…

贝叶斯分类(Bayes Classify)

一. 核心思想贝叶斯分类是一类基于贝叶斯定理(Bayes Theorem)和概率统计的分类算法,核心思想是 “通过已知的先验概率,结合数据的似然性,计算后验概率,最终将样本归为后验概率最高的类别”。它在机器学习、…

怎么熟悉业务,我是做前端的,但对业务了解没有渠道

作为前端开发者,想深入了解业务但“没有渠道”,这是非常普遍的痛点。很多前端同学只接到“切图实现页面”的任务,久而久之就成了“实现工具人”。但业务理解力,恰恰是区分“初级”和“高级”前端的核心分水岭。 好消息是&#xff…

如何批量在PDF文档最后一页盖章?

在面对上百份需要处理的 PDF 文档时,逐个打开文档盖章再进行保存,这些步骤不仅提高我们工作的繁琐,还容易导致处理位置错误或遗漏。那么怎么去将 PDF 文档末页实现批量自动打上电子印章?一般的方式没有办法来满足我们高效率办公的…

Keras/TensorFlow 中 `predict()` 函数详细说明

Keras/TensorFlow 中 predict() 函数详细说明 predict() 是 Keras/TensorFlow 中用于模型推理的核心方法,用于对输入数据生成预测输出。下面我将从多个维度全面介绍这个函数的用法和细节。 一、基础语法和参数 基本形式 predictions model.predict(x,batch_sizeNon…

题解:UVA1589 象棋 Xiangqi

看到代码别急着走,还要解释呢!哈哈,知道这个题我是怎么来的吗?和爸爸下象棋20场输17场和2场QWQ于是乎我就想找到一个可以自动帮我下棋的程序,在洛谷上面搜索,就搜索到了这个题。很好奇UVA的为啥空间限制是0…

基于YOLOv11的脑卒中目标检测及其完整数据集——推动智能医疗发展的新机遇!

在当今科技迅速发展的时代,脑卒中作为一种严重威胁人类健康的疾病,其早期的检测和及时的干预显得尤为重要。为此,本项目推出基于YOLOv11的脑卒中目标检测系统,结合完整的数据集,不仅提高了检测的效率,更为医…

sed——Stream Editor流编辑器

文章目录前言一、什么是sed二、sed的原理2.1 sed工作流程的三个步骤2.2 sed的两个重要空间:2.3 sed的具体运作流程三、sed的常见用法3.1 sed的基本格式3.2 常用选项3.3 常用操作3.3.1 基本语法规则3.3.2 常用操作命令3.4 操作用法示例3.4.1 输出符合条件的文本&…

Zotero白嫖腾讯云翻译

Zotero白嫖腾讯云无限制字数翻译 文章目录Zotero白嫖腾讯云无限制字数翻译1、安装插件1、登录腾讯云2、找到访问管理进入3、创建一个子用户4、启用机器翻译功能5、复制秘钥6、设置到Zotero1、安装插件 zotero-pdf-translate:https://github.com/windingwind/zotero…