mercoledì 29 dicembre 2010

Funzione ricorsiva

In informatica viene definita "ricorsiva" una funzione che, nello svolgimento del proprio algoritmo richiama se stessa per calcolare alcuni dei suoi valori. Si tratta di uno strumento informatico molto potente, ma naturalmente la chiamata di quella funzione dall'interno di se stessa deve essere condizionata da valori di input ragionevoli, altrimenti la funzione continuera' a richiamare se stessa all'infinito finendo per non riuscire a calcolare un bel niente.

Insomma, io dico che tu dici che lui dice che io dico che loro dicono che il telegiornale dice che le previsioni del tempo dicono che domani ci sara' il sole. Ci vuole una terminazione: domani ci sara' il sole, che e' il punto di quello che si vuole dire. Il resto spiega solo il ragionamento utilizzato per raggiungere quella conclusione.

Belpietro dice che qualcuno dice che qualcun altro, per conto di Fini, sta organizzando un mancato attentato contro Fini stesso per fare in modo che vengano accusati i berlusconiani, cosicche' Fini ne tragga vantaggio rubando punti di consenso popolare a Berlusconi.
Ora, in post precedenti ho ampiamente dimostrato la mia "antipatia" nei confronti di Fini, ma questa faccenda mi sembra davvero un po' troppo articolata perche' sia comprensibile al grande pubblico, me compreso. E compresi anche i lettori di Libero.

Voglio dire.
Belpietro dice che se dovesse avvenire un attentato, seppur mancato, nei confronti di Fini, sarebbe Berlusconi, in quanto suo avversario politico, ad essere accusato. E, per l'opinione pubblica, questo sarebbe un punto a favore di Fini.
Giustamente Belpietro aggiunge che - l'ho sentito con le mie orecchie al TG -, se ci fosse invece realmente un complotto dei berlusconiani per organizzare un attentato a Fini, aver rivelato questo complotto non farebbe altro che proteggere Fini. Ora che si sa che esiste questa trama, se ci fosse un attentato a Fini, la gente penserebbe che sia colpa dei finiani. E quindi sarebbe pubblicita' negativa per Fini. Nessun sano di mente finiano organizzerebbe una cosa del genere per dare la colpa a Berlusconi, visto che sarebbero incolpati i finiani stessi.

Uhm... pero'... la funzione e' ricorsiva! Ce l'ha suggerito lo stesso Belpietro!

Se e' vero che un finto attentato a Fini non sarebbe affatto a favore di Fini perche' dimostrerebbe vera la tesi di Belpietro, che punta preventivamente il dito contro i finiani, e' anche vero che quell'attentato sarebbe invece a favore di Berlusconi, perche' il dito dell'opinione pubblica sarebbe puntato comunque contro i finiani.
Quindi Belpietro implicitamente sta suggerendo ai fedelissimi di Berlusconi di organizzare un attentato contro Fini, perche' tanto la responsabilita' ricadrebbe sui finiani, e quindi sarebbe tutto vantaggio per Berlusconi.

Io non e' che ho un blog che puo' influenzare l'opinione pubblica, ma se cosi' fosse ovviamente questo post fornirebbe una buona ragione ai finiani per organizzare effettivamente un quasi-attentato contro Fini. Infatti, se Fini subisse questo quasi-attentato, la gente, fidandosi di questo post, penserebbe che e' una manovra dei berlusconiani per dare la colpa ai finiani di voler far credere che i berlusconiani vogliano sbarazzarsi di Fini.

Ma l'opinione pubblica, leggendo il precedente paragrafo, penserebbe che la colpa di quel quasi-attentato e' dei finiani.
Ed evidentemente, visto che la colpa ricadrebbe sui finiani, potrebbe essere che in realta' questo sia tutto frutto della mente diabolica dei berlusconiani, proprio per far ricadere la colpa sui finiani stessi. Quindi ci sarebbe da pensare che i berlusconiani abbiano organizzato un quasi-attentato a Fini per far credere all'opinione pubblica che l'hanno organizzato proprio i finiani per far credere all'opinione pubblica che invece l'hanno organizzato i berlusconiani per far ricadere la colpa sui finiani dell'attentato, allo scopo di far credere che i berlusconiani volessero sbarazzarsi di Fini.

Il che farebbe sospettare che la colpa di un eventuale quasi-attentato a Fini sia da attribuire ai berlusconiani per dar la colpa di....

