2010-07-22 7 views
0

Je fais l'algorithme de recherche de coûts unifrom. Je reçois ma solution légèrement plus grande que réelle. Le nombre de nœuds étendus est plus grand que réel.émission d'algorithmes en solution de coût uniforme

J'ai utilisé cet algorithme:

Obtenez le nœud initial et le mettre dans la priorité sera lui-même P.queue file d'attente.Procédé dispose les nœuds en fonction du coût. Le nœud à moindre coût passera en premier.

utiliser la boucle while, il va jusqu'à ce que la file d'attente est vide. Supprimer un noeud de la file d'attente et vérifier s'il s'agit d'un état d'objectif ou non.

sinon, vérifiez s'il est dans la liste des visites ou non. La liste visitée est un ensemble qui contient tous les nœuds déjà développés. s'il n'est pas présent dans la liste visitée, obtenez ses successeurs avec le coût et l'action.

calculer le coût jusqu'à ce noeud.

si le coût de succcessor est supérieur au coût du noeud parent, ajoutez-le dans la file d'attente et vérifiez si ce successeur est dans le répertoire parent ou non. Sinon, faites-lui un parent afin que nous puissions revenir en arrière sur le chemin.

est mon algorithme est juste ou dois-je vérifier autre chose:

+2

Je ne comprends pas ce qu'est votre algorithme et ce qu'il fait. Désolé mais vous devriez clarifier votre question (imho). – cletus

+0

Ce que dit Cletus. Soudain, vous parlez d'un "répertoire parent" ...? –

Répondre

2

Il semble que vous mettre en œuvre une Dijkstra avec file d'attente prioritaire. Mais puisque les coûts sont uniformes, BFS serait suffisant.