[Java][projet] Graphes planaires...

Graphes planaires... [Java][projet] - Java - Programmation

Marsh Posté le 11-05-2002 à 11:22:30    

Hello :)
 
On est sur un projet en java consistant a déterminer si un graphe est planaire... le but étant d'optimiser le programme a fond pour avoir le truc le + efficace possible.
 
Un graphe, c'est betement des sommets (des points quoi) reliés entre eux par des segments, et le but est de déterminer si on peux dessiner legraphe sans qu'aucun des segments se croise.
 
On pensait utiliser principalement la recherche de K5 et K3,3 pour démonrer qu'il l'est  qu'il ne l'est pas .
 
Pour modéliser nos graphes, contrairement aux autres qui ont tous fait des struct de fous avec des pointeurs, nous on utilise juste... des matrices.
 
Si il y a 5 sommet on utilise une matrice 5x5 et si il y a un 1 dans la case (2,4) ca signifie que les sommets 2 et 4 sont reliés... ca nous semble bcp  pratique pur la suite.
 
Pourriez vous nous aider :
 
-A trouver des algorithmes efficaces pour savoir si un graphe est connexe, biparti ?
 
-Nous filer quelques idées d'optimisation sympa pour éviter de dérouler des algos trop gros ;) Style teste d'abord si il est machin car si il est il est pas planaire, etc
 
Ca nous aiderai grandement :)
 
Et aussi une petite question : on a fait une classe java implémentant des graphes de base, et on est obligé d'en faire une pour bosser sur des graphes biparti... en partant de la première.
 
Et la ou je me paume tjs, c'est dans l'utilisation d'extends ou d'implement...
 
Faudrait faire comment ? Sachant qu'un graphe biparti n'est finalement qu'un cas particulier du premier ;)
 
Merci d'avance !


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 11-05-2002 à 11:22:30   

Reply

Marsh Posté le 11-05-2002 à 11:33:51    

ID d'optimisation : Changer de langage  :D  
Ok je sors... de toute façon moi et le java....
 :hello:

Reply

Marsh Posté le 11-05-2002 à 12:05:12    

Dans ce genre de problèmes, le choix de la structure de données est cruciale et aura des conséquences sur l'ensemble de la réalisation du problème.
 
En ce qui concerne les optimisations, c'est assez indépendant de Java et tu devrais jeter un oeil sur les fonctions mathématiques qui te permet de jouer avec des graphes et en faire une algorithme précise. Basé sur ces optimisations il y a des petits trucs qui te permettront en Java d'améliorer les choses mais ce ne sera pas transcendant.
 
Pour implements et extends c'est très simple. Lorsque tu utilises implementens cela veut dire que tu implémente une interface (une façette publique pour une fonctionnalité donnée). Extends lui est utilisé lorsque tu veut SPECIALISER le comportement d'un objet (d'une classe).
 
Par exemple Carre extends Rectangle parce qu'un carré est un rectangle particulier.
 
Est ce plus clair?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-05-2002 à 12:06:03    

et pour la réflexion de poire t'es bien peu au courant pour dire encore que Java est lent ;)
 
La boite dans laquelle je travaille a un système en production full Java.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 11-05-2002 à 12:10:03    

Un petit article sur un des algos:
http://130.179.24.217/G&G/articles/Planarity.pdf

Reply

Marsh Posté le 11-05-2002 à 12:42:27    

Verdoux : d'enfer le lien :love: je vais potasser ca ;)
 
Darklord : tres clair, donc nous on doit faire un extends, c bien ce qui me semblait (et merci pour les explications).
 
notre structure est évidemment pas mal facile a utiliser car pour enlever un sommet et tous ses arcs suffit de virer une ligne & une colonne a ntore matrice... ou dire au programme de l'ignorer ;)
 
Pour ne ps avoir de recopie de l'objet ;)
 
Merci tous, si d'autres ont des super liens comme celui de verdoux, je suis vraiment preneur :love:


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 11-05-2002 à 13:47:37    

DarkLord a écrit a écrit :

et pour la réflexion de poire t'es bien peu au courant pour dire encore que Java est lent ;)
 
La boite dans laquelle je travaille a un système en production full Java.  




Prouve le  :D  
Suite de discution en PV si suite


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 11-05-2002 à 13:49:44    

Tetedeiench a écrit a écrit :

Hello :)
Pour modéliser nos graphes, contrairement aux autres qui ont tous fait des struct de fous avec des pointeurs, nous on utilise juste... des matrices.




:??: ca me parait super simple ...
 
public class Sommet {
   private Set liaison;
 
   ...
 
   public lier(Sommet s) {
      liaison.add(s);
   }
   ...
}
 
ca c'est pour un sommet d'un graphe tout bête avec liaisons unidirectionnelles. C'est à peine plus complqieuer d'en faire un bi-directionnel.
 
Ca me parait plus simple à manipuler que ta matrice, nan ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 11-05-2002 à 18:02:29    

benou >>> absolument. Ca c'est une véritable architecture objet

Reply

Marsh Posté le 11-05-2002 à 18:02:58    

[SDF]Poire a écrit a écrit :

 
Prouve le  :D  
Suite de discution en PV si suite  




 
si tu veux. Que veux tu savoir exactement?

