En realidad, la descripción completa y general de un problema que puede resolverse mediante un algoritmo codicioso es una incrustación matroide , que generaliza tanto el concepto de un matroide como el de un greedoide . La respuesta es no: un problema solucionable mediante un algoritmo codicioso no necesita tener una estructura matroide, pero tendrá la estructura de una incrustación matroide (que, por desgracia, es mucho más complicada).
Un modelo mental para algo de esto podría ser encontrar árboles de expansión mínima. La estructura utilizada por el algoritmo de Kruskal es matroide, pero la utilizada por el algoritmo de Prim (que requiere un nodo de inicio) no lo es. (Sin embargo, es un greedoid y una incrustación matroide).
( S, C)SCS f:2S→RS
El algoritmo codicioso, definido en términos de este formalismo, es bastante simple: comienza con el conjunto vacío y agrega sucesivamente un solo elemento hasta llegar a una base, siempre asegurándose de que (i) su conjunto sea factible en cada paso, y ( ii) el elemento que agrega maximiza la función objetivo del resultado resultante, wrt. Todos los elementos alternativos que podría haber agregado. (Es decir, conceptualmente, intentas agregar todas las alternativas posibles y eliges la que tenga el valor objetivo más alto).
Quizás podría argumentar que podría haber otras formas de algoritmo codicioso, pero hay varios libros de texto sobre algoritmos y optimización combinatoria que describen este algoritmo basado en un sistema de conjuntos como el algoritmo codicioso. Eso no te impide describir algo que no encaja, pero que aún podría llamarse codicioso, supongo. (Sin embargo, esto hace la cubierta cualquier cosa que podría tener una estructura matroide, por ejemplo, aunque es mucho más general.)
Lo que Helman et al. hacer es que describen cuándo funcionará este algoritmo. Más específicamente:
Muestran que para las funciones objetivas lineales (donde el valor objetivo es la suma de los pesos de los elementos), el algoritmo codicioso funcionará exactamente en la estructura que definen como una inserción matroide;
Dan una caracterización similar para los llamados objetivos de cuello de botella (donde el valor objetivo de un conjunto es igual al mínimo sobre los pesos de elementos individuales); y
Dan una caracterización exacta de qué funciones objetivas (más allá de las lineales) están optimizadas por el algoritmo codicioso en las incrustaciones matroides.