Jeden z rosnących obszarów zainteresowania naukowców badających znaczenie, władzę lub wpływy wśród podmiotów nazywany jest Teorią Grafów. Korzenie teorii grafu rozpoczął się w 1736 roku, kiedy matematyk Carl Ehler wprowadził Leonhard Euler do Mosty Konigsberg problem.
Mosty Konigsberg problem jest oparty w byłym niemieckim mieście Konigsberg, który leży po obu stronach rzeki Pregel. W jego centrum znajdowały się dwie duże wyspy, które były połączone ze sobą i z brzegami rzeki siedmioma mostami. Carl Ehler miał obsesję na punkcie znalezienia trasy, która pozwoliłaby mu przejść przez każdy z siedmiu mostów, nie przechodząc przez żaden z nich więcej niż raz. Ehler skontaktował się z Leonhardem Eulerem, szwajcarskim matematykiem. Euler potwierdził hipotezę Ehlera, że problem nie ma rozwiązania, a wyjaśnienie Eulera poinformował nowy paradygmat matematyczny o nazwie Geometria pozycji.
Nowy paradygmat geometrii Eulera stwierdził, że lokalizacja mostów nie ma znaczenia. Zamiast tego problem można uprościć, zamieniając każdy most w punkt (węzeł) z liniami (krawędziami) reprezentującymi połączenia między nimi. Ta praktyka używania węzłów i krawędzi jest obecnie znana jako teoria grafów.
Więcej o problemie mostów w Królewcu można przeczytać tutaj.
Początkowo teoria grafów nie służyła zbytnio do rozwiązywania problemów i nie była wysoko ceniona przez matematyków. Jednak współczesna moc obliczeniowa umożliwiająca przetwarzanie dużych permutacji sprawiła, że zasady Teorii Grafów stały się bardziej praktyczne. Ten artykuł uczy stosowania zasad Teorii Grafu w analizie opartej na języku Python.
Nie wszystkie sieci w systemie Graph są ze sobą połączone. To rozłączenie następuje, gdy tworzą się komponenty. Jak pokazano na poniższym wykresie, komponent jest utworzony tylko wtedy, gdy każdy węzeł ma ścieżkę do innych węzłów.
Zastosowana teoria grafów w Pythonie
W Pythonie pakiet networkx jest często używany do stosowanej teorii grafów znanej również jako analiza sieci. Pakiet posiada przydatną funkcjonalność do szybkiego podsumowania charakterystyki grafu. Możesz przejrzeć poniższe kroki i podążać za nimi, gdy tworzymy graf i rozumiemy jego skład.
Najpierw poniższy kod tworzy pusty obiekt grafu P
. Następne kroki dodają węzły i opisują krawędzie.
Argumenty takie jak <object>.nodes()
lub <object>.edges()
są szybkimi sposobami wyświetlenia wszystkich węzłów i krawędzi systemu grafu.
print(P.nodes())print(P.edges())
W końcu, nx.draw
jest używany do wizualizacji sieci.
%matplotlib inline
import matplotlib.pyplot as plt
nx.draw(P, with_labels = True)