Scilab type

graph-list - description d'un graphe (sous forme de liste)

### Description

Un graphe dans Scilab est représenté par une liste typée.

Voir ci-dessous la description complète de cette liste. Chaque élément est décrit par une ou plusieurs lignes. La première ligne donne le nom de l'élément et sa définition. Des informations supplémentaires, telles que les valeurs par défaut des éléments pouvant en avoir une, sont données sur les autres lignes. En fait, seul les 5 premiers éléments doivent avoir une valeur, les autres pouvant être définis comme un vecteur vide `[]`, la valeur par défaut étant utilisée par les fonctions ou la fenêtre de Metanet. Par exemple, il est possible de définir un graphe par :

    g=make_graph('min',1,1,[1],[1]);

qui est le graphe le plus simple que l'on puisse créer avec Metanet (il est orienté, possède un sommet et une boucle sur ce sommet).

Le nom des élément dans la liste est très important car il est utilisé pour y accéder. Par exemple si `g` est un graphe, pour obtenir le nom du graphe, il suffit de taper :

    g('name')

ou

    g.name

et pour changer le nom du graphe en `'toto'` :

    g('name')='toto';

ou

    g.name='toto';

On peut obtenir le nombre d'arêtes et le nombre d'arcs du graphe avec `edge_number(g)` et `arc_number(g)` (ces noms ne sont pas ceux des éléments de la liste). Pour raisons de compatibilité `node_number(g)` peut être utilisé à la place de `g('node_number')` ou `g.node_number`.

Un graphe peut être syntaxiquement correct mais ne pas représenter un graphe valide. Utiliser la fonction `check_graph` pour le vérifier. De plus, les noms des sommets doivent être différents. En fait, cela ne donne pas d'erreur dans Scilab, mais un comportement étrange peut en résulter dans la fenêtre Metanet. Ceci n'est pas vérifié par `check_graph` car cela prendrait trop de temps. Cela est seulement vérifié lors de sa visualisation, sauvegarde ou chargement.

Les éléments d'un graphe sont les suivants :

- name : - le nom du graphe
- - c'est une chaîne de caractères (longueur < 80)

- oriented : - flag donnant le type du graphe
- - il est égal à 1 (graphe orienté) ou égal à 0 (graphe non-orienté)

- node_number : - nombre de sommets
- tail : - vecteur ligne des numéros des sommets origines
- head : - vecteur ligne des numéros des sommets extrémités
- node_name : - vecteur ligne des noms des sommets
- - les noms des sommets doivent être différents
- - par défaut les noms des sommets sont égaux à leurs numéros

- node_type : - vecteur ligne des types des sommets
- - le type est un entier entre 0 et 2, 0 par défaut (sommet normal) :
- - 0 = sommet normal
- - 1 = puits
- - 2 = source

- node_x : - vecteur ligne des coordonnées x des sommets
- - valeur par défaut calculée

- node_y : - vecteur ligne des coordonnées y des sommets
- - valeur par défaut calculée

- node_color : - vecteur ligne des couleurs des sommets
- - La couleur est un entier entre 0 et 16, 0 par défaut :
- - 0 = couleur de premier plan par défaut
- - 1 = navyblue
- - 2 = blue
- - 3 = skyblue
- - 4 = aquamarine
- - 5 = forestgreen
- - 6 = green
- - 7 = lightcyan
- - 8 = cyan
- - 9 = orange
- - 10 = red
- - 11 = magenta
- - 12 = violet
- - 13 = yellow
- - 14 = gold
- - 15 = beige
- - 16 = background

- node_diam : - vecteur ligne des diamètres des sommets en pixels
- - un sommet est dessiné sous forme d'un cercle
- - par défaut, valeur de l'élément `default_node_diam`

- node_border : - vecteur ligne de l'épaisseur des bords des sommets
- - un sommet est dessiné sous forme d'un cercle
- - par défaut, valeur de l'élément `default_node_border`

- node_font_size : - vecteur ligne de la taille de la police utilisée pour afficher le nom du sommet
- - 8, 10, 12, 14, 18 ou 24, au choix
- - par défaut, valeur de l'élément `default_font_size`

- node_demand : - vecteur ligne des demandes des sommets
- - 0 par défaut

- edge_name : - vecteur ligne des noms d'arêtes
- - il est souhaitable que les noms des arêtes soient différents, mais c'est n'est pas obligatoire
- - par défaut les noms des arêtes sont leur numéros

- edge_color: - vecteur ligne des couleurs des arêtes
- - la couleur est un entier entre 0 et 16 (voir `node_color`)
- - 0 = couleur de premier plan (par défaut)

- edge_width: - vecteur ligne des épaisseurs des arêtes en pixels
- - par défaut, valeur de l'élément `default_edge_width`

- edge_hi_width : - vecteur ligne des épaisseurs des arêtes mises en évidence (en pixels)
- - par défaut, valeur de l'élément `default_edge_hi_width`

- edge_font_size: - vecteur ligne de la taille de la police utilisée pour afficher le nom des arêtes
- - 8, 10, 12, 14, 18 ou 24
- - par défaut, valeur de l'élément `default_font_size`

- edge_length : - vecteur ligne des longueurs des arêtes
- - 0 par défaut

- edge_cost : - vecteur ligne des coûts des arêtes
- - 0 par défaut

- edge_min_cap : - vecteur ligne des capacités minimum des arêtes
- - 0 par défaut

- edge_max_cap : - vecteur ligne des capacités maximum des arêtes
- - 0 par défaut

- edge_q_weight : - vecteur ligne des poids quadratiques des arêtes
- - 0 par défaut

- edge_q_orig : - vecteur ligne des origines quadratiques des arêtes
- - 0 par défaut

- edge_weight : - vecteur ligne des poids des arêtes
- - 0 par défaut

- default_node_diam : - diamètre par défaut des sommets du graphe
- - 20 pixels par défaut

- default_node_border : - épaisseur du bord des sommets
- - 2 pixels par défaut

- default_edge_width : - épaisseur par défaut des arêtes du graphe
- - 1 pixel par défaut

- default_edge_hi_width : - taille par défaut des arêtes mises en évidence (en pixels)
- - 3 pixels par défaut

- default_font_size : - taille par défaut de la police utilisée pour afficher le nom des sommets et arêtes
- - 12 par défaut

- node_label : - vecteur ligne des noms des sommets
- edge_label : - vecteur ligne des noms des arêtes

### Exemples

    g=load_graph(SCI+'/demos/metanet/mesh100');
    g('node_color')=int(rand(1:g('node_number'))*16);
    g('edge_color')=int(rand(1:edge_number(g))*16);
    show_graph(g)

### Voir aussi

`arc_number` `check_graph` `edge_number` `glist` `make_graph` `node_number`