|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
ALGORITHME DE DJIKSTRA
Information sur la source
Description
ce programme est un tp de recherche operationnelle implemente le l'algorthme de Djikstra
Source
- #include<stdio.h>
- #include<conio.h>
- #include <stdlib.h>
- #include <time.h>
- int n;
- int t[20][20],p[20],arc[20][20],a[20],s[20],q,j,i,r,o,z,x;
- long c;
- int main()
- {
- time_t ti;
- printf(" ===========================================================\n");
- printf(" UNIVERSITE DE BEJAIA\n ");
- printf(" DEPARTEMENT D'INFORMATIQUE \n ");
- printf(" ETUDIANT : TOUATI MOHAMED \n ");
- printf(" MODLE DE RECHERCHE OPERATIONNELLE\n");
- printf(" ===========================================================\n");
- printf(" ***bonjour***\n\n");
- printf(" Algorithme de Djikstra :\n\n\n");
- getch();
- int clrscr();
- printf(" ===========================================================\n");
- printf(" UNIVERSITE DE BEJAIA\n ");
- printf(" DEPARTEMENT D'INFORMATIQUE \n ");
- printf(" ETUDIANT : TOUATI MOHAMED \n ");
- printf(" MODULE DE RECHERCHE OPERATIONNELLE\n");
- printf(" ===========================================================\n\n");
- printf("introduire le nombre de sommet n \n\n");
- printf("n=");
- scanf("%d",&n);
- a:
- printf(" pour avoir la matrice manualement tappez '1' \n\n");
- printf(" pour avoir la mtrice automatiquement tappez '2' \n");
- scanf("%d",&q);
- if(q!=1 && q!=2)
- {
- goto a;
- }
- if (q==1)
- {
- printf(" donnez maintenant les valeurs de la matrice:\n");
- for(i=1;i<=n;i++)
- {
- for(j=1;j<=n;j++)
- {
- ref:
- printf("X(%d,%d)=",i,j);
- scanf("%d",&t[i][j]);
- if (t[i][j]<0)
- {
- printf("error!!!\a\n");
- printf("reffere l'introduction de la valeure de X(%d,%d)>=0\n",i,j);
- goto ref;
- }
- }
- }
-
- }
- else
- {
- srand((unsigned) time(&ti));
- for(i=1;i<=n;i++)
- {
- for(j=1;j<=n;j++)
- {
- t[i][j]=(rand() % 10);
- printf(" %d ",t[i][j]);
- }
- printf("\n\n\n");
- }
- }
- getch();
- for(i=1;i<=n;i++)
- t[i][i]=0; ///pour eliminer les boucles
-
- printf("---------------------------------------------------\n\n");
- //clrscr();
-
- for(i=1;i<=2;i++)
- for(j=1;j<=2;j++) //initialisation de arc
- arc[i][j]=0;
-
- for(i=1;i<=n;i++) // initialiser les potenciels a l'infinit
- p[i]=1000;
-
- for(i=1;i<=n;i++)
- a[i]=0;
-
- for(i=1;i<=n;i++)
- s[i]=0;
- o=1; /// "o"la variable qui contien la racine
- x=1;
-
- zero:
-
- if(o<=n)
- {
- s[x]=1;
- p[x]=0;
- z=1;
- un:
- for(i=1;i<=n;i++)
- {
- if((s[i]==0)&&(t[x][i]!=0))
- {
- if((p[x]+t[x][i])<p[i])
- {
- p[i]=p[x]+t[x][i];
- a[i]=x; //extremité initiale "x" extremité terminale "i"
- }
- }
- }
- deux:
- for(i=1;i<=n;i++)
- {
- if(s[i]==0)
- {
- z=i; //z est un sommet qui n'appartin pas a S
- i=n;
- }
- }
-
- for(i=1;i<=n;i++)
- {
- if((s[i]==0)&&(p[i]<p[z]))
- {z=i;} //z est un sommet qui n'appartin pas a S mais de ptentieile minimume
- }
-
-
- if(p[z]==1000) ////si le ptontiel min est a l'infinit
- { ////n'est pas une racine
- for(i=1;i<=2;i++)
- for(j=1;j<=2;j++)
- arc[i][j]=0;
-
- for(i=1;i<=n;i++)
- p[i]=1000;
-
- for(i=1;i<=n;i++)
- a[i]=0;
-
- for(i=1;i<=n;i++)
- s[i]=0;
- o=o+1;
- x=o;
- goto zero;
- }
- else
- {
- s[z]=1; ///introduire l'arc (a[z],z) dans l'arborecence
- arc[(a[z])][z]=t[(a[z])][z];
- x=z;
- }
- for(i=1;i<=n;i++)
- {
- if(s[i]==0)
- {goto un;}
- }
- }
- printf("l'arborecence de poid minimume avec la racine le sommet %d est:",o);
- printf("\n\n\n");
- for(i=1;i<=n;i++)
- {
- for(j=1;j<=n;j++)
- {
- printf(" %d ",arc[i][j]);
- }
- printf("\n\n\n");
- }
- printf("\n\n\n");
- printf("la racine est: %d",o);
- }
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include <time.h>
int n;
int t[20][20],p[20],arc[20][20],a[20],s[20],q,j,i,r,o,z,x;
long c;
int main()
{
time_t ti;
printf(" ===========================================================\n");
printf(" UNIVERSITE DE BEJAIA\n ");
printf(" DEPARTEMENT D'INFORMATIQUE \n ");
printf(" ETUDIANT : TOUATI MOHAMED \n ");
printf(" MODLE DE RECHERCHE OPERATIONNELLE\n");
printf(" ===========================================================\n");
printf(" ***bonjour***\n\n");
printf(" Algorithme de Djikstra :\n\n\n");
getch();
int clrscr();
printf(" ===========================================================\n");
printf(" UNIVERSITE DE BEJAIA\n ");
printf(" DEPARTEMENT D'INFORMATIQUE \n ");
printf(" ETUDIANT : TOUATI MOHAMED \n ");
printf(" MODULE DE RECHERCHE OPERATIONNELLE\n");
printf(" ===========================================================\n\n");
printf("introduire le nombre de sommet n \n\n");
printf("n=");
scanf("%d",&n);
a:
printf(" pour avoir la matrice manualement tappez '1' \n\n");
printf(" pour avoir la mtrice automatiquement tappez '2' \n");
scanf("%d",&q);
if(q!=1 && q!=2)
{
goto a;
}
if (q==1)
{
printf(" donnez maintenant les valeurs de la matrice:\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
ref:
printf("X(%d,%d)=",i,j);
scanf("%d",&t[i][j]);
if (t[i][j]<0)
{
printf("error!!!\a\n");
printf("reffere l'introduction de la valeure de X(%d,%d)>=0\n",i,j);
goto ref;
}
}
}
}
else
{
srand((unsigned) time(&ti));
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
t[i][j]=(rand() % 10);
printf(" %d ",t[i][j]);
}
printf("\n\n\n");
}
}
getch();
for(i=1;i<=n;i++)
t[i][i]=0; ///pour eliminer les boucles
printf("---------------------------------------------------\n\n");
//clrscr();
for(i=1;i<=2;i++)
for(j=1;j<=2;j++) //initialisation de arc
arc[i][j]=0;
for(i=1;i<=n;i++) // initialiser les potenciels a l'infinit
p[i]=1000;
for(i=1;i<=n;i++)
a[i]=0;
for(i=1;i<=n;i++)
s[i]=0;
o=1; /// "o"la variable qui contien la racine
x=1;
zero:
if(o<=n)
{
s[x]=1;
p[x]=0;
z=1;
un:
for(i=1;i<=n;i++)
{
if((s[i]==0)&&(t[x][i]!=0))
{
if((p[x]+t[x][i])<p[i])
{
p[i]=p[x]+t[x][i];
a[i]=x; //extremité initiale "x" extremité terminale "i"
}
}
}
deux:
for(i=1;i<=n;i++)
{
if(s[i]==0)
{
z=i; //z est un sommet qui n'appartin pas a S
i=n;
}
}
for(i=1;i<=n;i++)
{
if((s[i]==0)&&(p[i]<p[z]))
{z=i;} //z est un sommet qui n'appartin pas a S mais de ptentieile minimume
}
if(p[z]==1000) ////si le ptontiel min est a l'infinit
{ ////n'est pas une racine
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
arc[i][j]=0;
for(i=1;i<=n;i++)
p[i]=1000;
for(i=1;i<=n;i++)
a[i]=0;
for(i=1;i<=n;i++)
s[i]=0;
o=o+1;
x=o;
goto zero;
}
else
{
s[z]=1; ///introduire l'arc (a[z],z) dans l'arborecence
arc[(a[z])][z]=t[(a[z])][z];
x=z;
}
for(i=1;i<=n;i++)
{
if(s[i]==0)
{goto un;}
}
}
printf("l'arborecence de poid minimume avec la racine le sommet %d est:",o);
printf("\n\n\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf(" %d ",arc[i][j]);
}
printf("\n\n\n");
}
printf("\n\n\n");
printf("la racine est: %d",o);
}
Conclusion
universté de bejaia j'ai créé ce code ya deux ans pour mon tp de recherche operationnelle Djikstra -ford merci pour les remarques je prendrai en copte a la venire
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 22 juillet 2008 02:18:50 :
- enlevé la capture
- 23 juillet 2008 13:10:33 :
- prise en compte de quelque remarques
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
arborescence [ par Neoxeo ]
voila je sui tout nouveau sur ce site alor Bijour bon voila mon pb...je dois, pour un programme, creer un objet graphique sous c++ builder 4 afin de f
Parcourir une arborescence en C [ par HCJarod ]
Salut, je voudrai savoir comment en utilisant les fonction findfirst() et findnext() du C trouver tous les fichiers d'extension .exe. Je mexplique : l
arborescence d'un HD [ par Galerien ]
Bonjour à tous les dingues de la programmation en C,débutant dans la programmation en C sur PC, je souhaiterai inclure dans mon bout de code l'équival
lister une arborescence de repertoire [ par krater ]
bonjour, je souhaite réaliser un programme en C sous unix/linux qui rentre dans un fichier texte la liste des fichier du repertoir passer en parametre
CFileDialog améliorée ? [ par bzouli ]
Bonjour,Je voudrais faire un CFileDialog mais avec un Tree Control qui n'affiche que les dossiers de l'arborescence, et une Clist (à coté) où les fic
Comment afficher un scan de tous les disques du pc dans une arborescence? [ par champista ]
bijou,Voila, je suis un débutant en c++.Je travaille sous visual c++ 6.J'aimerais créer une arborescence qui affiche tous les disques et dossiers d'un
PB d'affichage des sous dossier dans une arborescence? [ par champista ]
Salut, Mon but est de créer une interface du type mfc avec:-une arborescence des disques+dossiers-une fenetre 'contenu du dossier' contenant sous
Pb sur "arborescence de dossier" [ par TahitiLove ]
Bonjour,J'ai créé un projet MFC. Ce que j'aimerai ce serait de rajouter l'affichage d'une arborescence de dossier dans la fenêtre
Obtenir arborescence des dossiers virtuels de mon FTP [ par melkiorlenecrarque ]
Bonjour,Existe-t-il une fonction api win32, semblable à SHBrowseForFolder pour selectionner un dossier virtuel sur mon serveur FTP ?Autre questio
arborescence de fichiers [ par otofraise ]
Bonjour,J'aimerais savoir s'il existe un composant qui permet d'obtenir l'arborescence des repertoires/fichiers d'une machine, qui possede en racine l
|
Téléchargements
Logiciels à télécharger sur le même thème :
|