Diferencia entre revisiones de «Grafo conexo»

Contenido eliminado Contenido añadido
→‎Algoritmo: no enciclopédico, más de manual
Línea 13:
Un ''conjunto de corte de vértices'' ''U'' en un grafo ''G'', es un conjunto de vértices de ''G'', tal que ''G-U'' no es conexo o trivial. Similarmente, un ''conjunto de corte de aristas'' ''F'' es un conjunto de aristas tal que ''G-F'' no es conexo.
todo grafo es dirigido si no tiene flechas.
 
== Algoritmo ==
 
Ejemplo de algoritmo iterativo implementado en [[C++]] para determinar si un grafo es conexo utilizando [[búsqueda en profundidad]], donde ''_n'' es la cantidad de vértices y ''_graph'' denota la matriz de adyacencia.
 
<syntaxhighlight lang="cpp">
bool Graph::is_connected()
{
if (_n <= 1)
return true;
 
vector<bool> visit(_n);
vector<bool>::iterator iter;
 
for(iter = visit.begin(); iter != visit.end(); iter++)
*iter = false;
 
set<int> forvisit;
set<int>::iterator current;
 
forvisit.insert(0);
while (!forvisit.empty())
{
current = forvisit.begin();
if (!visit[*current])
{
for (int i = 0; i < _n; i++)
{
if (_graph[*current][i] == 1 && !visit[i])
forvisit.insert(i);
}
}
visit[*current] = true;
forvisit.erase(current);
}
 
bool result;
for (iter = visit.begin(); iter != visit.end(); iter++)
result = result && *iter;
return result;
}
</syntaxhighlight>
 
== Tipos ==