La feuille est-elle l'arbre ?
L'arbre est-il la forêt ?
Osons la question folle : la bite est-elle le phallus ?
Oui tant que la fécondité était la figure symbolique représentée mais plus du tout quand c'est la virilité. Cette Transposition destinée à faire fonctionner le phallus comme l'emblème d'une fausse coexistence pacifique entre mâle et femelle, qui symbolise l'utopie de parvenir à ne faire plus qu'UN dans le "rapport sexuel"
Faudrait peut-être réapprendre à se servir
de sa tête avant qu'elle ne soit coupée !
Démonstration mathématique
1 - Arbre et forêt
Voici deux classes définissant les arbres n-aires
class Tree { // Arbres n-aires int node ; Forest children ; Tree (int node, Forest children) { this.node = node ; this.children = children ; } } class Forest { // Une liste de Tree Tree first ; Forest next ; Forest (Tree first, Forest next) { this.first = first ; this.next = next ; } }
Une forêt est donc une liste ordonnée d'arbres. Dans un arbre, l'ordre gauche-droit des sous-arbres compte, il compte aussi dans une forêt. Enfin la racine de chaque arbre est identifiée par un entier, dans le champ node.
La définition des arbres est inductive, on pourrait aussi l'écrire ainsi :
T ::= (n,F) n un entier
F ::= є forêt vide
∣ (T, F)
(En supposant en outre que tous les entiers n sont distincts.)
1. Y-a-t-il des arbres, des forêts, vides ? Quelles sont les conséquences pour la programmation en Java ? Et sur l’avenir du Maroc ?
2. Définir inductivement l'ordre postfixe des sommets d'une forêt, qui place les descendants avant les ancêtres et les sommets des arbres d'une forêt de gauche à droite. On cherchera à définir inductivement une suite ordonnée de sommets, à partir des définitions des arbres et des forêts.
3. Écrire deux méthodes postOrder, une pour les forêts l'autre pour les arbres, qui renvoient une liste des sommets dans l'ordre postfixe (à l'aide de notre amie la classe des listes enrichie comme bon nous semble).
Solution
2 Forêt profonde
Tree dfsTree(int node, boolean [] vu) { return new Tree(node, dfsForest(succ[node], vu)) ; } Forest dfsForest(List nodes, boolean [] vu) { if (nodes == null) return null ; int node = nodes.val ; if (!vu[node]) { vu[node] = true ; Tree t = dfsTree(node, vu) ; Forest f = dfsForest(nodes.next, vu) ; return new Forest (t, f) ; } else return dfsForest(nodes.next, vu) ; } Forest dfs(List nodes) { boolean [] vu = new boolean [succ.length] ; return dfsForest(nodes, vu) ; } Forest dff() { List allNodes = null ; for (int i = succ.length-1 ; i >= 0 ; i--) allNodes = new List (i, allNodes) ; return dfs(allNodes) ; }
CQFD