请帮助用最简单的方法生成一个给定大小为N的完全随机加权无向图,以便权重形成度量空间(服从三角不等式)。我知道有networkx库,但不知道如何做到这一点。在度量空间中生成一个完整的图
回答
虽然@SvenMarnach是正确的,我以为我会提到它是很容易在networkx从距离矩阵来初始化一个图:
import numpy as np
import networkx as nx
V = 100 # number of nodes
D = 2 # dimensionality
positions = np.random.rand(V, D)
differences = positions[:, None, :] - positions[None, :, :]
distances = np.sqrt(np.sum(differences**2, axis=-1)) # euclidean
# create a weighted, directed graph in networkx
graph = nx.from_numpy_matrix(distances, create_using=nx.DiGraph())
您可以随机地将图形嵌入任意度量空间。这个例子使用欧几里得平面。同样,我们需要回答的问题是权重的随机分布是否有任何要求。 –
@Paul我已经设法理解/可视化最终如何将随机坐标转换为距离矩阵,但对我来说仍然很困难。你能推荐任何好的阅读吗? – VladimirLenin
据推测,这就是“差异=职位[:,无,:] - 职位[无,:,]”这是给你麻烦的吗?我所做的就是所谓的“广播”,以及非常方便的numpy阵列功能。本质上,它相当于在由'None'指示的维度中平铺数组(没有实际创建平铺数组)。看看[文档](https://docs.scipy.org/doc/numpy-1.13.0/user/basics.broadcasting.html)或谷歌一个体面的教程。 – Paul
- 1. 生成一个完整的DIN A4背景图像的PDF
- 2. 生成一个完整的对象图形界面
- 3. 在MVC中生成完整的URL?
- 4. 谷歌地图API - 调整大小生成空白空间
- 5. 创建一个完整的三角形,包括空白空间
- 6. Gnuplot生成一个空的图
- 7. 如何在sqlserver 2005中完成一个完整的外连接?
- 8. 如何在Linq中完成一个完整的外连接?
- 9. 在Java中JLabels高度之间指定一定的空间量
- 10. 在两个用户输入值之间生成一个整数
- 11. 谷歌图柱形图采取整整一个月空间
- 12. XSLT转换生成一个空的名称空间
- 13. 生成具有完整rgb空间的画布颜色选择器
- 14. 为什么Linq2EF连接生成一个完整的外连接?
- 15. 显示一个完整的PHP变量
- 16. 如何在Matlab中生成乘法空间矢量?
- 17. 在立方体空间差异中生成离散向量
- 18. 在3D空间中生成随机点给定法向量
- 19. 不完整的Eclipse生成的Javadoc
- 20. 如何在0-2之间生成一个整数?
- 21. 在两个整数值之间生成Swift中的随机值
- 22. 补间as3停止下一个补间发生,直到最后一个完成
- 23. Grails get()生成不完整的SQL
- 24. levels(factorObject)[factorObject]如何生成完整的向量?
- 25. 用于PHP(Oracle连接)的OCI8值附带空格(完成为完整长度)
- 26. 尾随空格来完成一个StringBuffer宽度(Java)
- 27. 完成整个循环后,在循环中绘制并保存一个图
- 28. 如何调整YUV色彩空间中的图像饱和度
- 29. 生成一个可变长度的空白字符数组
- 30. 需要在两个整数之间生成整除
不边权的随机分布的进一步规范,这个问题很简单 - 只需为每个边选择一个2到3之间的随机权重。得到的图将平凡地满足三角不等式。 –
@保罗当然会的。不等式是d(x,y)+ d(y,z)> = d(x,z)。左手边总是在4和6之间,而右手边在2和3之间。 –
@SvenMarnach我向你鞠躬。 (对于那些想知道的问题,我在质疑Sven的洞察力,没有任何争论可以支持。) – Paul