当前位置: 首页 > news >正文

【图论】Graph.jl 核心函数

文章目录

    • 核心函数
      • AbstractPathState
    • 顶点操作函数
      • add_vertices!(g, n)
    • 邻居查询函数
      • all_neighbors(g, v)
      • common_neighbors(g, u, v)
      • neighbors(g, v)
    • 度计算函数
      • degree(g[, v])
      • indegree(g[, v])
      • outdegree(g[, v])
      • degree_histogram(g, degfn=degree)
      • degree_histogram(g, degfn=degree)
    • 图特征计算函数
      • density(g)
      • has_self_loops(g)
      • num_self_loops(g)
      • is_ordered(e)
      • weights(g)
    • 极值函数
      • noallocextreme(f, comparison, initial, g)
      • Δ(g)
      • Δin(g)
      • Δout(g)
      • δ(g)
      • δin(g)
      • δout(g)
      • squash(g)

核心函数

AbstractPathState

提供最短路径计算信息的抽象类型。

顶点操作函数

add_vertices!(g, n)

向图 g 中添加 n 个新顶点。返回成功添加的顶点数。

示例:

using Graphs
g = SimpleGraph()
println(g)
add_vertices!(g, 2)
println(g)

邻居查询函数

all_neighbors(g, v)

返回图 g 中顶点 v 的所有入站和出站邻居的列表。对于无向图,这等同于 outneighbors 和 inneighbors`。

实现说明: 返回当前图内部结构的引用,而非副本。请勿修改结果。

示例:

using Graphs
g = DiGraph(3)
add_edge!(g, 2, 3)
add_edge!(g, 3, 1);
println(all_neighbors(g, 1))
println(all_neighbors(g, 2))
println(all_neighbors(g, 3))

common_neighbors(g, u, v)

返回图 g 中顶点 u 和 v 的共同邻居。

实现说明: 返回当前图内部结构的引用,而非副本。请勿修改结果。

示例:

using Graphs
g = SimpleGraph(4);
add_edge!(g, 1, 2);
add_edge!(g, 2, 3);
add_edge!(g, 3, 4);
add_edge!(g, 4, 1);
add_edge!(g, 1, 3);
println(common_neighbors(g, 1, 3))
println(common_neighbors(g, 1, 4))

neighbors(g, v)

返回从图 g 中顶点 v 可到达的所有邻居的列表。对于有向图,默认值等于 outneighbors`。

实现说明: 返回当前图内部结构的引用,而非副本。请勿修改结果。

示例:

using Graphs
g = DiGraph(3);
add_edge!(g, 2, 3);
add_edge!(g, 3, 1);
println(neighbors(g, 1))
println(neighbors(g, 2))
println(neighbors(g, 3))

度计算函数

degree(g[, v])

返回一个包含图 g 中每个顶点度数的向量。对于有向图,顶点的度数等于其入度与出度之和。

  • 如果 v 指定且为单个顶点,则仅返回 v 的度数
  • 如果 v 指定且为顶点向量,则仅返回 v 中顶点的度数

示例:

using Graphs
g = DiGraph(3)
add_edge!(g, 2, 3)
add_edge!(g, 3, 1);
println(degree(g))
println(degree(g,[1,3]))
println(degree(g,3))

indegree(g[, v])

返回一个包含图 g 中每个顶点入度的向量。

  • 如果 v 指定且为单个顶点,则仅返回 v 的入度
  • 如果 v 指定且为顶点向量,则仅返回 v 中顶点的入度

示例:

using Graphs
g = DiGraph(3);
add_edge!(g, 2, 3);
add_edge!(g, 3, 1);
println(indegree(g))
println(indegree(g,[2,3]))
println(indegree(g,2))

outdegree(g[, v])

返回一个包含图 g 中每个顶点出度的向量。

  • 如果 v 指定且为单个顶点,则仅返回 v 的出度
  • 如果 v 指定且为顶点向量,则仅返回 v 中顶点的出度

示例:

using Graphs
g = DiGraph(3);
add_edge!(g, 2, 3);
add_edge!(g, 3, 1);
println(outdegree(g))
println(outdegree(g,[1,2]))
println(outdegree(g,2))

degree_histogram(g, degfn=degree)

