給定一種隨機統一選擇0到1之間的實數的方法,你將如何使用這個隨機數發生器來統一隨機地選擇一個邊G
和n
邊。 我知道你可以用隨機數發生器創建一個隨機圖G
,但我很困惑,因爲如何修改它以在特定圖G
中選擇一個隨機邊。隨機數發生器和圖算法
想到另一個問題。鑑於圖G
現在被加權,該算法將如何改變。我想現在權重會在選擇的邊緣上有更多的方位,但是它會改變算法的多少?
任何見解?
給定一種隨機統一選擇0到1之間的實數的方法,你將如何使用這個隨機數發生器來統一隨機地選擇一個邊G
和n
邊。 我知道你可以用隨機數發生器創建一個隨機圖G
,但我很困惑,因爲如何修改它以在特定圖G
中選擇一個隨機邊。隨機數發生器和圖算法
想到另一個問題。鑑於圖G
現在被加權,該算法將如何改變。我想現在權重會在選擇的邊緣上有更多的方位,但是它會改變算法的多少?
任何見解?
對於未加權曲線圖,假定邊緣存儲在列表中,則可以簡單地生成1
和n
之間的均勻的隨機整數。大多數庫(使用任何編程語言)將在0 之間具有統一的隨機數生成器。
現在將(0,1)
區間統一劃分爲n
子區間。對於'k'範圍從1 to n-1
檢查哪個區間(k/n, (k+1)/n)
確實u
下降。 k
是你的隨機邊緣。
對於加權圖,如果目標是根據其權重隨機選擇一個邊(較高的權重意味着選擇的可能性較大),則使用與上面相同的方法。但根據它們的權重將(0,1)
區間劃分爲子區間。最後生成u
並選擇k
。
例如:如果有3個邊的權重爲{1,2,3}。然後按該比例將(0,1)
區間劃分爲3個子區間。即:(0,1/6)
,(1/6,1/2)
和(1/2,1)
。生成u
並查找它所在的時間間隔。說u=0.45
,那麼它位於第二個區間,所以選擇第二個邊。
ahhhh我明白了。感謝您的詳細解釋 – NuNu 2013-04-10 14:27:47
順便說一句,你正在使用哪種編程語言? – Nishanth 2013-04-10 14:36:01
我正在考慮用java做,也許是C++ – NuNu 2013-04-10 17:28:27