begin process at 2012 02 05 04:53:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > ALGORITHME HONGROIS PROPOSÉ PAR KUHN

ALGORITHME HONGROIS PROPOSÉ PAR KUHN


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :Hongrois, Kuhn, matrice carré Niveau :Débutant Date de création :14/05/2008 Vu / téléchargé :7 772 / 409

Auteur : zizofredj

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Il s'agit de l'algorithme Hongrois proposé par Kuhn.
Il s'agit d'une matrice carré, là où les valeurs infinies restent inchangées.
L'algorithme procède en trois étapes successives.
1- éliminer le plus petit élément de chacune des colonnes  puis celui de chacune des lignes de la matrice des coûts.
2- Si, cette solution n'est pas optimale, on considère la ligne ayant un nombre minimal de zéros. On encadre l'un des zéros de cette ligne, puis on barre les zéros qui se trouvent sur la même ligne ou la même colonne que le zéro encadré. On procède de même pour toutes les lignes.
3- On marque toutes les lignes qui ne contiennent aucun zéro encadré
On marque les lignes qui ont un zéro encadré dans une colonne marqué
On marque les colonnes qui ont un ou plusieurs zéros barrés dans une ligne marquée.
On répète ces trois marquages successifs jusqu'à ce que l'on ne puisse plus affecter de nouveaux marquages.
On barre ensuite, les lignes non marquées ainsi que les colonnes marquées.
Dans le tableau réduit obtenu, on retranche la valeur de l'élément le plus petit aux colonnes non barrées et on l'ajoute aux lignes barrées.
On poursuit la procédure de traitement sur la matrice résultante en reprenant à la seconde phase jusqu'à l'obtention d'une solution optimale.




 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de nosferaltu0 le 14/05/2008 16:10:47

J'aimerais juste avoir un ou deux exemple(s) concret(s) de l'utilisation de l'algorithme.

Merci.

PS : La note que je met ne correspond à rien puisque je n'ai pas regardé les sources.
<a href="http://en.wikipedia.org/wiki/Hungarian_algorithm">Un peu plus d'information sur l'algo<a> (en anglais)

Commentaire de zizofredj le 15/05/2008 12:46:30

Etant donné n tâches à réaliser sur m  machines et sachant que l'on connaît le coût de réalisation Cij de la tâche ti par la machine mj (pour tous les couples (ti,mj) possibles, si la tâche ti ne peut être effectuée par la machine mj, on pose Cij=?), on cherche une permutation ? de {1,2,.,n} conduisant à un coût total :
somme(Ci,?(i))  minimum. Ceci est obtenu en cherchant une solution à coût nul (un seul zéro dans chaque colonne et dans chaque ligne).
La matrice ci-dessous illustre ce que je viens de dire :
1 2 3 4 5
A 7 3 5 7 10
B 6 ? ? 8 7
C 6 5 1 5 ?
D 11 4 ? 11 15
E ? 4 5 2 10

La solution optimale est alors obtenue grâce aux éléments :
C2,A1= C2,B5= C2,C3= C2,D2= C2,E4=0
Si l'on revient aux données initials, on obtient:
CA1+ CB5+ CC3+ CD2+ CE4=7+7+1+4+2=21

Commentaire de nosferaltu0 le 15/05/2008 13:34:49

