optNetwork biconnectedComponents

Grenzfallanalyse: Umgang mit einem ungerichteten Logistiknetzwerk mit Datenqualitätsproblemen

Scénario de test & Cas d'usage

Geschäftskontext

Ein Logistikunternehmen analysiert sein Liefernetzwerk, um Engpässe zu finden. Die Daten sind jedoch unsauber und enthalten redundante Routen (multi-links) und fehlerhafte Einträge (self-links). Zudem sind einige Lieferwege Einbahnstraßen. Es soll getestet werden, wie die Aktion mit diesen Datenanomalien umgeht und wie sich die Behandlung als gerichteter vs. ungerichteter Graph auswirkt.
Über das Set : optNetwork

Netzwerkanalyse und Graphenalgorithmen.

Entdecken Sie alle Aktionen von optNetwork
Datenaufbereitung

Erstellung eines komplexen Datensatzes mit Anomalien: 'A' nach 'B' ist eine Mehrfachverbindung, 'C' nach 'C' ist eine Selbstverknüpfung, und der Knoten 'F' ist isoliert.

Kopiert!
1DATA mycas.LogistikNetzKomplex;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ @@;
4 DATALINES;
5A,B A,B A,C B,D C,D
6C,C E,D
7F,G
8;
9RUN;

Étapes de réalisation

1
Standardausführung als ungerichteter Graph. `multiLinks` und `selfLinks` sind standardmäßig TRUE, daher sollten sie berücksichtigt werden.
Kopiert!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='LogistikNetzKomplex'}
4 out={name='mycas.LogistikKomponenten_Ungerichtet', replace=true}
5 outNodes={name='mycas.LogistikKnoten_Ungerichtet', replace=true};
6RUN;
7QUIT;
2
Ausführung als ungerichteter Graph, aber diesmal werden Selbstverknüpfungen und Mehrfachverbindungen ignoriert, um den Effekt zu sehen.
Kopiert!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='LogistikNetzKomplex'}
4 selfLinks=false
5 multiLinks=false
6 out={name='mycas.LogistikKomponenten_Gefiltert', replace=true}
7 outNodes={name='mycas.LogistikKnoten_Gefiltert', replace=true};
8RUN;
9QUIT;
3
Ausführung als gerichteter Graph. Dies ist ein Stresstest, da Bikonnextivität typischerweise für ungerichtete Graphen definiert ist. Das Ergebnis sollte sich ändern.
Kopiert!
1PROC CAS;
2 ACTION optNetwork.biconnectedComponents /
3 links={name='LogistikNetzKomplex'}
4 direction='DIRECTED'
5 out={name='mycas.LogistikKomponenten_Gerichtet', replace=true}
6 outNodes={name='mycas.LogistikKnoten_Gerichtet', replace=true};
7RUN;
8QUIT;

Erwartetes Ergebnis


Im ersten Schritt wird 'D' als Artikulationspunkt identifiziert. Die Selbstverknüpfung bei 'C' und die Mehrfachverbindung 'A-B' werden als Teil einer Komponente behandelt. Im zweiten Schritt (gefiltert) ändert sich das Ergebnis nicht, da die Topologie gleich bleibt. Im dritten Schritt (gerichtet) ändert sich das Ergebnis erheblich. Da die Verbindungen nun gerichtet sind, werden 'B' und 'C' ebenfalls zu Artikulationspunkten, da ihre Entfernung den Pfad von 'A' nach 'D' unterbricht. Dies zeigt, dass die Aktion korrekt auf die Parameter `direction`, `selfLinks` und `multiLinks` reagiert.