BONUS ruzzle bonus dl ruzzle bonus tl ruzzle bonus dw ruzzle bonus tw ruzzle bonus none
0 Parole trovate, ordinate per punteggio partendo dal più alto
    Altre lingue supportate: Generatore di parole ruzzle in inglese Generatore di parole ruzzle in spagnolo

    Ruzzle, uno sguardo sotto la socca

    Ruzzle è una mobile app composta da tre blocchi principali: il codice che gestisce le connessioni fra utenti, il motore di gestione dell'interfaccia grafica e la parte che si occupa di controllare se una parola inserita è da considerare valida e, in caso positivo calcolare quanto vale.
    Quest'ultima è sicuramente l'aspetto ingegneristico più interessante di ruzzle, il problema che l'algoritmo si pone di risolvere è questo: "Dato un dizionario di vocaboli ed una parola, capire se tale parola è compresa all'interno del dizionario". E' semplice direte voi, basta scorrere i vocaboli uno ad uno e posso facilmente capire se la parola è presente nel dizionario, in fondo i computer leggono più velocemente di noi!
    Verissimo che i computer sono molto più veloci di noi a trovare una parola in vocabolario in questo modo, il problema è di ricerche di questo tipo ne deve fare parecchie durante ogni partita: per fare ciò nel peggiore dei casi dovrebbe confrontare la parola immessa con ciascuna parola del dizionario.
    Proviamo a capire in questo modo quanto tempo impiegherebbe a rispondere al nostro input: nel caso peggiore la parola che cerchiamo non è presente e quindi l'algoritmo deve scorrere tutte le parole del dizionario (che nel caso di ruzzle italiano sono circa 600.000), ipotizzando che per confrontare due parole ci metta crica 0.02 millisecondi, per scorrere l'intero vocabolario ci vorranno 12 secondi. Così non può andare! Per sapere se 10 parole sono presenti o meno nel dizionario ci metterebbe 2 minuti ovvero 120 secondi.

    I dizionari di parole informatici

    Esistono vari metodi per velocizzare drasticamente questo processo di ricerca, tutti si basano su come il dizionario viene memorizzato all'interno dell'applicazione.
    Tutte queste strutture dati hanno una cosa in comune: minimizzare il numero di confronti necessari per stabilire se una parola è presente nel vocabolario. Di seguito analizziamo due dei più efficaci metodi di memorizzazione informatica di dizionari:

    1 - Dizionario in un albero binario di ricerca:

    Astraiamo per un attimo dal concetto di parola ed immaginiamo di dover memorizzare all'interno del nostro dizionario non parole bensì numeri, in particolare di voler memorizzare il seguente vocabolario di termini: {2,4,6,7,8,10,12,15,18,20,25}
    esempio di dizionario informatico ottimizzato per la ricerca La struttura dati presentata in foto si chiama albero binario: ogni tondino è chiamato nodo, ogni nodo può avere massimo due figli ossia due nodi sotto di se. I numeri sono stati inseriti all'intero di questo dizionario usando la seguente accortezza: il figlio sinistro è sempre minore del padre mentre il figlio destro è sempre maggiore del padre. Facendo una piccla prova possiamo subito constatare che il numero di confronti necessari per stabilire se una parola è presente nel nostro vocabolario cala darasticamente: chiediamoci se 19 è presente nello schema e vediamo quanti confronti servono:
    10 = 19? no, 19 è maggiore di 10 quindi seguo il figlio destro ed arrivo a 15
    15 = 19? no, 19 è maggiore di 15 quindi seguo il figlio destro ed arrivo a 20
    20 = 19? no, 19 è minore di 20 quindi seguo il figlio sinistro ed arrivo a 18
    18 = 19? no, 18 non ha nessun figlio quindi posso dire con certezza che 19 NON E' PRESENTE NEL VOCABOLARIO.
    Per fare questo ho dovuto eseguire 4 confronti invece degli 11 che mi sarebbero serviti per scorrere tutti i vocaboli presenti nel mio dizionario, un bel passo avanti!
    Per inserire parole invece che numeri basta considerare una parola maggiore o minore di un'altra in base ad uno ordinamento alfabetico. Se vuoi approfondire il discorso degli alberi binari inizia da questa introduzione agli alberi binari

    2 - Dizionario in un Trie

    Il trie è una struttra ad albero simile a quella appena studiato, qui però i nodi possono avere un numero qualsiasi di figli, inotre ogni nodo ha uno indicatore di stato che indica se ci troviamo in presenza di una parola di senso compiuto o meno. esempio di vocabolario informatico ottimizzato per la ricerca Capiamo adesso, osservando l'immagine, come funziona esattamente un dizionario trie:
    Come già detto scomponiamo la parola che vogliamo inserire in lettere e proviamo ad inserirle nel vocabolario una ad una, ogni volta che la lettera non è presente nel percorso inseriamo un nuovo nodo. Proviamo ad inserire nel dizionario in figura la parola "CASO":
    partiamo dalla radice, questa ha già come figlio la lettera C
    C ha come figlio A
    A ha come figlio S
    S non ha come figlio O, quindi creiamo un nodo O figlio di S e lo marchiamo come parola completa (ossia in rosso).
    Con un dizionario di questo tipo il numero di confronti che occorre fare per capire se una parola è presente nel dizionario è indipendente dal numero di parole presenti nel vocabolario, nel caso peggiore sarà uguale al numero di lettere che compongono la parola che si sta testando, un bel passo avanti! Ti interessa approfondire il discorso? approfondire il trie in lingua inglese