Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    21

    Algoritmo per trovare i coefficienti di una funzione

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    21
    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?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da ender85
    Davvero???? Mi sembra improbabile che con la potenza di calcolo disponibile oggi non si riesca a risolvere questo problema.
    E cosa fai? Provi con la forza bruta per tutti i valori possibili? Andiamo ...

    E se bastasse trovare dei coefficienti che restituiscano un numero molto vicino a T ma che non sia proprio T? Così si potrebbe fare?
    Non credo ... ma non sono espertissimo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    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-."

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Ippo343
    Non si possono trovare esattamente perchè ci sono più incognite che equazioni
    Infatti, il punto fondamentale è questo.

    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)
    Se "fissi" dei valori, non li stai trovando ... è come "barare" ...

    _dei casi approssimati usando un algoritmo genetico ...
    Non so quanto possa essere efficace (non ne ho mai avuto bisogno) ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    21
    Originariamente inviato da oregon
    E cosa fai? Provi con la forza bruta per tutti i valori possibili? Andiamo ...
    Bhè per craccare le password WPA secondo te come fanno?
    Cmq non credo che questo problema abbia una complessità computazionale elevatissima, soprattutto usando strutture dati complesse...

    Non credo ... ma non sono espertissimo ...
    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?


    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.
    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.
    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.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    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-."

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da ender85
    Bhè per craccare le password WPA secondo te come fanno?
    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 ...

    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?
    Insomma ... come fai a scegliere i range di valori per le 3 variabili?

    circa 8 ore per risolvere tutte le iterazioni.
    Andiamo bene ...

    In bocca al lupo
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    21
    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 ...
    Era un esempio per farti capire che il bruteforce con strutture dati complesse spesso paga.
    Ma poi chi ha parlato di limiti di tempo
    Insomma ... come fai a scegliere i range di valori per le 3 variabili?
    bhè innanzitutto se il risultato è T il range di 2 dei coefficienti deve essere minore di T no?


    Andiamo bene ...

    In bocca al lupo
    Grazie, immagino che stamattina sei colpito della resaca. Buona Domenica!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.