Zufall oder Angriff im Netz verständlich erklärt
Ein Netz kann zufällige Ausfälle gut verkraften und trotzdem zerfallen, wenn gezielt die am stärksten verbundenen Orte ausfallen. Diese Seite erklärt zuerst anschaulich, danach mit Modell und Messwerten, wie groß der Unterschied sein kann und wovon er abhängt. Dazu gibt es die Demo, ein Programm zum Ausprobieren im Browser.
Zuletzt aktualisiert:
Ein Wort unbekannt? Das Begriffsverzeichnis erklärt es in wenigen Sätzen.
Ein Liefernetz verliert Orte
Stellen Sie sich als Bild das Liefernetz eines Händlers vor: Lager, Umschlagpunkte und Filialen, verbunden durch Straßen. Eine kleine Filiale hängt in diesem Bild an einer einzigen Straße, ein großer Umschlagpunkt an vielen Straßen, die in alle Richtungen führen.
Nun fallen Orte aus, etwa durch Sturm, Streik oder einen Angriff auf die Technik. Im ersten Fall trifft es irgendeinen Ort, ganz ohne Absicht. Im zweiten Fall sucht sich jemand gezielt den am besten verbundenen Ort aus, danach den nächsten, und so weiter.
Die Demo spielt beides an erfundenen Netzen durch, nicht an echten Daten. Das eine Netz hat, wie im Bild, wenige große Umschlagpunkte und viele kleine Orte; ein Abbild echter Liefernetze ist es nicht. Das andere ist ein Straßenraster mit einigen gesperrten Straßen. Im Netz mit großen Umschlagpunkten bricht die Verbindung bei gezielten Ausfällen in der Demo früher auseinander als bei zufälligen. Die Messwerte stehen weiter unten im zweiten Teil der Seite.
Warum zufällige Ausfälle wenig anrichten
Im Netz mit großen Umschlagpunkten sind die meisten Orte kleine Filialen mit wenigen Straßen. Wer blind auswählt, trifft bei dieser Verteilung eher eine Filiale als einen Umschlagpunkt. Ihr Ausfall reißt nur wenige Verbindungen ab.
Ein großer Umschlagpunkt dagegen hält viele Orte zusammen. Fällt er aus, verlieren die Orte den Anschluss, die keinen anderen Weg ins Netz haben. Wer gezielt vorgeht, schaut nach jedem Ausfall neu, wer jetzt am meisten Verbindungen hat, denn das ändert sich.
Als Maß dient die größte Gruppe von Orten, in der noch jeder jeden über Straßen erreicht. Zerfällt sie, bleiben nur kleine Inseln.
Nicht jedes Netz ist gleich verwundbar
Der Unterschied zwischen zufälligen und gezielten Ausfällen ist nicht in jedem Netz gleich groß. In der Demo ist er im Netz mit großen Umschlagpunkten größer als im Straßenraster. Das passt dazu, dass dort einzelne Orte besonders viele Verbindungen haben. Im Raster ist er kleiner, aber vorhanden: Auch dort schadet das gezielte Entfernen in der Demo mehr als ein zufälliges.
Was daraus folgt
Die Demo zeigt nur, wo man in ihren Netzen zuerst hinschauen sollte: auf die wenigen Orte, an denen besonders viele Verbindungen hängen. Wer prüfen will, wie ein Netz Ausfälle verkraftet, sollte nicht nur zufällige Ausfälle durchspielen, sondern auch den Ausfall genau dieser Orte.
Im eigenen Betrieb sind das vielleicht Orte, an denen besonders viele Lieferwege zusammenlaufen. Fragen Sie Ihren Planer oder Anbieter: Welche wenigen Orte sind das, und was geschieht mit der Versorgung, wenn gerade sie ausfallen? Das ist ein Hinweis, kein Beweis: Ob gerade diese Orte bei Ihnen kritisch sind, zeigt erst ein Durchlauf mit Ihren eigenen Daten.
Wie ernst ist das Modell zu nehmen?
Die Netze der Demo sind erfunden, keine echten Liefernetze, und ein Ausfall heißt dort nur, dass ein Ort samt seinen Straßen verschwindet. Die Aussagen gelten deshalb für diese Netze und zeigen nur, wie ein Ausfall wirken kann, nicht die Lage in Ihrem Betrieb.
Hinweis: Alle Demos rechnen mit synthetischen oder frei verfügbaren Beispieldaten und laufen auf einem externen Anbieter (Datenschutz). Bitte geben Sie darin keine vertraulichen oder personenbezogenen Daten ein. Die Ergebnisse gelten für die jeweilige Demo-Instanz und lassen sich nicht ungeprüft auf reale Fälle übertragen; für darauf gestützte Entscheidungen übernehme ich keine Gewähr.
Modell und Annahmen
Dieser Teil ist eigenständig lesbar. Er fasst die Demo zusammen; die vollständige Fassung steht im Expander „📐 Mathematische Formulierung“ der Demo.
- Modell: Aus einem Netz mit \(n\) Knoten werden nacheinander Knoten samt ihren Kanten entfernt. Nach \(k\) Entfernungen misst die Demo die Größe \(S(k)\) der größten Zusammenhangskomponente (Riesenkomponente); \(S(k)\) ist monoton nicht wachsend. Das ist Knotenentfernung (Site-Perkolation). Die zufällig gesperrten Kanten der Demo zu BFS und DFS (Bond-Perkolation) sind eine verwandte, aber eigene Frage.
- Drei erzeugte Netze: ein Betriebsnetz (gestörtes Straßenraster mit gesperrtem Anteil, alternativ ein Zufallsgraph gleicher Kantenzahl, also eine Erdős-Rényi-artige Instanz), ein skalenfreies Netz nach Barabási und Albert (Kern aus \(m_0\) Knoten, jeder weitere Knoten hängt sich mit \(m\) Kanten proportional zum Grad an) und ein Barbell-Graph (zwei vollständige Graphen \(K_k\), durch eine Brücke verbunden).
- Vier Entfernungsstrategien: Zufall (gleichverteilte Permutation), Grad statisch (Rangfolge einmal aus dem Ausgangsgrad), Grad adaptiv (jeweils der aktuell höchstgradige Restknoten) und Betweenness adaptiv (jeweils der Knoten mit der aktuell höchsten Betweenness; volle Neuberechnung nur alle paar Schritte, dazwischen wird die zuletzt berechnete Rangfolge weiterverwendet).
- Determinismus: Alle Verfahren sind deterministisch; die Instanzen kommen aus Python-
randommit festem Zufalls-Seed.
Die Formeln
Grad adaptiv entfernt wiederholt den Knoten mit dem höchsten aktuellen Grad unter den noch vorhandenen Knoten \(v\). Grad statisch bildet die Rangfolge dagegen einmalig aus dem Ausgangsgrad.
\[\arg\max_v \deg(v)\]
Die gemessene Perkolationsschwelle ist der kleinste entfernte Anteil, ab dem die Riesenkomponente unter einen Bruchteil \(\text{frac}\) des Netzes fällt: \(f^* = \min\{k/n : S(k) < \text{frac} \cdot n\}\). Die App zeigt standardmäßig \(\text{frac}\) = 0,5 (Riesenkomponente auf die Hälfte gefallen). Das ist eine Schwelle für endliche Netze, keine asymptotische Definition.
Für zufälligen Knotenausfall auf Erdős-Rényi-artigen Netzen (Poisson-Gradverteilung) mit mittlerem Grad \(\langle k \rangle\) sagen Cohen, Erez, ben-Avraham und Havlin (2000) voraus:
\[f_c = 1 - \dfrac{1}{\langle k \rangle}\]
Das ist der Punkt, an dem der mittlere Restgrad \(\langle k \rangle (1-f)\) auf 1 fällt. Als zusammenfassende Kennzahl dient der Robustheitsindex von Schneider, Moreira, Andrade, Herrmann und Havlin (2011), die Fläche unter der normierten Kurve von \(S(k)\):
\[R = \dfrac{1}{n} \sum_{k=1}^{n} \dfrac{S(k)}{n}\]
Ein höheres \(R\) heißt robuster gegen genau diese Strategie. Für ein zusammenhängendes Ausgangsnetz liegt \(R\) in \((0, 0{,}5]\). Die Summe beginnt bewusst bei \(k=1\), das intakte Netz zählt nicht mit.
Befunde
Alle Zahlen stehen in der README der Demo und gelten für die Standardinstanzen mit Zufalls-Seed 35, sofern nicht anders genannt. Die Verfahren sind deterministisch. Bei den Einzelwerten ist „Zufall“ eine einzelne Zufallsreihenfolge; nur in der Abstandszeile ist es der Mittelwert über 30 Zufallsreihenfolgen. Die Cohen-Zeilen sind Mittel über zwölf Zufalls-Seeds (aus rob_constants.py, die README nennt die Zahl nicht). Die Betweenness-Werte gehören zum Neuberechnungsintervall 5 (ebenfalls rob_constants.py, nicht die README). R ist der Robustheitsindex, niedriger heißt schädlicher.
| Frage | Befund |
|---|---|
| Stimmt das Verfahren? | S(k) stimmt nach jeder Entfernungsstufe mit einer unabhängigen Neuberechnung in networkx überein, für alle vier Strategien auf mehr als 380 Instanzen. Grad adaptiv stimmt auf kleinen Instanzen mit einer Brute-Force-Rechnung überein. |
| Skalenfreies Netz (150 Knoten, 296 Kanten) | R(Zufall) = 0,4065, R(Grad statisch) = 0,1195, R(Grad adaptiv) = 0,1112, R(Betweenness adaptiv) = 0,1148. |
| Betriebsnetz (100 Knoten, 144 Straßen, 20 % gesperrt) | R(Zufall) = 0,3198, R(Grad statisch) = 0,2972, R(Grad adaptiv) = 0,2055, R(Betweenness adaptiv) = 0,1666. |
| Barbell (16 Knoten, k = 8) | R(Zufall) = 0,3750, R(Grad statisch) = 0,3320, R(Grad adaptiv) = 0,2500, R(Betweenness adaptiv) = 0,3320. |
| Wie groß ist der Abstand zwischen Zufall und Angriff? | Mittel über 30 Zufallsreihenfolgen gegen Grad adaptiv: Betriebsnetz 0,090, Barbell 0,104, skalenfreies Netz 0,300. Der Abstand des skalenfreien Netzes ist laut README 3× größer als beim Betriebsnetz. |
| Barbell von Hand (k = 8) | Der gezielte Angriff trennt nach 1 Entfernung in Stücke der Größe 7 und 8. Eine Zufallsreihenfolge trifft ein Brückenende im Mittel erst bei der 5,7. Entfernung ((n+1)/3 = 17/3; davor im Mittel (n−2)/3 = 14/3 = 4,7 unschädliche). |
| Erdős-Rényi gegen Cohen, kleine 5-%-Schwelle (n = 400) | ⟨k⟩ = 3: vorhergesagt 0,667, gemessen 0,700. ⟨k⟩ = 4: 0,750 gegen 0,757. ⟨k⟩ = 6: 0,833 gegen 0,822. ⟨k⟩ = 8: 0,875 gegen 0,850. Die Abweichung liegt zwischen 0,007 und 0,033. |
| Erdős-Rényi gegen Cohen, 50-%-Schwelle | Bei jedem ⟨k⟩ liegt die gemessene Schwelle 0,30–0,38 unter der Cohen-Vorhersage. Das ist ein struktureller Unterschied der Definitionen, kein Rauschen. |
Die Ausgangsvermutung der Demo, auf dem Betriebsnetz mache die Auswahl der Knoten kaum einen Unterschied, bestätigte sich nicht: Der Unterschied ist messbar. Welche der beiden gezielten Strategien (Grad oder Betweenness) schädlicher ist, hängt vom Netz und vom Neuberechnungsintervall ab (siehe Grenzen); die Tabelle sollte daher nicht als Rangfolge gelesen werden. Die Aussage „R(Grad adaptiv) ist nicht größer als R(Zufall)“ belegt die Demo als Mittelwert-Aussage über viele Zufallsreihenfolgen, nicht für jede einzelne, da eine glückliche Ziehung früh Knoten mit hohem Grad treffen kann.
Grenzen
- Zwei Schwellen: Die 50-%-Schwelle der App ist nicht mit Cohens \(f_c\) vergleichbar, denn \(f_c\) beschreibt das asymptotische Verschwinden der Riesenkomponente. Für den Vergleich mit der Formel dient die kleine 5-%-Schwelle; ihre Restabweichung ist ein Effekt endlicher Größe.
- Cohens Formel gilt nur für Erdős-Rényi-artige Netze unter zufälligem Ausfall. Für das skalenfreie Netz oder unter gezieltem Angriff enthält die Demo keine geschlossene Formel dieser Art.
- Betweenness adaptiv ist bei einem Neuberechnungsintervall über 1 eine ausdrückliche Näherung. Die Werte der Tabelle gehören zum Voreinstellungs-Intervall 5 (
rob_constants.py, nicht die README). Eine Nachrechnung der Faktenprüfung (nicht in der README) mit exakter Neuberechnung und mit einem größeren Intervall ergab auf Betriebsnetz und skalenfreiem Netz andere Rangfolgen zwischen Grad und Betweenness. Rangaussagen zu beiden Strategien gelten daher nur für ein bestimmtes Intervall. Auf dem Barbell ist Betweenness auch bei exakter Neuberechnung schlechter als Grad adaptiv. Nach dem Kappen der Brücke sind nach Lesart des Codes (rob_algorithm.py, nicht in der README) alle Betweenness-Werte 0, und der Knotenindex entscheidet. - R ist ein einziger Mittelwert: Er unterscheidet nicht, ob ein Netz früh oder erst spät zusammenbricht. Zwei sehr unterschiedliche Kurven können denselben Wert haben.
- Synthetische Instanzen: Betriebsnetz, skalenfreies Netz und Barbell sind erzeugt, keine echten Infrastruktur- oder Sozialnetzdaten. Die R-Werte gelten für jeweils eine Instanz (Zufalls-Seed 35); die Cohen-Zeilen sind Mittel über mehrere Instanzen.
- Nicht enthalten: Kaskaden und Ausbreitung sowie das Härten kritischer Knoten sind eigene Demos zum Thema. Einen Schutzmechanismus gibt es hier bewusst nicht.
Quellen
- Albert, R., Jeong, H., & Barabási, A.-L. (2000): Error and attack tolerance of complex networks. Nature 406, 378–382.
- Cohen, R., Erez, K., ben-Avraham, D., & Havlin, S. (2000): Resilience of the Internet to random breakdowns. Physical Review Letters 85(21), 4626–4628.
- Cohen, R., Erez, K., ben-Avraham, D., & Havlin, S. (2001): Breakdown of the Internet under intentional attack. Physical Review Letters 86(16), 3682–3685.
- Schneider, C. M., Moreira, A. A., Andrade, J. S., Herrmann, H. J., & Havlin, S. (2011): Mitigation of malicious attacks on networks. Proceedings of the National Academy of Sciences 108(10), 3838–3841.
- Brandes, U. (2001): A faster algorithm for betweenness centrality. Journal of Mathematical Sociology 25(2), 163–177.
- Quelltext, Messreihen und Tests der Demo: github.com/sebastian-hanisch/robustheit-demo.
Die genannten Arbeiten wurden für diese Seite nicht nachgeschlagen; die Literaturhinweise stammen aus der README der Demo. Die Betweenness eines Knotens misst, über wie viele kürzeste Wege zwischen anderen Knoten er läuft; diese Erklärung ist Standardwissen und steht so nicht in der README.