r - 如何在 igraph 中生成非循环随机图?
问题描述
我想在 R igraph 中生成随机无环图。我知道函数 sample_pa 根据 Barabasi-Albert 模型为 m=1 无标度无环图生成。如果我们可以强制 igraph 为更高的 m 值生成非循环图,我很感兴趣?或者我们可以根据 igraph R(或其他 R 包)中的其他算法生成无环图吗?我的目标是生成具有不同分支模式的无环图。因此,我对这些图表很感兴趣。
解决方案
我想在 R igraph 中生成随机无环图。
我主要对无向图感兴趣。
无环无向图是森林,即连接组件是树的图。
我知道函数 sample_pa 根据 Barabasi-Albert 模型为 m=1 无标度无环图生成。如果我们可以强制 igraph 为更高的 m 值生成非循环图,我很感兴趣?
这在数学上是不可能的。节点上的树n
有n-1
边缘,而森林的边缘更少。对于更高的 in 值,m
会有sample_pa
更多的边缘,因此会有循环。
或者我们可以根据 igraph R 中的其他算法生成无环图吗
查看 igraph 中的随机图生成器。其中有几个会输出树。例如,检查sample_growing
.citation = TRUE
但是,这些都不会对树进行统一采样。据推测,您不仅想生成任何树,还想了解它们来自的分布。
最近我为 igraph 贡献了一个统一的树采样器,以及一个统一的生成树采样器,但它还没有在 R 接口中。您可以使用Mathematica 界面(当然也可以使用 C 语言)进行尝试。
Table[IGTreeGame[10], 6]
grid = IGSquareLattice[{10, 10}];
HighlightGraph[grid, IGRandomSpanningTree[grid], GraphHighlightStyle -> "DehighlightHide"]
但是从有向图中,总是可以获得无向版本。
但不是非循环的。
1
通过用所需数量的s随机填充邻接矩阵的上部,很容易生成随机有向无环图。
当您将其转换为无向时,它通常不会是非循环的。
例如,这不是无向的:
事实上,任何简单的无向图都可以定向,因此有向图将是无环的。无向无环图和有向无环图之间几乎没有关系。
推荐阅读
- svg - 如何在 Jupyter Notebook 的循环中动态更改 SVG 输出?
- javascript - 来自 ramda 实现的 Javascript/Typescript 分区函数
- javascript - Snap.select 在 React.js 中为空,但在原生 JavaScript 中不为空
- sql - SQLITE 错误或缺少数据库(没有这样的表:路径)
- azure - 使用 powershell Get-AzCosmosDBSqlContainerthroughput 获取 Cosmodb 容器吞吐量
- kubernetes - 在 kubernetes 中打开 chown 或 dac_override 功能时是否存在任何安全问题
- javascript - 如何使用 id 而不是索引来定位按钮?
- java - 如何从具有生成 ID 的抽象类创建子类?
- javascript - 不工作,在 html 中显示 javascript 变量
- python-3.x - 在 anaconda 命令提示符中运行 jupyter notebook 时如何修复“导入 win32api 时 DLL 加载失败”