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.
| Paramètre | Description |
|---|---|
| deterministic | Lorsque 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. |
| direction | Spécifie si le graphe d'entrée doit être considéré comme orienté ('DIRECTED') ou non orienté ('UNDIRECTED'). |
| display | Spécifie une liste de tables de résultats à envoyer au client pour affichage. |
| distributed | Lorsque défini sur True, utilise un graphe distribué pour les calculs. |
| graph | Spécifie le graphe en mémoire à utiliser pour l'analyse. |
| indexOffset | Spécifie le décalage d'index pour les identifiants dans les journaux et les tables de résultats. |
| links | Spécifie la table de données d'entrée qui contient les informations sur les liens du graphe. |
| linksVar | Spécifie les noms des variables de données pour la table des liens. |
| logFreqTime | Contrôle la fréquence (en secondes) d'affichage des journaux d'itération pour les algorithmes. |
| logLevel | Contrôle la quantité d'informations affichées dans le journal SAS (NONE, BASIC, MODERATE, AGGRESSIVE). |
| multiLinks | Lorsque défini sur True, inclut les liens multiples lors de la lecture d'un graphe d'entrée. |
| nodes | Spécifie la table de données d'entrée qui contient les informations sur les nœuds du graphe. |
| nodesVar | Spécifie les noms des variables de données pour la table des nœuds. |
| nThreads | Spécifie le nombre maximum de threads à utiliser pour le traitement multithread. |
| outGraphList | Spécifie la table de données de sortie pour contenir des informations récapitulatives sur les graphes en mémoire. |
| outLinks | Spé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. |
| outNodes | Spé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. |
| outputTables | Liste les noms des tables de résultats à sauvegarder comme tables CAS sur le serveur. |
| selfLinks | Lorsque défini sur True, inclut les auto-liens (boucles) lors de la lecture d'un graphe d'entrée. |
| sink | Spécifie le nœud puits (destination) pour les calculs de flux maximum. |
| source | Spécifie le nœud source (origine) pour les calculs de flux maximum. |
| standardizedLabels | Lorsque défini sur True, spécifie que les données du graphe d'entrée sont dans un format standardisé. |
| standardizedLabelsOut | Lorsque défini sur True, demande que les données du graphe de sortie incluent un format standardisé. |
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').
| 1 | DATA 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 | ; |
| 18 | RUN; |
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.
| 1 | PROC 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}; |
| 9 | RUN; |