Quelle indexation pour un arbre n-aire sans ordre ?

WRInaute accro
Bonjour

J'ai adapté un code d'arbre binaire en n-aire, pour représenter une page html.

C'est donc un arbre non ordonné.

Un noeud est de la forme :

PHP:
class $Node {
      public $data;
        public $children;
        public function __construct($data)
        {
                $this->data=$data;
                $this->children=array();
        }
        public function disp_data()
        {
                echo $this->data;
        }
}//end class Node

Les children sont les fils directs d'un même niveau de l'arbre.

Evidemment, on peut y accéder par leurs index : $chidren[$i] etc...

J'ai fait ceci : Parcours en preorder et en levelorder.

Recherche en preorder et levelorder.

Insertion( levelorder ).

La comparaison des noeuds se fait par égalité d objet.

Pour ce qui est de l'interface de l'insertion, j'insère à un emplacement précis ( parent et index ).

Celà vous semble-t-il suffisant, ou faut-il indiquer l'endroit où insérer d'une autre manière ?

Merci beaucoup de votre aide,

Voici un exemple d'arbre fait avec mon interface :


Code:
*****************************************
nTree Object
(
    [root] => Node Object
        (
            [data] => Ancêtre
            [children] => Array
                (
                    [0] => Node Object
                        (
                            [data] => Fils_1
                            [children] => Array
                                (
                                    [0] => Node Object
                                        (
                                            [data] => PetitFils_1_1
                                            [children] => Array
                                                (
                                                )
                                        )
                                    [1] => Node Object
                                        (
                                            [data] => Petit Fils_1_2
                                            [children] => Array
                                                (
                                                )
                                        )
                                )
                        )
                    [1] => Node Object
                        (
                            [data] => Fils_2
                            [children] => Array
                                (
                                    [0] => Node Object
                                        (
                                            [data] => Petit Fils_2_1
                                            [children] => Array
                                                (
                                                )
                                        )
                                    [1] => Node Object
                                        (
                                            [data] => Petit Fils_2_2
                                            [children] => Array
                                                (
                                                )
                                        )
                                    [2] => Node Object
                                        (
                                            [data] => Petit Fils_2_3
                                            [children] => Array
                                                (
                                                )
                                        )
                                )
                        )
                    [2] => Node Object
                        (
                            [data] => Fils_3
                            [children] => Array
                                (
                                )
                        )
                    [3] => Node Object
                        (
                            [data] => Fils_4
                            [children] => Array
                                (
                                )
                        )
                )
        )
)
*******************************************
***            PARCOURS EN LEVEL ORDER        ***
*******************************************
    Ancêtre    Fils_1    Fils_2    Fils_3    Fils_4    PetitFils_1_1    Petit Fils_1_2    Petit Fils_2_1    Petit Fils_2_2    Petit Fils_2_3
*******************************************
***            PARCOURS EN PRE ORDER        ***
*******************************************
    Ancêtre    Fils_1    PetitFils_1_1    Petit Fils_1_2    Fils_2    Petit Fils_2_1    Petit Fils_2_2    Petit Fils_2_3    Fils_3    Fils_4
*******************************************
 
WRInaute accro
Rebonjour

L'autre option pour des insert ( au lieu de parent et indice de children ), serait l'objet à remplacer, ainsi qu'un booléen pour "même niveau que objet"/"fils de objet".

L'option ( parent/children ) nécessite par le processus qui insère, le rang d'index du child à remplacer/insérer.

Mais cette option est un peu plus rapide que la dernière.

Ce modèle d'arbre en-aire est destiné à représenter un DOMDocument ( en PHP ).

Je souhaite parcourir un DOMDocument en levelorder, et je ne sais pas faire autrement que de passer par un arbre n-aire.

Je peux fournir mon code d'arbre n-aire.

Merci beaucoup de votre aide.
 
WRInaute accro
Bonjour

J''ai besoin de parcourir un arbre n-aire en inorder.

C'est -à-dire : ( pour un arbre binaire ) : sous-arbre-gauche, sous-arbre-droit, racine-sous-arbre.

Mais qu'est-ce que celà donnerait pour un arbre n-aire ?

Peut-être : tous-fils-d'un-noeud , noeud ?

Quel est l'algorithme récursif ?

Ci-dessous est-il correct ?

Merci.

