請幫助用最簡單的方法生成一個給定大小爲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. 在3D空間中生成隨機點給定法向量
- 18. 在立方體空間差異中生成離散向量
- 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