Ağ rastgeleleştirmeleri
Önceki egzersizde, Forrest Gump ağının ortalama yol uzunluğunun rastgele ağınkinden daha küçük olduğunu fark etmiş olabilirsin. Kodu birkaç kez çalıştırdıysan, Forrest Gump ağında bu değerin rastgele ağdan neredeyse her zaman daha düşük olduğunu görmüşsündür. Bu da, rastgele ağlar aynı düğüm sayısına ve yaklaşık aynı grafik yoğunluğuna sahip olsa bile, Forrest Gump ağının her bir rastgele ağdan daha fazla birbirine bağlı olduğunu düşündürür. Bu kodu defalarca çalıştırmak yerine, bunu daha resmi biçimde ele almak için, özgün Forrest Gump grafiğinin düğüm sayısı ve yoğunluğuna dayalı 1000 rastgele grafik oluşturabilirsin. Sonra, rastgele grafiklerin ortalama yol uzunluğunun, özgün Forrest Gump ağındakinden kaç kez daha küçük olduğuna bakabilirsin. Buna rastgeleleştirme testi denir.
Grafik g ve (önceki egzersizde hesapladığın) ortalama yol uzunluğu g.apl çalışma alanında hazır.
Bu egzersiz
R ile Ağ Analizi
kursunun bir parçasıdırEgzersiz talimatları
- Liste nesnesi
glve for döngüsünü oluşturan kodu çalıştırarak, özgünggrafiğinden 1000 rastgele grafik üret. lapply()kullanarak bu 1000 rastgele grafiğin ortalama yol uzunluklarını hesapla.unlist()kullanan kodu çalıştırarak bu 1000 değerden oluşan birgl.aplsvektörü oluştur.gl.aplsvektörü üzerindehist()kullanarak 1000 rastgele grafiğin ortalama yol uzunluklarının histogramını çiz. Grafiğe, x-kesişimi özgün grafiğin ortalama yol uzunluğu olang.apldeğeri olacak şekildeabline()ile kırmızı kesik bir dikey çizgi ekle.- Rastgele grafiklerin ortalama yol uzunluğu değerlerinin (
gl.apls) özgün grafiğin değerinden (g.apl) daha düşük olduğu durumların oranını hesapla. Bu, özgün grafiğin yoğunluğu ve düğüm sayısı verildiğinde, gözlenen ortalama yol uzunluğunu tesadüfen bekleme olasılığımızdır.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
library(igraph)
# Generate 1000 random graphs
gl <- vector('list', 1000)
for(i in 1:1000){
gl[[i]] <- erdos.renyi.game(n = gorder(g), p.or.m = gd, type = "gnp")
}
# Calculate average path length of 1000 random graphs
gl.apls <- unlist(lapply(gl, ___, directed = FALSE))
# Plot the distribution of average path lengths
___(gl.apls, xlim = range(c(1.5, 6)))
abline(v = ___, col = "red", lty = 3, lwd = 2)
# Calculate the proportion of graphs with an average path length lower than our observed
mean(___ < ___)