Ce concours vous interesserait-il ? - Algo - Programmation
Marsh Posté le 25-06-2004 à 17:45:11
Absolument pas (je ne suis pas étudiant), simplement comme j'ai vu qu'il y avait de l'intérêt pour les concours je me suis dit que ca serait sympa d'en lancer un. Il me semble, de plus, assez intéressant.
D'ailleurs, libre à vous de faire des propositions au sujet de la donnée.
SVP, évitez les posts non constructif (cf. le deuxième).
Marsh Posté le 25-06-2004 à 17:47:43
alors pourquoi tu veux pas qu'on le fasse en ruby ?
d'ailleurs, c'est purement un problème d'algo, on s'en tamponne bien que l'implémentation soit en C+
+
Marsh Posté le 25-06-2004 à 17:48:34
J'ai écrit : "le langage est libre", c'est effectivement un problème d'algo.
Marsh Posté le 25-06-2004 à 18:18:12
Cat. Algo
Marsh Posté le 25-06-2004 à 18:18:47
Le chevauchement se calcule comment ? C'est la surface de chaque etiquette qui chevauche une autre etiquette ?
Marsh Posté le 25-06-2004 à 19:33:19
Détecter le chevauchement de surfaces rectengulaires alignées n'est pas tres compliqué ....
Marsh Posté le 25-06-2004 à 22:13:22
xterminhate a écrit : Détecter le chevauchement de surfaces rectengulaires alignées n'est pas tres compliqué .... |
Oui mais il y a plusieurs façon de le faire. Soit au nombre de surface qui se chevauchent soit avec la surface des surface qui se chevauchent donc je voulais savoir ...
Marsh Posté le 25-06-2004 à 23:05:41
Ok, je cromprends! Evaluer le niveau de chevauchement par la surface recouverte donnerait une estimation fine du resultat.
Marsh Posté le 26-06-2004 à 00:17:42
En fait c'est soit il y a chevauchement soit pas, le but étant de minimiser le nombre de chevauchement, il n'y a pas de calcul de surface.
Marsh Posté le 26-06-2004 à 00:18:32
ReplyMarsh Posté le 26-06-2004 à 00:23:56
Manque un "oui mais je ne sais pas où je vais trouver le temps" dans ton sondage
Marsh Posté le 26-06-2004 à 01:02:29
Si ça va pas trop vite je m'essaierais bien.
Une idée pour le format du fichier de données ?
Ah oui et aussi je pense qu'il vaudrait mieux prendre en compte la surface de chevauchement : plusieurs petits chevauchements (genre 5% de la surface du cadre) ça reste plus lisible qu'un gros (genre 50 %)
Marsh Posté le 26-06-2004 à 03:07:03
Le but est quand même de garder une donnée la plus simple possible, on ne comptera que le nombre de chevauchement et nous n'entreront pas dans des calculs de surface (après ca devient le bordel ).
Marsh Posté le 26-06-2004 à 08:49:31
Format de sortie : un bitmap n/b ?
Marsh Posté le 26-06-2004 à 09:49:25
Ca me parait intéressant dans le sens où ce problème NP-complet, donc on peut pas espérer avoir la solution exacte (enfin sauf si le nombre de points est très faible); à partir de là tout l'intérêt réside dans la recherche de la meilleure solution approchée !
PS : ceux qui ne voient pas l'intérêt du problème ne doivent pas connaitre grand chose en algorithmique
Marsh Posté le 26-06-2004 à 10:27:52
Taz a écrit : bmp, t'es fou, pnm ou un truc simple |
Marsh Posté le 26-06-2004 à 10:29:29
Le format de sortie n'est pas obligatoirement du bitmap, tu peux très bien donner la solution sous la forme d'une série de positions (texte).
Je donnerai touts le détail lorsque, éventuellement, je lancerai le concours pour de vrai
Marsh Posté le 26-06-2004 à 12:12:24
Ouais moi je serais plus pour générer un fichier texte contenant la position de chaque cadre par rapport à son point (en haut à gauche, en bas à droite...). Combiné au fichier de données qui contient la position des points et la taille des cadres, ce sera facile de faire un petit prog indépendant pour afficher le résultat.
Marsh Posté le 28-06-2004 à 01:00:33
j'ai réalisé un tel algo dans un projet. il etait question d'une cible, sur laquelle des points étaient placés aléatoirement autour de leur valeur en %
cela dit, il n'est bien sûr pas toujours possible de placer toutes les étiquettes convenablement (trop de points proches)
le langage est C# --> XML/SVG
sujet intéressant en effet
Marsh Posté le 04-07-2004 à 21:53:42
Osama a écrit : Ca me parait intéressant dans le sens où ce problème NP-complet, donc on peut pas espérer avoir la solution exacte (enfin sauf si le nombre de points est très faible); à partir de là tout l'intérêt réside dans la recherche de la meilleure solution approchée ! |
Ca ressemble en effet à un problème d'optimisation à résoudre avec l'algo de Métropolis.
Marsh Posté le 04-07-2004 à 22:28:39
tu pourrais filer la doc de ton TD au moins :
http://pifou.myftp.org/~bordel/TD/cga-PFLP.pdf
Marsh Posté le 03-08-2004 à 14:59:49
Bein ne te gène pas, tu peux la prendre (je pense que t'es quand même capable d'utiliser google pour trouver de la doc par toi même ).
Bon vu le faible intérêt que mon problème à suscité, je ne pense pas lancer ce concours. N'hésiter pas à voter si vous êtes interessé, on ne sais jamais.
Marsh Posté le 03-08-2004 à 15:09:05
Bah, moi ca m'aurait amusé qu'il soit lancé ce concours.
Le premier pb est que ce genre d'algo est traité en long en large et en travers par de nombreux bouquins. J'en ai un d'ailleurs dont le nom est "algorithmes en langage C", qui en parle et évalue différentes solutions (si jme rapelle bien). Donc, on va dire que les voies classiques sont dejà explorées et connues.
Le second pb est le temps ...
Marsh Posté le 03-08-2004 à 15:10:53
je ne comprends pas...
tu as ta carte et tes rectangles, et tu veux les re-répartir?
Marsh Posté le 03-08-2004 à 15:20:03
>moktar1er
tu as des points dont tu connais les coordonnées à étiqueter. les étiquettes sont representées sous la forme de rectangle (pour simplifier).
Le but est de placer chaque étiquette autour de son point de façon judicieuse pour minimiser le nombre de chevauchement global.
L'étiquette peut être placé en haut à gauche ou en haut à droite ou en bas à gauche ou en bas à droite par rapport à son point.
Peut-être que c'est plus facile si tu te représenter les points comme des villes sur une carte routière et les étiquettes comme les noms de ces villes. Le but est de faire un algo qui fait la carte routière la plus lisible.
Marsh Posté le 03-08-2004 à 15:22:07
mouais OK je vois
et le but du concours? faire au plus rapide?
Marsh Posté le 03-08-2004 à 15:25:27
Relit peut-être le premier post, le but premier n'est pas la rapidité mais la qualité de la solution.
Marsh Posté le 03-08-2004 à 15:27:06
je préfère reformuler en posant des questions simple pour comprendre au mieux
j'ai cru comprendre que tu voulais classer les solutions au moindre chevauchement mais... ne vaut-il pas plusieurs petits chevauchements minimes, insignifiants, qu'un seul où 2 boîtes se supperposent?
Marsh Posté le 03-08-2004 à 15:27:24
Bon, vu qu'il y a quand même des motivés, je lancerai ce concours le week-end prochain
Marsh Posté le 03-08-2004 à 18:15:22
ReplyMarsh Posté le 05-08-2004 à 01:28:03
J'ai essayé de le faire avec un algorithme génétique
Ben ça marche plutôt bien
Marsh Posté le 09-08-2004 à 20:01:12
Ummon a écrit : Relit peut-être le premier post, le but premier n'est pas la rapidité mais la qualité de la solution. |
... une petite recherche en depth-first, tu lances ca avec LA plus grosse machine que tu trouves sur la terre, et tu as la solution optimale
Marsh Posté le 09-08-2004 à 20:03:01
oliv5 a écrit : Bah, moi ca m'aurait amusé qu'il soit lancé ce concours. |
+ 10²² ! . Suffit de lire un bon pdf, et tu as l'algo . Aucun merite, aucun interet.
c'est un "stupide" probleme de permutation. Sachant la place que peut prendre chacun des rectangles, le but consiste a trouve la permutation (placement de chaque rectangle) qui minimise le taux de chevauchement. Bref...des probleme de permutation (comme le fameux voyageur de commerce) y'en a a la pele !
Marsh Posté le 09-08-2004 à 20:53:34
ReplyMarsh Posté le 09-08-2004 à 21:10:55
Moi je peux pas, j'ai déjà des tas de trucs à faire
Mais je trouve de problème sympa, donc je vote pour quand même
Marsh Posté le 25-06-2004 à 17:40:35
Bonjour tout le monde,
avant de lancer mon concours j'aimerai juste faire un sondage pour voir si des personnes sont intéressées.
Voila juste une explication grossière.
Le but n'est pas très compliqué, il consiste à placer des étiquettes sur une surface en deux dimensions de taille définie (cf. carte géographique) en minimisant les collisions. chaque étiquettes est décrite comment un rectangle (l, h) attaché à un point (x, y), elle peut être placée à quatre endroits différents par rapport au point : en haut à gauche, en haut à droite, en bas à gauche et en bas à droite.
La solution doit décrire la place de chaque étiquette par rapport à son point. Quelques Fichiers de données seront fournit pour pouvoir élaborer son algorithme, au bout d'un certain temps (par exemple 3 semaines) un fichier de données correspondant au concours sera mis à disposition, vous aurez alors un délai avant de rendre vos solutions (par exemple 5 jours).
Celui qui a la solution ayant le moins de chevauchement gagne ^_^ (on verra pour la prise en compte du temps de calcul et de la mémoire utilisée dans la solution), le langage est libre.
Voici un exemple :
Placement initial (aléatoire):
Placement final (dans ce cas il n'y a plus de collision, mais en général il en reste):
Voila, ce n'est qu'un aperçu grossier, dites-moi ce que vous en pensez.
Message édité par Ummon le 26-06-2004 à 00:17:58