[JAVA] Equivalence d'arbres

Equivalence d'arbres [JAVA] - Java - Programmation

Marsh Posté le 04-11-2009 à 18:33:54    

Quand tu dis équivalence, tu veux dire égalité totale, les 2 arbres ayant une structure et des données identiques?
 
Si oui cela doit être un algorithme récursif dans ce style:
 

Code :
  1. boolean estEgal(Noeud noeud1, Noeud noeud2) {
  2.   if(noeud1 == null) {
  3.      return (noeud2 == null);
  4.   }
  5.   if(noeud2 == null) {
  6.      return false;
  7.   }
  8.   return (noeud1.valeur == noeud2.valeur) && estEgal(noeud1.filsGauche, noeud2.filsGauche) && estEgal(noeud1.filsDroit, noeud2.filsDroit);
  9. }


 
Et tu l'appelles en lui passant le noeud racine des deux arbres à comparer.

Reply

Marsh Posté le 04-11-2009 à 18:33:54   

Reply

Marsh Posté le 04-11-2009 à 23:01:22    

OK mais ça ne répond pas à mes questions:
 
1) Comment ton arbre binaire représente-il ces formules? Que contiennent les feuilles?
2) Quelle est la définition de "équivalent"?

Reply

Marsh Posté le 05-11-2009 à 07:26:44    

Bizarre comme technique. Donc les noeuds contiennent des opérations et les feuilles contiennent des constantes. Déjà, ça autorise plusieurs représentations de la même formule. En fait cette représentation sous forme d'arbre binaire est plus adaptée aux NPI (notations polonaises inverses).
 
Pour moi deux arbres binaires équivalents ce sont deux arbres qui contiennent exactement les mêmes éléments, mais ça ne répond pas à ton énoncé (renvoyer true pour les représentation de E1 et E2)... tu devrais demander plus d'informations.

Reply

Marsh Posté le 05-11-2009 à 15:22:35    

cbeyls a écrit :

Bizarre comme technique. Donc les noeuds contiennent des opérations et les feuilles contiennent des constantes. Déjà, ça autorise plusieurs représentations de la même formule.


Ce n'est pas bizarre, j'ai appris la même représentation.

cbeyls a écrit :

En fait cette représentation sous forme d'arbre binaire est plus adaptée aux NPI (notations polonaises inverses).


C'est le parcours de l'arbre (préfixe, infixe, postfixe) qui engendrera la notation.
 
Concernant l'équivalence (égalité ?) tu trouveras peut-être des informations ici :
http://web2.uqat.ca/lerene/Webcour [...] 0-3405.pdf


Message édité par charly007 le 05-11-2009 à 15:34:14
Reply

Marsh Posté le 05-11-2009 à 21:20:09    

D'accord mais comme c'est un arbre binaire, la représentation d'un arbre bien précis en parcours inordre gauche ne peut pas être, par exemple:
 
A+B+C
 
Mais devrait être:
 
A+(B+C)
 
ou  
 
(A+B)+C.
 
Or dans son énoncé il a des expressions qui contiennent des additions de plus de 2 termes ou des multiplications de plus de 2 facteurs, sans parenthèses, ce qui fait qu'on peut représenter ces expressions par différents arbres binaires.
 
Dans ton document PDF ils parlent d'égalité de 2 arbres et la décrivent de la même façon que moi, donc si c'est bien ça la définition d'équivalence, l'algorithme que j'ai écrit est correct. Il faut évidemment l'adapter pour que la méthode puisse être appelée sur un noeud, avec le deuxième noeud passé en paramètre.

Reply

Marsh Posté le 06-11-2009 à 16:57:51    

Je n'ai jamais entendu parler d'un tel algorithme, il faudrait commencer à factoriser les membres de l'arbre, ça doit être super compliqué (à supposer que ça soit possible bien sûr).

Reply

Sujets relatifs:

Leave a Replay

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