title: Algoritmo de Christofides
text: # Algoritmo de Christofides
  
  El algoritmo de Christofides es un algoritmo aproximado que permite resolver instancias del problema del viajante de comercio (designado convencionalmente por su acrónimo en inglés, TSP) en donde los pesos de las aristas del grafo satisfacen la desigualdad triangular. Fue desarrollado en 1976 por Nicos Christofides, profesor del Imperial College London.
  Supongamos que $G=(V,w)$ representa una instancia del TSP, en donde $G$ es un grafo completo definido por: un conjunto $V$ de vértices o nodos y una función $w$ que asocia un peso o valor real positivo a cada arista del grafo $G$.
  
  # Algoritmo de Christofides
  ## Descripción
  
  A continuación, se describen las fases del algoritmo en pseudocódigo:
  * Obtener el árbol recubridor mínimo T de G.
  * Sea O el conjunto de vértices de grado impar en T, hallar un apareamiento perfecto M de mínimo peso en el grafo completo sobre los vértices de O.
  * Combinar las aristas de M y T para crear el multigrafo H.
  * Obtener un ciclo euleriano en H (H se considera "euleriano" si es conexo y solo presenta vértices de grado par).
  * Obtener un ciclo hamiltoniano a partir del ciclo euleriano anterior, descartando los nodos visitados (shortcutting).
  
  # Algoritmo de Christofides
  ## Demostración
  
  El coste de la solución obtenida por el algoritmo es 3/2 de la solución óptima.
  La prueba es la siguiente:
  Sea A el conjunto de aristas de la solución óptima del TSP para G. Como (V,A) es conexo, contendrá varios árboles recubridores T, y por tanto, w(A) ≥ w(T). Además, sea B el conjunto de aristas de la solución óptima del TSP para el grafo completo sobre los vértices de O. Como los pesos asociados a las aristas son "triangulares" (visitar más nodos no reduce, en ningún caso, el coste total), se tiene que w(A) ≥ w(B). Se demuestra así que existe un apareamiento perfecto de vértices de O con peso tal que w(B)/2 ≤ w(A)/2, de forma que este límite constituye una cota superior para M (ya que M es un apareamiento perfecto de mínimo coste).
  Debido a que O debe contener un número par de vértices, existe apareamiento perfecto. Sea e$_1$, ..., e$_{2k}$ el (único) camino euleriano en (O,B). Es evidente que tanto e$_1$, e$_3$, ...,e$_{2k-1}$ como e$_2$, e$_4$, ..., e$_{2k}$ son apareamientos perfectos, y que el peso de (al menos) uno de ellos es menor o igual que w(B)/2. Así, se tiene que w(M)+w(T) ≤ w(A) + w(A)/2, y de la desigualdad triangular se deduce que el algoritmo se aproxima en 3/2 al óptimo.