Una parte de su problema puede ser causado por pensar en "problemas codiciosos". Hay algoritmos codiciosos y problemas donde hay un algoritmo codicioso, que conduce a una solución óptima. Hay otros problemas difíciles que también pueden resolverse mediante algoritmos codiciosos, pero el resultado no será necesariamente óptimo.
Por ejemplo, para el problema del empaquetamiento de bandejas, existen varios algoritmos codiciosos, todos ellos con mucha más complejidad que el algoritmo exponencial, pero solo puede estar seguro de que obtendrá una solución por debajo de un cierto umbral comparado a la solución óptima.
Solo con respecto a los problemas donde los algoritmos codiciosos darán lugar a una solución óptima, supongo que una prueba de corrección inductiva se siente totalmente natural y fácil. Por cada uno de sus pasos codiciosos, está bastante claro que esto fue lo mejor que se puede hacer.
Normalmente, los problemas con soluciones óptimas y codiciosas son fáciles de todos modos, y otros te obligarán a elaborar una heurística codiciosa, debido a limitaciones de complejidad. Por lo general, una reducción significativa mostraría que su problema es, al menos, NP-difícil y, por lo tanto, usted sabe que tendrá que encontrar una heurística. Para esos problemas, soy un gran fan de probar.Implemente su algoritmo e intente descubrir si las soluciones son "bastante buenas" (ideal si también tiene un algoritmo lento pero correcto con el que puede comparar los resultados, de lo contrario podría necesitar verdades terrestres creadas manualmente). Solo si tiene algo que funciona bien, trate de pensar por qué y tal vez incluso trate de encontrar pruebas de los límites. Quizás funcione, quizás descubras casos fronterizos en los que no funciona y necesita un refinamiento.
Creo que significaba" propiedad matroide "y no "monoid property". También podría ser más específico en la propiedad de "subestructura óptima" Conozco esta propiedad de la programación dinámica, donde descompone su problema en varios subproblemas y luego los recombina. Sin embargo, al observar el árbol de expansión mínimo, por ejemplo, es un momento difícil para ver cómo hay una similitud, ya que el algoritmo siempre sigue agregando a la solución anterior. – LiKao
Tienes razón, por supuesto quise decir matroid aquí. Se puede ver la subestructura MST si ves el problema como eliminar los bordes y tener que conectar el gráfico restante al conjunto de vértices ya incluidos. – Frank