Cómo explicar la prueba de corrección del algoritmo de árbol de expansión mínimo prims a un laico

Amo esa prueba. Para un lego, admito totalmente que es bastante técnico, pero es un excelente ejemplo de una prueba constructiva que utiliza diferentes definiciones de árbol y árboles de expansión. Supongo que estás hablando de la que está en este http://web.stanford.edu/class/ar…. Es muy bueno porque emplea un argumento de intercambio . Si estuviera hablando con alguien que no sabe casi nada, lo explicaría de esta manera (suponiendo que lo haya explicado la terminología y lo que hace el algoritmo de Prim):

  • Suponga que tiene un MST que tiene un costo menor que una solución producida por Prim’s. Tenga en cuenta que si son iguales, entonces no hay nada que hacer aquí, así que suponga que los dos árboles son diferentes.
  • Guíelos a través de cómo encontrar el borde de menor peso (y asegúrese de que sepan que la propiedad de elección codiciosa tiene y qué es eso). Esto es mediante el uso de algunas definiciones de árbol, como que debe existir una ruta entre cada dos vértices en un árbol de expansión. Esto es eligiendo una arista en la encontrada por el algoritmo de Prim e intercambiándola por otra arista a lo largo del camino en el supuesto mejor MST.
  • Observe que al elegir el nuevo borde como parte del MST (se supone que es óptimo), puede mejorar el costo aún más de lo que está en el MST antes mientras conserva el hecho de que es un árbol de expansión.
  • Repita hasta que no se puedan realizar más mejoras.
  • Vaya, mira, es el mismo que produce el algoritmo de Prim; contradicción.

Tenga en cuenta que, por lo general, es suficiente convencer a alguien después de 1 iteración de que el mejor MST supuesto se transformará en el árbol de expansión que encuentra el algoritmo de Prim.

More Interesting

¿Cómo visualizo el laberinto que estoy creando?

¿Cuáles son algunos proyectos que podrían realizarse utilizando estructuras de datos?

¿Qué tan rápido irá un bote de semi desplazamiento de 24.5 m LWL x 6.4 m con una viga de 80 t con 1200 hp? ¿Tiene actualmente 2700 hp y pesa 85 t y va a 34 kts?

Cómo ordenar matrices en C

¿Hay algún tutorial de algoritmos y estructuras de datos donde aprendas a través de los juegos?

¿Cómo se puede usar un algoritmo genético para clasificar las soluciones candidatas?

Cómo aprender algoritmos y programación competitiva de manera rápida y efectiva cuando te estás haciendo viejo

¿Existe una versión del problema de la mochila en la que haya una restricción sobre qué objetos se pueden colocar en la bolsa?

¿Utiliza el cerebro el algoritmo de propagación hacia atrás dado cómo se conectan las sinapsis secuencialmente?

Cómo probar la profundidad del primer recorrido utilizando listas de adyacencia

En la complejidad temporal de un algoritmo, ¿por qué puede considerarse útil que una operación elemental tome "tiempo unitario"?

¿Cuál es la mejor estructura y algoritmo de datos para encontrar un valor máximo dentro de un subconjunto de una población de datos que satisfaga alguna condición de rango?

¿Es posible aplicar de manera eficiente algoritmos de aprendizaje automático para problemas de optimización combinatoria?

¿Cuáles son algunas buenas ideas sobre proyectos en algoritmos y / o estructuras de datos?

¿Cuál es su opinión sobre Interview Cake para resolver algoritmos?