# Gráfos: BFS y DFS
**Fecha:** 06.julio.2020
## Grafo
Un grafo $G$ es conjunto de vertices $V$ y aristas $E$, es decir:
$$
G = {V,E}
$$
### Grafo Direccional
Regularmente el grafo direccional es conocido como un ***digrafo***
Dada un arista $(U,V)$, solo podemos transitar dese $U$ hacia $V$, $U -> V$
### Grafo Bidireccional
Regularmente el grafo bidireccional es conocido como un ***grafo***
La representación de un grafo bidireccional, se da con una doble arísta. $(U,V)$, $(V,U)$
u,v = hay arista bidireccional
### Grafo *Multigrafo*
Nos encontrar con aristas del tipo $(U,U)$, o también $(U,V)_{1}$ $(U,V)_{2}$
### Grafo Conexo
De cualquier nodo $U \rightarrow V$.
Es decir, el grafo es una sola componente.
#### Componente
Un conjunto (*subgrafo*) en existe un camino entre cada par de nodos.
##### Una componente cíclica
$(U,V), (V,W), (W,U)$, en otras palabras, existe un camino que parte de $U$ y llega a $U$
### Arbol
- Es un grafo **conexo**
- Tiene **n-1** aristas
- No tiene **ciclos**
## BFS (Breath-First Search)
Es un algoritmo de recorrido y búsqueda de grafos.
Trabaja en grafos dirigidos y no dirigidos.
El algoritmo se llama así, ya que se expande entre la frontera de los vertices descubiertos o no descubiertos.
Una bfs necesita un nodo de inicio $U_{i}$
## DFS (Deep-First Search)
Es un algoritmo de recorrido y búsqueda de grafos.
Trabaja en grafos dirigidos y no dirigidos.
El algoritmo se llama así, porque de un nodo $U$ trataremos de llegar lo más profundo que se pueda, y despues iremos visitando los nodos no visitados más profundos a los menos profundos.
Una bfs necesita un nodo de inicio $U_{i}$