Donc si je comprend bien en mettant des ? dans la diagonale on retombe sur le problème du voyageur de commerce.(VDC ou TSP http://en.wikipedia.org/wiki/Travelling_salesman_problem)

Merci.

Commentaire de zizofredj le 20/05/2008 13:00:06

Salut,
Désolé mais des il y a des caractères non reconnus par l'éditeur texte ce qui justifie les ? mal placés. Voilà donc le texte intégrale.
Etant donné n tâches à réaliser sur m  machines et sachant que l'on connaît le coût de réalisation Cij de la tâche ti par la machine mj (pour tous les couples (ti,mj) possibles, si la tâche ti ne peut être effectuée par la machine mj, on pose Cij=infini), on cherche une permutation 's' de {1,2,.,n} conduisant à un coût total :
somme(Ci,s(i))  minimum. Ceci est obtenu en cherchant une solution à coût nul (un seul zéro dans chaque colonne et dans chaque ligne).
si on pose I=infini
La matrice ci-dessous illustre ce que je viens de dire :
1 2 3 4 5
A 7 3 5 7 10
B 6 I I 8 7
C 6 5 1 5 I
D 11 4 I 11 15
E I 4 5 2 10

La solution optimale est alors obtenue grâce aux éléments :
C2,A1= C2,B5= C2,C3= C2,D2= C2,E4=0
Si l'on revient aux données initials, on obtient:
CA1+ CB5+ CC3+ CD2+ CE4=7+7+1+4+2=21
Bon un problème d'affectation est un cas particulier du problème de transport sans capacité.

Commentaire de nosferaltu0 le 20/05/2008 17:18:14

les ? n'empèchait pas la comprension, ce n'etait qu'un nom de variable. Je trouve que l'utilisation de la lettre C et l'appellation de la fonction cout C sans paranthèse est plus génante pour la comprehension.

Commentaire de zaidimakram le 30/07/2008 10:54:42

salut
j'ai une matrice non carré de ce type:
10
2 12 10 16 4 18 8 18 18 12
6 36 30 48 12 54 24 54 54 36
l'algoritme ne fonctionne pas pourrai je connaitre la cause. il m'afficehe des valeur -842150451
-842150451 de ce types comment je pourrai le faire fonctionner.
merci

Commentaire de nosferaltu0 le 30/07/2008 11:01:37

Déjà avant de regarder plus en détail si ta matrice n'est pas carré il faut que tu la transforme en matrice carré en mettant à l'infini les cases rajoutées. Sinon ça ne peut pas marcher puisque l'algorithme à besoin d'une matrice carré.

Commentaire de susane le 19/01/2009 11:51:08

merci pour cet algorithme, c'est intéréssant ce que vous avez fait.
j'ai voulu voir ce que ça mais eu un problème en l'éxécutant en borland c++, il m'affiche toujours "erreur!!! impossible d\'ouvrir le fichier voulu", quand j'ai lu attentivement la code source j'ai réaliser qu'il y a un problème dans l'ouverture de fichier ftp, comment faire pour que ça marche?
merci :)

Commentaire de zizofredj le 02/02/2009 16:59:33

il suffit de placer votre instance dans le même dossier où se trouve votre code.
et dans le fichier affec.cpp écrire le nom de votre instance dans la ligne
#define data "instance.txt"//instance

Commentaire de llphenix le 21/03/2009 15:47:30

bon jour .
svp je veut savoir pk votre pgm ne marche pas correctement quand j'ai mis une matrice carré :
  1 2 3 4 5 6 7
A 1000 4 1 3 7 1000 2
B 1 6 4 3 1000 2 4
C 6 1 4 6 3 12 1000
D 10 1000 3 4 7 8 3
E 3 7 1000 2 16 3 8
F 14 9 4 1000 3 7 6
G 5 3 9 10 4 1000 3





Commentaire de zizofredj le 28/03/2009 11:49:44

mettez seulement des chiffres et à priori ça ira

Commentaire de nalox le 23/06/2009 00:35:06

Bonjour,

J'ai essayé d'exécuter le programme avec la matrice suivante :

10
4  9 90  8 65  7 18  3  42 19
4  8  5 76  5  2 15  4   7 15
54  8  4  9  9  9  2  8   9 65
6  1  3  1  2  7 12  9  44 17
65 98  5  4 11  8 13 17  32  9
16 15 10 25 30  7 12 18  32 18
87 56  6 76 25 11  9 14  22 19
9 10 16 17 75 16  8 11   9  4
61 18 11 23 45 34  7 12  20 18
90 81 23  6  7  4  8 10   4  7

ca cycle indéfiniment....vous connaissez la raison?
merci

Commentaire de norddinah le 18/08/2009 08:26:51

Bonjour,
Avez vous un code en JAVA pour le problème d'affectation.
Cordialement

Commentaire de zazazizou le 17/05/2010 19:13:46

Bonjour,
La méthode est très bien décrite mais à la fin il y a marqué qu'on doit recommencer la procédure jusqu'à ce que la solution soit optimale. Or, quand l'est-elle ?
Merci d'avance.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,810 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales