Accueil > > > ALGORITHME DE DJIKSTRA
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
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
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
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Forum
RE : ARBRE BINAIRERE : ARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|