|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Bonjour,
voilà trois classes permettant d'étiqueter des composantes connexes à l'aide de plusieurs méthodes : - Itérative => Classique et rapide. - Récursive => Le plus rapide, mais avec un TRES gros risque de StackOverFlow, donc a éviter. - Fifo => La version récursive implémentée avec une file. - Union-Find (la version de PseudoCode dans ma plate-forme). J'ai fait des tests et la méthode la plus rapide est FiFo dans la TRES grande majorité des cas. Il faut éviter la récursive pour les problèmes de débordement, elle n'est là que pour le coté pédagogique. De même la version Union-Find est très belle, mais très lente : environ 5 à 8 fois plus lente que la FiFo (calculé de manière empirique). Voici un petit exemple d'utilisation : Code java :
Tout d'abord, voici l'interface permettant de s'abstraire un peu de la méthode : Code java :
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Code java :
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
||
|
|
00
|
|
|
#3 | ||
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Code java :
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
||
|
|
00
|
|
|
#4 | ||
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Code java :
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
||
|
|
00
|
|
|
#5 | ||
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Code java :
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
||
|
|
00
|
|
|
#6 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 837 ![]() |
Citation:
![]() La dernière version en date utilise un tableau de int[], ce qui devrait être plus rapide. Cela dit, je ne pense pas que ca batte la version FIFO.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#7 |
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Ok, merci.
Je ferai un petit Update dès que j'aurai un moment.
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 15 ![]() |
Bonsoir;
Je ne sais pas si vous pouvez me passer le package meseaures pour que je puisse tester le code fifo. Cordialment. |
|
|
00
|
|
|
#9 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2010 Messages : 15 ![]() |
Citation:
pouvez vous me faire passer le codejava des methodes "chronometre" et "pixel(x,y)" |
|||
|
|
00
|
|
|
#10 |
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Bonjour,
les classes que je propose ici sont dans le package measures. Le plus simple est que vous supprimiez cette ligne et que vous plassiew les classes dans votre propre package. La classe chronometre n'est pas utile pour le fonctionnement, supprimez donc les lignes qui l'utlise. Pour la classe image, utilisez la votre. si vous n'en avez pas, utilisez les BufferedImage de Java.
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
|
|
00
|
|
|
#11 | |
![]() ![]() Guillaume Ingénieur de Recherche Inscription : janvier 2006 Messages : 4 807 ![]() |
Bonjour,
je viens de faire une mise à jour de ces algorithmes, qui n'utilisent plus ma classe image. Il y a également la dernière version Union-Find de pseudo-code. Vous trouverez également les sources dans les archives de code de dvp. Citation:
Après de nombreux tests : - Union-Find est en moyenne deux fois plus rapide que Fifo (qui utilise une FAH). - Cela augmente avec la taille des images. - Dans les pires des cas, les résultats sont comparables (quelques dixièmes). Je pense que cela vient du fait que Fifo utilise une liste qui contient des instances de "Coordinates". Si quelqu'un a une solution...
__________________
Consignes aux jeunes padawans : une image vaut 1000 mots ! - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe correcteur orthographique pour FiReFox), mettre les ACCENTS et les BALISES => ECRIRE clairement et en Français tu DOIS. - Le coté obscur je sens dans le MP => Tous tes MP je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci) - ton poste tu dois marquer quand la bonne réponse tu as obtenu.
|
|
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : avril 2010 Messages : 158 ![]() |
Bonjour,
Je trouve votre étude très intéressante mais j'aimerais quelque précision. Je ne comprend pas très bien le type exact des algorithmes que vous utilisé à par Union-Find. Quand vous parlez d'une méthode Itérative utilisez vous l'algorithme de remplissage par diffusion? Quand vous parlez de méthode récursive utilisez aussi l'algorithme de remplissage par diffusion? Je suis tres intéressé par l'algorithme qui fait référence à une file pour traiter la l'étiquetage. Pour finir vous dite que Union find est moin gourmande que l'algorithme utilisant une liste Fifo surtout quand la taille de l'image grandit. J'en déduit que la complexité de l'algorithme utilisant la liste fifo et bien plus grande que pour Union find? Cordialement, christophe |
|
|
00
|
|
|
#13 | |||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 837 ![]() |
Citation:
Ici, la différence de performance vient surtout de l'implémentation. En Java les collections stockent des instances de classe, et c'est relativement couteux de créer ces instances. Rien qu'en remplacant la classe "Coordinates" par la Classe "Integer", ca améliore déjà les choses. Ca serait encore mieux avec un type natif (int), mais il n'existe pas de collections de type natif en Java. Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : avril 2010 Messages : 158 ![]() |
bonjour,
je confirme Union-find est plus rapide (j'ai testé en AS3). Mais effectivement Union-find est assez dur à coder corectement pour ne pas perdre du temps autre par que sur l'algo lui même. Enfait non voir http://www.developpez.net/forums/d12...s/#post7047471 |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com