Newsgroup: it.comp.programmare
Titolo: Software "retroazionati"

Ciao a tutti, sono al II anno di ing. informatica, in particolare sto
seguendo con piacere il corso di Fondamenti di Automatica... il concetto di
retroazione č qualcosa che mi ha sorpreso per la sua "potenza". Stavo
pensando se fosse possibile applicare una cosa del genere quando si scrive
un software: fare cioč in modo che un software ma anche una banale procedura
scritta in C, possa modificarsi a seconda dei risultati che elabora.
Cioč, se a seconda dell'efficacia dei risultati modifichi i suoi parametri
interni per migliorare il risultato prodotto:
non so se mi sono spiegato, facciamo un esempio: un software di analisi
borsistica "evolve" a seconda dell'esattezza delle sue previsioni; penso che
nel contesto finanziario non sia applicabile una cosa del genere, altrimenti
la maggior parte degli informatici sarebbe ricchissima...
Forse ciň che chiedo trova risposte in quella che si chiama Intelligenza
artificiale, ma non ne sono sicuro dato che non so molto di questa
disciplina...
vi chiedo soltanto se ne sapete piů di me (non che ci voglia molto) di
consigliarmi qualche lettura, qualche tecnica per "retroazionare" un
software, in modo da approfondire l'argomento.
Grazie per l'attenzione.

scritta in C, possa modificarsi a seconda dei risultati che elabora.
Due approcci: i c.d. "algoritmi genetici", e per esempio nelle ricerche le
strategie LRU e most-likely.
Anche la cache e' un sistema di retroazione: rimangono, nella memoria piu'
veloce, i dati che hai usato piu' spesso e quindi che e' piu' probabile(?)
che tu usi ancora, cosi' accelerando le operazioni.
In altri casi, ad es. i classificatori, si possono usare dei parametri dei
dati in ingresso per testare subito l'ipotesi piu' probabile; se matcha ti
risparmi tutta la tediosa classificazione.
Li' puoi anche retroazionare la retroazione: ovvero, il programma conta le
volte che ci ha azzeccato e le volte che NON ci ha azzeccato, ed elabora i
parametri piu' fruttuosi (per es. "Usando la LRU, azzecco 30% delle volte,
se mi baso sui campi CND azzecco il 40%, se uso un peso del 60% per la LRU
e del 30% sulle dimensioni e del 10% sul CND azzecco il 90%...).
Ma cerca anche "diminishing returns"... potresti spendere piu' tempo nelle
retroazioni che non nel lavoro vero e proprio :-)
Leonardo
-- 
Nach doiligh domhsa mo chailin a mholadh
'S ni he amhain mar bhi si or
Bhi si mar gath greine a dhul in eadan na gloinne
Is bhi sceimh mhna na finne le mo cailin or

 disciplina...
Quello che stai cercando č il lambda-calcolo. Implementato di default in 
LISP (le macro) e in Prolog (con i predicati del secondo ordine, keyword 
"freeze" e "defrost"), nonchč nel successore di questo, Mercury.
Se fai sul serio ti conviene partire direttamente col Mercury: cerca 
"mercury prolog" su Google e troverai subito quello che cerchi. Unica 
avvertenza: questi linguaggi sono TOTALMENTE DIVERSI dal C, dovrai 
cambiare da cima a fondo il tuo modo di ragionare (per dirne una: la 
semplice istruzione "X = Y", l'assegnazione di variabile, in prolog non 
esiste :-)

 "freeze" e "defrost"), nonchè nel successore di questo, Mercury.
perché il lambda calcolo? Voglio dire, so che il λ-calcolo è un formalismo
altrettanto potente delle macchine di turing, ma in verità non mi sembra
questo il caso in cui sia interessante usarlo, direi che lui vuole una
cosa decisamente side-effectish.