Reply

Marsh Posté le 11-05-2002 à 18:02:58   

Reply

Marsh Posté le 11-05-2002 à 19:15:43    

DarkLord a écrit a écrit :

 
 
si tu veux. Que veux tu savoir exactement?  




En private le topic a rien à voir avec ça


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 11-05-2002 à 19:46:48    

benou a écrit a écrit :

 
:??: ca me parait super simple ...
 
public class Sommet {
   private Set liaison;
 
   ...
 
   public lier(Sommet s) {
      liaison.add(s);
   }
   ...
}
 
ca c'est pour un sommet d'un graphe tout bête avec liaisons unidirectionnelles. C'est à peine plus complqieuer d'en faire un bi-directionnel.
 
Ca me parait plus simple à manipuler que ta matrice, nan ?  




 
C'est vachement moins pratique...
 
Tu supprimes un sommet, tu va niquer ta struct, et tu va devoir te balader dans toutes tes autres structs pour enlever les occurences des arcs allant sur l'objet que tu as créé... ou admettre les "trous", enfin chainons ne voulant rien dire, dans ta liste chainée.
 
Nous, on prends la matrice, on lui enleve une ligne et une colonne, et fini.
 
Pareil, si tu veux savoir tous ceux qui sont reliés a ton sommet, tu va devoir te balader dans ta liste chainée... nous on renvoie betement une ligne de notre matrice ;)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 11-05-2002 à 19:49:01    

Le but du projet n'est pas trop de faire de la prog objet (deja faite en TP, maitrisée, c bon on a compris...)
 
c'est plus de la complexité ce projet... d'ou les techniques les + simples possibles ;)
 
La struct est magnifique je suis d'accord et ca a été mon premier reflexe car ct + "joli". mais la matrice, bien que bcp + formelle, est aussi bcp + efficace...
 
Et comparer l'égalité de deux graphes, avec la struct, c sympa a programmer... je m'y risquerai moyen.
 
Avec ma solution, c'est permuter des lignes/colonnes et trouver une matrice identique... quitte a faire toutes les permutations possibles.
 
Et ca, c'est deja + sympa a programmer :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 12-05-2002 à 12:58:56    

Tetedeiench a écrit a écrit :

 
Tu supprimes un sommet, tu va niquer ta struct, et tu va devoir te balader dans toutes tes autres structs pour enlever les occurences des arcs allant sur l'objet que tu as créé... ou admettre les "trous", enfin chainons ne voulant rien dire, dans ta liste chainée.
Pareil, si tu veux savoir tous ceux qui sont reliés a ton sommet, tu va devoir te balader dans ta liste chainée... nous on renvoie betement une ligne de notre matrice ;)  




bha nan ... si tu veux supprimer un sommet, tu as juste à délier tous les sommets auxquels sont liés ce sommet. Hors, ton graphe a des liaisons bi-directionnels, donc tu as juste à demander à chaque sommet qu'il y a dans la liste de liason de supprimer la liaison vers le sommet à supprimer.  
 
ensuite, si tu veux savoir quels sont les sommets liés à un sommet, tu as juste à retourner ton Set ...
 
franchement, je crois que tu t'embête pour rien.
 
En plus, pour parler de liste chainées, tu dois être un ex-programmeur C. Ca explique un peu ton raisonnement : en C on se fait vachement chier avec la représentation mémoire des types. En Java, c'est bcp plus simple :  
 
Un sommet c'est quoi ? => un "truc" qui est relié à un ensemble d'autres  "trucs"
En Java, un sommet c'est quoi ? => un objet référençant un ensemble d'objet du même type.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 12-05-2002 à 13:00:06    

benou >>>  :jap:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 12-05-2002 à 13:08:51    

Tetedeiench a écrit a écrit :

La struct est magnifique je suis d'accord et ca a été mon premier reflexe car ct + "joli". mais la matrice, bien que bcp + formelle, est aussi bcp + efficace...
 
Et comparer l'égalité de deux graphes, avec la struct, c sympa a programmer... je m'y risquerai moyen.




arrête de parler de struct : t'es pas en C ! :o ;)
 
comparer l'égalité avec la classe que je t'ai proposé, c'est pas bien compliqué ...
 
Sinon, tu as pensé à l'occupation mémoire de ta matrice ? Si tu commence à gérer des graphe de plusieurs milliers de sommets, ta matrice va être plutot gourmande en mémoire ...

 

[jfdsdjhfuetppo]--Message édité par benou le 12-05-2002 à 13:12:13--[/jfdsdjhfuetppo]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 12-05-2002 à 13:19:43    

Tetedeiench a écrit a écrit :

Et comparer l'égalité de deux graphes, avec la struct, c sympa a programmer... je m'y risquerai moyen.




Et si on fait une permutation circulaire du nommage des sommets, la matrice va être différente alors que le graphe est identique, non ?

 

[jfdsdjhfuetppo]--Message édité par Verdoux le 12-05-2002 à 15:59:11--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 12-05-2002 à 15:55:57    

benou a écrit a écrit :

comparer l'égalité avec la classe que je t'ai proposé, c'est pas bien compliqué ...




après réflexion, c'est pas si simple que ca ... mais avec ta matrice, je ne pense pas que ca le soit plus ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

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