{"id":174354,"date":"2026-01-28T03:48:09","date_gmt":"2026-01-28T02:48:09","guid":{"rendered":"https:\/\/liora.io\/de\/?p=174354"},"modified":"2026-02-06T05:38:41","modified_gmt":"2026-02-06T04:38:41","slug":"networkx-graphentheorie-grundfunktionen-und-nutzung","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/networkx-graphentheorie-grundfunktionen-und-nutzung","title":{"rendered":"NetworkX: Graphentheorie, Grundfunktionen und Nutzung"},"content":{"rendered":"<p><strong>NetworkX ist eine sehr n\u00fctzliche Python-Bibliothek, mit der du deine Daten in Form von Graphen modellieren kannst. Sie enth\u00e4lt auch einige klassische graphentheoretische Algorithmen (Dijkstra, PageRank, SImRank&#8230;), die wir in diesem Artikel vorstellen werden.<\/strong><\/p>\n<h2 class=\"wp-block-heading\" id=\"h-networkx-was-ist-ein-graph-einfuhrung-in-die-graphentheorie\">NetworkX : Was ist ein Graph? Einf\u00fchrung in die Graphentheorie<\/h2>\nEin<strong> Graph ist eine Menge von Knoten (die f\u00fcr Personen, St\u00e4dte, Produkte, Text, Bilder usw. stehen<\/strong>) und Kanten, die eine Teilmenge dieser Knoten verbinden. Der Grad eines Knotens in einem Graphen ist die Anzahl seiner Nachbarn (Gipfel, die durch Kanten mit ihm verbunden sind).\n\nDie Kanten k\u00f6nnen einseitig oder symmetrisch sein, ein Graph kann also gerichtet oder ungerichtet sein.\n\nDer ungerichtete Graph stellt die Verwandtschafts- (gr\u00fcn) und Liebesbeziehungen (rosa) der Hauptfiguren der Tafelrunde dar:\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1846\" height=\"546\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image9-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image9-1.png 1846w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image9-1-300x89.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image9-1-1024x303.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image9-1-768x227.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image9-1-1536x454.png 1536w\" sizes=\"(max-width: 1846px) 100vw, 1846px\"><figcaption><\/figcaption><\/figure>\nDer folgende gerichtete Graph stellt eine Liste von Aufgaben dar, die beim Bau eines Hauses erledigt werden m\u00fcssen:\n\n<img decoding=\"async\" width=\"425\" height=\"634\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image12-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image12-1.png 425w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image12-1-201x300.png 201w\" sizes=\"(max-width: 425px) 100vw, 425px\">\n<img decoding=\"async\" width=\"390\" height=\"252\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image7-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image7-1.png 390w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image7-1-300x194.png 300w\" sizes=\"(max-width: 390px) 100vw, 390px\">\n\nMan kann sich daf\u00fcr entscheiden, die Kanten eines Graphen mit Gewichten zu gewichten, die die Kosten oder den Anteil der Nutzung dieses Pfades modellieren. Im obigen Graphen w\u00e4ren die Kosten der Kanten z. B. die Anzahl der Tage, die ben\u00f6tigt werden, um die Aufgabe zu erledigen.\n<h3 class=\"wp-block-heading\" id=\"h-anwendung-mit-networkx\">Anwendung mit NetworkX:<\/h3>\nDie <strong>Graphentheorie<\/strong> deckt ein breites Spektrum an Anwendungen ab: Modellierung von Netzwerken (Infrastruktur, soziale Netzwerke usw.), Lagerverwaltung, Zeitplanung und die damit verbundenen Probleme:\n<ul>\n \t<li>Wie kann die k\u00fcrzeste\/optimale Route festgelegt werden?<\/li>\n \t<li>Wie platziert man Infrastruktur (Strom, Glasfaser&#8230;) optimal? Problem der minimalen Abdeckung.<\/li>\n \t<li>Wie kann man Mieten an Kunden oder Kurse an Lernende zuweisen, ohne dass es zu \u00dcberschneidungen kommt?<\/li>\n \t<li>Problem der Einf\u00e4rbung.<\/li>\n<\/ul>\nAuch interessant: <a href=\"https:\/\/liora.io\/de\/scatter-plot\">Scatter-Plot<\/a>\n<h2 class=\"wp-block-heading\" id=\"h-grundlegende-funktionen-und-hauptverwendungszwecke-von-networkx\">Grundlegende Funktionen und Hauptverwendungszwecke von NetworkX<\/h2>\n<h3 class=\"wp-block-heading\" id=\"h-erstellen-unseres-ersten-graphen\">Erstellen unseres ersten Graphen:<\/h3>\nDer <strong>folgende Code erstellt einen Graphen<\/strong>.\n\nDu f\u00fcgst zun\u00e4chst seine Kanten (g.addnode) und Knoten (g.add edge) hinzu (du kannst mehrere Knoten auf einmal mit den Funktionen g.add nodes from und g.add edges from hinzuf\u00fcgen), dann zeigst du den Graphen an:\n\nMit den Methoden von <a href=\"\/\">NetworkX<\/a> kann man auch schnell Eigenschaften des Graphen synthetisieren:\n<ul>\n \t<li>Anzahl der Knoten mit number_of_nodes, Anzahl der Kanten mit number_of_edges.<\/li>\n \t<li>Durchmesser = maximale Entfernung zwischen zwei Knoten: diameter<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-die-sieben-brucken-von-konigsberg-was-ist-dies-fur-ein-historisches-ereignis\">Die sieben Br\u00fccken von K\u00f6nigsberg, was ist dies f\u00fcr ein historisches Ereignis?<\/h2>\nEines der ersten Probleme der Graphentheorie ist das Problem der Br\u00fccken von K\u00f6nigsberg. Es wurde 1736 dem Mathematiker Euler in folgender Form vorgelegt:\n\n&#8222;Kann man die sieben Br\u00fccken der Stadt durchlaufen, indem man jede Br\u00fccke nur einmal benutzt?&#8220;: Euler stellte fest, dass die Reihenfolge des Weges keinen Einfluss hat und modellierte das Problem als Graph: Die verschiedenen Stadtteile sind seine Knoten, die durch die Br\u00fccken miteinander verbunden sind, die wiederum die Kanten des Graphen sind.\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"604\" height=\"198\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/Fichier-84-8.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/Fichier-84-8.png 604w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/Fichier-84-8-300x98.png 300w\" sizes=\"(max-width: 604px) 100vw, 604px\">\n\n<figcaption><\/figcaption><\/figure>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"516\" height=\"633\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image1-3.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image1-3.png 516w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image1-3-245x300.png 245w\" sizes=\"(max-width: 516px) 100vw, 516px\">\n\n<figcaption>Graph, der das Problem modelliert, die Kanten sind die Br\u00fccken, die Knoten die Stadtteile<\/figcaption><\/figure>\n<h3 id=\"h-was-ist-deiner-meinung-nach-also-die-losung\" data-tab=\"1\" role=\"tab\" aria-controls=\"elementor-tab-content-1541\" aria-expanded=\"false\" class=\"wp-block-heading\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"><\/path><\/svg>\n<svg viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"><\/path><\/svg>\n<a href=\"\">Was ist deiner Meinung nach also die L\u00f6sung?<\/a><\/h3>\nWenn man \u00fcber eine <strong>Br\u00fccke in einen Stadtteil<\/strong> kommt, muss man ihn auch \u00fcber eine (andere) Br\u00fccke wieder verlassen. Die Anzahl der Ank\u00fcnfte in einem Stadtteil ist also gleich der Anzahl der Abfahrten aus diesem Stadtteil. Daraus folgt, dass jeder Stadtteil \u00fcber eine gerade Anzahl von Br\u00fccken mit den anderen verbunden sein muss.\n\nDie <strong>L\u00f6sung des Problems h\u00e4ngt also vom Grad<\/strong> (Anzahl der angrenzenden Nachbarn\/Br\u00fccken) der Knoten ab: Wenn alle Knoten gerade sind, dann gibt es einen Weg, der alle Br\u00fccken nur einmal \u00fcberquert, den sogenannten Eulerschen Weg.\n<h2 class=\"wp-block-heading\" id=\"h-wie-findet-man-den-kurzesten-weg-mit-dem-problem-des-handelsreisenden\">Wie findet man den k\u00fcrzesten Weg mit dem Problem des Handelsreisenden?<\/h2>\nEin weiteres klassisches Problem der Graphentheorie ist das Problem des Handelsreisenden: Die Knoten des Graphen sind eine Reihe von St\u00e4dten oder Kunden, die beliefert werden m\u00fcssen, w\u00e4hrend die Kanten die Stra\u00dfeninfrastruktur sind, die mit einem Gewicht versehen sind, das die damit verbundene Entfernung modelliert. Es wird versucht, alle St\u00e4dte auf dem k\u00fcrzesten Weg zu beliefern.\n\nF\u00fcr den Fall, dass die Gewichte des Graphen positiv sind (oder es zumindest keine Zyklen mit negativem Gewicht gibt), wird eine L\u00f6sung f\u00fcr dieses Problem durch den<a href=\"https:\/\/liora.io\/de\/was-ist-der-dijkstra-algorithmus\"> Dijkstra-Algorithmus<\/a> gegeben, der \u00fcber die Funktion nx.shortest_path() verf\u00fcgbar ist.\n\nEin schlauer Trainer versucht, das Abenteuer mit m\u00f6glichst wenigen Pfaden zu beenden:\n<h2 class=\"wp-block-heading\" id=\"h-minimale-abdeckung-eines-netzwerks\">Minimale Abdeckung eines Netzwerks<\/h2>\nDas <strong>Problem des Minimal Covering Tree<\/strong> tritt auf, wenn ein Unternehmen versucht, ein Netzwerk (\u00d6l, Glasfaser) zu bauen, das eine Reihe von Haushalten optimal verbindet.\n\nIn dem mit diesem Problem verbundenen Graphen sind die Knoten die zu verbindenden Kunden, die Kanten die Menge der m\u00f6glichen Infrastrukturstandorte und die Gewichte die Kosten f\u00fcr den Bau.\n\nEs wird versucht, die Teilmenge der Kanten zu bestimmen, die alle Knoten verbindet und die Gesamtkosten minimiert, was als minimaler Deckungsbaum bezeichnet wird.\n\nNetworkX verf\u00fcgt \u00fcber eine Funktion, die dieses Problem l\u00f6st: <a href=\"https:\/\/liora.io\/de\/3-beispiele-zum-verstaendnis-von-nichtparametrischen-statistischen-tests\">der Kruskal-Algorithmus,<\/a> der in der Methode nx.tree.minimum_spanning_tree implementiert ist.\n\nEin Industrieller will ein Eisenbahnnetz in der fiktiven Provinz Costaguana bauen. Er will alle St\u00e4dte miteinander verbinden, hat aber nur ein begrenztes Budget:\n\n<img decoding=\"async\" width=\"800\" height=\"518\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image6-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image6-1.png 892w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image6-1-300x194.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image6-1-768x498.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\">\nSon probl\u00e8me sera donc r\u00e9solu en affichant l&#8217;arbre couvrant minimal associ\u00e9 au graphe (en vert sur les images suivantes) : on peut \u00e9galement calculer le co\u00fbt et le nombre d\u2019ar\u00eates \u00e9conomis\u00e9s :\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"457\" height=\"731\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image11-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image11-1.png 457w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image11-1-188x300.png 188w\" sizes=\"(max-width: 457px) 100vw, 457px\">\n\n<figcaption><\/figcaption><\/figure>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1171\" height=\"578\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image2-1-2.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image2-1-2.png 1171w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image2-1-2-300x148.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image2-1-2-1024x505.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/04\/image2-1-2-768x379.png 768w\" sizes=\"(max-width: 1171px) 100vw, 1171px\">\n\n<figcaption><\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\" id=\"h-page-rank\">Page Rank :<\/h2>\nDer Page Rank ist ein Algorithmus, der von Google verwendet wird, um die Popularit\u00e4t von Webseiten zu berechnen: Die Seiten mit der h\u00f6chsten Punktzahl werden zuerst angezeigt.\n\nUm diese Punktzahl zu messen, stellt man das Web durch einen Graphen dar, dessen Knoten die Webseiten und dessen Kanten die Hyperlinks\/Zwischenseiten sind. Das Prinzip ist folgendes: Die anf\u00e4nglichen Punktzahlen der Graphen sind einheitlich, dann wird der Graph zuf\u00e4llig durchlaufen, indem man zuf\u00e4llig von einer Website zur n\u00e4chsten springt (man ber\u00fccksichtigt also nicht die zuvor besuchten Websites), und bei jedem Durchlauf einer Website wird die Punktzahl aktualisiert.\n\nAm Ende des <a href=\"https:\/\/liora.io\/de\/3-machine-learning-algorithmen-fuer-deinen-job\">Algorithmus<\/a> wird die Punktzahl der Websites proportional zur Wahrscheinlichkeit des Durchlaufens sein: Die Websites, die von dem zuf\u00e4lligen Surfer\/Wanderer am h\u00e4ufigsten besucht wurden, werden eine hohe Punktzahl haben.\n\nEines der Hauptprobleme des PageRanks sind seine sehr hohen Berechnungskosten. Ein verwandter Algorithmus, der <strong>SimRank<\/strong>, der die \u00c4hnlichkeit zwischen Webseiten berechnet, wird auch von NetworkX implementiert.\n<h2 class=\"wp-block-heading\" id=\"h-fazit\">Fazit<\/h2>\nNetworkX umfasst eine Reihe von effektiven Methoden f\u00fcr ein breites Spektrum von Anwendungen.\n\nEntdecke mehr \u00fcber seine Anwendungen in der Datenwissenschaft mit unserem Modul Machine Learning und Graphentheorie mit NetworkX in unserem<a href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\"> Kurs Data Scientist.<\/a>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/unsere-aus-und-weiterbildungen\">Data Scientist Weiterbildung<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p><strong>NetworkX ist eine sehr n\u00fctzliche Python-Bibliothek, mit der du deine Daten in Form von Graphen modellieren kannst. Sie enth\u00e4lt auch einige klassische graphentheoretische Algorithmen (Dijkstra, PageRank, SImRank&#8230;), die wir in diesem Artikel vorstellen werden.<\/strong><\/p>\n","protected":false},"author":78,"featured_media":174356,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2472],"class_list":["post-174354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ki"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/174354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=174354"}],"version-history":[{"count":2,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/174354\/revisions"}],"predecessor-version":[{"id":216684,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/174354\/revisions\/216684"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/174356"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=174354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=174354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}