optNetwork

minSpanTree

Description

L'action `minSpanTree` calcule l'arbre couvrant de poids minimum pour un graphe donné. Un arbre couvrant d'un graphe non orienté, connexe et pondéré est un sous-graphe qui connecte tous les nœuds ensemble, sans aucun cycle et avec le poids total minimum possible des arêtes. Pour un graphe orienté, il s'agit d'une arborescence couvrante. Cette action est fondamentale dans les problèmes de conception de réseau pour minimiser les coûts de connexion.

optNetwork.minSpanTree <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, out={...}, outGraphList={...}, outLinks={...}, outNodes={...}, outputTables={...}, selfLinks=TRUE | FALSE, source="string" | double | 64-bit-integer, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE;
Paramètres
ParamètreDescription
deterministicLorsque défini sur True, garantit 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é ou non orienté.
displaySpécifie une liste de tables de résultats à envoyer au client pour affichage.
distributedLorsque défini sur True, utilise un graphe distribué.
graphSpécifie le graphe en mémoire à utiliser.
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 arêtes du graphe.
linksVarSpécifie les noms des variables de données pour la table des arêtes.
logFreqTimeContrôle la fréquence (en secondes) d'affichage des journaux d'itération pour certains algorithmes.
logLevelContrôle la quantité d'informations affichées dans le journal SAS.
multiLinksLorsque défini sur True, inclut les multi-arêtes 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.
outSpécifie la table de données de sortie pour contenir la solution du problème de l'arbre couvrant de poids minimum.
outGraphListSpécifie la table de données de sortie pour contenir les informations récapitulatives sur les graphes en mémoire.
outLinksSpécifie la table de données de sortie pour contenir les informations sur les arêtes du graphe ainsi que les résultats.
outNodesSpécifie la table de données de sortie pour contenir les informations sur les nœuds du graphe ainsi que les résultats.
outputTablesListe les noms des tables de résultats à sauvegarder en tant que tables CAS sur le serveur.
selfLinksLorsque défini sur True, inclut les boucles (arêtes reliant un nœud à lui-même) lors de la lecture d'un graphe d'entrée.
sourceSpécifie le nœud source pour le problème de l'arbre couvrant de poids minimum dirigé.
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 le format standardisé.
Préparation des Données Voir la fiche de ce code dataprep
Création de Données d'Exemple

Ce bloc de code crée une table CAS nommée 'mycas.LinkSetIn' qui représente les arêtes d'un graphe avec leurs poids. Cette table sera utilisée dans les exemples pour calculer l'arbre couvrant minimum.

Copié !
1DATA mycas.LinkSetIn;
2 INFILE DATALINES delimiter=',';
3 INPUT from $ to $ weight;
4 DATALINES;
5A,B,1
6A,C,4
7B,C,2
8B,D,5
9C,D,8
10C,E,3
11D,E,7
12D,F,6
13E,F,9
14;
15RUN;

Exemples

Cet exemple calcule l'arbre couvrant de poids minimum pour le graphe non orienté défini dans 'mycas.LinkSetIn'. Les résultats, c'est-à-dire les arêtes formant l'arbre, sont stockés dans la table 'mycas.MST_out'.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 optNetwork.minSpanTree /
3 links={name='LinkSetIn'}
4 out={name='MST_out', replace=true};
5RUN;
Résultat :
La table de sortie 'MST_out' contiendra les arêtes qui forment l'arbre couvrant minimum. Le journal SAS affichera le statut de la solution comme étant 'OPTIMAL' et la valeur de l'objectif, qui correspond au poids total de l'arbre (17 pour cet exemple).

Cet exemple calcule l'arborescence couvrante de poids minimum pour un graphe orienté, en spécifiant le nœud 'A' comme source. Le graphe est défini par les mêmes données, mais l'option 'direction' est explicitement définie sur 'DIRECTED'. Cela est utile pour trouver le chemin le moins coûteux pour diffuser une information depuis une source vers tous les autres nœuds.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 optNetwork.minSpanTree /
3 direction='DIRECTED'
4 SOURCE='A'
5 links={name='LinkSetIn'}
6 out={name='MST_out_directed', replace=true};
7RUN;
Résultat :
La table de sortie 'MST_out_directed' contiendra les arêtes de l'arborescence couvrante de poids minimum partant du nœud 'A'. Le poids total sera différent de l'exemple non orienté car les arêtes sont considérées avec une direction et seules les arêtes partant de la source (directement ou indirectement) sont éligibles.

FAQ

À quoi sert l'action `minSpanTree` dans SAS Viya?
Comment l'action `minSpanTree` traite-t-elle les graphes orientés ?
Quels sont les paramètres principaux pour définir les données du graphe en entrée ?
Quel est le rôle du paramètre `out` dans cette action ?
Peut-on influencer le niveau de détail des journaux (logs) lors de l'exécution de l'action ?