Equivalence d'arbres [JAVA] - Java - Programmation
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"?
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.
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
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.
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).
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:
Et tu l'appelles en lui passant le noeud racine des deux arbres à comparer.