0
我知道這裏已經有一個話題了,但我測試了他們在那裏說的方式,並沒有奏效。 我在加權圖中使用了rewire(),並且重量值未被轉移到隨機圖中。rewire()加權圖上的函數[igraph]
>E(g)$weight
[1] 0.7819693 0.7010414 0.7978514 0.7249481 0.8295889 0.9177085 0.6719408 0.6826897 0.8947611 0.7758267 0.9064469
[12] 0.8236665 0.7248115 0.7354699 0.7117599 0.7144824 0.7985431 0.6816086 0.6760310 0.8653517 0.7257873 0.8427769
[23] 0.7097822 0.6987642 0.8507158 0.9149504 0.8357126 0.9664860 0.8338331 0.7122003 0.7504638 0.6995491 0.8643859
[34] 0.8684505 0.8459311 0.7384111 0.7128058 0.7486494 0.8996575 0.8910186 0.7241546 0.7661719 0.7340575 0.8074797
[45] 0.9107946 0.8758860 0.9171899 0.7134565 0.7687820 0.8112824 0.8735326 0.6853292 0.7392045 0.6772795 0.7064094
[56] 0.7427759 0.8425719 0.9106251 0.8170464 0.8509228 0.7680797 0.7893403 0.8618796 0.7029206 0.6998891 0.9484128
[67] 0.7075254 0.8204882 0.7728777 0.6936007 0.6737966 0.8568317 0.7938365 0.7372963 0.7554374 0.7738223 0.7363732
[78] 0.6743658 0.7819415 0.7576451 0.8942746 0.7261943 0.7816130 0.8804163 0.8554249 0.7661933 0.7218388 0.8498031
[89] 0.8146921 0.7871279 0.8496426 0.9418762
>g2<-rewire(g,niter=1000)
> is.weighted(g2)
[1] TRUE
> E(g2)$weight
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[39] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[77] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
igraph包是最新的,甚至隨機圖發生這種情況。抖動的邊緣沒有重量
> g1<-graph.ring(100)
> plot(g1)
> E(g1)$weight<-seq_len(ecount(g1))
> g3<-rewire(g1,niter=100)
> is.weighted(g3)
[1] TRUE
> E(g3)$weight
[1] 3 8 11 23 24 27 28 45 60 61 65 69 71 78 84 91 93 98 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[38] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[75] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
> g3<-rewire(g1,niter=10)
> E(g3)$weight
[1] 1 2 3 4 5 6 8 9 10 11 12 13 14 15 16 17 18 19 20 22 24 25 26 27 28 29 30 32
[29] 34 36 38 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67
[57] 68 69 71 72 73 74 76 77 78 79 80 81 83 84 85 86 87 89 90 91 92 94 98 99 100 NA NA NA
[85] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
這是一個錯誤還是我做錯了什麼? 它確實說它是加權的,但是所有的價值都是NA(至少是隨機的)。
> packageDescription("igraph")$Version
[1] "0.7.1"
有什麼想法或建議嗎?
編輯: 進一步在這個問題上,在這種情況下權重應該如何表現?例如,如果邊重A - B移動到A - C,其重量是否保持相同的值?還是應該改變(因此,所有其他),所以graph.strength分佈保持不變?
我想維護'graph.strength()'分佈。但隨着rewire這是不可能的。保持'度'分佈將改變'graph.strength()'bc它改變權重。保持相同的'graph.strength()'分佈將需要改變所有權重,以適應新的圖形形狀。但是這增加了更多的問題。只是決定一路使用它未加權。 – Drizzt
@Drizzt如何重新佈線以保存優勢並不十分清楚。突然增加權重使得邊緣可以區分:如果我們斷開邊緣與頂點的連接並重新連接另一個頂點,則保留其邊界的程度,但不會(通常)保持其強度。 – Szabolcs
@Szabolcs的確如此。但是有一種數學方法來重新佈線並保持優勢。它在這篇數學論文中被形式化。它超出了我的能力,可以編碼http://www.uvm.edu/pdodds/files/papers/others/2006/serrano2006a.pdf此外,本白皮書還展示了它在網絡中的一個很好的應用https:/ /www.nature.com/articles/srep07258 – Drizzt