Grafikte öz-bağlar (self-loop) olup olmadığını kontrol etme
Eric'in belirttiği gibi, NetworkX aynı düğümde başlayıp aynı düğümde biten kenetlere de izin verir; bu durum bir sosyal ağ grafiği için sezgisel olmasa da, bireylerin bir konumdan başlayıp başka bir konumda bittiği yolculuk ağları gibi verileri modellemek için kullanışlıdır.
İleri analizlere geçmeden önce bunu kontrol etmek faydalıdır ve NetworkX bu amaçla bir yöntem sağlar: nx.number_of_selfloops(G).
Bu egzersizde ve sonraki bazı egzersizlerde, assert ifadesi işine yarayacak. Bir assert ifadesi, sonrasına yazılan ifadenin True olup olmadığını kontrol eder; aksi halde bir AssertionError fırlatır.
Başlamak için, IPython Shell'de nx.number_of_selfloops() fonksiyonunu T argümanıyla çağırarak aynı düğümde başlayıp biten kenarların sayısını elde et. Grafiğe yapay olarak birkaç öz-bağ eklenmiştir. Bu egzersizdeki görevin, bu kenarları döndüren bir fonksiyon yazmaktır.
Bu egzersiz, kursun bir parçasıdır
Python ile Ağ Analizine Giriş
Egzersiz talimatları
Gadlı tek argüman alanfind_selfloop_nodes()isimli bir fonksiyon tanımla.- Bir
fordöngüsüyle,Giçindeki tüm kenarlar üzerinde (üstveriyi hariç tutarak) yinele. - Eğer
udüğümüvdüğümüne eşitse:uöğesininodes_in_selfloopslistesine ekle.nodes_in_selfloopslistesini döndür.
- Bir
- Grafikteki öz-bağ sayısının öz-bağ içeren düğüm sayısına eşit olduğunu kontrol et. Bu senin için yapıldı; sonucu görmek için 'Yanıtı Gönder'e bas!
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# Define find_selfloop_nodes()
def ____:
"""
Finds all nodes that have self-loops in the graph G.
"""
nodes_in_selfloops = []
# Iterate over all the edges of G
for u, v in ____:
# Check if node u and node v are the same
if ____:
# Append node u to nodes_in_selfloops
____
return nodes_in_selfloops
# Check whether number of self loops equals the number of nodes in self loops
assert nx.number_of_selfloops(T) == len(find_selfloop_nodes(T))