A partir de este artículo de Wikipedia:algoritmo probabilista para encontrar camino hamiltoniano en un grafo dirigido
http://en.wikipedia.org/wiki/Hamiltonian_path_problem
Un algoritmo aleatorio para el hamiltoniano camino que es rápido en la mayoría de los gráficos es lo siguiente: Inicio de una al azar vértice, y continuar si hay un vecino no visitado. Si no hay vecinos más no visitados, y la ruta formada no es hamiltoniana, elija un vecino uniformemente al azar, y gire utilizando ese vecino como pivote. (es decir, añadir un borde para que vecino, y eliminar una de las bordes existentes de ese vecino tan que no se forme un bucle.) A continuación, siguen el algoritmo en el nuevo extremo de la trayectoria .
No entiendo muy bien cómo se supone que funciona este proceso pivotante. ¿Alguien puede explicar este algoritmo con más detalle? Quizás podamos eventualmente actualizar el artículo de Wiki con una descripción más clara.
Edit 1: Creo que ahora entiendo el algoritmo, pero parece que solo funciona para gráficos no dirigidos. ¿Alguien puede confirmar eso?
Aquí es por lo que creo que sólo funciona para grafos no dirigidos:
alt text http://www.michaelfogleman.com/static/images/graph.png
pretensión Los vértices están numerados así:
123
456
789
Digamos que mi camino hasta ahora es: 9, 5, 4, 7, 8
. Todos los vecinos de 8 han sido visitados. Digamos que elijo 5 para eliminar un borde de. Si elimino (9, 5), acabo creando un ciclo: 5, 4, 7, 8, 5
, por lo que parece que tengo que eliminar (5, 4) y crear (8, 5). Si el gráfico no está dirigido, está bien y ahora mi camino es 9, 5, 8, 7, 4. Pero si imaginas que se dirigen esos bordes, no es necesariamente un camino válido, ya que (8, 5) es un borde pero (5, 8) podría no serlo.
Edición 2: supongo que para un grafo dirigido que podría crear la (8, 5) la conexión y luego dejar que el nuevo camino sea justo 4, 7, 8, 5
, pero que parece contraproducente ya que tengo que cortar todo lo que anteriormente se llevó hasta el vértice 5.
La ruta hamiltoniana existe (por definición) en gráficos no dirigidos. Cualquier algoritmo que los encuentre debe operar con gráficos no dirigidos. –
Bueno, el artículo de Wikipedia decía: "el problema de la ruta de Hamilton y el problema del ciclo de Hamilton son problemas para determinar si existe una ruta de Hamilton o un ciclo de Hamilton en un gráfico dado (ya sea dirigido o no dirigido)". Básicamente estoy buscando la ruta simple más larga (no hay vértices visitados más de una vez) que puedo encontrar en un gráfico dirigido. Ahora parece que este algoritmo no me ayudará. – FogleBird
Inconsistencia en Wikipedia: "... una ruta hamiltoniana (o ruta trazable), es una ruta en un gráfico no dirigido que visita cada vértice exactamente una vez. Un ciclo hamiltoniano (o circuito hamiltoniano) es un ciclo en un gráfico no dirigido que visita cada vértice exactamente una vez ... ". –