aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Marín Noguera <juan.marinn@um.es>2021-01-08 20:28:33 +0100
committerJuan Marín Noguera <juan.marinn@um.es>2021-01-08 20:28:38 +0100
commit480a1ddb0b83e0a5f80ba3e607b0ea9c3ac68dd6 (patch)
tree10dc754cdb95d65f126fe24a9804b3c2125e067c
parent6ed794cbef3289f86ed9ffda7fe272ccb2081aa8 (diff)
graph::algorithm
-rw-r--r--graf/n.lyx39
-rw-r--r--graf/n4.lyx1854
2 files changed, 985 insertions, 908 deletions
diff --git a/graf/n.lyx b/graf/n.lyx
index ac8fe4c..56e4ca8 100644
--- a/graf/n.lyx
+++ b/graf/n.lyx
@@ -173,6 +173,31 @@ Borůvka's algorithm
.
\end_layout
+\begin_layout Itemize
+Richard C.
+ Larson & Amadeo R.
+ Odoni (1999).
+
+\emph on
+\lang english
+Urban Operations Research
+\emph default
+, chapter 6.4.4
+\lang spanish
+ (
+\begin_inset Flex URL
+status open
+
+\begin_layout Plain Layout
+
+http://web.mit.edu/urban_or_book/www/book/chapter6/6.4.4.html
+\end_layout
+
+\end_inset
+
+).
+\end_layout
+
\begin_layout Chapter
Grafos
\end_layout
@@ -215,5 +240,19 @@ filename "n3.lyx"
\end_layout
+\begin_layout Chapter
+Algoritmos en grafos
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n4.lyx"
+
+\end_inset
+
+
+\end_layout
+
\end_body
\end_document
diff --git a/graf/n4.lyx b/graf/n4.lyx
index ed819e4..e84afd8 100644
--- a/graf/n4.lyx
+++ b/graf/n4.lyx
@@ -80,1143 +80,941 @@ algorithm2e
\begin_body
-\begin_layout Standard
-Un
-\series bold
-bosque
-\series default
- o grafo
-\series bold
-acíclico
-\series default
- es un grafo sin ciclos.
- Un
-\series bold
-árbol
-\series default
- es un bosque conexo.
- Un
-\series bold
-árbol generador
-\series default
- de un grafo es un subgrafo generador que es un árbol.
+\begin_layout Section
+Caminos más cortos
\end_layout
\begin_layout Standard
-Como
-\series bold
-teorema
-\series default
-, un grafo
-\begin_inset Formula $G=(V,E)$
+Dada una red
+\begin_inset Formula $(V,E,\ell)$
\end_inset
- no vacío es un árbol si y sólo si entre cada
-\begin_inset Formula $u,v\in V$
+ y un camino
+\begin_inset Formula $P:=v_{0}e_{1}v_{1}\cdots e_{k}v_{k}$
\end_inset
- distintos existe un único camino, si y sólo si es conexo con
-\begin_inset Formula $|E|=|V|-1$
+ en
+\begin_inset Formula $(V,E)$
\end_inset
-, si y sólo si es acíclico con
-\begin_inset Formula $|E|=|V|-1$
+, llamamos
+\series bold
+longitud
+\series default
+ de
+\begin_inset Formula $P$
\end_inset
-, si y sólo si es conexo minimal (todos los ejes son de corte), si y solo
- si es acíclico maximal (añadir un eje forma un ciclo), en cuyo caso el
- ciclo formado al añadir el eje es único.
-\end_layout
+ a
+\begin_inset Formula
+\[
+\ell(P):=\sum_{i=1}^{k}\ell(e_{i}).
+\]
-\begin_layout Description
-\begin_inset Formula $1\implies2]$
\end_inset
- El camino existe por conexión.
- Supongamos que existen
+El problema del
+\series bold
+camino más corto
+\series default
+ entre dos vértices
\begin_inset Formula $u,v\in V$
\end_inset
- distintos con dos caminos de
-\begin_inset Formula $u$
-\end_inset
-
- a
-\begin_inset Formula $v$
-\end_inset
-
- distintos,
-\begin_inset Formula $uu_{1}\cdots u_{p-1}v$
-\end_inset
-
- y
-\begin_inset Formula $uv_{1}\cdots v_{q-1}v$
-\end_inset
-
-.
- Sean
-\begin_inset Formula $u_{0}:=v_{0}:=u$
-\end_inset
-
-,
-\begin_inset Formula $u_{p}:=u_{q}:=v$
+ es el de minimizar
+\begin_inset Formula $\ell(P)$
\end_inset
- e
-\begin_inset Formula $i\in\{1,\dots,\min\{p,q\}\}$
-\end_inset
-
- mínimo con
-\begin_inset Formula $u_{i}\neq v_{i}$
-\end_inset
-
-, el paseo
-\begin_inset Formula $u_{i}\cdots u_{p-1}vv_{q-1}\cdots v_{i}$
-\end_inset
-
-, que no contiene a
-\begin_inset Formula $u_{i-1}=v_{i-1}$
-\end_inset
-
-, contiene un camino no trivial
+ siendo
\begin_inset Formula $P$
\end_inset
- de
-\begin_inset Formula $u_{i}$
-\end_inset
-
- a
-\begin_inset Formula $v_{i}$
-\end_inset
-
-, y entonces
-\begin_inset Formula $(u_{i-1},u_{i})P(v_{i},v_{i-1})$
-\end_inset
-
- es un ciclo y
-\begin_inset Formula $G$
+ un camino que une
+\begin_inset Formula $u$
\end_inset
- no es un árbol.
-\begin_inset Formula $\#$
+ con
+\begin_inset Formula $v$
\end_inset
-
+.
\end_layout
-\begin_layout Description
-\begin_inset Formula $2\implies3]$
+\begin_layout Standard
+Si
+\begin_inset Formula $v_{0}v_{1}\cdots v_{k}$
\end_inset
- Claramente es conexo.
- Si
-\begin_inset Formula $|V|=1$
+ es el camino más corto de
+\begin_inset Formula $v_{0}$
\end_inset
-, debe ser
-\begin_inset Formula $|E|=0$
+ a
+\begin_inset Formula $v_{k}$
\end_inset
-.
- Supuesto esto probado cuando
-\begin_inset Formula $|V|=n\geq1$
+,
+\begin_inset Formula $v_{i}v_{i+1}\cdots v_{j}$
\end_inset
-, para
-\begin_inset Formula $|V|=n+1$
+ es el camino más corto de
+\begin_inset Formula $v_{i}$
\end_inset
-, sea
-\begin_inset Formula $e:=(u,v)\in E$
+ a
+\begin_inset Formula $v_{j}$
\end_inset
-,
-\begin_inset Formula $e$
+ para
+\begin_inset Formula $0\leq i<j\leq k$
\end_inset
- es el único camino de
-\begin_inset Formula $u$
+, pues si no fuera el más corto, existiría un camino más corto de
+\begin_inset Formula $v_{i}$
\end_inset
a
-\begin_inset Formula $v$
+\begin_inset Formula $v_{j}$
\end_inset
- y por tanto
-\begin_inset Formula $G-e$
+ y al sustituir este en
+\begin_inset Formula $v_{0}\cdots v_{k}$
\end_inset
- es disconexo con dos componentes conexas de órdenes
-\begin_inset Formula $n_{1},n_{2}\in\{1,\dots,n\}$
+ se tendría un camino más corto de
+\begin_inset Formula $v_{0}$
\end_inset
-.
- Entre dos vértices distintos de la misma componente hay un único camino,
- luego por la hipótesis de inducción estas tienen
-\begin_inset Formula $n_{1}-1$
-\end_inset
-
- y
-\begin_inset Formula $n_{2}-1$
-\end_inset
-
- ejes respectivamente y
-\begin_inset Formula $|E|=|E\setminus\{e\}|+1=n_{1}-1+n_{2}-1+1=n-1$
+ a
+\begin_inset Formula $v_{k}\#$
\end_inset
.
\end_layout
-\begin_layout Description
-\begin_inset Formula $3\implies4]$
-\end_inset
-
- Si
-\begin_inset Formula $G$
-\end_inset
-
- tuviera un ciclo, sea
-\begin_inset Formula $e$
+\begin_layout Standard
+Como
+\series bold
+teorema
+\series default
+, sean
+\begin_inset Formula $(V:=\{1,\dots,n\},E,\ell)$
\end_inset
- un eje en un ciclo,
-\begin_inset Formula $G-e=:(V,E')$
+ una red conexa,
+\begin_inset Formula $s\in\{1,\dots,n\}$
\end_inset
- sería conexo con
-\begin_inset Formula $|E'|=|E|-1=|V|-1$
+ y
+\begin_inset Formula $d\in\mathbb{R}^{n}$
\end_inset
-, pero la conexión implica
-\begin_inset Formula $|E'|\geq|V|-1\#$
+ tal que todo
+\begin_inset Formula $d_{i}$
\end_inset
-.
-\end_layout
-
-\begin_layout Description
-\begin_inset Formula $4\implies3]$
+ es la longitud de algún camino de
+\begin_inset Formula $i$
\end_inset
- Si
-\begin_inset Formula $G$
-\end_inset
-
- tiene componentes conexas
-\begin_inset Formula $G_{1},\dots,G_{q}$
+ a
+\begin_inset Formula $s$
\end_inset
y
-\begin_inset Formula $G_{i}$
+\begin_inset Formula $d_{s}=0$
\end_inset
- tiene orden
-\begin_inset Formula $n_{i}$
-\end_inset
+, entonces:
+\end_layout
- y tamaño
-\begin_inset Formula $m_{i}$
+\begin_layout Enumerate
+Cada
+\begin_inset Formula $d_{i}$
\end_inset
-, como cada
-\begin_inset Formula $G_{i}$
+ es la longitud del camino más corto de
+\begin_inset Formula $i$
\end_inset
- es conexa y acíclica, usando (
-\begin_inset Formula $1\implies3$
+ a
+\begin_inset Formula $s$
\end_inset
-) es
-\begin_inset Formula $m_{i}=n_{i}-1$
+ si y sólo si
+\begin_inset Formula $d_{j}-d_{i}\leq\ell(i,j)$
\end_inset
-, luego
-\begin_inset Formula $m=\sum_{i=1}^{q}m_{i}=\sum_{i=1}^{q}(n_{i}-1)=n-q$
-\end_inset
-
-, y despejando
-\begin_inset Formula $q=1$
+ para todo
+\begin_inset Formula $(i,j)\in E$
\end_inset
.
\end_layout
-\begin_layout Description
-\begin_inset Formula $3\implies5]$
-\end_inset
-
- Dado un eje
-\begin_inset Formula $e$
-\end_inset
-
-,
-\begin_inset Formula $G-e=:(V,E')$
-\end_inset
-
- cumple
-\begin_inset Formula $|E'|=|E|-1=|V|-2$
-\end_inset
+\begin_deeper
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
-, luego
-\begin_inset Formula $G-e$
+\begin_layout Plain Layout
+\begin_inset Formula $\implies]$
\end_inset
- es disconexo y
-\begin_inset Formula $e$
-\end_inset
- es un eje de corte.
\end_layout
-\begin_layout Description
-\begin_inset Formula $5\implies6]$
-\end_inset
-
- Si hubiera un ciclo, al quitar un eje del ciclo el grafo seguiría siendo
- conexo, luego el eje no sería de corte.
-\begin_inset Formula $\#$
-\end_inset
-
- Sean ahora
-\begin_inset Formula $u,v\in V$
\end_inset
- distintos no adyacentes y
+Sea
\begin_inset Formula $P$
\end_inset
- una cadena de
-\begin_inset Formula $u$
+ un camino más corto de
+\begin_inset Formula $s$
\end_inset
a
-\begin_inset Formula $v$
+\begin_inset Formula $i$
\end_inset
- en
-\begin_inset Formula $G$
+, entonces
+\begin_inset Formula $Pj$
\end_inset
-, que tendrá longitud al menos 2, añadiendo
-\begin_inset Formula $(u,v)$
+ es un camino de
+\begin_inset Formula $s$
\end_inset
a
-\begin_inset Formula $E$
+\begin_inset Formula $j$
\end_inset
- tendríamos el ciclo
-\begin_inset Formula $P(v,u)$
+ y
+\begin_inset Formula $\ell(Pj)=\ell(P)+\ell(i,j)=d_{i}+\ell(i,j)\geq d_{j}$
\end_inset
.
- Claramente todo ciclo tiene que contener a
-\begin_inset Formula $(u,v)$
-\end_inset
-
-, pero como
-\begin_inset Formula $P$
-\end_inset
-
- es único, el ciclo es único.
\end_layout
-\begin_layout Description
-\begin_inset Formula $6\implies1]$
-\end_inset
+\begin_layout Enumerate
+\begin_inset Argument item:1
+status open
- Para ver que
-\begin_inset Formula $G$
+\begin_layout Plain Layout
+\begin_inset Formula $\impliedby]$
\end_inset
- es conexo, sean
-\begin_inset Formula $u,v\in V$
-\end_inset
-, si
-\begin_inset Formula $u$
-\end_inset
+\end_layout
- y
-\begin_inset Formula $v$
\end_inset
- son iguales o adyacentes no hay que hacer nada, y en otro caso, sea
-\begin_inset Formula $P$
+Sea
+\begin_inset Formula $P:=si_{1}\cdots i_{k}$
\end_inset
- el ciclo que se forma al añadir
-\begin_inset Formula $e:=(u,v)$
+ un camino, y queremos ver que
+\begin_inset Formula $d_{i_{k}}\leq\ell(P)$
\end_inset
- a
-\begin_inset Formula $E$
+.
+ Si
+\begin_inset Formula $k=0$
\end_inset
-, que debe contener a
-\begin_inset Formula $e$
+ esto se da por hipótesis, y supuesto esto probado para caminos de longitud
+
+\begin_inset Formula $k-1$
\end_inset
- y podemos suponer de la forma
-\begin_inset Formula $ee_{1}\cdots e_{k}$
+, como
+\begin_inset Formula $d_{i_{k}}-d_{i_{k-1}}\leq\ell(i_{k-1},i_{k})$
\end_inset
,
-\begin_inset Formula $e_{k}\cdots e_{1}$
-\end_inset
-
- es un camino de
-\begin_inset Formula $u$
-\end_inset
-
- a
-\begin_inset Formula $v$
+\begin_inset Formula $\ell(P)=\ell(si_{1}\cdots i_{k-1})+\ell(i_{k-1},i_{k})\geq d_{i_{k-1}}+d_{i_{k}}-d_{i_{k-1}}=d_{i_{k}}$
\end_inset
.
\end_layout
-\begin_layout Standard
-Todo árbol de orden al menos 2 tiene dos hojas.
- En efecto, sea
-\begin_inset Formula $T=(V,E)$
-\end_inset
-
- un árbol de orden
-\begin_inset Formula $n\geq2$
-\end_inset
-
- y tamaño
-\begin_inset Formula $m=n-1$
+\end_deeper
+\begin_layout Enumerate
+Si
+\begin_inset Formula $\ell(e)\geq0$
\end_inset
- con
-\begin_inset Formula $h$
+ para todo
+\begin_inset Formula $e\in E$
\end_inset
- hojas,
-\begin_inset Formula
-\[
-2n-2=2(n-1)=\sum_{v\in V}o(v)=\sum_{v\text{ hoja}}1+\sum_{v\text{ no hoja}}o(v)\geq h+2(n-h)=2n-h,
-\]
-
+, sea
+\begin_inset Formula $R\subseteq V\setminus\{s\}$
\end_inset
-y despejando es
-\begin_inset Formula $h\geq2$
+ tal que, para
+\begin_inset Formula $i\notin R$
\end_inset
-.
-\end_layout
-
-\begin_layout Standard
-Un
-\series bold
-árbol con raíz
-\series default
- o
-\series bold
-enraizado
-\series default
- es un par
-\begin_inset Formula $(T,r)$
+,
+\begin_inset Formula $d_{i}$
\end_inset
- donde
-\begin_inset Formula $T=:(V,E)$
+ es la longitud de un camino más corto de
+\begin_inset Formula $s$
\end_inset
- es un árbol y
-\begin_inset Formula $r\in V$
+ a
+\begin_inset Formula $i$
\end_inset
- es la
-\series bold
-raíz
-\series default
-.
- Entonces un
-\series bold
-nudo
-\series default
- es un nodo del árbol que distinto de la raíz que no es hoja.
- Dados
-\begin_inset Formula $u,v\in V$
+ y, para
+\begin_inset Formula $i\in R$
\end_inset
- distintos, si el único camino de
-\begin_inset Formula $v$
+,
+\begin_inset Formula $d_{i}=\min_{j\in N(i)\setminus R}(d_{j}+\ell(j,i))$
\end_inset
- a la raíz contiene a
-\begin_inset Formula $u$
+, sea
+\begin_inset Formula $j\in R$
\end_inset
-,
-\begin_inset Formula $u$
+ con
+\begin_inset Formula $d_{j}=\min_{i\in R}d_{i}$
\end_inset
- es
-\series bold
-predecesor
-\series default
- de
-\begin_inset Formula $v$
+, entonces
+\begin_inset Formula $d_{j}$
\end_inset
- y
-\begin_inset Formula $v$
+ es la longitud de un camino más corto de
+\begin_inset Formula $s$
\end_inset
- es
-\series bold
-sucesor
-\series default
- de
-\begin_inset Formula $u$
+ a
+\begin_inset Formula $j$
\end_inset
.
- El nodo
-\series bold
-padre
-\series default
- de un nodo es su único predecesor adyacente, y sus nodos
-\series bold
-hijo
-\series default
- son sus sucesores adyacentes.
\end_layout
+\begin_deeper
\begin_layout Standard
-Dos nodos
-\begin_inset Formula $u$
+Sean
+\begin_inset Formula $P:=st_{1}\cdots t_{p}j$
\end_inset
- y
-\begin_inset Formula $v$
+ un camino de
+\begin_inset Formula $s$
\end_inset
- son
-\series bold
-comparables
-\series default
- si son iguales o uno es sucesor de otro.
- El
-\series bold
-nivel
-\series default
- de un nodo es la longitud del único camino del nodo a la raíz, y la
-\series bold
-altura
-\series default
- del árbol es el nivel máximo de sus nodos.
-\end_layout
-
-\begin_layout Section
-Árboles binarios
-\end_layout
-
-\begin_layout Standard
-Un
-\series bold
-árbol binario
-\series default
- es un árbol con raíz en que todos los nodos tienen grado 1 o 3 excepto
- la raíz, que tiene grado 2.
- Propiedades: Sea
-\begin_inset Formula $T$
-\end_inset
-
- un árbol binario de orden
-\begin_inset Formula $n$
+ a
+\begin_inset Formula $j$
\end_inset
-:
-\end_layout
-
-\begin_layout Enumerate
-\begin_inset Formula $n$
+ e
+\begin_inset Formula $i$
\end_inset
- es impar y al menos 3.
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-Sea
-\begin_inset Formula $T=:(V,E,r)$
+ tal que
+\begin_inset Formula $s,t_{1},\dots,t_{i}\notin R$
\end_inset
-, como
-\begin_inset Formula $\sum_{v\in V}o(v)=2+\sum_{v\in V\setminus\{r\}}o(v)$
+ y
+\begin_inset Formula $t_{k:=i+1},\dots,t_{p},j\in R$
\end_inset
- es par y
-\begin_inset Formula $o(v)$
+, entonces
+\begin_inset Formula $P':=st_{1}\cdots t_{i}t_{k}$
\end_inset
- es impar para
-\begin_inset Formula $v\in V\setminus\{r\}$
+ cumple
+\begin_inset Formula $d_{i}+\ell(i,k)\leq\ell(P')\leq\ell(P)$
\end_inset
-,
-\begin_inset Formula $|V\setminus\{r\}|$
+, pero por hipótesis
+\begin_inset Formula $d_{k}=\min_{j\in N(i)\setminus R}(d_{j}+\ell(j,i))\leq d_{i}+\ell(i,k)$
\end_inset
- es par y por tanto
-\begin_inset Formula $n$
+, luego
+\begin_inset Formula $d_{k}$
\end_inset
- es impar.
- Para
-\begin_inset Formula $n\geq3$
+ es cota inferior de las longitudes de caminos de
+\begin_inset Formula $s$
\end_inset
-, como
-\begin_inset Formula $o(r)=2$
+ a
+\begin_inset Formula $j$
\end_inset
-,
-\begin_inset Formula $2\leq|E|=n-1$
+ y por tanto
+\begin_inset Formula $d_{j}$
\end_inset
-.
+ también.
\end_layout
\end_deeper
-\begin_layout Enumerate
-\begin_inset Formula $T$
-\end_inset
-
- tiene
-\begin_inset Formula $\frac{n+1}{2}$
-\end_inset
-
- nodos hoja y
-\begin_inset Formula $\frac{n-3}{2}$
-\end_inset
-
- nudos.
-\end_layout
-
-\begin_deeper
\begin_layout Standard
-Si
-\begin_inset Formula $T$
-\end_inset
-
- tiene
-\begin_inset Formula $h$
-\end_inset
-
- hojas, tiene
-\begin_inset Formula $n-h-1$
-\end_inset
-
- nudos y
-\begin_inset Formula $2n-2=\sum_{v\in V}o(v)=2+h+3(n-h-1)=3n-2h-1$
-\end_inset
+Esto justifica el
+\series bold
+algoritmo de Dijkstra
+\series default
+ (algoritmo
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "alg:dijkstra"
+plural "false"
+caps "false"
+noprefix "false"
-, luego
-\begin_inset Formula $2h=n+1$
\end_inset
-,
-\begin_inset Formula $h=\frac{n+1}{2}$
-\end_inset
+).
+ Otro algoritmo para calcular longitudes mínimas es el
+\series bold
+algoritmo de Dantzig
+\series default
+ (algoritmo
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "alg:dantzig"
+plural "false"
+caps "false"
+noprefix "false"
- y hay
-\begin_inset Formula $n-h-1=n-\frac{n+1}{2}-1=\frac{n-3}{2}$
\end_inset
- nudos.
+).
\end_layout
-\end_deeper
-\begin_layout Enumerate
-La altura de
-\begin_inset Formula $T$
-\end_inset
-
- está entre
-\begin_inset Formula $\lceil\lg(n+1)-1\rceil$
-\end_inset
-
- y
-\begin_inset Formula $\frac{n-1}{2}$
-\end_inset
-
-, y estos extremos son alcanzables.
-\begin_inset Foot
+\begin_layout Standard
+\begin_inset Float algorithm
+wide false
+sideways false
status open
\begin_layout Plain Layout
-\begin_inset Formula $\lg x:=\log_{2}x$
-\end_inset
-
-.
-\end_layout
+\begin_inset ERT
+status open
-\end_inset
+\begin_layout Plain Layout
+\backslash
+Entrada{Red $(
+\backslash
+{1,
+\backslash
+dots,n
+\backslash
+},E,
+\backslash
+ell)$ con $
+\backslash
+ell(E)
+\backslash
+in
+\backslash
+mathbb{R}^{
+\backslash
+geq0}$ y $s
+\backslash
+in
+\backslash
+{1,
+\backslash
+dots,n
+\backslash
+}$.}
\end_layout
-\begin_deeper
-\begin_layout Standard
-Todos los niveles hasta el
-\begin_inset Formula $h$
-\end_inset
-
- de un árbol de altura
-\begin_inset Formula $h$
-\end_inset
+\begin_layout Plain Layout
-, salvo el nivel 0, tienen al menos 2 nodos, luego su orden mínimo es
-\begin_inset Formula $2h+1$
-\end_inset
-, pero
-\begin_inset Formula $n\geq2h+1\iff h\leq\frac{n-1}{2}$
-\end_inset
+\backslash
+Salida{Tuplas $(d_1,
+\backslash
+dots,d_n)$ y $(p_1,
+\backslash
+dots,p_n)$ tales que, para cada $i$, $d_i$ es la longitud de un camino más
+ corto de $s$ a $i$ y, para $i
+\backslash
+neq s$, $p_i$ es el penúltimo nodo de dicho camino.}
+\end_layout
-.
- Como
-\begin_inset Formula $\frac{n-1}{2}\in\mathbb{Z}$
-\end_inset
+\begin_layout Plain Layout
-, la igualdad
-\begin_inset Formula $h=\frac{n-1}{2}$
-\end_inset
+$d
+\backslash
+gets(+
+\backslash
+infty,
+\backslash
+dots,+
+\backslash
+infty)$
+\backslash
+;
+\end_layout
- se alcanza en
-\begin_inset Formula $T':=(V',E')$
-\end_inset
+\begin_layout Plain Layout
- dado por
-\begin_inset Formula $V':=\{b_{0},a_{1},b_{1},\dots,a_{h},b_{h}\}$
-\end_inset
+$p
+\backslash
+gets(0,
+\backslash
+dots,0)$
+\backslash
+;
+\end_layout
- y
-\begin_inset Formula $E':=\{(a_{k},b_{k-1}),(b_{k},b_{k-1})\}_{k\in\{1,\dots,h\}}$
-\end_inset
+\begin_layout Plain Layout
-.
+$R
+\backslash
+gets
+\backslash
+{1,
+\backslash
+dots,n
+\backslash
+}
+\backslash
+setminus
+\backslash
+{s
+\backslash
+}$
+\backslash
+;
\end_layout
-\begin_layout Standard
-Como en cada nivel puede haber como máximo el doble de nodos que en el nivel
- anterior, en el nivel
-\begin_inset Formula $k$
-\end_inset
+\begin_layout Plain Layout
- hay un máximo de
-\begin_inset Formula $2^{k}$
-\end_inset
+$d_s
+\backslash
+gets0$
+\backslash
+;
+\end_layout
- vértices, de modo que un árbol de altura
-\begin_inset Formula $h$
-\end_inset
+\begin_layout Plain Layout
- tiene un máximo de
-\begin_inset Formula $\sum_{k=0}^{h}2^{k}=2^{h+1}-1$
-\end_inset
-, pero
-\begin_inset Formula
-\[
-n\leq2^{h+1}-1\iff n+1\leq2^{h+1}\iff\lg(n+1)-1\leq h\overset{h\in\mathbb{Z}}{\iff}h\geq\lceil\lg(n+1)-1\rceil.
-\]
+\backslash
+lPara{$i
+\backslash
+in N(s)$}{$p_i
+\backslash
+gets s$}
+\backslash
+;
+\end_layout
-\end_inset
+\begin_layout Plain Layout
- La igualdad se alcanza en
-\begin_inset Formula $T':=(V',E')$
-\end_inset
- con
-\begin_inset Formula $V':=\{1,\dots,n\}$
-\end_inset
+\backslash
+Mientras{$R
+\backslash
+neq
+\backslash
+emptyset$}{
+\end_layout
- y
-\begin_inset Formula $E':=\{(k,\lfloor\frac{k}{2}\rfloor)\}_{k\in\{2,\dots,n\}}$
-\end_inset
+\begin_layout Plain Layout
-.
+ Tomar $j
+\backslash
+in R$ con $d_j$ mínimo
+\backslash
+;
\end_layout
-\end_deeper
-\begin_layout Section
-Árboles generadores mínimos
+\begin_layout Plain Layout
+
+ $R
+\backslash
+gets R
+\backslash
+setminus
+\backslash
+{j
+\backslash
+}$
+\backslash
+;
\end_layout
-\begin_layout Standard
-Una
-\series bold
-red
-\series default
- es una terna
-\begin_inset Formula $(V,E,\ell)$
-\end_inset
+\begin_layout Plain Layout
- donde
-\begin_inset Formula $(V,E)$
-\end_inset
+
+\backslash
+Para{$i
+\backslash
+in N(j)
+\backslash
+cap R$}{
+\end_layout
- es un grafo y
-\begin_inset Formula $\ell:E\to\mathbb{R}$
-\end_inset
+\begin_layout Plain Layout
- es la
-\series bold
-función de peso
-\series default
- o
-\series bold
-de longitud
-\series default
-.
- Dados una red conexa
-\begin_inset Formula $G=(V,E,\ell)$
-\end_inset
+
+\backslash
+SSi{$d_j+
+\backslash
+ell(j,i)<d_i$}{
+\end_layout
- y un árbol generador
-\begin_inset Formula $T=(V,E')$
-\end_inset
+\begin_layout Plain Layout
- de
-\begin_inset Formula $G$
-\end_inset
+ $d_i
+\backslash
+gets d_j+
+\backslash
+ell(j,i)$
+\backslash
+;
+\end_layout
-, el
-\series bold
-peso
-\series default
- del árbol es
-\begin_inset Formula
-\[
-\ell(T):=\sum_{e\in E'}\ell(e).
-\]
+\begin_layout Plain Layout
-\end_inset
+ $p_i
+\backslash
+gets j$
+\backslash
+;
+\end_layout
+\begin_layout Plain Layout
-\begin_inset Formula $T$
-\end_inset
+ }
+\end_layout
- es un árbol generador
-\series bold
-minimal
-\series default
- o
-\series bold
-mínimo
-\series default
- si tiene el mínimo peso entre los árboles generadores de
-\begin_inset Formula $G$
-\end_inset
+\begin_layout Plain Layout
-, si y sólo si para
-\begin_inset Formula $a\in E\setminus E'$
-\end_inset
+ }
+\end_layout
- y
-\begin_inset Formula $e\in E'$
-\end_inset
+\begin_layout Plain Layout
- en el único camino de
-\begin_inset Formula $u$
-\end_inset
+}
+\end_layout
- a
-\begin_inset Formula $v$
\end_inset
- en
-\begin_inset Formula $T$
-\end_inset
- es
-\begin_inset Formula $\ell(e)\leq\ell(a)$
-\end_inset
+\end_layout
-, si y sólo si para
-\begin_inset Formula $e\in E'$
-\end_inset
+\begin_layout Plain Layout
+\begin_inset Caption Standard
- que separa
-\begin_inset Formula $T$
-\end_inset
+\begin_layout Plain Layout
+\begin_inset CommandInset label
+LatexCommand label
+name "alg:dijkstra"
- en componentes conexas
-\begin_inset Formula $V_{1}$
\end_inset
- y
-\begin_inset Formula $V_{2}$
-\end_inset
+Algoritmo de Dijkstra.
+\end_layout
- y
-\begin_inset Formula $a\in\omega_{G}(V_{1})$
\end_inset
- es
-\begin_inset Formula $\ell(e)\leq\ell(a)$
-\end_inset
-.
\end_layout
-\begin_layout Description
-\begin_inset Formula $1\implies2]$
\end_inset
- Si fuera
-\begin_inset Formula $\ell(a)<\ell(e)$
-\end_inset
-, como el grafo
-\begin_inset Formula $(V,E'\cup\{a\}\setminus\{e\})$
-\end_inset
+\end_layout
- es un árbol al ser conexo y acíclico, y su peso sería menor que el de
-\begin_inset Formula $T$
-\end_inset
+\begin_layout Standard
+\begin_inset Float algorithm
+wide false
+sideways false
+status open
-,
-\begin_inset Formula $T$
-\end_inset
+\begin_layout Plain Layout
+\begin_inset ERT
+status open
- no sería minimal.
-\begin_inset Formula $\#$
-\end_inset
+\begin_layout Plain Layout
+\backslash
+Entrada{Red $(V:=
+\backslash
+{1,
+\backslash
+dots,n
+\backslash
+},E,
+\backslash
+ell)$.}
\end_layout
-\begin_layout Description
-\begin_inset Formula $2\implies3]$
-\end_inset
-
- Sean
-\begin_inset Formula $e\in T$
-\end_inset
+\begin_layout Plain Layout
-,
-\begin_inset Formula $V_{1}$
-\end_inset
- y
-\begin_inset Formula $V_{2}$
-\end_inset
+\backslash
+Salida{Matrices $D
+\backslash
+in{
+\backslash
+cal M}_n(
+\backslash
+mathbb R
+\backslash
+cup
+\backslash
+{+
+\backslash
+infty
+\backslash
+})$ y $P
+\backslash
+in{
+\backslash
+cal M}_n(V)$ tales que para $i,j
+\backslash
+in V$, si $i$ y $j$ están desconectados, $D_{ij}=+
+\backslash
+infty$, y si están conectados, $D_{ij}$ es la longitud de un camino más
+ corto de $i$ a $j$ y $P_{ij}$ es su penúltimo nodo, o $i$ si $i=j$ y el
+ camino es el trivial.}
+\end_layout
- las componentes conexas de
-\begin_inset Formula $T-e$
-\end_inset
+\begin_layout Plain Layout
-, y
-\begin_inset Formula $u\in V_{1}$
-\end_inset
+%
+\end_layout
- y
-\begin_inset Formula $v\in V_{2}$
-\end_inset
+\begin_layout Plain Layout
- tales que
-\begin_inset Formula $a:=(u,v)\in E$
-\end_inset
+% N.B.: La idea del algoritmo es que, en cada iteración de $k$, calcula las
+\end_layout
-, si
-\begin_inset Formula $a=e$
-\end_inset
+\begin_layout Plain Layout
- hemos terminado, y en otro caso
-\begin_inset Formula $a\in E\setminus E'$
-\end_inset
+% distancias a $k$ en el subgrafo generado por $
+\backslash
+{1,
+\backslash
+dots,k
+\backslash
+}$ a partir de
+\end_layout
- y
-\begin_inset Formula $e$
-\end_inset
+\begin_layout Plain Layout
- está en el único camino que conecta
-\begin_inset Formula $u$
-\end_inset
+% las distancias entre nodos en el subgrafo generado por $
+\backslash
+{1,
+\backslash
+dots,k-1
+\backslash
+}$,
+\end_layout
- con
-\begin_inset Formula $v$
-\end_inset
+\begin_layout Plain Layout
- en
-\begin_inset Formula $T$
-\end_inset
+% y a continuación actualiza las distancias entre los nodos $1,
+\backslash
+dots,k-1$
+\end_layout
-, luego
-\begin_inset Formula $\ell(e)\leq\ell(a)$
-\end_inset
+\begin_layout Plain Layout
-.
+% comprobando si hay un camino más corto pasando por $k$.
\end_layout
-\begin_layout Description
-\begin_inset Formula $3\implies1]$
-\end_inset
-
- Elegimos un árbol generador minimal
-\begin_inset Formula $T_{0}=(V,E_{0})$
-\end_inset
+\begin_layout Plain Layout
-.
- Si
-\begin_inset Formula $T=T_{0}$
-\end_inset
+%
+\end_layout
-, hemos terminado.
- En otro caso, como
-\begin_inset Formula $|E'|=|E_{0}|$
-\end_inset
+\begin_layout Plain Layout
-, existe
-\begin_inset Formula $e\in E'\setminus E_{0}$
-\end_inset
-.
- Sean
-\begin_inset Formula $V_{1}$
-\end_inset
+\backslash
+Para{$i,j
+\backslash
+in V$}{
+\end_layout
- y
-\begin_inset Formula $V_{2}$
-\end_inset
+\begin_layout Plain Layout
- las componentes conexas de
-\begin_inset Formula $T-e$
-\end_inset
+ $P_{ij}
+\backslash
+gets i$
+\backslash
+;
+\end_layout
- y
-\begin_inset Formula $S:=(V,E_{0}\cup\{e\})$
-\end_inset
+\begin_layout Plain Layout
-, como
-\begin_inset Formula $S$
-\end_inset
+
+\backslash
+lSSi{$i=j$}{$D_{ij}
+\backslash
+gets0$}
+\end_layout
- tiene un ciclo que contiene a
-\begin_inset Formula $e\in\omega_{T}(V_{1})$
-\end_inset
+\begin_layout Plain Layout
-, debe contener a otro
-\begin_inset Formula $a\in\omega_{T}(V_{1})\cap E_{0}$
-\end_inset
+
+\backslash
+lEnOtroCaso{$D_{ij}
+\backslash
+gets+
+\backslash
+infty$}
+\end_layout
-, luego por hipótesis
-\begin_inset Formula $\ell(e)\leq\ell(a)$
-\end_inset
+\begin_layout Plain Layout
- y
-\begin_inset Formula $T_{1}:=(V,E_{1}:=E_{0}\cup\{e\}\setminus\{a\})$
-\end_inset
+}
+\end_layout
- tiene menor o igual (en concreto igual) peso que
-\begin_inset Formula $T_{0}$
-\end_inset
+\begin_layout Plain Layout
- pero que se diferencia de
-\begin_inset Formula $T$
-\end_inset
- en un nodo menos que
-\begin_inset Formula $T_{0}$
-\end_inset
+\backslash
+Para{$k
+\backslash
+gets 2$
+\backslash
+KwA $n$}{
+\end_layout
-.
- Repitiendo este proceso llegamos a que
-\begin_inset Formula $T_{0}$
-\end_inset
+\begin_layout Plain Layout
- tiene el mismo peso que
-\begin_inset Formula $T$
-\end_inset
+
+\backslash
+Para{$i
+\backslash
+gets 1$
+\backslash
+KwA $k-1$}{
+\end_layout
- y por tanto
-\begin_inset Formula $T$
-\end_inset
+\begin_layout Plain Layout
- es minimal.
+ Tomar $j
+\backslash
+in
+\backslash
+{1,
+\backslash
+dots,k-1
+\backslash
+}$ con $D_{ij}+
+\backslash
+ell(j,k)$ mínimo (si $(j,k)
+\backslash
+notin E$, $
+\backslash
+ell(j,k):=+
+\backslash
+infty$)
+\backslash
+;
\end_layout
-\begin_layout Standard
-\begin_inset Float algorithm
-wide false
-sideways false
-status open
-
\begin_layout Plain Layout
-\begin_inset ERT
-status open
-\begin_layout Plain Layout
+ $D_{ki}
+\backslash
+gets D_{ik}
+\backslash
+gets D_{ij}+
+\backslash
+ell(j,k)$
+\backslash
+;
+\end_layout
+\begin_layout Plain Layout
+ $P_{ik}
\backslash
-Entrada{Red conexa $G=(V,E,
+gets j$
\backslash
-ell)$.}
+;
\end_layout
\begin_layout Plain Layout
-
+
+\backslash
+lSSi{$j=i$}{$P_{ki}
\backslash
-Salida{Árbol generador minimal $(V,T)$ de $G$.}
+gets k$}
\end_layout
\begin_layout Plain Layout
-Ordenar los nodos de $E$ en orden creciente de peso $
+
\backslash
-ell$ en la lista $L$
+lEnOtroCaso{$P_{ki}
\backslash
-;
+gets P_{ji}$}
+\end_layout
+
+\begin_layout Plain Layout
+
+ }
\end_layout
\begin_layout Plain Layout
-$T
+
\backslash
-gets
+Para{$i,j
\backslash
-emptyset$
+gets 1$
\backslash
-;
+KwA $k-1$}{
\end_layout
\begin_layout Plain Layout
-
+
\backslash
-Para{$i
+SSi{$D_{ij}>D_{ik}+D_{kj}$}{
+\end_layout
+
+\begin_layout Plain Layout
+
+ $D_{ij}
\backslash
-gets1$
+gets D_{ik}+D_{kj}$
\backslash
-KwA $|L|$}{
+;
\end_layout
\begin_layout Plain Layout
- $(u,v)
+ $P_{ij}
\backslash
-gets L_i$
+gets P_{kj}$
\backslash
;
\end_layout
\begin_layout Plain Layout
-
-\backslash
-lSSi{no existe un camino de $u$ a $v$ en $(V,T)$}{añadir $L_i$ a $T$}
+ }
+\end_layout
+
+\begin_layout Plain Layout
+
+ }
\end_layout
\begin_layout Plain Layout
@@ -1235,11 +1033,11 @@ lSSi{no existe un camino de $u$ a $v$ en $(V,T)$}{añadir $L_i$ a $T$}
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
-name "alg:kruskal"
+name "alg:dantzig"
\end_inset
-Algoritmo de Kruskal.
+Algoritmo de Dantzig.
\end_layout
\end_inset
@@ -1252,36 +1050,148 @@ Algoritmo de Kruskal.
\end_layout
+\begin_layout Section
+Tours eulerianos
+\end_layout
+
\begin_layout Standard
-El
+Dado un grafo
+\begin_inset Formula $G=(V,E)$
+\end_inset
+
+, un
\series bold
-algoritmo de Kruskal
+tour
+\series default
+ o
+\series bold
+recorrido euleriano
+\series default
+ es un paseo cerrado que atraviesa cada eje del grafo exactamente una vez.
+ Un grafo es
+\series bold
+euleriano
+\series default
+ si admite un recorrido euleriano.
+ Como
+\series bold
+teorema
+\series default
+, un grafo conexo es euleriano si y solo si todos los vértices tiene orden
+ par, en cuyo caso se puede obtener un tour euleriano con el
+\series bold
+algoritmo de Hierholzer
\series default
(algoritmo
\begin_inset CommandInset ref
LatexCommand ref
-reference "alg:kruskal"
+reference "alg:hierholzer"
plural "false"
caps "false"
noprefix "false"
\end_inset
-) construye el árbol generador minimal de una red conexa, pues se asegura
- de que todo par de vértices adyacentes de la red estén conectados en el
- árbol, no crea ciclos y, si una arista
-\begin_inset Formula $(u,v)$
+).
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+\begin_inset Formula $\implies]$
\end_inset
- queda fuera del árbol, todas las aristas del camino de
-\begin_inset Formula $u$
+
+\end_layout
+
\end_inset
- a
+Sean
+\begin_inset Formula $T$
+\end_inset
+
+ un tour euleriano,
+\begin_inset Formula $v\in V$
+\end_inset
+
+ y
+\begin_inset Formula $e_{1},\dots,e_{k}$
+\end_inset
+
+ los ejes adyacentes a
+\begin_inset Formula $v$
+\end_inset
+
+, cada eje está en
+\begin_inset Formula $T$
+\end_inset
+
+ exactamente una vez y puede ser entrante (el siguiente nodo es
\begin_inset Formula $v$
\end_inset
- en el árbol ya habían sido consideradas y por tanto tienen peso menor.
+) o saliente (lo es el anterior), pero a todo eje entrante le sigue uno
+ saliente y a todo saliente le precede uno entrante (podemos suponer que
+
+\begin_inset Formula $T$
+\end_inset
+
+ no empieza por
+\begin_inset Formula $v$
+\end_inset
+
+), luego el número de entrantes y salientes es el mismo y
+\begin_inset Formula $k$
+\end_inset
+
+ es par.
+\end_layout
+
+\begin_layout Itemize
+\begin_inset Argument item:1
+status open
+
+\begin_layout Plain Layout
+\begin_inset Formula $\impliedby]$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+Claramente el algoritmo de Hierholzer toma cada eje exactamente una vez,
+ crea un paseo cerrado y termina, y queda ver que no da errores.
+ Si queda algún eje por tomar, alguno debe ser adyacente a un nodo en
+\begin_inset Formula $P$
+\end_inset
+
+, pues de lo contrario los nodos y ejes de
+\begin_inset Formula $P$
+\end_inset
+
+ formarían una componente conexa y, al haber más ejes,
+\begin_inset Formula $G$
+\end_inset
+
+ sería disconexo.
+\begin_inset Formula $\#$
+\end_inset
+
+ Respecto al paso de tomar un eje, en la primera iteración hemos tomado
+ un nodo de forma que se pueda, y en el resto hemos tomado un número par
+ de ejes adyacentes a
+\begin_inset Formula $i$
+\end_inset
+
+ como ejes entrantes y salientes más el nodo usado para entrar, y como el
+ orden es par, debe quedar otro eje sin añadir a
+\begin_inset Formula $P$
+\end_inset
+
+.
\end_layout
\begin_layout Standard
@@ -1298,21 +1208,20 @@ status open
\backslash
-Entrada{Red conexa $G=(V,E,
-\backslash
-ell)$.}
+Entrada{Grafo $G=(V,E)$ conexo en el que todos los vértices tienen orden
+ par.}
\end_layout
\begin_layout Plain Layout
\backslash
-Salida{Árbol generador minimal $(V,T)$ de $G$.}
+Salida{Tour euleriano $P$ de $G$.}
\end_layout
\begin_layout Plain Layout
-Tomar $r
+Elegir $s
\backslash
in V$
\backslash
@@ -1321,73 +1230,91 @@ in V$
\begin_layout Plain Layout
-$V_1
+$P
\backslash
-gets
-\backslash
-{r
-\backslash
-}$
+gets(s)$
\backslash
;
\end_layout
\begin_layout Plain Layout
-$V_2
+
\backslash
-gets V
+Mientras{$E
\backslash
-setminus
+neq
\backslash
-{r
-\backslash
-}$
+emptyset$}{
+\end_layout
+
+\begin_layout Plain Layout
+
+ Tomar un nodo $i$ en $P$ adyacente a algún eje
\backslash
;
\end_layout
\begin_layout Plain Layout
-$T
+ $k
\backslash
-gets
-\backslash
-emptyset$
+gets i$
\backslash
;
\end_layout
\begin_layout Plain Layout
-
+ $P_0
\backslash
-Mientras{$|V_1|<|V|$}{
+gets(i)$
+\backslash
+;
\end_layout
\begin_layout Plain Layout
- Tomar $v_1
+
\backslash
-in V_1$ y $v_2
+Repetir{$i=k$}{
+\end_layout
+
+\begin_layout Plain Layout
+
+ Sacar un $(i,j)$ de $E$
\backslash
-in V_2$ con $e:=(v_1,v_2)
+;
+\end_layout
+
+\begin_layout Plain Layout
+
+ $P_0
\backslash
-in E$ de peso mínimo
+gets P_0j$
\backslash
;
\end_layout
\begin_layout Plain Layout
- Añadir $e$ a $T$
+ $i
+\backslash
+gets j$
\backslash
;
\end_layout
\begin_layout Plain Layout
- Mover $v_2$ de $V_2$ a $V_1$
+ }
+\end_layout
+
+\begin_layout Plain Layout
+
+ Con $P=:P_1kP_2$, hacer $P
+\backslash
+gets P_1P_0P_2$
\backslash
;
\end_layout
@@ -1408,11 +1335,11 @@ in E$ de peso mínimo
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
-name "alg:prim"
+name "alg:hierholzer"
\end_inset
-Algoritmo de Prim.
+Algoritmo de Hierholzer.
\end_layout
\end_inset
@@ -1426,43 +1353,146 @@ Algoritmo de Prim.
\end_layout
\begin_layout Standard
-El
+También se puede obtener un tour euleriano con el
\series bold
-algoritmo de Prim
+algoritmo de Fleury
\series default
(algoritmo
\begin_inset CommandInset ref
LatexCommand ref
-reference "alg:prim"
+reference "alg:fleury"
plural "false"
caps "false"
noprefix "false"
\end_inset
-) hace lo mismo, pues se asegura de que todos los vértices estén conectados
- a
-\begin_inset Formula $r$
+).
+
+\series bold
+Demostración:
+\series default
+ Es claro que si el algoritmo funciona genera un tour euleriano.
+ Sea
+\begin_inset Formula $s$
\end_inset
-, no crea ciclos porque no considera ejes cuyos vértices ya hayan sido conectado
-s en el árbol y, cuando selecciona una arista
-\begin_inset Formula $e$
+ el nodo inicial, cuando
+\begin_inset Formula $o(s)>0$
\end_inset
-, que estaría separando al árbol en
-\begin_inset Formula $V_{1}$
+,
+\begin_inset Formula $P$
\end_inset
- y
-\begin_inset Formula $V_{2}$
+ es un paseo que no repite ejes, por lo que todos los nodos salvo el primero
+ y el último tienen orden par (por ser
+\begin_inset Formula $G$
+\end_inset
+
+ euleriano) y, como estos dos tienen orden impar, se puede salir del último
+ añadiendo otro eje al camino en cada paso hasta llegar a
+\begin_inset Formula $s$
+\end_inset
+
+ y no poder salir, momento en que queremos ver que
+\begin_inset Formula $E=\emptyset$
+\end_inset
+
+.
+ Si no fuera así, al final existiría un
+\begin_inset Formula $e\in E$
+\end_inset
+
+ en una componente conexa de
+\begin_inset Formula $G$
+\end_inset
+
+ distinta a la de
+\begin_inset Formula $s$
+\end_inset
+
+, pero la conexión con
+\begin_inset Formula $s$
+\end_inset
+
+ salvo en nodos aislados es un invariante del bucle.
+ En efecto, al principio de una iteración,
+\begin_inset Formula $i$
+\end_inset
+
+ conecta con
+\begin_inset Formula $s$
+\end_inset
+
+ porque no es aislado y solo se rompe la conexión si se quita un eje de
+ corte, pero entonces todos los ejes adyacentes a
+\begin_inset Formula $i$
+\end_inset
+
+,
+\begin_inset Formula $(i,j_{1}),\dots,(i,j_{k})$
+\end_inset
+
+, serían de corte y
+\begin_inset Formula $G-i$
+\end_inset
+
+ tendría
+\begin_inset Formula $k$
+\end_inset
+
+ componentes conexas.
+ Sea entonces
+\begin_inset Formula $V_{p}$
+\end_inset
+
+ la componente conexa con
+\begin_inset Formula $j_{p}$
+\end_inset
+
+, si fuera
+\begin_inset Formula $s\notin V_{p}$
+\end_inset
+
+, como todos los nodos de
+\begin_inset Formula $V_{p}$
+\end_inset
+
+ tienen orden par salvo
+\begin_inset Formula $j_{p}$
+\end_inset
+
+ que tendría orden impar al haber eliminado
+\begin_inset Formula $(i,j_{p})$
\end_inset
-, se asegura de que tenga peso mínimo entre las aristas de
-\begin_inset Formula $\omega_{G}(V_{1})$
+, la suma de los órdenes sería impar
+\begin_inset Formula $\#$
+\end_inset
+
+, luego
+\begin_inset Formula $s\in V_{p}$
+\end_inset
+
+ y, como
+\begin_inset Formula $V_{1},\dots,V_{k}$
+\end_inset
+
+ es una partición,
+\begin_inset Formula $k=1$
\end_inset
.
+ Por tanto
+\begin_inset Formula $i$
+\end_inset
+
+ es un nodo hoja y eliminar el eje de corte deja a
+\begin_inset Formula $i$
+\end_inset
+
+ aislado.
\end_layout
\begin_layout Standard
@@ -1479,84 +1509,77 @@ status open
\backslash
-Entrada{Red conexa $(V,E,
-\backslash
-ell)$}
+Entrada{Grafo euleriano conexo $G=(V,E)$.}
\end_layout
\begin_layout Plain Layout
\backslash
-Salida{Árbol generador minimal $(V,T)$ de $G$.}
+Salida{Tour euleriano $P$ de $G$.}
\end_layout
\begin_layout Plain Layout
-$T
+Tomar $i
\backslash
-gets
-\backslash
-emptyset$
+in V$
\backslash
;
\end_layout
\begin_layout Plain Layout
-
+$P
\backslash
-Mientras{$(V,T)$ sea disconexo}{
-\end_layout
-
-\begin_layout Plain Layout
-
-
+gets(i)$
\backslash
-ParaCada{componente conexa $V_i$ de $(V,T)$}{
+;
\end_layout
\begin_layout Plain Layout
- Tomar $u_i
-\backslash
-in V_i$ y $v_i
-\backslash
-in V
+
\backslash
-setminus V_i$ con $(u_i,v_i)
+Mientras{$E
\backslash
-in E$ de peso mínimo
+neq
\backslash
-;
+emptyset$}{
\end_layout
\begin_layout Plain Layout
- }
+
+\backslash
+lSSi{existe $(i,j)
+\backslash
+in E$ que no sea de corte}{sacar $(i,j)$ de $E$}
\end_layout
\begin_layout Plain Layout
\backslash
-ParaCada{componente conexa $V_i$ de $(V,T)$}{
+lEnOtroCaso{sacar un $(i,j)$ de $E$}
\end_layout
\begin_layout Plain Layout
-
-\backslash
-lSSi{$u_i$ y $v_i$ no están conectados en $(V,T)$}{$T
+ $P
\backslash
-gets T
+gets Pj$
\backslash
-cup(u_i,v_i)$}
+;
\end_layout
\begin_layout Plain Layout
- }
+ $i
+\backslash
+gets j$
+\backslash
+;
\end_layout
\begin_layout Plain Layout
@@ -1575,11 +1598,11 @@ cup(u_i,v_i)$}
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
-name "alg:boruvka"
+name "alg:fleury"
\end_inset
-Algoritmo de Sollin.
+Algoritmo de Fleury.
\end_layout
\end_inset
@@ -1592,54 +1615,69 @@ Algoritmo de Sollin.
\end_layout
+\begin_layout Section
+Problema del cartero chino
+\end_layout
+
\begin_layout Standard
-Otro algoritmo para hacer esto es el
+Dada una red
+\begin_inset Formula $(V,E,\ell)$
+\end_inset
+
+, el
\series bold
-algoritmo de Sollin
+problema del cartero chino
\series default
- (algoritmo
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "alg:boruvka"
-plural "false"
-caps "false"
-noprefix "false"
+ consiste en obtener un paseo cerrado de longitud mínima que incluya todos
+ los ejes al menos una vez.
+ Para resolverlo:
+\end_layout
-\end_inset
+\begin_layout Enumerate
+Calculamos la longitud de los caminos más cortos entre cada par de nodos,
+ por ejemplo con el algoritmo de Dantzig.
+\end_layout
-)
-\begin_inset Foot
-status open
+\begin_layout Enumerate
+Identificamos los nodos de orden impar, de los que habrá un número par,
+ y los emparejamos minimizando la suma de las longitudes de los caminos
+ más cortos entre cada par.
+\end_layout
-\begin_layout Plain Layout
-Se recomienda comprobar la conexión de
-\begin_inset Formula $(V,T)$
-\end_inset
+\begin_layout Enumerate
+Duplicamos los ejes de un camino más corto entre cada par, obteniendo un
+ grafo euleriano.
+\end_layout
+
+\begin_layout Enumerate
+Obtenemos un tour euleriano, que será la solución.
+\end_layout
- manteniendo un conjunto cociente con las componentes conexas.
- Ver el capítulo 3 de los apuntes de AED I para más información.
+\begin_layout Section
+Grafos hamiltonianos
\end_layout
+\begin_layout Standard
+Dado un grafo
+\begin_inset Formula $G=(V,E)$
\end_inset
-.
- Finalmente, podemos calcular un árbol generador
+, un camino es
\series bold
-maximal
+hamiltoniano
\series default
- o
-\series bold
-máximo
-\series default
- de una red
-\begin_inset Formula $(V,E,\ell)$
-\end_inset
+ si contiene a todos los vértices.
+ Un grafo es hamiltoniano si admite un ciclo hamiltoniano.
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
- (el de mayor peso) como un árbol generador minimal de
-\begin_inset Formula $(V,E,-\ell)$
\end_inset
-, o invirtiendo el sentido de las comparaciones en los algoritmos anteriores.
+
\end_layout
\end_body