Dans mon code suivant, je traverse un graphique à travers breadth first search
. Le code construit le graphique pendant qu'il traverse. Ceci est un très grand graphique, avec un ventilateur sur 12. Pour cette raison, chaque fois que la profondeur du breadth first search
augmente, je veux détruire le calque au-dessus afin de minimiser l'utilisation de la mémoire. Comment pourrais-je concevoir un algorithme pour le faire?Minimiser l'utilisation de la mémoire d'une largeur d'abord rechercher
string Node::bfs(Node * rootNode) {
QQueue<Cube *> q;
q.enqueue(rootNode);
while (!(q.empty())) {
Node * currNode = q.dequeue();
currNode->constructChildren();
foreach (Node * child, currNode->getListOfChildren()) {
q.enqueue(child);
}
if (currNode->isGoalNode()) {
return currNode->path;
}
}
'le code construit le graphe pendant qu'il traverse. Nous aimons voir ce code. Un BFS est supposé traverser un graphe déjà existant. – codaddict
J'ai modifié le message pour inclure un exemple de code. – dfetter88
une correction que je suggérerais est ... vous devriez vérifier si le 'currentNode' est le' GoalNode' immédiatement une fois que vous l'avez dequeue. Sauvegarde d'une construction/mise en file d'attente inutile des enfants – st0le