返回一个 Dict,表示具有由键表示的度数的顶点的数量。可以通过覆盖 degfn 来指定度函数(例如,indegree 或 outdegree`)。

degree_histogram(g, degfn=degree)

返回一个 Dict,表示具有由键表示的度数的顶点的数量。可以通过覆盖 degfn 来指定度函数(例如,indegree 或 outdegree`)。

图特征计算函数

density(g)

返回图 g 的密度。密度定义为实际边数与可能边数之比。

has_self_loops(g)

如果图 g 存在任何自循环,则返回 true`。

示例:

using Graphs
g = SimpleGraph(2)
add_edge!(g, 1, 2)
println(has_self_loops(g))
add_edge!(g, 1, 1)
println(has_self_loops(g))

num_self_loops(g)

返回图 g 中的自循环数。

示例:

using Graphs
g = SimpleGraph(2);
add_edge!(g, 1, 2);
println(num_self_loops(g))
add_edge!(g, 1, 1);
println(num_self_loops(g))

is_ordered(e)

如果边 e 的源顶点小于或等于目标顶点,则返回 true`。

示例:

using Graphs
g = DiGraph(2);
add_edge!(g, 2, 1);
println( is_ordered(first(edges(g))))

weights(g)

以矩阵形式返回图 g 边的权重。默认为 Graphs.DefaultDistance`。

实现说明: 一般来说,引用不存在边的权重是未定义的行为。不要依赖 weights 矩阵来替代图的 adjacency_matrix`。

极值函数

noallocextreme(f, comparison, initial, g)

计算极值 [f(g,i) for i=i:nv(g)] 而不收集所有值。

Δ(g)

返回图 g 中顶点的最大度 (degree)。

Δin(g)

返回图 g 中顶点的最大入度 (indegree)。

Δout(g)

返回图 g 中顶点的最大出度 (outdegree)。

δ(g)

返回图 g 中顶点的最小度 (degree)。

δin(g)

返回图 g 中顶点的最小入度 (indegree)。

δout(g)

返回图 g 中顶点的最小出度 (outdegree)。

squash(g)

返回具有可容纳所有顶点的最小实用 eltype 的图的副本。如果 eltype 没有改变,也可能返回原始图表。

http://www.dtcms.com/a/359929.html

相关文章:

  • 如何通过 AI IDE 集成开发工具快速生成简易留言板系统
  • Java面试-微服务(spring cloud篇)
  • 飞牛Docker部署免费frp内网穿透
  • RK3568平台开发系列讲解:瑞芯微平台4G模块篇移植
  • TFS-2005《A Possibilistic Fuzzy c-Means Clustering Algorithm》
  • 商业航天:中、美、欧“软件定义卫星” 路线全解析
  • Iterative loop of ML development|机器学习的迭代发展
  • JavaEE初阶网络原理-初识
  • PythonDay42
  • 提取动漫图像轮廓并拟合为样条曲线(MATLAB)
  • Mysql学习 Day3 Explain详解与索引优化
  • APB验证VIP Agent的各个组件之间的通信
  • SpringAI应用开发面试实录:核心技术、架构设计与业务场景全解析
  • React前端开发_Day12_极客园移动端项目
  • 解决 uni-app 中大数据列表的静默UI渲染失败问题
  • UniApp 基础开发第一步:HBuilderX 安装与环境配置
  • Wi-Fi技术——物理层技术
  • 【C++】构造函数初始化详解
  • 漫谈《数字图像处理》之基函数与基图像
  • 分布式测试平台ITP:让自动化测试更高效、更稳定
  • IS-IS 与 OSPF 协议机制比较
  • 软考 系统架构设计师系列知识点之杂项集萃(138)
  • 【Proteus仿真】开关控制系列仿真——开关控制LED/拨码开关二进制计数/开关和继电器控制灯灭
  • Java试题-选择题(26)
  • zkML-JOLT——更快的ZK隐私机器学习:Sumcheck +Lookup
  • 【iOS】MVC架构
  • OpenCL C 内核(Kernel)
  • 在实践中学Java(中)面向对象
  • Elasticsearch vs Solr vs OpenSearch:搜索引擎方案对比与索引设计最佳实践
  • [光学原理与应用-353]:ZEMAX - 设置 - 可视化工具:2D视图、3D视图、实体模型三者的区别,以及如何设置光线的数量