 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
yoan123
Inscrit le: 13 Déc 2003 Messages: 3
|
Posté le: 13 Déc 2003 15:12 Sujet du message: Problèmes de chemins |
|
|
J'ai un gros souci,et j'aimerais avoir un gros coup de main...En effet j'ai un projet(dont la date arrive bientot à expiration...) et je n'arrive pas à trouver des procédures qui:
determinent des chemins les plus courts,plus longs,plus fiables,plus grandes capacités.
et pour chacune de ces procédures, elles doivent prendre en entrée une matrice d'adjacence A de taille n et fournir en sortie une matrice de fermeture B correspondante.
En espérant qu'une généreuse personne pourra m'aider-que dis-je me sauver!!-
Merci d'avance...
 |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
|
Revenir en haut de page |
|
 |
yoan123
Inscrit le: 13 Déc 2003 Messages: 3
|
Posté le: 14 Déc 2003 21:56 Sujet du message: Re: problèmes de chemins |
|
|
Je vous remercie de m'avoir répondu,et il est vrai qu'il y a de nombreux renseignements utiles,mais cependant ils sont dans un autre langage,je m'en suis inspiré ainsi qu'avec d'autres exemples et j'en ai "pondu" quelques procédures,mais bon je n'arrive pas à les tester (peut-être sont-elles fausses...) et j'aimerais avoir un avis:
fermeture transitive:
Code: |
> fermtrans:=proc(t::matrix,i::integer,j::integer,n::integer,k::integer)
> t:=m;
> for i from 1 to n do
> for j from 1 to n do
> if t[j,i]=1 then
> for k from 1 to n do
> if t[i,k]=1 then
> t[j,k]:=1;fi;
> od;
> fi;
> od;
> od;
> end;
|
Détermination des chemins les plus courts:
Code: |
> Courtchemin:= proc (m::matrix ,i::integer,j::integer,k::integer ,n::integer )
> d:=m;
> for i from 1 to n do
> for j from 1 to n do
> if d[j,i] < infinity then
> for k from 1 to n do
> if d[j,k]>d[j,i]+d[i,k] then
> d[j,k]:=d[j,i]+d[i,k];
> fi;
> od;
> fi;
> od;
> od;
> end;
|
Je ne voudrais pas abuser...et si vous n'avez pas d'avis sur mes procédures,ce n'est pas grave.Je vous réitère mes remerciements pour m'avoir répondu, et encore un grand merci! : D |
|
Revenir en haut de page |
|
 |
yoan123
Inscrit le: 13 Déc 2003 Messages: 3
|
Posté le: 15 Déc 2003 18:03 Sujet du message: Re: problème de chemins |
|
|
[quote="ALS"]Sans me prononcer sur la justesse des algorithmes utilisés, je corrige la syntaxe de vos 2 procédures (on peut aussi remplacer integer par posint (entier >0) )
Mettre i,j,k en variables locales.
[code]
>with(linalg):
>fermtrans := proc(m::matrix, n::integer)
>local i, j, k, t;
> t := m;
> for i to n do for j to n do
> if t[j, i] = 1 then for k to n do
> if t[i, k] = 1 then t[j, k] := 1 end if;
> end do;
> end if;
> end do;
> end do;
> evalm(t)
end proc;
> A:=matrix([[1,1,0,1],[0,0,1,0],[1,1,1,0],[0,0,0,1]]);
[1 1 0 1]
[ ]
[0 0 1 0]
A := [ ]
[1 1 1 0]
[ ]
[0 0 0 1]
> fermtrans(A,4);
[1 1 1 1]
[ ]
[1 1 1 1]
[ ]
[1 1 1 1]
[ ]
[0 0 0 1]
> Courtchemin:= proc(m::matrix, n::integer )
> local d,i,j,k;
> d:=m;
> for i from 1 to n do
> for j from 1 to n do
> if d[j,i] < infinity then
> for k from 1 to n do
> if d[j,k]>d[j,i]+d[i,k] then
> d[j,k]:=d[j,i]+d[i,k];
> fi;
> od;
> fi;
> od;
> od;
> evalm(d)
> end;
> Courtchemin(A,4);
[1 1 1 1]
[ ]
[1 1 1 1]
[ ]
[1 1 1 1]
[ ]
[0 0 0 1]
[/code][/quote]
Je ne fait donc que sans cesse vous remercier,car gràce à vos précieux renseignements,j'ai pu finir mes procédures sur les chemins...Donc je vous témoigne de ma reconnaissance et longue vie au site!  |
|
Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - ©
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|