当前位置: 首页 > 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.xdnf.cn/news/1409149.html

相关文章:

  • 一种使用 Java / Kotlin 编写检测BT种子的磁力链接是否有可用 peers 的程序
  • 扩展:如何设计与实现一个微服务架构下的跨服务异常处理适配器?
  • linux修改权限命令chmod
  • sunset: twilight靶场
  • 利用ms-swift微调和百炼平台微调大模型
  • FTP - 学习/实践
  • 【学习笔记】LLM Interview(Agent相关)
  • (附源码)基于Vue的教师档案管理系统的设计与实现
  • 安装Android Studio
  • centos 7 安装docker、docker-compose教程
  • SketchUp Pro 2024 Mac 3D建模 草图设计大师
  • Redis八股小记
  • 【了解下TJ、TC、TB、TT、TA、qJA、qJC、qJB、YJB、YJT】
  • Asible——将文件部署到受管主机和管理复杂的Play和Playbook
  • [linux仓库]解剖Linux内核:文件描述符(fd)的‘前世今生’与内核数据结构探秘
  • 编写一个用scala写的spark程序从本地读取数据,写到本地
  • 【ArcGIS微课1000例】0150:如何根据地名获取经纬度坐标
  • openssl使用SM2进行数据加密和数据解密
  • 科普:requirements.txt 和 environment.yml
  • Labview使用modbus或S7与PLC通信
  • Machine Learning HW3 report:图像分类(Hongyi Lee)
  • 《深入剖析Kafka分布式消息队列架构奥秘》之Springboot集成Kafka
  • 中级统计师-统计实务-第四章 专业统计
  • 嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例
  • 【重学MySQL】九十五、Linux 下 MySQL 大小写规则设置详解
  • CF每日3题(1500-1600)
  • 阿里云创建自己的博客,部署wordpress
  • 基于Matlab元胞自动机的强场电离过程模拟与ADK模型分析
  • Scikit-learn Python机器学习 - 数据集的划分
  • 网格图--Day03--网格图DFS--2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量