Salve a tutti, in un linguaggio proprietario simile al C devo creare un algoritmo che mi trovi i coefficienti di una funzione:
T=8
S=80
T = a + b*S + c
L'algoritmo deve restituirmi a, b e c.
Cosa consigliate? avete qualche esempio?
Grazie
Salve a tutti, in un linguaggio proprietario simile al C devo creare un algoritmo che mi trovi i coefficienti di una funzione:
T=8
S=80
T = a + b*S + c
L'algoritmo deve restituirmi a, b e c.
Cosa consigliate? avete qualche esempio?
Grazie
Se vuoi ottenere 3 valori variabili da una sola equazione, non credo ci riuscirai con nessun algoritmo ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Davvero???? Mi sembra improbabile che con la potenza di calcolo disponibile oggi non si riesca a risolvere questo problema.
E se bastasse trovare dei coefficienti che restituiscano un numero molto vicino a T ma che non sia proprio T? Così si potrebbe fare?
E cosa fai? Provi con la forza bruta per tutti i valori possibili? Andiamo ...Originariamente inviato da ender85
Davvero???? Mi sembra improbabile che con la potenza di calcolo disponibile oggi non si riesca a risolvere questo problema.
Non credo ... ma non sono espertissimo ...E se bastasse trovare dei coefficienti che restituiscano un numero molto vicino a T ma che non sia proprio T? Così si potrebbe fare?
No MP tecnici (non rispondo nemmeno!), usa il forum.
Beh Oregon in realtà si potrebbe fare...
Non si possono trovare esattamente perchè ci sono più incognite che equazioni, però si possono trovare:
_i casi banali (non credo siano di interesse però... ovvero, ne fissi due a "1" e l'altro lo calcoli subito)
_dei casi approssimati usando un algoritmo genetico.
Prova a cercare in rete qualcosa sugli algoritmi genetici... ti avverto, sono abbastanza incasinati (più da fare che da capire), io ci ho provato e ho fallito miseramente.
L'idea di base dell'algoritmo genetico è che genera un insieme di soluzioni casuali, vede qual'è la più vicina al risultato voluto, e poi la migliora incrociandola con le altre soluzioni... ripetendo il processo più volte si riesce ad arrivare ad una soluzione relativamente precisa in tempi accettabili.
http://it.wikipedia.org/wiki/Algoritmo_genetico
"Let him who has understanding reckon the number of the beast, for it is a human number.
Its number is rw-rw-rw-."
Infatti, il punto fondamentale è questo.Originariamente inviato da Ippo343
Non si possono trovare esattamente perchè ci sono più incognite che equazioni
Se "fissi" dei valori, non li stai trovando ... è come "barare" ...però si possono trovare:
_i casi banali (non credo siano di interesse però... ovvero, ne fissi due a "1" e l'altro lo calcoli subito)![]()
Non so quanto possa essere efficace (non ne ho mai avuto bisogno) ..._dei casi approssimati usando un algoritmo genetico ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Bhè per craccare le password WPA secondo te come fanno?Originariamente inviato da oregon
E cosa fai? Provi con la forza bruta per tutti i valori possibili? Andiamo ...![]()
Cmq non credo che questo problema abbia una complessità computazionale elevatissima, soprattutto usando strutture dati complesse...
Bhè immagino che uno prova un range di valori e sceglie i valori dei coefficienti che generano il numero che si avvicina di più a T, no?Non credo ... ma non sono espertissimo ...
Conosco abbastanza bene gli algoritmi genetici e il loro funzionamento, il problema di essi in questo caso e che non sono esaustivi e purtroppo io non posso permettermi di affidarmi ad un algoritmo che non provi tutte le possibili soluzioni definite in un certo range.Originariamente inviato da Ippo343
L'idea di base dell'algoritmo genetico è che genera un insieme di soluzioni casuali, vede qual'è la più vicina al risultato voluto, e poi la migliora incrociandola con le altre soluzioni... ripetendo il processo più volte si riesce ad arrivare ad una soluzione relativamente precisa in tempi accettabili.
Nel mio caso inoltre i tempi di risposta non sono molto importanti, posso permettermi circa 8 ore per risolvere tutte le iterazioni.
Il mio è un problema statistico...
Grazie cmq delle risposte.
Beh infatti li ho chiamati casi "banali" apposta :P
So che viene usato in molti casi dove non si ha a disposizione un algoritmo per la soluzione, o quando l'algoritmo è troppo lento e basta una soluzione approssimata...
Io ho provato a implementarne uno per curiosità: in effetti il "fitness" delle soluzioni sale sempre di più, quindi va verso soluzioni migliori.
(Poi lasciamo stare che il mio esibiva anche comportamenti molto molto strani, dovuti ad un implementazione orrenda... di base funziona ^^)
"Let him who has understanding reckon the number of the beast, for it is a human number.
Its number is rw-rw-rw-."
Cosa c'entra? Per quello si usano dizionari e, in genere, non hai limiti di tempo per l'esecuzione. E poi, il dominio dei caratteri ASCII utilizzabili è sicuramente minore (!) di quello dei reali ... E tutta un'altra storia ...Originariamente inviato da ender85
Bhè per craccare le password WPA secondo te come fanno?![]()
Insomma ... come fai a scegliere i range di valori per le 3 variabili?Cmq non credo che questo problema abbia una complessità computazionale elevatissima, soprattutto usando strutture dati complesse...
Bhè immagino che uno prova un range di valori e sceglie i valori dei coefficienti che generano il numero che si avvicina di più a T, no?
Andiamo bene ...circa 8 ore per risolvere tutte le iterazioni.
In bocca al lupo
No MP tecnici (non rispondo nemmeno!), usa il forum.
Era un esempio per farti capire che il bruteforce con strutture dati complesse spesso paga.Originariamente inviato da oregon
Cosa c'entra? Per quello si usano dizionari e, in genere, non hai limiti di tempo per l'esecuzione. E tutta un'altra storia ...
Ma poi chi ha parlato di limiti di tempo
bhè innanzitutto se il risultato è T il range di 2 dei coefficienti deve essere minore di T no?Insomma ... come fai a scegliere i range di valori per le 3 variabili?
Grazie, immagino che stamattina sei colpito della resaca. Buona Domenica!Andiamo bene ...
In bocca al lupo