[JAVA]graphe+liste d'adjacence+tri topologique

graphe+liste d'adjacence+tri topologique [JAVA] - Java - Programmation

Marsh Posté le 04-05-2003 à 22:27:03    

en fait j'ai deja l'algo et je dois le traduire en java
probleme: -pcart en java??
          -type sommet=entier et non sommet:entier
merci pour votre aide

Reply

Marsh Posté le 04-05-2003 à 22:27:03   

Reply

Marsh Posté le 04-05-2003 à 22:28:56    

Gné ? :heink:  
Tu peux la refaire en français, steuplé ? Nan passke là j'ai rien compris du tout :lol:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-05-2003 à 22:31:09    

en c++ on peut faire des structures avec le pcart
j'aimerais savoir comment on fait en java
et puis j'ai un type sommet=ENTIER
idem j'aimerais savoir coment traduire ca en java

Reply

Marsh Posté le 04-05-2003 à 22:34:40    

:??:

Reply

Marsh Posté le 04-05-2003 à 22:36:51    

Euh baaa... le pcart, je sais pas c'que c'est donc je peux pas répondre.
Par contre pour les sommets, en C++, tu faisais int sommet; Bin en Java c'est pareil [:xp1700]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-05-2003 à 22:38:38    

ca je sais c'est la le probleme
c'es tu ntype sommet=ENTIER(algo)
et non  comme tu le dis sommet :entier(algo)
PS:pcart(produit cartésien=typedef en c++
 :hello:

Reply

Marsh Posté le 04-05-2003 à 22:43:01    

typedef int Sommet ; // Les sommets sont repérés par leur numéro
j'aimerais une  traduction javaiene
 :hello:

Reply

Marsh Posté le 04-05-2003 à 22:45:02    

Ah ba non, les typedef en Java ça existe pas [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-05-2003 à 22:46:23    

on fait comment alors en java?
nouvelle classe?
ou...

Reply

Marsh Posté le 04-05-2003 à 22:51:29    

Ba on utilise des int [:spamafote]
Si vraiment t'as rien d'autre à faire, tu peux t'amuser à créer une classe qui s'utilise comme un entier, m'enfin y a pas tellement d'intérêt.
Pourquoi t'as besoin de définir le type sommet comme un entier ? C'est juste pour la lisibilité du code ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-05-2003 à 22:51:29   

Reply

Marsh Posté le 04-05-2003 à 22:54:17    

bah disons qu'apparemment faut faire comme ca pour un graphe ave c liste d'adjacence dans le but d'effectuer un tri topologique
je vais reessayé
je repasserai plus tard
si desfois tu as deja fait ca en java fais moi signe(lol)
@+

Reply

Marsh Posté le 05-05-2003 à 00:02:24    

moi j'ai pas compris un traitre mot de Dorf :heink:
 
sauf le C++, evidemment

Reply

Marsh Posté le 05-05-2003 à 00:04:41    

le plus simple serait peut etre que j'inscrive le code à l'ecran et voir ce qui cloche

Reply

Marsh Posté le 05-05-2003 à 00:07:44    

[class graph]
 
public class graph
{
     
 noeud_tete []g;
    int n;
    int MAX_SOMMETS=15;
    int N_sommets=0;
 
 
 
 
 
 
 graph(int N_sommets)
 {n=N_sommets;
  g=new noeud_tete[n];
  for(int i=0; i<n;i++)
  g[i]=null;
   
 }
 
 public void tritop(graph g,int n)
 {Sommet i,j,k,top;
   
   
  Ptr_noeud ptr;
  top=-1;
  for(i=1;i<n;i++)
  {if(g[i].count==0)
     {g[i].count=top;
   top=1;
     }
  }
  for(i=1;i<n;i++)
  {if(top==-1)
   {System.out.println("Pas de tri topologique: Présence de cycle(s) !" );}
   else {j=top;
   top=g[j].count;
   System.out.println(j);
   ptr=g[j].lien;
   while(ptr!=null)
   {k=ptr.vertex;
    g[k].count=g[k].count-1;
    if(g[k].count==0)
    {g[k].count=top;
     top=k;
    }
    ptr=ptr.lien;
     
   }
         }
  }
 }
   
   
   
   
 
 
 
 public static void main (String[] args)
 {int n;
  graph g;
  g=new graph(10);
  //n=N_sommets;
  g.tritop(g,10);
   
   
  }
}
 
[class Sommet]
 
public class Sommet
{int Sommet;
 
 public Sommet()
 {Sommet=0;}
 
 public int acces_Sommet()
 {return Sommet;}
 
 
 
 
}
 
[class noeud]
 
public class noeud
{Sommet vertex;
 float duree;
 Ptr_noeud lien;
 
 public noeud()
 { vertex=null;
   duree=0;
   lien=null;}
 
 
public Sommet acces_vertex()
{return vertex;}
 
public float acces_duree()
{return duree;}
 
public Ptr_noeud acces_lien()
{return lien;}
 
}
 
[class noeud_tete]
 
public class noeud_tete
{int count;
 Ptr_noeud lien;
 
 public noeud_tete()
 {count=0;
  lien=null;
 }
 
 
 public Ptr_noeud acces_lien()
{return lien;}
 
 
 public int acces_count()
 {return count;}
 
[class Ptr_noeud]
 
public class Ptr_noeud
{Sommet vertex;
 Ptr_noeud lien;
 
 public Ptr_noeud()
 { vertex=null;
   lien=null;}
 
 
public Sommet acces_vertex()
{return vertex;}
 
 
public Ptr_noeud acces_lien()
{return lien;}

Reply

Marsh Posté le 05-05-2003 à 00:09:11    

et alors?

Reply

Marsh Posté le 05-05-2003 à 00:12:08    

ca marche pas et je comprends pas
enfin si tu connais un site qui a un prog en java sur le tri topologique  dans un graphe à liste d'adjacence je suis preneur
 :hello:

Reply

Marsh Posté le 05-05-2003 à 00:13:10    

ben tu prends googgle et tu fais une recherche d'algo


Message édité par Taz le 05-05-2003 à 00:13:17
Reply

Marsh Posté le 05-05-2003 à 00:16:41    

j'ai l'algo!!!
tout le probleme est la
d'ou mes questions de structure,pcart....

Reply

Marsh Posté le 05-05-2003 à 00:17:47    

Le choix de représentation par les listes d'adjacence est imposé ici.
CONSTANTE:    MAX_SOMMETS = 15
DEFINITION DE TYPE:  Sommet = ENTIER
VARIABLES (GLOBALES)
 Ptr_noeud: REFERENCE/POINTEUR sur noeud
 noeud: P_CART( vertex: Sommet,
   Durée: REEL, // optionnel si réseaux avec sommets
      // à activités  
   lien: Ptr_noeud)
 noeud_tête: P_CART(  count: ENTIER,  
        // count = demi-degré intérieur du sommet courant
    lien: Ptr_noeud)
 graph: TABLEAU[1 ... MAX_SOMMETS] de noeud_tête
 N_sommets: ENTIER  
  // Nombre de sommets effectifs pour un graphe G donné
  // N_sommets <= MAX_SOMMETS
Algorithme:
----------
PROCEDURE créer_graph639()
DEBUT
 /*  A COMPLETER  cf. Fig. 6.39 de Horowitz et al. comme exemple */
 N_sommets <-- 6
FIN
PROCEDURE tritop(DR G: TABLEAU[1...MAX_SOMMETS] de noeud_tête, D N: ENTIER)
// on développe l'algorithme général du cours avec N = N_sommets à l'appel
DEBUT
 i, j, k, top: Sommets
 ptr: Ptr_noeud
 top <-- (-1) //crée une pile de sommets sans prédécesseurs
 POUR i DE 1 A N  FAIRE
  SI (G.count = 0)  ALORS
   G[i].count <-- top
   top <-- i; FSI
 FPOUR
 POUR i DE 1 A N  FAIRE
  SI (top = -1)  ALORS
   ECRIRE('Pas de tri topologique: Présence de cycle(s) !';)
  SINON
   j <-- top // dépile un sommet
   top <-- G[top].count
   ECRIRE('S',j,';  ';)
   ptr <-- G[j].lien
   TANT QUE (ptr <> NIL) FAIRE
    // décrémente le nb. de sommets successeurs de Sj
    k <-- (ptr->vertex)
    G[k].count <-- G[k].count-1  
    SI (G[k].count =  0) ALORS
     // ajoute Sk à la pile
     G[k].count <-- top
     top <-- k
    FSI
    ptr <-- (ptr -> lien)
   FTQUE
  FSI
 FPOUR
FIN  // de la procédure 'tritop'
 
// Un module appelant possible:
DEBUT
 n: ENTIER
 G: graph
 créer_graph639()
 n <-- N_sommets
 tritop(G, n)
FIN
 

Reply

Marsh Posté le 05-05-2003 à 00:19:44    

tu te rends compete que et toncode et ton algo sont illisibles ? (tu pourrais déjà améliorer les choes en utilisant les balises code et fixed et en indentant)
apres si tu dis pas ou se situe ton problème... ça compile? ça plante, ça quoi?

Reply

Marsh Posté le 05-05-2003 à 00:25:03    

désolé c'est une version beta(lol)
l'algo vient du prof
ca compile pas
cannot convert "int" to Sommet
[]cannot be applied to a value of type'graph'

Reply

Marsh Posté le 05-05-2003 à 00:27:46    

Dorf54 a écrit :

désolé c'est une version beta(lol)
l'algo vient du prof
ca compile pas
cannot convert "int" to Sommet
[]cannot be applied to a value of type'graph'

en Java y a pas d'appel implicite d'un cosntructeur
donc il faut faire de l'explciit
 
truc=new Sommet(i)
 
et ta fonction tritop, j'ay comprends rien, elle à l'air d'etre membre, mais elle a un graphe en paramètre qui porte le meme nom qu'un membre... ça me parait pas tres serieux*µ. tu ferais bien de réfléchir tranquillement à tout ça
 
edit: bref va te coucher, on verra ça plus tard


Message édité par Taz le 05-05-2003 à 00:29:21
Reply

Marsh Posté le 05-05-2003 à 00:30:40    

tu as raison
merci pour ton aide
bonne nuit
 :hello:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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