PHP:
<?php
class Node
{
        public $data;
        public $parent;
        public $children;
        public function __construct($data)
        {
                $this->data=$data;
                $this->parent = null;
                $this->children=array();
        }
        public function disp_data()
        {
                echo $this->data;
        }
}//end class Node
class nTree
{
        public $root;
        //public $s;
        public function __construct()
        {
                $this->root=null;
                //$this->s=file_get_contents('store');
        }
        /*************************************/
        /**    FONCTION VISIT DISPLAY OBJECT    **/
        /*************************************/
        public function visit($current) {
                echo "\t" . $current->data;
        }
        /****************/
        /**    INORDER    **/
        /****************/
        public function inorder($local_root)
        {
                if($local_root===null) 
                        return false;
                $tmp_count = count($local_root->children);
                for($i = 1; $i < $tmp_count - 1; $i++) {
                                $this->inorder($local_root->children[$i - 1]);
                        $this->visit($local_root->children[$i]);
                                $this->inorder($local_root->children[$i + 1]);
                }
        } 
}
?>
 
WRInaute discret
bonjour,

N'est il pas plus urgent de modifier d'abord la partie SEO que la technique ? Cela ne reste que mon opinion biensur.

Problème SEO :
URL mal formatée pour le SEO
Qu'est-ce que c'est et comment le corriger ?


CE PROBLÈME EST SUR 137 PAGES

par exemple : https://www.pronostics-courses.fr/php/courses_nouvelles/pronostics_new_courses,14.html
https://www.pronostics-courses.fr/php/courses_anciennes/pronostics_new_old_courses,2110090402.html

Le mélange français / anglais n'est pas très agréable et je pense n'apporte rien en terme de référencement.

Depuis le temps je ne trouve pas sur google le site sur la requête :
Statistiques Courses de Chevaux


Vouloir de la technique, automatiser, coder ..., certes c'est louable mais la partie design et seo est importante aussi.

Une belle bannière en accueil avec des chevaux cela dynamise le tout. Cela demeure fade en accueil, trop statique (le contraire donc du monde hippique qui bouge ...)

Regardez comme c'est joli : https://pixabay.com/fr/photos/cheval-blanc-hiver-neige-décembre-3010129/

Cette nature, les animaux ...

Sans biensur rentrer dans le côté galerie de photos, ce n'est pas le but je pense.

Mais cela donne un côté frais, de peps, on a envie d'être à côté du cheval ...
 
WRInaute accro
Merci beaucoup voyance

L'arbre n-aire que je fais est destiné à mon script evaluation.php , qui notera mes pages en fonction de leur indexabilité, suivant pratiquement les mêmes critères que RM-Tech.

Ces arbres n-aires ( mes pages html ), me permettront de parser ces pages en levelorder ( largeur ), ce que je ne sais pas faire en PHP avec DOMDocument.

Le DOMDocument ne me me permet que le preorder.

Le levelorder est nécessaire à mon évaluation des H1-Hn.

Pour des notes inférieures à une limite, je mettrai des noindex et des nofollow.

Celà a donc de l'importance pour mon SEO.

Amicalement.
 
Olivier Duffez (admin)
Membre du personnel
Beaucoup de complications
c'est pourtant un des trucs les plus simples prévus par @ortolojf depuis longtemps :)

Bon, trêve de plaisanteries, est-ce que les internautes cherchent dans Google des infos sur des courses passées il y a des mois voire des années ? si la réponse est non, pourquoi les conserver sur le site ? (en tout cas indexables)
 
WRInaute accro
Bonjour Monsieur Duffez

J'ai désindexé début Juillet sur GSC toutes mes pages anciennes.

J'ai enlevé le sitemap pour les pages anciennes.

Les liens vers les pages anciennes sont dans mon calendrier.

Seulement jusqu'à 160 jours dans le passé.

Les glissements de mois se font en mode post, le calendrier est en php.

Si je remettais les sitemaps en mode glissant 160 jours, j'aurais tout le temps des erreurs 404/410 sur GSC.

Avec ce script evaluation.php , je cherche à automatiser ma gestion des pages désindexées.

Merci beaucoup de votre aide.

Respectueusement.
 
Olivier Duffez (admin)
Membre du personnel
Faut prendre le pb dans l'autre sens et se demander en amont, quels genres de pages doivent être indexées.
Je ne vois pas l'intérêt de faire une usine à gaz pour identifier après coup les pages à supprimer (sachant qu'elles n'auront peut-être jamais généré de clics).

