Maison > Article > développement back-end > Étapes de mise en œuvre de l'algorithme de recherche en largeur en PHP
Étapes pour implémenter l'algorithme de recherche en largeur en premier en PHP
L'algorithme de recherche en largeur en premier (Breadth First Search) est une technologie utilisée pour la recherche ou le parcours de graphiques. Il commence à partir du nœud racine et parcourt les nœuds du graphique couche par couche. Dans les applications pratiques, les algorithmes de recherche en largeur sont souvent utilisés pour des problèmes tels que la recherche du chemin le plus court, la détection de la connectivité graphique et la recherche dans l'espace d'état. Dans cet article, nous apprendrons comment implémenter l'algorithme de recherche en largeur en PHP.
Étape 1 : Définir la structure du graphique
Tout d'abord, nous devons définir la structure du graphique. En PHP, nous pouvons utiliser des listes de contiguïté pour représenter des graphiques. Une liste de contiguïté est une structure de données qui représente chaque nœud du graphique et les nœuds qui y sont connectés.
Nous pouvons utiliser des tableaux PHP pour représenter des listes de contiguïté. Dans un tableau, chaque clé représente un nœud et la valeur correspondante est un tableau contenant une liste des nœuds adjacents à ce nœud. Voici un exemple :
$graph = [ 'A' => ['B', 'C'], 'B' => ['A', 'D', 'E'], 'C' => ['A', 'F'], 'D' => ['B'], 'E' => ['B', 'F'], 'F' => ['C', 'E'] ];
Le code ci-dessus représente un graphe contenant 6 nœuds.
Étape 2 : Définir la fonction d'algorithme de recherche en largeur d'abord
Ensuite, nous devons définir une fonction pour implémenter l'algorithme de recherche en largeur d'abord. Les paramètres d'entrée de cette fonction doivent inclure la liste de contiguïté du graphique, le nœud de départ et le nœud cible. La fonction prendra le nœud de départ comme nœud racine et parcourra le graphique jusqu'à ce que le nœud cible soit trouvé ou que tous les nœuds soient parcourus.
Ce qui suit est un exemple de code pour une simple fonction d'algorithme de recherche en largeur d'abord :
function breadthFirstSearch($graph, $start, $goal) { $queue = new SplQueue(); // 使用SplQueue来作为队列 $visited = []; // 记录已访问的节点 $queue->enqueue($start); // 将起始节点加入队列 while (!$queue->isEmpty()) { $node = $queue->dequeue(); // 从队列中取出一个节点 if (!in_array($node, $visited)) { $visited[] = $node; // 将节点标记为已访问 if ($node === $goal) { return true; // 找到目标节点,搜索结束 } foreach ($graph[$node] as $neighbor) { $queue->enqueue($neighbor); // 将相邻节点加入队列 } } } return false; // 没有找到目标节点 }
Étape 3 : Testez la fonction d'algorithme
Enfin, nous pouvons tester l'exactitude de l'algorithme en appelant la fonction d'algorithme de recherche en largeur d'abord. Ce qui suit est un exemple de test :
$start = 'A'; // 起始节点 $goal = 'F'; // 目标节点 if (breadthFirstSearch($graph, $start, $goal)) { echo "Found path from $start to $goal"; } else { echo "Path from $start to $goal not found"; }
Le code ci-dessus affichera "Chemin trouvé de A à F", indiquant qu'un chemin du nœud de départ A au nœud cible F est trouvé dans le graphique donné.
Résumé :
L'algorithme de recherche en largeur d'abord est un algorithme de recherche de graphiques couramment utilisé qui peut être appliqué à une variété de problèmes pratiques. En PHP, nous pouvons utiliser des listes de contiguïté pour représenter la structure du graphique et écrire les fonctions correspondantes pour implémenter l'algorithme de recherche en largeur. Grâce à l'explication de l'exemple de code, je pense que les lecteurs ont compris comment implémenter l'algorithme de recherche en largeur en PHP. J'espère que cet article pourra être utile pour votre étude et votre pratique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!