tracé de routes...

tracé de routes... - Algo - Programmation

Marsh Posté le 15-12-2004 à 11:39:39    

Bonjour,
mon probleme n'est pas directement lié a Java, mais c'est un probleme d'algo
 
je dispose dune liste de points (noeuds) (x,y) avec lequels je dois tracer des routes dans un espace graphique 2d.
 
mon probleme est que : le placement des points doit etre fait par le programme afin de simplifier au maximum le tracé des routes (minimum de route qui se croisent, pas de route en diagonal!). bref, faire un peu comme les logiciel qui tracent les routes de circuit electronique.
 
est ce que quelqu'un a des information ou un debut de piste pour realiser une telle chose ??
car j'avoue ne pas trop savoir comment m'y prendre  
 
 
ps : chaque noeud a un nombre differents de conexions (minimum 1 maximum X)

Reply

Marsh Posté le 15-12-2004 à 11:39:39   

Reply

Marsh Posté le 15-12-2004 à 14:48:51    

c'est super chaud ... y a des gars qui font des théses sur ce sujets.
 
En tout cas , regarde du côté de la Recherche Opérationnelle et de la théorie des graphes.

Reply

Marsh Posté le 15-12-2004 à 16:59:33    

regarde du coté de Bellman ou Dijkstra!

Reply

Marsh Posté le 15-12-2004 à 17:10:47    

oulaa, je crois que je veux m'attaquer a plus fort que moi :s
 
jai regardé du coté des recherche operationnelles, j'y ai pas trouvé grand chose d'interressant se rapportant a mon probleme.
 
 
l'algorithme de Dijkstra est utilisé pour trouver la route la plus courte entre deux noeuds quand il existe plusieurs chemins, il est notement utilisé dans les routeurs qui supportent les protocoles de routage a état des liaisons (ospf). quant a l'algo de Bellman, il permet au contraire d'etablire la route la plus longue!
 
moi ce que je souhaite faire, c'est dessiner 'graphiquement' ma route, nayant comme element de depart uniquement les differentes routes et noeuds, et cherchant a obtenir un placement (plus ou moins) optimisé de mes noeuds sur un repere!
 
je sens que je vais pas dormir beaucoup durant mes prochaines nuits :(

Reply

Marsh Posté le 15-12-2004 à 17:37:42    

Bellman permet de trouver le plus cour chemin également, très utilisé ds les calculateur d'itinéraire!
sinon c'est un peu la meme chose mais à l'envers ;)
mais etudie bien la theorie des graphes (listes de successeur, predecessuer, connexité etc..)!
c'est à mon avis ce qu'il te faut!

Reply

Marsh Posté le 15-12-2004 à 19:03:31    

En partant de Bellman tu devrais arriver a quelque chose.
La partie chaude c'est la contrainte de non-croisement

Reply

Marsh Posté le 15-12-2004 à 22:06:41    

A mon avis tu devrais regarder du coté de l'optimisation combinatoire ... (tu veux minimiser qq chose... ) et à mon avis c'est du NP-complet.
 
Essaye de "formaliser" le probleme avant de penser à creer un algo, ceci dans le but de converger vers une strategie "ad-hoc" ;)
 
Voila une formalisation éventuelle:
 

Code :
  1. Entrée : { G = (V, E) , w(e) }  /* Un graphe dont les sommets (ens V) representent des villes (ou ce que tu veux en fait) et E l'ens des arretes qui representent des routes par exemple qui se croisent dans un bordel pas possible ... ET  w(e) une ponderation des arretes cad une fonction qui prend une arrete et renvoi un entier (la longueur en km par exemple) */
  2. Solution : { E' inclus dans E / Tel que pour tout couple d'arretes (Ei Ej) € de E' leurs intersection soit nulle && (ET) qu'il n'existe pas de couple (Xi Xj) € V  tel que l'arrete entre ses sommets soit Ei ET Ej (dans le cas contraire il y a deux routes directes possibles entre ces deux sommets et c'est pas bon car t'en veux le moins possible) ... enfin bon là il faut se prendre un peu le choux quoi :D }
  3. Fonction de mesure : |E'| /* nombre d'elements de E'
  4. opt : MIN /* tu veux le minimiser ! */


 
A partir de là  tu vas sur : http://www.nada.kth.se/~viggo/wwwc [...] de276.html
 
Et tu cherche comme un malade en te munissant d'un dico d'anglais et de beaucoup de patience (sur ce site il y a a peu pres tous les algos "modeles" "formalisés"  qui peuvent etre imaginés par un esprit humain :D )
 
Sinon on pourrait faire encore plus d'abstraction en considerant un graphe (en entrée) ou E est l'ensemble des arretes tel qu'il existe une arrete entre
deux sommets si et seulement si il n'y a pas de route diagonale ... regarde aussi la methode pour dire si un graphe est planaire ou pas.
 
UNDERSTAND => ABSTRACT => FORMALIZE => APPROXIMATE => WIN :hello:


