Scilab function

bandwr - réduction de largeur de bande pour une matrice creuse

Sequence d'appel

[iperm,mrepi,prof,ierr] = bandwr(sp,[iopt])
[iperm,mrepi,prof,ierr] = bandwr(lp,ls,n,[iopt])

Parametres

Description

bandwr résout le problème de la réduction de largeur de bande pour une matrice creuse : la matrice est supposée triangulaire supérieure avec une diagonale pleine.

Dans la première séquence d'appel, sp désigne une matrice creuse; l'argument optionnel iopt vaut 0 ou 1 : 1 si réduire le profil de la matrice est plus important que réduire la largeur de bande et 0 si la largeur de bande est plus important.

La deuxième séquence d'appel correspond à la description d'un graphe : lp est un vecteur ligne de pointeurs de la description du graphe sous forme de liste d'adjacence (sa taille est le nombre de sommets du graphe + 1); ls est un vecteur ligne, tableau de sommets de la description du graphe sous forme de liste d'adjacence (sa taille est le nombre d'arêtes du graphe, c'est à dire le nombre de termes non-nuls de la matrice creuse associée). n est le nombre de sommets (dimension de sp).

iperm est le vecteur de la permutation pour réordonner les lignes et les colonnes, qui réduit la largeur de bande et/ou le profil (nouvelle numérotation des sommets du graphe). mrepi est la permutation inverse (mrepi(iperm) est l'identité). prof est le tableau donnant le profil de la matrice creuse après la réduction de largeur de bande si iopt vaut 1. Si iopt vaut 0 ce tableau est nul sauf pour le premier terme, donnant alors la largeur de bande. La simple commande max(prof(2:$)-prof(1:($-1))) renvoie la largeur de bande de la matrice. ierr est un entier indiquant une erreur si sa valeur est non nulle.

Exemples