2013-01-05 2 views
0

quelqu'un peut-il expliquer ce qui est de l'importance de HeapDesc ​​ dans ShaneSaunders algorithme de Dijkstra et comment il est utilisé ici? En général, je sais comment fonctionne l'algorithme de Dijkstra. Mais, je n'ai pas la part de tas dans la mise en œuvre.Heap dans l'algorithme de Dijkstra

Son grand code. Par conséquent, je poste un lien si vous voulez jeter un coup d'oeil.

Ici go http://www.cosc.canterbury.ac.nz/research/RG/alg/dijkstra.cpp

+0

Quelle partie êtes-vous pas clairement? La définition du HeapDesc ​​ou comment est-il utilisé? – Max

+0

je suppose connaître les deux – NRK

Répondre

0

Dijkstra's algorithm implique beaucoup de recherche « de chemin de coût le plus bas ».

La recherche min ou max est ce que Heap est optimisé pour (O (1)), et c'est pourquoi il est utilisé.

Quant à HeapDesc lui-même, il semble juste être a factory method, utilisé pour allouer un objet Heap.

Heap *newInstance(int n) const { return new T(n); }; // from heap.h 
+0

Mais, qu'est-ce que cela représente ici dans son code? heap = heapDD-> newInstance (nn); et comment il a défini – NRK

+0

@NRK Je ne suis pas sûr de ce que 'HeapDesc' est lui-même, mais il ressemble à une méthode allocateur ou usine utilisé pour créer un tas. Vous devriez regarder dans "heaps/heap.h" pour cela. –

1

En Dijkstra vous avez besoin d'une structure de données efficace qui vous fournit le bord du coût minimum qui vous permet d'atteindre un autre sommet.

Heap est exactement une structure de données qui vous permet de stocker l'ensemble des bords et de récupérer efficacement celui avec un coût minimum.

+1

je peux changer * « la structure de données » * pour * « une structure de données » * si – Alexander

+0

Vous avez raison. Je viens d'éditer ma réponse – mariosangiorgio

+0

merci pour votre réponse ... je l'ai eu. – NRK

1

HeapDesc ​​implémente probablement le modèle de conception d'usine pour créer différents types de monceaux. Si vous vérifiez le fichier http://www.cosc.canterbury.ac.nz/research/RG/alg/dijkstra.h, vous remarquerez que la variable heap dans le constructeur est un objet de type Heap.

Jetez un oeil sur cet article pour le modèle de conception d'usine. http://en.wikipedia.org/wiki/Factory_method_pattern

+0

Salut merci. ce serait génial de savoir – NRK