Académique Documents
Professionnel Documents
Culture Documents
HONGROISE
RAPPORT DU PROJET
BELAOUCHI LAMYAE
RABHI WIAM
EL BOUYAHYAUI MOHAMED
NEQROUZ MOSTAFA
OMARI HATIM
DOUKALI BOUTHAYNA
CHOUKRI MOHAMED
Encadré par:
Mr MBARKI ABDERRAHIM
| INTRODUCTION
METHODE HONGROISE 2
| SOMMAIRE
Conclusion
METHODE HONGROISE 3
PREMIERE PARTIE : ANALYSE DE LA METHODE
HONGROISE :
L'algorithme hongrois ou méthode hongroise, aussi appelé algorithme de König,
est un algorithme de recherche opérationnelle, c’est une méthode de chapitre
théorie des graphes qui résout le problème d'affectation.
On représente les données nécessaires pour l'algorithme dans une matrice, et on
suit des instructions précise pour avoir le résultat.
1. Les données : variables :
En se basant sur le cours on a comme données a entrer dans le programme est
une matrice de taille carrée. Et chaque case ; il y a plusieurs instructions qui se
déroulent. Donc on a déclaré une structure, qui englobe toutes les informations
d’une case, dont il y a quatre attributs :
Cout : de type entier et la valeur initiale de la case.
Normal : de type entier remplis par 0 si la case ne contient pas de 0 sinon 1.
Encadre : de type entier remplis par 1 si la case contient de 0 encadre sinon 0.
Barre : de type entier remplis par 1 si la case contient de 0 barre sinon 0.
Et on déclare une autre structure qui englobe les informations de matrice et ses
attributs sont :
o_lign : de type entier indique le nombre de zéro dans la ligne i
oenca_lign : de type entier indique le nombre de zéro encadrée dans la ligne i
obarre_lign: de type entier indique le nombre de zéro barrrée dans la ligne i
o_col : de type entier indique le nombre de zéro dans la colonne i
oenca_col : de type entier indique le nombre de zéro encadrée dans la colonne
i
obarre_col : de type entier indique le nombre de zéro barrrée dans la colonne i
lign_mark : de type entier inique si la ligne i est marquée d'un astèrisque
col_mark : de type entier inique si la colonne i est marquée d'un astèrisque
METHODE HONGROISE 4
Après on déclare une structure qui a comme attributs :
n : la taille de la matrice carrée.
**cout_affec : une matrice carrée de la première structure.
*etat : un pointeur de la deuxième structure.
Pour faciliter l’insertion des données de la matrice on a choisi de créer un
’’fichier.txt’’, dont le quel on tape les couts de la matrice et sa taille, et qu’on
l’appelle dans notre programme.
2. Le but : résultat :
METHODE HONGROISE 5
DEUXIEME PARTIE : GUIDE D’EXECUTION DE
PROGRAMME :
1.Présentation générale :
Pour que le programme s’exécute correctement il faut mettre le
‘’fichier.txt’’ (les données) et le ‘’fichier.c’’ (le programme) dans le même
dossier. Et il faut nommer le ‘’fichier.txt’’ dans notre cas ‘’instance’’
d’extension ‘’.txt’’.
2.Déroulement du programme :
Au début, on insère nos données dans le ‘’fichier.txt’’ puis on les appelle dans
notre programme en appelant le fichier comportant les données dans le
programme. Les données s’insèrent automatiquement dans la matrice déclaré dans
le programme. Puis, chaque phase appelle la matrice, qu’on est entrain de traiter,
comme argument d’une fonction. Et après le traitement de chaque phase on aura
une résultat :
Phase 1 : pour cette phase on a besoin de la matrice comme argument ; et
retourne à la fin la matrice après le retrait le min des colonnes et des lignes.
Phase 2 : pour cette phase on a besoin la matrice résultante après le traitement
de la phase 1 comme argument ; et retourne à la fin la matrice avec les zéros soit
barre soit encadre.
Phase 3 : pour cette phase on a besoin comme argument la matrice après le
traitement de la phase 2 ; et retourne à la fin l’état du tableau, ça veut dire modifie
dans le pointeur de structure etat tab les ligne marquées et les colonnes marquées.
Phase 4 : pour cette phase on a besoin la matrice résultante après le traitement
de la phase 3 comme argument et la retourner a la fin de la fonction apres avoir
prendre le plus petit nombre, et retrancher ce nombre à la partie du matrice non
traversée par les traits et ajouter ce nombre aux éléments se trouvant à
l'intersection de 2 traits.
METHODE HONGROISE 6
TROISIEME PARTIE : EXPLICATION DE CHAQUE PARTIE
DE PROGRAMME :
Avant le lancement du traitement on a déclaré les structures :
METHODE HONGROISE 7
• Apres on doit initialiser la matrice à créer et le tableau de l‘état des
lignes et des colonnes :
METHODE HONGROISE 8
• Cette fonction ouvre et lit le ‘’fichier.txt’’ comportant les données de
la matrice et sa taille. Et crée une matrice, laquelle on va la traiter en la
modifiant, et alloue une espace mémoire pour ranger les données reçut
par le ‘’fichier.txt’’. Et a la fin retourne la matrice.
METHODE HONGROISE 9
• Cette fonction crée et alloue de la mémoire pour une matrice
initiale remplis par les données reçut du ‘’fichier.txt’’, qu’on ne va pas la
modifier car on est censé savoir les couts initiaux de chaque case pour
déduire la solution finale de l’algorithme. Et a la fin retourne la matrice
initiale.
METHODE HONGROISE 10
1. Première phase : fonctions utilisées
METHODE HONGROISE 11
• cette fonction retourne la matrice aprés retrait du cout min de
toutes les colonnes de la matrice initiale et prend comme arguments la
taille de la matrice initiale et la matrice.
• Cette fonction retourne la matrice aprés retrait du cout min de toutes les colonnes
de la matrice initiale et prend comme arguments la taille de la matrice
METHODE HONGROISE 13
• cette fonction lance les traitement de la matrice pour la premiere phase
et affiche la matrice aprés modification de toutes les colonnes en lançant les
traitement pour les modifications nécessaires pour les lignes de la matrice
initiale, et prend comme arguments la taille de la matrice initiale et la matrice
et la structure probleme aui regroupe tab etat et la matrice qu’on modifie.
METHODE HONGROISE 14
2. Deuxième phase : fonctions utilisées
• Cette fonction recherche le nombre des zéros dans chaque ligne et colonne.
METHODE HONGROISE 15
• Cette fonction sert à calculer le nombre de 0 encadré dans chaque
colonne et ligne, après le traitement de la phase 3 ; c’est-à-dire après
l’encadrement et le barrage des zéros. En considérant juste les zéros
encadrés comme étant des zéros. Et modifie aussi l’état du matrice.
METHODE HONGROISE 16
METHODE HONGROISE 17
• Modifier l’etat de tableau, en modifiant le nombre des zeros de
chaque ligne et de chaque colonne. Et sert aussi a encadrer les zeros et
les barrees et ajoute les modification concernant le nombre de zeros
encadre et bares dans l’etat de la matrice.
METHODE HONGROISE 18
• Cette fonction sert a verifier si la matrice apres la phase 3 on a n
zeros si oui retourne 1 et passe directement a la solution finale , sinon
retourne 0 et passe a la phase 4 pour contunier le traitement.
METHODE HONGROISE 19
3. Troisième phase : fonctions utilisées
METHODE HONGROISE 20
4. Quatrième phase : fonctions utilisées
METHODE HONGROISE 21
• Cette fonction va retrancher la val de min aux col non
barrées et l’ajouter au intersections des lignes barrées avec
colonnes barrees.
METHODE HONGROISE 22
• Cette fonction calcule la solution optimale finie si la matrice s’est traite
par les fonction de la phase 3.
METHODE HONGROISE 23
• Cette fonction calcule la solution optimale finie si la matrice ne
contient pas des lignes marqué.
METHODE HONGROISE 24
• Cette fonction appelle toutes les fonctions des phases
précédentes, afin de faciliter l’appelle des fonction dans la fonction
main.
METHODE HONGROISE 25
Pour le programme principal on aura la stucture suivante :
METHODE HONGROISE 27