Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - problema con algoritmo di bruteforce
Forum - Algoritmi - problema con algoritmo di bruteforce

Avatar
spud--- (Normal User)
Newbie


Messaggi: 10
Iscritto: 22/09/2007

Segnala al moderatore
Postato alle 22:24
Mercoledì, 19/12/2007
Ho un problema con un algoritmo che genera le possibili combinazioni di elementi contenuti in un vettore.

esempio se io ho "abcdef" e l'utente scegliere di generare parole di 4 caratteri deve fare:
aaaa
aaab
aaac
aaad
aaae
aaaf
aaba
aabb
aabc
...
eccetera...

Se la lunghezza della parola da generare è fissa basta fare un tot di cicli nidificati ed è fatta, ma se la lunghezza delle parole da generare è decisa dall'utente, per esempio sceglie di generare parole comprese tra i 4 e i 10?

PM Quote
Avatar
spud--- (Normal User)
Newbie


Messaggi: 10
Iscritto: 22/09/2007

Segnala al moderatore
Postato alle 17:27
Giovedì, 20/12/2007
Nessuno sa aiutarmi?

PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 13:01
Giovedì, 27/12/2007
allora prima un pò di infarinatura :
a. il numero totale di combinazioni in questo caso è  dato da n^m dove n è il numero delle possibili lettere (abcdefgh...) e m il numero di caratteri da cui è formata la stringa.
b. la ricorsione è ovunque

ora posso provare con uno pseudocodice molto scarno fatto con una funzioncina ricorsiva facile facile:
Codice sorgente - presumibilmente C#

  1. #due stringhe una con tutti i caratteri
  2. #e l'altra con la combinazione
  3. STRING c(n)={...},comb(m)=0;#inizializzo le lettere come ti pare e comb a zero
  4. #La funzione che li combina
  5. FUNZIONE COMBINA(int I)
  6. INIZIO
  7. int J;
  8. IF(i<m)
  9. INIZIO
  10. FOR(J=0;J<n;J+=1)
  11. INIZIO
  12. comb(I)=c(J);
  13. COMBINA(I+1);
  14. FINE
  15. FINE
  16. ELSE
  17. INIZIO
  18. PUTS(comb);
  19. FINE
  20. RETURN 0;
  21. FINE
  22.  
  23. FUNZIONE PRINCIPALE(ARGOMENTI)
  24. INIZIO
  25. COMBINA(0);
  26. RETURN 0;
  27. FINE


allora apparte la lingua che sembra un europanto parlato da un babbuino o un simile di jar jar, i concetti sono quelli, una funzione che esplora tutte le combinazioni ricorsivamente, molto semplice da implementare.

Ultima modifica effettuata da lorelapo il 27/12/2007 alle 13:01
PM Quote