Quels problèmes peuvent être résolus, ou abordés plus facilement, en utilisant des graphiques et des arbres?

Quels sont les problèmes les plus communs qui peuvent être résolus avec ces deux structures de données?

Il serait bon pour moi d'avoir aussi des recommandations sur des livres qui:

  • Implémenter les structures
  • Implémenter et expliquer le raisonnement des algorithmes qui les utilisent
0

9 Réponses

La première chose à laquelle je pense quand je lis cette question est: quels types de choses utilisent des graphes / arbres? et je pense ensuite à la façon dont je pourrais les utiliser.

Par exemple, prenez deux utilisations courantes d'un arbre:

  • Le DOM
  • Systèmes de fichiers

The DOM, and xml for that matter, resemble tree structures.
alt text

Cela a aussi du sens. Cela est logique en raison de la façon dont ces données doivent être organisées . Un système de fichiers, aussi. Sur un système UNIX, il y a un nœud racine et une branche ci-dessous. Lorsque vous montez un nouveau périphérique, vous l'attachez à l'arborescence.

Vous devriez également vous demander: les données tombent-elles dans ce type de structure? Créer des structures de données qui ont un sens pour le problème et le reste suivra.

Pour ce qui est d'être plus facile, je pense que c'est relatif. Êtes-vous bon avec des fonctions récursives pour traverser un arbre / graphique? Que faire si vous avez besoin d'équilibrer l'arbre?

Pensez à un programme qui résout un puzzle de recherche de mots. Vous pouvez tracer toutes les lettres de la recherche de mots dans un graphique et vérifier les nœuds environnants pour voir si cette chaîne correspond à l'un des mots. Mais ne pourriez-vous pas faire la même chose avec un seul tableau? Tout ce que vous avez vraiment besoin de faire est de déplacer un index pour vérifier les lettres à gauche et à droite, et de la largeur pour vérifier au-dessus et au-dessous des lettres. Il n'est pas difficile de résoudre ce problème avec un graphique, mais cela peut créer beaucoup de travail et de difficultés supplémentaires si vous n'êtes pas à l'aise avec eux - bien sûr, cela ne devrait pas vous décourager, surtout si vous apprenez leur.

J'espère que cela vous aide à penser à ces structures. Comme pour une recommandation de livre, je devrais aller avec Introduction aux algorithmes .

0
ajouté

Les graphiques de scène pour dessiner des graphiques dans les jeux et les applications multimédias utilisent beaucoup d'arbres et de graphiques. Les nœuds représentent les objets à rendre, les transformations, les contrôles, les groupes, ...

Les graphes de scène ont généralement plusieurs calques et attributs qui signifient que vous ne pouvez dessiner qu'un seul noeud d'un graphe (attributs) dans un ordre spécifié (calques). Selon le type de graphe de scène que vous avez, il peut avoir deux structures parallèles: les déclarations et l'instanciation. Th

0
ajouté

Il y a un cours pour de telles choses à mon université: CSE 326 . Je ne pensais pas que le livre était trop utile, mais les projets sont amusants et vous apprennent un peu à mettre en œuvre certaines des structures les plus simples.

En ce qui concerne les exemples, l'un des problèmes les plus courants (selon le nombre de personnes qui l'utilisent) qui est résolu avec des arbres est celui de l'entrée de texte sur téléphone portable. Vous pouvez utiliser des arbres, pas nécessairement binaires, pour représenter l'espace des mots possibles qui peuvent sortir d'une liste donnée de nombres qu'un utilisateur envoie très rapidement.

0
ajouté

The Algorithm Design Manual contains some interesting case studies with creative use of graphs. Despite its name, the book is very readable and even entertaining at times.

0
ajouté

Presque tous les problèmes peuvent être réécrits en termes de théorie des graphes. Je ne plaisante pas, regardez n'importe quel livre sur les problèmes complets de NP, il y a des problèmes assez farfelus qui se transforment en théorie des graphes parce que nous avons de bons outils pour travailler avec les graphes ...

0
ajouté

Les arbres sont beaucoup plus utilisés dans les langages de programmation fonctionnels en raison de leur nature récursive.

En outre, les graphiques et les arbres sont un bon moyen de modéliser beaucoup de problèmes d'IA.

0
ajouté

Les jeux utilisent souvent des graphiques pour faciliter la recherche de chemins dans le monde du jeu. La représentation graphique du monde peut avoir des algorithmes tels que la recherche de largeur d'abord ou A * afin de trouver une route à travers elle.

Ils utilisent aussi souvent des arbres pour représenter des entités dans le monde. Si vous avez des milliers d'entités et que vous devez en trouver une à un certain endroit, itérer linéairement à travers une liste peut être inefficace, surtout si vous devez le faire souvent. Par conséquent, la zone peut être subdivisée en un arbre pour permettre une recherche plus rapide. Tout comme un espace linéaire peut être recherché efficacement avec une recherche binaire (et donc divisé en un arbre binaire), l'espace 2D peut être divisé en quadtree et l'espace 3D dans un octree .

0
ajouté

Schémas de circuit.

Compilation (Graphiques acycliques dirigés)

Plans. Très compact comme les graphiques.

Problèmes de flux réseau.

Décision arbres pour les systèmes experts (sic)

Diagrammes en arêtes de poisson pour la recherche de défauts, l'amélioration du processus, l'analyse de sûreté. Pour les points bonus, implémentez votre code de récupération d'erreur en tant qu'objets sont le diagramme en arête de poisson.

0
ajouté

@DavidJoiner / all:

FWIW: Une nouvelle version du Manuel de conception d'algorithmes est prévue pour aujourd'hui.

Le cours entier pour lequel le Prof Skiena a développé ce livre est également disponible sur le web:

http://www.cs.sunysb.edu/~ algorithm / video-conferences / 2007-1.html

0
ajouté