|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
[Java] Aiuto su un algoritmo
Ciao a tutti!
sto studiando per un esame di algoritmi e strutture dati. Avrei bisogno di un consiglio su come approcciarmi a un esercizio. Il linguaggio da utilizzare è il Java e si possono utilizzare tutte le librerie che si vuole, purchè funzioni bene con tutti i casi di input oltre a quelli dell'esempio. Voi come lo risolvereste? Ovviamente non chiedo la soluzione, ma vorrei capire qual'è il metodo più corretto per risolverlo nel migliore dei modi. http://i65.tinypic.com/2e4bvxk.png Ultima modifica di mistergks : 08-02-2019 alle 19:00. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Io costruirei un grafo in cui ogni nodo contiene una parola. Il nodo adiacente al nodo attuale ha una sola lettera che varia.
Non dovrebbe essere difficile costruire un simile grafo. Si tratta poi di percorrere il grafo dalla parola di partenza a quella di arrivo
__________________
In God we trust; all others bring data |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3278
|
Concordo sull'idea del grafo, si tratta di un grafo orientato non pesato.
Si tratta di trovare un cammino minimo tra i due nodi (Djstrka?) |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
https://it.wikipedia.org/wiki/Cammino_minimo In alternativa, si puo' rappresentare il grafo in maniera tabellare (tabella di interi), mettendo i noti di partenza in riga e di arrivo in colonna (o viceversa se si preferisce); poi si mettera' un 1 in questo caso se si puo' andare dal nodo di partenza a quello di arrivo. In questo caso il percorso non e' a senso unico visto che si puo' andare anche a ritroso (i.e. da CASA posso andare a CARA e viceversa), quindi la matrice sara' simmetrica rispetto alla diagonale principale. Questione di gusti
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3278
|
Quote:
Facciamo ipotesi che devo andare da CARA a CASO: CARA->CASA->CASO Nel mio grafo non avrò mai necessità di tornare indietro e quindi mettere un orientamento (vado a memoria) dovrebbe ridurre la complessità computazionale (diciamo che dovremmo stare al di sotto del caso peggiore O(n^2) ) [ripeto vado un po a memoria e non ho fatto conti] |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Capua (CE)
Messaggi: 317
|
Per un approccio diverso...
Costruisci un albero n-ario nel quale ad ogni livello corrisponde la successiva lettera della parola:
liv.1 - 1a lettera liv.2 - 2a lettera ... liv.n - ultima lettera della/e parola/e più lunga/he La radice dell'albero sarà un nodo fittizio. Ogni nodo contiene puntatori ad altri contenenti la possibile lettera successiva o un puntatore nullo se il dizionario non contiene una parola che contenga quella lettera. Discendendo l'albero fino a trovare la parola p2, dovresti percorrere il cammino minimo. Se n è il numero di livelli, dovrebbe avere complessità spaziale 26^n e O(n) nel caso limite che il dizionario contenga tutte le possibili sequenze di n caratteri.
__________________
Se pensi di sapere, sappi che non sai di non saperlo! Le mie statistiche - "real man uses Duron!" Ho fatto affari con: schumyFast, navale, The_Nameless_One, Sonic80, diamante.picci, Downset88, ilviandante, tecno789 Ultima modifica di eliano : 20-02-2019 alle 10:19. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:08.




