Que demandent (à Google) les internautes que tu vises ?
Et donc, quels contenus tu dois proposer sur ton site ?
Les as-tu créés ?

voilà les questions à se poser. Le reste, ça peut t'occuper encore les 15 prochaines années...
 
WRInaute discret
q2n6.gif


C'est tout de même un petit peu plus beau en jouant seulement 5 minutes avec la console


Code:
Ajouté:
<div style="background: url(<l'image_du_cheval>);height: 750px;background-size:  cover;background-position-y:  center;">
  test
</div>

Modifié:
div.blochaut {
    border: 0;
    font-size: 1.25em;
    font-weight: 400;
    padding: 0;
    width: 95%;
    position: absolute;
    top: 50%;
}

(la mauvaise qualité de l'image vient de la capture d'écran pour gif )
 
WRInaute accro
Je ne comprend pas.

Ce programme d'arbre n-aire est également destiné à ma future PWA, et j'amasse actuellement, les outils que j'utiliserai ( PWA ou site ).

Pour ce qui est du contenu, mes visiteurs sont des obsessionnels, qui aiment les chiffres.

J'ai à terme l'intention de voir avec un graphiste comment modifier mon site.

Mon soft consistera **en amont**, à laisser ou non les pages se faire indexer.

J'ai une façon de concevoir ce site/PWA, technique, car l'utilité réelle que j'y vois pour les visiteurs, est mon moteur statistique.

A quoi servirait un site de Turf, si ses visiteurs ne gagnaient pas, ou moins que ses concurrents ?

Mon approche pour le moment est technique, je dauberai après.

Celà dit, peut-être que je fais une erreur en ne faisant pas tout de suite, appel à un graphiste.

Peut-être faut-il soigner de la même façon l'extérieur et l'intérieur.

Amicalement.
 
WRInaute discret
Pour ce qui est du contenu, mes visiteurs sont des obsessionnels, qui aiment les chiffres.

Malheureusement google est un obsessionnel du contenu (texte riche ...), donc tant que les problèmes SEO (les urls par exemple) et le contenu seront aussi pauvres il n y aura pas foule de visiteurs.

Et pour les visiteurs (nouveaux) il faut un bon référencement. Ou alors seul les habitués comptent.

Très joli Mickou l'image comme cela c'est bien plus vivant mais je pense que nous écrivons dans le vent .....
 
WRInaute discret
Aussi, pourquoi des majuscules à tous les mots ?

Statistiques Prévisionnelles
Pronostics
Historiques Graphiques
Courses

7 majuscules pour à peine deux ligne de texte dès l'accueil.
 
WRInaute accro
Bon voilà.

J'ai l'algorithme suffixe de parcours d'arbre n-aire.

C'est pour deleter les fils avant les pères.

Je vais me pencher sur l'application à evaluation.php ( H1 ... Hn ).

D'abord, mapper le DOMDocument vers l'arbre n-aire.

Merci beaucoup de votre aide.
 
WRInaute accro
Voilà, voilà

Avec le PHP DOMDocument de ma page d'accueil :

Je n'ai plus qu'à lire en level order. ;)


Code:
Node Object
(
    [tag] => html
    [value] => 
    [attrs] => Array
        (
            [lang] => fr
        )
    [Parent] => 
    [Children] => Array
        (
            [0] => Node Object
                (
                    [tag] => head
                    [value] => 
                    [attrs] => Array
                        (
                        )
                    [Parent] => Node Object
 *RECURSION*
                    [Children] => Array
                        (
                            [0] => Node Object
                                (
                                    [tag] => meta
                                    [value] => 
                                    [attrs] => Array
                                        (
                                            [http-equiv] => Content-Type
                                            [content] => text/html; charset=utf-8
                                        )
                                    [Parent] => Node Object
 *RECURSION*
                                    [Children] => Array
                                        (
                                        )
                                    [nLastChild] => 0
                                )
                            [1] => Node Object
                                (
                                    [tag] => meta
                                    [value] => 
                                    [attrs] => Array
                                        (
                                            [name] => viewport
                                            [content] => width=device-width, initial-scale=1.0
                                        )
                                    [Parent] => Node Object
 *RECURSION*
                                    [Children] => Array
                                        (
                                        )
                                    [nLastChild] => 1
                                )
            .....
                        )
                    [nLastChild] => 1
                )
        )
    [nLastChild] => 0
)
 
