2010-08-09 4 views
2

Je viens de commencer à lire des structures de données et de graphiques.Graphiques - trouver des données communes

Je construis un exemple d'application qui devrait être capable de trouver le xpath pour les liens les plus courants. Imaginez un serp Google, mon application devrait être capable de trouver le xpath pour tous les liens pointant vers un résultat.

Imaginez que theese XPath ont été trouvés:

/html/body/h2/a 
/html/body/p/a 
/html/body/p/strong/a 
/html/body/p/strong/a 
/html/body/p/strong/a 
/html/body/div[@class=footer]/span[@id=copyright]/a 

A partir de ces xpats, j'ai pensé un graphique comme celui-ci (je pourrais être complètement perdu ici):

      html 
          | 
          body 
         h2 -  p   - div[@class=footer] 
         |  |      | 
         a (1) a - strong  span[@id=copyright] 
             |    | 
             a (3)   a (1) 

Est-ce la meilleure approche de ce problème?

Quel serait le meilleur moyen (structure de données) de stocker cela en mémoire? La langue ne mathe pas. Nous pouvons voir que nous avons 3 liens correspondant au chemin html -> body -> p -> strong -> a. Comme je l'ai dit, je suis totalement nouveau à cela, alors s'il vous plaît pardonnez-moi si je pensais à ce complètement faux.

EDIT: Je suis peut-être à la recherche de la structure de données Trie?

Répondre

1

Ne vous inquiétez pas pour le moment. Construisez simplement un arbre en utilisant la représentation graphique standard (node ​​= {value, count, parent} tout en réduisant immédiatement les mêmes branches et en incrémentant le compteur.) Ensuite, triez toutes les feuilles par nombre décroissant et traversez chaque feuille pour obtenir un chemin.

Questions connexes