public function imprimeDfs(Grafo $g, $v) { $this->visitado[$v] = true; $this->count++; echo "dfs({$v})\n"; foreach ($g->getAdj($v) as $vertice) { if (!$this->foiVisitado($vertice)) { $this->dfs($g, $vertice); echo "{$vertice} "; } else { echo "{$v} - visitado"; } echo "\n"; } }
public function bfs(Grafo $g, $inicio) { $queue = new SplQueue(); $this->visitado[$inicio] = TRUE; $queue->enqueue($inicio); while (!$queue->isEmpty()) { $v = $queue->dequeue(); foreach ($g->getAdj($v) as $vertice) { if (!$this->visitado[$vertice]) { $this->arestaPara[$vertice] = $v; $this->visitado[$vertice] = TRUE; $queue->enqueue($vertice); } } } }