optNetwork

clique

##set_optnetwork

Description

L'action clique est utilisée pour identifier les cliques maximales dans un graphe. En théorie des graphes, une clique est un sous-ensemble de nœuds où chaque paire de nœuds est directement connectée par un lien. Une clique est dite 'maximale' s'il est impossible d'ajouter un autre nœud sans briser cette connectivité totale. C'est l'outil idéal pour trouver des groupes ultra-soudés dans un réseau social ou des clusters de gènes s'exprimant ensemble. Attention, trouver toutes les cliques peut être gourmand en calcul, c'est un peu le 'Où est Charlie' des mathématiques, mais en beaucoup plus complexe !

Syntaxe Officielle
proc cas;
optNetwork.clique /
cliqueNumber=true | false
deterministic=true | false
direction='DIRECTED' | 'UNDIRECTED'
indexOffset=integer
links={caslib='string', name='table-name', where='where-expression'}
maxCliques=integer | 'ALL'
maxLinkWeight=double
maxNodeWeight=double
maxSize=integer
maxTime=double
minLinkWeight=double
minNodeWeight=double
minSize=integer
out={name='table-name', replace=true}
;
run;

Paramètres Clés

Nom du paramètre Description
cliqueNumber Indique s'il faut calculer le nombre de clique (la taille de la plus grande clique du graphe).
maxCliques Spécifie le nombre maximum de cliques à extraire. Utilisez 'ALL' pour ne rien rater, mais prévoyez du café pour l'attente sur les gros graphes.
minSize Taille minimale des cliques à rechercher. Les 'groupuscules' trop petits seront ignorés.
maxSize Taille maximale des cliques à rechercher. Utile pour éviter de trouver des méga-cliques si vous cherchez des structures spécifiques.
links Table CAS d'entrée contenant les liens du graphe (colonnes 'from' et 'to' par défaut).
out Table CAS de sortie qui listera chaque clique trouvée avec un identifiant unique.
direction Définit si le graphe est dirigé ou non. Par défaut, on considère que l'amitié (undirected) est réciproque !
maxTime Limite de temps en secondes. Très utile pour ne pas laisser l'algorithme tourner jusqu'à la fin des temps sur des graphes NP-complets.

Préparation des données

Création d'un graphe social de test

Nous créons un petit réseau avec un groupe de 4 personnes (K4) et un triangle séparé.

1DATA mycas.SocialNetwork;
2 INPUT from to @@;
3 DATALINES;
41 2 1 3 1 4 2 3 2 4 3 4 4 5 4 6 5 6
5;
6RUN;

Exemples d'utilisation

Recherche de base des cliques

Exécute l'algorithme sur les données par défaut pour trouver la première clique maximale.

1PROC CAS;
2 optNetwork.clique / links={name='SocialNetwork'} out={name='CliquesOut', replace=true};
3RUN;
Résultat Attendu :
Une table CliquesOut contenant les membres de la première clique identifiée.
Extraction exhaustive de toutes les cliques de taille 3+

On demande au moteur de trouver absolument TOUTES les cliques (maxCliques='ALL') qui ont au moins 3 membres (minSize=3).

1PROC CAS;
2 optNetwork.clique /
3 links={name='SocialNetwork'}
4 minSize=3
5 maxCliques='ALL'
6 cliqueNumber=true
7 logLevel='AGGRESSIVE'
8 out={name='AllMaximalCliques', replace=true};
9RUN;
Résultat Attendu :
La table AllMaximalCliques listera la clique de 4 (1,2,3,4) et la clique de 3 (4,5,6). Le résultat cliqueNumber sera 4.