WRInaute accro
Et voilà voilà

En level order.

Il y a tout ce qu'il faut pour mon soft.

Merci beaucoup pour votre aide.

Amicalement.


Code:
    Level : 0    Tag : html   
    Attrs : Array
(
    [lang] => fr
)
*************************************
    Parent : html
--------------------------------------
    Level : 1    Tag : head   
*************************************
    Parent : html
--------------------------------------
    Level : 1    Tag : body   
    Attrs : Array
(
    [itemscope] => 
    [itemtype] => http://schema.org/WebPage
)
*************************************
    Parent : head
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [http-equiv] => Content-Type
    [content] => text/html; charset=utf-8
)
*************************************
    Parent : head
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [name] => viewport
    [content] => width=device-width, initial-scale=1.0
)
*************************************
    Parent : head
--------------------------------------
    Level : 2    Tag : link   
    Attrs : Array
(
    [rel] => canonical
    [href] => https://www.pronostics-courses.fr/
)
*************************************
    Parent : head
--------------------------------------
    Level : 2    Tag : title    Statistiques et Pronostics Courses de Chevaux
*************************************
    Parent : head
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [name] => keywords
    [content] => cheval, chevaux, pronostics, courses de chevaux, pronostic, pronostics courses, pronostics courses de chevaux, estimations prévisionnelles, base de données courses
)
*************************************
    Parent : head
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [name] => description
    [content] => Statistiques, Pronostics et Historiques Graphiques sur les Courses de Chevaux
)
*************************************
    Parent : head
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [name] => author
    [content] => Jean-Francois Ortolo
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [itemprop] => description
    [content] => Statistiques, Pronostics et Historiques Graphiques sur les Courses de Chevaux
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : a   
    Attrs : Array
(
    [class] => cache
    [itemprop] => url
    [href] => https://www.pronostics-courses.fr
    [aria-label] => Statistiques et Pronostics sur les Courses de Chevaux
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : a   
    Attrs : Array
(
    [class] => cache
    [itemprop] => breadcrumb
    [href] => https://www.pronostics-courses.fr
    [aria-label] => Statistiques et Pronostics sur les Courses de Chevaux
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : span   
    Attrs : Array
(
    [itemscope] => 
    [itemtype] => http://schema.org/Language
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : div   
    Attrs : Array
(
    [itemscope] => 
    [itemtype] => http://schema.org/AboutPage
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [property] => og:title
    [content] => Statistiques, Pronostics et Historiques Graphiques sur les Courses de Chevaux
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [property] => og:type
    [content] => Pronostics, Pronostics et Historiques Graphiques sur les Courses de Chevaux
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : meta   
    Attrs : Array
(
    [property] => og:url
    [content] => https://www.pronostics-courses.fr/
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : p   
    Attrs : Array
(
    [aria-hidden] => true
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : h1   
Statistiques Courses de Chevaux
    Attrs : Array
(
    [class] => logo
)
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : br   
*************************************
    Parent : body
--------------------------------------
    Level : 2    Tag : div   
    Attrs : Array
(
    [class] => blochaut
)
*************************************
    Parent : span
--------------------------------------
    Level : 3    Tag : meta   
    Attrs : Array
(
    [itemprop] => name
    [content] => French
)
*************************************
    Parent : div
--------------------------------------
    Level : 3    Tag : div   
    Attrs : Array
(
    [itemprop] => author
    [itemscope] => 
    [itemtype] => http://schema.org/Person
)
*************************************
    Parent : div
--------------------------------------
    Level : 3    Tag : div   
    Attrs : Array
(
    [class] => bloc blocgauche
)
*************************************
    Parent : div
--------------------------------------
    Level : 3    Tag : div   
    Attrs : Array
(
    [class] => bloc blocdroite
)
*************************************
 
WRInaute accro
Pour explications.

Mon programme projeté, me permettra de détecter automatiquement les erreurs de balisage html de mon site.

Je préfère me frotter à la programmation des arbres n-aires, plutôt que d'utiliser Tidy, pour affiner les indications des erreurs.

Et puis, c'est un challenge pour moi, de gérer le statique et le mobile.

C'est-à-dire : Les types d'erreurs, plus ou moins statiques, et le reste variable.

Les arbres n-aires, sont très utiles et adaptables à beaucoup d'applications.

Merci beaucoup.
 
Discussions similaires
Haut