Oddio... ma ci stiamo dimenticando che il fine finale e' la fine di Fini!

Accidenti! Siamo alla fanta-propaganda. Si fa politica creando finte accuse contro qualcuno per incolparlo di presunta intenzione di fare qualcosa. A me pare che ci sia qualcosa di profondamente anti-etico in questa faccenda.

7 commenti:

giovanna ha detto...

Dario!
straordinario. mi sono troppo divertita!:-)
ma ... oddio che tristezza... già siamo al tragicomico ormai. Questa la politica di questo strano paese!
ciao, Dario
--
g

dario ha detto...

:-) speravo che avresti apprezzato!

dario ha detto...

Accidenti, una relativa con il condizionale... Uhm... pero' a me non sembra sbagliata...

giovanna ha detto...

uhmm, perché mi fai venire certi dubbi??? :-))
eheh, non ci avrei badato.
guarda sai che facciamo? Diciamo:
"*sapevo* che avresti apprezzato" !:-)
che dici? questa non mi fa venire dubbi! Booh... magari faccio io una brutta figura!:-(

Artemisia ha detto...

Eh??? Sarebbe un loop, no? Scusa sai ma in casa mia parlano così :-)

Antietica? What's "etica"?

dario ha detto...

Mmh... non proprio un loop. Ti spiego:
Un loop e' una funzione iterativa, cioe' che ripete una certa operazione sempre uguale un certo numero di volte. Ad esempio, l'elevamento a potenza e' un tipico loop. L'operazione x^y equivale a x*x*x*... y volte.
Una funzione ricorsiva invece e' una funzione che esegue se stessa per calcolare una parte del risultato, ma con valori di input diveri. Un tipico esempio ne e' la funzione fattoriale. Si scrive con il punto esclamativo: x! (che si legge x fattoriale) e' definita come x*(x-1)!
5! = 120, infatti
5! = 5*4!, ma
4! = 4*3!, quindi
5! = 5*4*3!, ma
3! = 3*2!, quindi
5! = 5*4*3*2!, ma
2! = 2*1!, quindi
5! = 5*4*3*2*1!, ma
1! = 1*0!, quindi
5! = 5*4*3*2*1*0!
E qui c'e' quello che volevo dire: non si puo' andare avanti all'infinito, altrimenti non riusciremmo mai a calcolare 5!.
0! per definizione e' = 1, quindi
5! = 5*4*3*2*1*1
ed abbiamo finito (il prodotto fa 120).
Chiaramente la funzione fattoriale puo' essere definita come iterativa, cosi' come l'elevamento a potenza una funzione ricorsiva, anche se verrebbe meno naturale.
In generale in una funzione iterativa si puo' prevedere il numero di volte che si esegue l'iterazione, e se "va in loop", cioe' continua a ripetersi all'infinito, e' perche' c'e' un errore di programmazione. Una funzione ricorsiva invece e' piu' difficile da gestire perche' la sua terminazione dipende dai valori di input che facciano si' che si arrivi ad un punto in cui la funzione e' definita senza richiamare se stessa.

dario ha detto...

;-) Okay, ecco gli algoritmi:

funzione potenza iterativa:

potenza(x,y)
risultato = 1
per i da 1 a y: risultato = risultato * x

funzione potenza ricorsiva:

potenza(x,y)
se y=0: risultato = 1
altrimenti: risultato = x * potenza(x,y-1)

funzione fattoriale iterativa:

fattoriale(x)
risultato=1
per i da 1 a x: risultato = risultato * i

funzioe fattoriale ricorsiva

fattoriale(x)
se x=0: risultato = 1
altrimenti: risultato = x * fattoriale(x-1)

la vera differenza e' come si immagina l'algoritmo. Credo che sia piu' naturale immaginare l'elevamento a potenza come "moltiplico x per se stesso y volte", mentre la funzione fattoriale sembra piu' come "moltiplico il risultato precedente per x". Cioe', l'elevamento a potenza e' naturalmente iterativo, il fattoriale ricorsivo.

Ma dopo questa spiegazione da nerd, aggiungo:

La domanda che mi suggerisce Belpietro e': la propagazione dell'informazione nell'opinione pubblica puo' essere descritta come una funzione ricorsiva?
Ma la domanda che mi pongo io e': la politica e' giustificata da cio' che pensa l'opinione pubblica oppure da scelte etiche per quanto impopolari possano sembrare?