In realtà, la descrizione completa e generale di un problema che può essere risolto con un algoritmo avido è un incorporamento matroid , che generalizza sia il concetto di matroid che quello di un greedoid . La risposta è no: un problema risolvibile con un algoritmo avido non ha bisogno di una struttura matroide, ma avrà la struttura di un incorporamento matroide (che è, ahimè, molto più complicato).
Un modello mentale per alcuni di questi potrebbe essere trovare alberi di spanning minimi. La struttura utilizzata dall'algoritmo di Kruskal è un matroid, ma non quella utilizzata dall'algoritmo di Prim (che richiede un nodo iniziale). (È, tuttavia, un avidità - e un incorporamento matroid.)
Helman et al. (1993), nel loro articolo An Exact Characterization of Greedy Structures definiscono la loro nozione di algoritmo goloso in termini di sistemi di insiemi, che è lo stesso formalismo utilizzato per matroidi e greedoidi. Un sistema di insiemi costituito da un insieme e da una raccolta di sottoinsiemi di , i cosiddetti insiemi fattibili . Una base per il sistema dell'insieme è un insieme massimo fattibile, cioè un insieme che è fattibile ma non contenuto in nessun altro insieme fattibile. Una funzione oggettiva associa ogni sottoinsieme di a un valore. UnS C S f : 2 S → R S(S,C)SCS f:2S→RSIl problema dell'ottimizzazione , in questo formalismo, consiste nel trovare una base del massimo valore oggettivo per un determinato sistema e funzione obiettivo.
L'algoritmo avido, definito in termini di questo formalismo, è abbastanza semplice: inizi con l'insieme vuoto e aggiungi successivamente un singolo elemento fino a raggiungere una base, assicurando sempre che (i) l'insieme sia fattibile ad ogni passaggio e ( ii) l'elemento che aggiungi massimizza la funzione obiettiva del risultato risultante, wrt. tutti gli elementi alternativi che avresti potuto aggiungere. (Cioè, concettualmente, provi ad aggiungere tutte le alternative possibili e scegli quella che produce il valore oggettivo più alto.)
Potresti forse sostenere che potrebbero esserci altre forme di algoritmo avido, ma ci sono diversi libri di testo sugli algoritmi e l'ottimizzazione combinatoria che descrivono questo algoritmo basato su sistema impostato come l' algoritmo avido. Ciò non ti impedisce di descrivere qualcosa che non si adatta, ma potrei ancora essere chiamato avido, suppongo. (Eppure, questo fa la copertura tutto ciò che potrebbe potenzialmente avere una struttura matroide, per esempio, anche se è molto più generale.)
Cosa Helman et al. fare è che descrivono quando questo algoritmo funzionerà. Più specificamente:
Mostrano che per funzioni oggettive lineari (dove il valore oggettivo è la somma dei pesi degli elementi), l'algoritmo avido funzionerà esattamente sulla struttura che definiscono un incorporamento matroid;
Danno una caratterizzazione simile per i cosiddetti obiettivi di collo di bottiglia (in cui il valore obiettivo di un insieme è uguale al minimo sui pesi dei singoli elementi); e
Danno una caratterizzazione esatta di quali funzioni oggettive (oltre a quelle lineari) sono ottimizzate dall'algoritmo avido su matrimoni matroid.