Message édité par Chronoklazm le 16-12-2004 à 10:47:38
Reply

Marsh Posté le 23-12-2004 à 02:18:27    

Pour eviter les chemins qui se croisent :
1) Relient tes points à la même manière que resoudre le PVC
2) Une fois tes points tous réliés, applique l'heuristie 2-Opt ou 3-Opt et tes croisements disparaitront. Sur ce site, ils en parlent, sinon regarde sur google avec '2-Opt heuristic'

Reply

Marsh Posté le 23-12-2004 à 03:20:01    

Bon en cherchant sur google (sans vouloir, en faite c t pour autre chose le but de ma recherche :D) j'ai pensé a toi et j'ai trouvé CE link de la mort :
 
http://www.fsa.ulaval.ca/personnel [...] 0Essai.pdf
 
 
...honnêtement, tu prends a partir de la page 50 et tu peux difficilement trouver mieux comme information ;)

Reply

Marsh Posté le 23-12-2004 à 08:39:54    

Ya plus qu'à recroiser toutes ces infos ;-)
Juste une précision :
la recherche des plus courts chemins, c l'algorithme
de Bellman ET Kalaba, Richard et Robert quoi !
 

Reply

Marsh Posté le 23-12-2004 à 08:39:54   

Reply

Marsh Posté le 23-12-2004 à 09:35:14    

tu peux aussi voir du cote des algorithmes genetiques.
en plus c tres marrant comme truc... enfin je trouve.
 

Reply

Marsh Posté le 23-12-2004 à 11:43:06    

Et la théorie des graphe ça ne peut pas t'aider ?

Reply

Marsh Posté le 25-12-2004 à 16:52:04    

rainbow_efreet a écrit :

Et la théorie des graphe ça ne peut pas t'aider ?


Une réponse aussi vague, c'est sûr que ça ne peut pas l'aider  :heink:

Reply

Marsh Posté le 25-12-2004 à 16:57:07    

Giz a écrit :

Bon en cherchant sur google (sans vouloir, en faite c t pour autre chose le but de ma recherche :D) j'ai pensé a toi et j'ai trouvé CE link de la mort :
 
http://www.fsa.ulaval.ca/personnel [...] 0Essai.pdf
 
 
...honnêtement, tu prends a partir de la page 50 et tu peux difficilement trouver mieux comme information ;)


Giz : one point  :sol:

Reply

Marsh Posté le 25-12-2004 à 21:01:10    


 
T1 ! c'est pas de bol ça, le lien viens juste de tomber en rad.
J'ai le fichier sur mon dur si ca interesse kk1 :D
 
EDIT : le lien google du pdf (si le link se remet a marcher)
http://www.google.fr/search?source [...] ssai%2Epdf
 
=> et la version HTML marche :)


Message édité par Giz le 25-12-2004 à 21:02:58
Reply

Marsh Posté le 06-04-2005 à 01:39:51    

je sens qu'on oublie ce topic super important
et j'affirme (ou je confirme ^^^) qu'il y a une solution de 10-15* lignes en C++ qui donne des graphes planaires à coups sûrs et dans un temps plus qu'honorable.

Reply

Marsh Posté le 06-04-2005 à 12:55:40    

Ca pourrait m'intéresser pour un soft qui doit tracer les connexions réseaux entre des machines situées dans une salle...

Reply

Marsh Posté le 06-04-2005 à 18:21:00    

oui, jai laissé tombé :(
mais je suis quand meme interressé par tes 10/15lignes de code :)

Reply

Marsh Posté le 06-04-2005 à 18:32:54    

fra0 a écrit :

je sens qu'on oublie ce topic super important
et j'affirme (ou je confirme ^^^) qu'il y a une solution de 10-15* lignes en C++ qui donne des graphes planaires à coups sûrs et dans un temps plus qu'honorable.


Je demande à voir, parce que les layouts de graphe, y en a des tas, et à part quelques uns qui sont payant très cher qui donnent des résultats intéressants, je n'ai rien vu qui soit vraiment convaincant.

Reply

Marsh Posté le 06-04-2005 à 23:23:59    

pas le choix du language!
l'enoncé est :  
on possede un schema electronique et on souhaite realiser l'implementation sur un circuit imprimé monoface!
- pas le droit de croiser les connexions!
- utiliser le minimum d'espace possible!
- uniquement des liaisons verticale et horizontale!
- placement des composants libre (et optimisé)!


Message édité par azubal le 06-04-2005 à 23:24:28
Reply

Marsh Posté le 07-04-2005 à 00:10:39    

ouais enfin, le choix du langage... tu peux toujours passer par jini. :whistle:
 
Par contre, le problème de représentation de graphe est bien np-complet et ne peut se résoudre qu'avec des euristiques. Du coup, je me pose des questions sur ton énoncé: soit il y a des contraintes supplémentaires sur les graphes que tu ne nous a pas dit, soit ce sera purement et simplement impossible pour la plupart des graphes.


Message édité par gizmo le 07-04-2005 à 00:18:03
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed