optNetwork

maxFlow

Description

Calcule le flux maximum d'un graphe. Cette action trouve un flux réalisable entre un nœud source unique et un nœud puits unique qui maximise la valeur totale du flux, tout en respectant les capacités de chaque lien.

optNetwork.maxFlow <result=results> <status=rc> / deterministic=TRUE | FALSE, direction="DIRECTED" | "UNDIRECTED", display={...}, distributed=TRUE | FALSE, graph=integer, indexOffset=integer, links={...}, linksVar={...}, logFreqTime=integer, logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE", multiLinks=TRUE | FALSE, nodes={...}, nodesVar={...}, nThreads=integer, outGraphList={...}, outLinks={...}, outNodes={...}, outputTables={...}, selfLinks=TRUE | FALSE, sink="string" | double | 64-bit-integer, source="string" | double | 64-bit-integer, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE;
Paramètres
ParamètreDescription
deterministicLorsque défini sur True, assure que chaque invocation (avec la même configuration machine et les mêmes paramètres) produit le même résultat final.
directionSpécifie si le graphe d'entrée doit être considéré comme orienté ('DIRECTED') ou non orienté ('UNDIRECTED').
displaySpécifie une liste de tables de résultats à envoyer au client pour affichage.
distributedLorsque défini sur True, utilise un graphe distribué pour les calculs.
graphSpécifie le graphe en mémoire à utiliser pour l'analyse.
indexOffsetSpécifie le décalage d'index pour les identifiants dans les journaux et les tables de résultats.
linksSpécifie la table de données d'entrée qui contient les informations sur les liens du graphe.
linksVarSpécifie les noms des variables de données pour la table des liens.
logFreqTimeContrôle la fréquence (en secondes) d'affichage des journaux d'itération pour les algorithmes.
logLevelContrôle la quantité d'informations affichées dans le journal SAS (NONE, BASIC, MODERATE, AGGRESSIVE).
multiLinksLorsque défini sur True, inclut les liens multiples lors de la lecture d'un graphe d'entrée.
nodesSpécifie la table de données d'entrée qui contient les informations sur les nœuds du graphe.
nodesVarSpécifie les noms des variables de données pour la table des nœuds.
nThreadsSpécifie le nombre maximum de threads à utiliser pour le traitement multithread.
outGraphListSpécifie la table de données de sortie pour contenir des informations récapitulatives sur les graphes en mémoire.
outLinksSpécifie la table de données de sortie pour contenir les informations sur les liens du graphe ainsi que les résultats des métriques calculées.
outNodesSpécifie la table de données de sortie pour contenir les informations sur les nœuds du graphe ainsi que les résultats des métriques calculées.
outputTablesListe les noms des tables de résultats à sauvegarder comme tables CAS sur le serveur.
selfLinksLorsque défini sur True, inclut les auto-liens (boucles) lors de la lecture d'un graphe d'entrée.
sinkSpécifie le nœud puits (destination) pour les calculs de flux maximum.
sourceSpécifie le nœud source (origine) pour les calculs de flux maximum.
standardizedLabelsLorsque défini sur True, spécifie que les données du graphe d'entrée sont dans un format standardisé.
standardizedLabelsOutLorsque défini sur True, demande que les données du graphe de sortie incluent un format standardisé.
Préparation des Données Voir la fiche de ce code dataprep
Création des données de liens

Cet exemple de code SAS crée une table CAS nommée 'ArcData'. Cette table définit les liens (arcs) d'un graphe orienté. Chaque ligne représente un lien avec son nœud d'origine ('from'), son nœud de destination ('to') et la capacité maximale de flux ('weight').

Copié !
1DATA mycas.ArcData;
2 informat from to $1. weight;
3 DATALINES;
4 A B 2
5 A C 7
6 A D 3
7 B E 5
8 B F 4
9 B G 2
10 C E 4
11 C F 1
12 D F 6
13 D G 5
14 E H 8
15 F H 6
16 G H 4
17 ;
18RUN;

Exemples

Cet exemple illustre comment trouver le flux maximum entre un nœud source 'A' et un nœud puits 'H' dans un graphe orienté. Les résultats, y compris le flux sur chaque lien et la coupe minimale, sont stockés dans les tables 'MaxFlow' et 'MinCut' respectivement.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 ACTION optNetwork.maxFlow /
3 direction = "directed"
4 SOURCE = "A"
5 sink = "H"
6 links = {name = "ArcData"}
7 outLinks = {name = "MaxFlow", replace = true}
8 outNodes = {name = "MinCut", replace = true};
9RUN;
Résultat :
L'action calcule la valeur du flux maximum, qui est de 10. La table de sortie 'MaxFlow' contient les flux optimaux pour chaque lien, et la table 'MinCut' identifie les nœuds appartenant à la coupe minimale, qui sépare la source du puits.

FAQ

À quoi sert l'action maxFlow ?
Quels sont les paramètres essentiels pour utiliser l'action maxFlow ?
Quelles tables de données sont nécessaires en entrée pour l'action maxFlow ?
Que spécifie le paramètre 'direction' ?
Comment l'action maxFlow retourne-t-elle le résultat du calcul ?