Definizione [sistema di indipendenza]: un sistema di indipendenza è una coppia $\lang E,F \rang$ dove
Definizione [problema di ottimizzazione]:
Input: un sistema di indipendenza $\lang E, F \rang$ e una funzione peso $w:E \rarr \R^+$
Output: $M \in F$ tale che $\forall A \in F, \ w(A) \leq w(M)$
nota: $w(M)=\sum_{e \in M}w(e)$
greedy → goloso
Definiamo una procedura che prova a risolvere un problema di ottimizzazione cercando ad ogni passo di estendere una soluzione parziale aggiungendo un elemento localmente ottimo
Procedura Greedy(<E, F>, w){
set S;
S = emptyset();
while(!is_empty(E)){
m = max(E); //elemento massimo corrente
E = E \\ {m}; //toglilo da E
if(member(S+{m}, F)) add(m, S); //nuova soluzione
}
return S;
}
Ordinando gli elementi di E una volta per tutte otteniamo:
Procedura Greedy(<E,F>, w){
set S;
int i;
S = emptyset();
sort(E);
for(i = 1; i <= #E; i++)
if(member(S+{E[i]}, F)) add(E[i], S);
return S;
}
Costi: se $n= \#E$ allora