Graph Theory - Python ile Kullanımı
Düğüm ve Kenar Ekleme/Çıkarma İşlemleri
1. Düğümer(Nodes)
Düğümler başlığı altında anlatılan konularda kullanılmak üzere kullanılacak kütüphaneler içeri aktarıldı.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import networkx as nx
1.1. Tek bir düğüm ekleme: Grafik içerisine tek bir düğüm noktası eklemek için add_node() ifadesi kullanılır.
#G adında grafik oluştur
G=nx.Graph()
#Grafik içinde A adında bir düğüm oluştur
G.add_node("A")
Şuan G adında içerisinde "A" düğümümün oluştuğu bir grafik oluşturulmuş oldu. Bu grafiği görüntüleyebilmek için networkx kütüphanesi altında bulunan draw_networkx() ifadesi kullanılır.
#Oluşturulan grafiği çizdir
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
#B, C, D adında 3 tane daha düğüm ekleyelim
G.add_node("B")
G.add_node("C")
G.add_node("D")
#Oluşturulan grafiği çizdir
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
Son durumda bir grafik içerisinde 4 tane düğüm oluşmuş oldu.
1.2. Liste halinde düğüm ekleme: Grafik içerisine liste halinde düğüm noktaları eklemek için add_nodes_from() ifadesi kullanılır.
#G adında grafik oluştur
G=nx.Graph()
myList=["A","B","C","D","E","F"]
G.add_nodes_from(myList)
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
1.3. Başka bir grafikteki düğümleri ekleme: Grafik içerisine başka bir grafikte bulunan düğümleri eklemek için add_nodes_from() ifadesi kullanılır.
#1. Grafik
A=nx.Graph()
A.add_nodes_from([1,2,3])
plt.figure()
nx.draw_networkx(A,with_labels=True)
Çıktı:
#2. Grafik
G=nx.Graph()
G.add_nodes_from(["A","B","C","D","E","F"])
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
#1. ve 2. grafik toplamı
G.add_nodes_from(A)
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
1.4. Grafikteki düğümleri çıkarma: Grafik içerisine bulunan düğüm(leri) silmek için remove_node() veya remove_nodes_from() ifadeleri kullanılır.
#Grafik oluşturuldu
G=nx.Graph()
G.add_nodes_from(["A","B","C","D","E","F"])
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
#A düğümü kaldırıldı
G.remove_nodes_from("A")
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
#B ve C düğümleri kaldırıldı
G.remove_nodes_from(["B","C"])
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
2. Kenarlar(Edges)
Kenarlar başlığı altında anlatılan konularda kullanılmak üzere kullanılacak kütüphaneler içeri aktarıldı.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import networkx as nx
2.1. Tek bir kenar ekleme: Grafik içerisine tek bir kenar eklemek için add_edge() ifadesi kullanılır.
#G adında grafik oluşturuldu
G=nx.Graph()
#A-E aralığında düğüm eklendi
G.add_nodes_from(["A","B","C","D","E"])
#kenar ekleme işlemi "İlk düğüm","İkinci düğüm","Ağırlığı"
G.add_edge("A","B",weight=8)
G.add_edge("A","C",weight=12)
G.add_edge("A","E",weight=9)
G.add_edge("E","D",weight=9)
G.add_edge("C","D",weight=9)
G.add_edge("B","C",weight=19)
#Grafik görseli
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
2.2. Liste halinde kenar ekleme: Grafik içerisine liste halinde kenar eklemek için add_edges_from() veya ağırlık da ifade edilecekse add_weighted_edges_from() ifadeleri kullanılır.
#G adında grafik oluşturuldu
G=nx.Graph()
#A-E aralığında düğüm eklendi
G.add_nodes_from(["A","B","C","D","E"])
#kenar ekleme işlemi "İlk düğüm","İkinci düğüm","Ağırlığı"
G.add_weighted_edges_from([("A","C",12),("A","E",11),("E","D",10),("C","B",4),("D","B",9)])
#Grafik görseli
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
2.3. Grafikteki kenarları çıkarma: Grafik içerisine bulunan düğümlerin kenarlarını silmek için remove_edge() veya remove_edges_from() ifadeleri kullanılır.
#G adında grafik oluştur
G=nx.Graph()
#A-E aralığında düğüm eklendi
G.add_nodes_from(["A","B","C","D","E"])
#kenar ekleme işlemi "İlk düğüm","İkinci düğüm","Ağırlığı"
G.add_edge("A","B",weight=8)
G.add_edge("A","C",weight=12)
G.add_edge("A","E",weight=9)
G.add_edge("E","D",weight=9)
G.add_edge("C","D",weight=9)
G.add_edge("B","C",weight=19)
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
#A-B arasındaki kenar kaldırıldı
G.remove_edge("A","B")
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı:
#C-B ve C-A arasındaki kenar kaldırıldı
G.remove_edges_from([("C","B"),("C","A")])
plt.figure()
nx.draw_networkx(G,with_labels=True)
Çıktı: