Un'algoritmo greedy, o appunto goloso, adotta una strategia per la quale è meglio un uovo oggi che una gallina domani. Detto in parole povere si prende la decisione che localmente, in un determinato instante, è ottima. Il problema di tutto questo è che, intraprendendo quella scelta, probabilmente, più avanti, ci ritroveremo a dovere prendere un'ulteriore scelta, sempre in quel momento ottima, che fa si che tutta la soluzione creatasi tramite scelte temporaneamente ottime non sia a sua volta ottima. Detto in parole ancora più povere: intraprendendo una scorciatoia potremmo ritrovarci a percorrere una strada più lunga.
Per potere prendere la giusta decisione dovremmo in pratica conoscere l'intera topologia della rete o meglio l'intero decorso della nostra vita.
Non facciamo altro che scegliere in base all'appetibilità delle cose: chi messo davanti ad una bivio sceglierebbe quella cosa che nel dato momento la convince meno delle altre? Che la attira di meno? Credo nessuno ed in caso contrario non parliamo sicuramente di lungimiranza ma di pazzia.
Dovremmo dunque agire in modo previdente? Accettare qualcosa di inaccettabile adesso per poi ritrovarci nel giro di niente davanti a qualcosa di decisamente appetibile? E in tal caso chi assicura che questo qualcosa di "decisamente appetibile" lo sia più di quello che avremmo incontrato accettando la scelta più allettante al momento?
Ieri in tv, ad affari tuoi, una signora alla fine della puntata si è ritrovata con un pacco da 20.000€ e uno da 1.000.000€. Le erano stati offerti 182.000€ per chiudere la questione e tornarsene a casa più ricca di quella cifra. La signora non ha accettato e il suo pacco conteneva "solo" 20mila euro. Un algoritmo goloso non avrebbe sbagliato, avrebbe preso la scelta giusta.
1 commenti:
Ti suggerisco la mia traduzione personale di "greedy", visto che secondo me algoritmo "goloso" non dice proprio niente. Io traduco algoritmo greedy con algoritgmo "di convenienza". La prossima scelta dell'algoritmo è dettata, per l'appunto, dalla convenienza locale. Ti aggiungo una considerazione: a tuo piacimento puoi usare "algoritmo greedy" per descrivere l'oppurtunità di prendere scelte rispetto ad altre nella vita reale, ma attento a non usare "algoritmo greedy" per descrivere un qualsiasi algoritmo che prende decisioni in base all'ottimo locale: per definizione un algoritmo greedy è un algoritmo che trova la soluzione ottima in tempo lineare rispetto alla dimensione del problema. Se il tuo algoritmo fa delle scelte in base all'ottimo locale ma non trova la soluzione ottima in tempo lineare allora non è propriamente un algoritmo greedy. Questo per dire che il problema "vita reale" probabilmente non ammette come soluzioni con "algoritmi greedy". Credo almeno, non l'ho dimostrato ;)
Posta un commento