Une fonction qui traversait un graphe fonctionnerait-elle aussi bien pour traverser un arbre?Traverser un graphe Vs Traverser un arbre
Répondre
Eh bien, un arbre est juste un type particulier de graphe appelé un graphe acyclique dirigé, alors oui ... La première traversée et la première traversée de profondeur fonctionnent toutes deux sur un arbre.
Je pourrais écrire une explication détaillée des différences entre les traversées de largeur et de profondeur en premier, mais je me trompe probablement (je ne suis pas encore un comp-sci lourd). Il suffit de dire que la seule différence entre la largeur et la profondeur de la première traversée est l'ordre dans lequel vous traitez les vertices. En premier lieu, vous pouvez envisager d'ajouter des sommets à une file d'attente «à traiter». La profondeur d'abord vous pouvez penser à ajouter les sommets à une pile «à traiter». Quand vient le temps de traiter les sommets (après qu'ils ont été ajoutés à leurs structures de données respectives), vous devez dequeue ou pop la pile pour obtenir le prochain sommet à traiter. Les versions intelligentes de la première traversée de profondeur utilisent la récursivité pour traiter les sommets au lieu de les ajouter à une pile.
Je ne sais pas si cela a été utile ou non ...
Une recherche rapide Google (je ne sais pas si elle était étendue ou la profondeur d'abord) trouve this qui semble assez bon pour décrire les différences entre BFS et DFS. Je peux également recommander The Algorithm Design Manual de Steve Skiena si vous voulez obtenir une lecture plus en profondeur.
Une fonction qui pourrait traverser un graphe général peut être trop lourde pour traverser une arborescence, car dans un arbre pur, il n'est pas nécessaire de vérifier les cycles. Cela fonctionnerait donc, mais il en serait de même pour quelque chose de plus simple.
LOL. J'ai tendance à penser autrement: les graphiques sont un problème parce qu'ils peuvent contenir des cycles. – dmckee
En effet - ça vaut la peine de garder les deux étroitement liés dans votre esprit, car les gens commencent souvent avec un arbre et introduisent quelque chose comme des liens symboliques comme dans le système de fichiers Unix, et soudainement vous avez un graphique au lieu d'un vrai arbre, et vos algorithmes récursifs explosent. –
- 1. Traverser un graphe d'objet C# arbitraire en utilisant XPath/appliquer des transformations XSL
- 2. Traverser une arborescence de répertoires
- 3. Traverser un XML en utilisant la fonction Recursive
- 4. Traverser les relations HABTM sur ActiveRecord
- 5. traverser les classes en utilisant Jquery
- 6. Comment traverser Request.Form sans connaître les détails?
- 7. Implémenter un algorithme pour insérer un nœud dans une liste chaînée circulaire sans le traverser
- 8. Traverser plusieurs objets Core Data à l'aide de NSPredicate
- 9. Traverser les éléments de la liste avec jquery
- 10. Droite Threading un arbre binaire
- 11. Comment implémenter un arbre d'espaces d'états?
- 12. Qu'est-ce qu'une arborescence Splay, un arbre rouge-noir, un arbre AVL, un arbre B et un arbre-T?
- 13. Comment empêcher l'os.walk de Python de traverser les points de montage?
- 14. Remise à zéro des bases de données d'avoir OneToOneField traverser différentes applications dans Django
- 15. Nœuds feuille de graphe orienté - Prolog
- 16. Construire un arbre en Java
- 17. Comment créer un arbre binaire
- 18. Objectif-C - Guide pour créer un graphe
- 19. Calcul des trajectoires dans un graphe
- 20. Icône sur un graphe JFreeChart XY
- 21. Comment modéliser un graphe déroulant dans WPF?
- 22. Comment utiliser un graphe orienté BGL comme un graphe non orienté (à utiliser dans un algorithme de mise en page)?
- 23. Marcher dans un arbre XML en C#
- 24. Comment effacer un arbre dans ExtJs?
- 25. (Rails) Gérer un arbre sans javascript?
- 26. Dojo: Copier un arbre de noeuds
- 27. Est-ce un arbre binaire complet?
- 28. graphe d'objet traversant du client n-tier
- 29. Pousser un arbre source Git, pas seulement un référentiel
- 30. Java: traversèrent Arbre à arbre
merci pour la réponse! Mais pouvez-vous l'agrandir un peu pour montrer la différence entre BF et DF? –
Est-ce qu'un arbre n'est pas dirigé? –
@DominikAntal Un arbre est dirigé uniquement. Les nœuds ont uniquement des références à leurs enfants, pas des nœuds enfants au nœud parent. – cbradsh1