SlideShare a Scribd company logo
1 of 40
Introduzione         Progettazione          Implementazione          Analisi   Conclusioni




               Sviluppo e analisi di una tastiera virtuale
                             ottimizzata

                           Candidato: Alberto Minetti
                          Relatore: Prof. Massimo Ancona




                                Università degli Studi di Genova
                       Facoltà di Scienze Matematiche Fisiche e Naturali
                                 Corso di Laurea in Informatica
Introduzione             Progettazione         Implementazione   Analisi   Conclusioni


Sommario

     1     Introduzione
              Sistemi di input
              Tastiere virtuali
     2     Progettazione
             Principi di Progettazione
             Analisi delle frequenze dei digrammi
             Euristiche
     3     Implementazione
             Scelta della configurazione iniziale
             Algoritmo
             Esempio iterazione

     4     Analisi
             Analisi della frequenza dei tasti
             Analisi della frequenza dei digrammi

     5     Conclusioni
             Conclusioni
             Layout applicato a Wtx
             Layout italiano
Introduzione           Progettazione       Implementazione   Analisi      Conclusioni


Sistemi di input


       T9 è l’acronimo di text on 9 keys


               Nasce su tastiera fisica
               Solo 9 tasti grandi
               Più caratteri in un tasto
               Predizione
               Dizionario interno


       Nota
       Samsung e Android implementano T9 che si trasforma in QWERTY quando il
       telefono è orientato in landscape
Introduzione            Progettazione    Implementazione   Analisi   Conclusioni


Sistemi di input


       Wtx


               Vuole minimizzare il
               numero di tap
               Dizionario interno

       Estensioni:
               Predizione (multi-mode)
               Riconoscimento della grafia
               location awareness
               ecc...
Introduzione           Progettazione       Implementazione   Analisi   Conclusioni


Sistemi di input


       TenGO
          Nasce su tastiera virtuale
               Solo 6 tasti grandi
               Più caratteri in un tasto
               Dizionario interno
Introduzione          Progettazione      Implementazione   Analisi   Conclusioni


Tastiere virtuali

       QWERTY
         Standard de facto
               Ottimizzata per 10 dita
       L’ottimizzazione per 10 dita non giova in nessun modo ad
       aumentare la velocità di battitura con un dito o un pennino
Introduzione          Progettazione   Implementazione     Analisi   Conclusioni


Tastiere virtuali




       Tastiera alfabetica
           Facilità d’uso per chi non conosce il layout
               Nessun vantaggio da chi è esperto
Introduzione          Progettazione      Implementazione   Analisi   Conclusioni


Tastiere virtuali




       FITALY



               Ottimizzata per i tap
               Forma quadrata
               Disposizione per frequenza
               Due tasti spazio grandi
Introduzione          Progettazione    Implementazione   Analisi   Conclusioni


Tastiere virtuali




       Metropolis

               Ottimizzata per i tap
               Tasti esagonali
               Tasto spazio centrale
               Mantiene vicine le coppie di
               lettere comuni
Introduzione           Progettazione     Implementazione       Analisi   Conclusioni


Principi di Progettazione




       Come progettare una nuova tastiera virtuale?
               Lettere maggiormente utilizzare al centro
               Lettere meno utilizzate ai bordi
               Struttura quadrata e non rettangolare
               Accostare le coppie di lettere più utilizzate

       Legge di Fitts
       La legge di Fitts rappresenta il modello matematico di un
       movimento umano.
Introduzione       Progettazione         Implementazione        Analisi   Conclusioni


Principi di Progettazione

       Legge di Fitts
       La legge di Fitts rappresenta il modello matematico di un
       movimento umano.

       Legge di Fitts applicata alle tastiere virtuali
                                                     Dij
                              MTij = a + b log2 (        + 1)
                                                     Wj
Introduzione          Progettazione         Implementazione         Analisi          Conclusioni


Analisi delle frequenze dei digrammi




       Analisi delle frequenze dei digrammi
       L’analisi delle frequenze dei digrammi più comuni mostrata
       nella tabella successiva.

       Colori di sfondo
       I colori di sfondo delle celle identificano l’importanza della coppia, in ordine
       crescente: Viola, Blu, Azzurro, Verde, Rosso, Rosa, Giallo.

       Nota
       Un digramma è una sequenza di 2 grafemi (o lettere) che all’interno di una
       lingua identificano graficamente un fonema
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Analisi delle frequenze dei digrammi
Introduzione           Progettazione     Implementazione   Analisi       Conclusioni


Analisi delle frequenze dei digrammi




       Analisi delle frequenze dei digrammi
       Con tali valori ho creato un grafo mostrato nella figura
       successiva.
               I nodi sono le lettere dell’alfabeto
               Gli archi sono pesati secondo le frequenze dei digrammi
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Analisi delle frequenze dei digrammi
Introduzione       Progettazione     Implementazione     Analisi       Conclusioni


Come trovare la migliore disposizione dei tasti?



       Algoritmo euristico
       L’approccio euristico è molto diffuso nelle simulazioni riduce la
       complessità per problemi che possono essere troppo costosi.

       Ricerca locale
       La soluzione verso cui converge un algoritmo di ricerca locale è
       un ottimo locale relativamente all’intorno scelto.

       Algoritmo iterativo
       Per migliorare la soluzione trovata con tecniche di ricerca locale
       è possibile eseguire l’algoritmo più volte.
Introduzione       Progettazione     Implementazione     Analisi       Conclusioni


Come trovare la migliore disposizione dei tasti?



       Algoritmo euristico
       L’approccio euristico è molto diffuso nelle simulazioni riduce la
       complessità per problemi che possono essere troppo costosi.

       Ricerca locale
       La soluzione verso cui converge un algoritmo di ricerca locale è
       un ottimo locale relativamente all’intorno scelto.

       Algoritmo iterativo
       Per migliorare la soluzione trovata con tecniche di ricerca locale
       è possibile eseguire l’algoritmo più volte.
Introduzione       Progettazione     Implementazione     Analisi       Conclusioni


Come trovare la migliore disposizione dei tasti?



       Algoritmo euristico
       L’approccio euristico è molto diffuso nelle simulazioni riduce la
       complessità per problemi che possono essere troppo costosi.

       Ricerca locale
       La soluzione verso cui converge un algoritmo di ricerca locale è
       un ottimo locale relativamente all’intorno scelto.

       Algoritmo iterativo
       Per migliorare la soluzione trovata con tecniche di ricerca locale
       è possibile eseguire l’algoritmo più volte.
Introduzione       Progettazione     Implementazione     Analisi       Conclusioni


Come trovare la migliore disposizione dei tasti?



       Algoritmo euristico
       L’approccio euristico è molto diffuso nelle simulazioni riduce la
       complessità per problemi che possono essere troppo costosi.

       Ricerca locale
       La soluzione verso cui converge un algoritmo di ricerca locale è
       un ottimo locale relativamente all’intorno scelto.

       Algoritmo iterativo
       Per migliorare la soluzione trovata con tecniche di ricerca locale
       è possibile eseguire l’algoritmo più volte.
Introduzione       Progettazione     Implementazione    Analisi      Conclusioni


Euristiche




       Simulated Annealing
       Il Simulated Annealing è un algoritmo euristico iterattivo basato
       sulla ricerca locale. Ideato osservando il processo di
       annichilazione dei metalli.
Introduzione       Progettazione   Implementazione   Analisi   Conclusioni


Scelta della configurazione iniziale




       Layout iniziale
       Numero più basso
       corrisponde a lettera più
       comune
Introduzione        Progettazione     Implementazione   Analisi   Conclusioni


Scelta della configurazione iniziale




       Layout iniziale
       Al centro ci sono le lettere
       più comuni
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Scelta della configurazione iniziale
Introduzione          Progettazione    Implementazione   Analisi   Conclusioni


Algoritmo




       Algoritmo
       Ad ogni step abbiamo:
               FASE 1: calcolo della best position
               FASE 2: Simulate Annealing
Introduzione        Progettazione      Implementazione      Analisi       Conclusioni


Algoritmo




       Algoritmo: calcolo delle best positions
       Per ogni lettera α si prova ogni posizione. In ogni posizione si
       valutano i pesi degli archi tra le lettere adiacenti e α. Inoltre si
       tiene conto della frequenza della lettera α cercando di
       riservarle un posto adeguato in modo da mantenere al centro
       dello schermo la maggior parte dei tap.
Introduzione             Progettazione          Implementazione          Analisi           Conclusioni


Algoritmo



       Algoritmo: calcolo delle best positions
       function calcola_best_positions(){
         var lambda = 0.8;     //importanza delle vicinanze (archi del grafo)
         var gamma = 1 - lambda;   //importanza delle frequenze delle lettere
         var best_positions = new array_associativo();

           foreach(lettera){
             foreach(posizione){
               var desiderio = 0; //desiderio di lettera di andare in posizione
               // calcolo vicinanze
               var vicini=getVicini(posizione);
               foreach(vicino from vicini){
                 desiderio += lambda*getPesoArco(lettera, vicino);
               }
               desiderio += gamma*(26 - abs(rank_di(posizione)-rank_di(posizione_attuale)));
               desideri[lettera][posizione] = desiderio;
             }
           }
           foreach(lettera in desideri){ best_positions[lettera] = getMax(desideri[lettera]);}
           ordina_per_valore(best_positions);
           return best_positions;//un array associativo ordinato decrescentemente
       }
Introduzione           Progettazione         Implementazione           Analisi          Conclusioni


Algoritmo




       Algoritmo: Simulated Annealing
       Viene spostata una lettera per volta solo se la lettera che
       dovrebbe prenderne il posto ha anch’essa un desiderio di
       spostarsi maggiore del desiderio di restare nella posizione
       attuale.
       Dopo il primo spostamento si inizia un nuovo step con relativa
       fase 1 e fase 2.

       Nota
       Deadlock, minimo locale, cicli infiniti e situazioni di stallo sono risolti dal
       parametro T (temperatura).
Introduzione       Progettazione    Implementazione    Analisi   Conclusioni


Algoritmo




       Algoritmo: Simulated Annealing
       while(T > 0){
         best_positions = calcola_best_positions();
           foreach(lettera, posizione from best_positions){
           if( testMovimento(lettera, posizione) ){
             move(lettera, posizione);
           }
         }
         diminuisci(T);
       }
Introduzione               Progettazione        Implementazione          Analisi   Conclusioni


Algoritmo




       Algoritmo: Simulated Annealing - funzione testMovimento
       function testMovimento(lettera, posizione) {

           if( posizione_attuale == posizione ) return false;

           lettera_swap = getLettera_in_posizione(posizione);

           desiderio_spostamento = desideri[lettera][posizione] +
                                   desideri[lettera_swap][posizione_attuale];

           desiderio_non_spostamento = desideri[lettera][posizione_attuale] +
                                       desideri[lettera_swap][posizione];

           if(desiderio_spostamento * (1 + T) > desiderio_non_spostamento){
             return true;
           }

           return false;
       }
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Esempio: situazione iniziale
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Esempio: primo spostamento (swap E A)
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Esempio: secondo spostamento (swap A T)
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Esempio: terzo spostamento (swap I O)
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Esempio: quarto spostamento (swap S I)
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Layout finale
Introduzione      Progettazione     Implementazione   Analisi   Conclusioni


Analisi della frequenza dei tasti

       Lettere che formano taneoi



       44% di frequenza




       Lettere che formano taneoirsh



       63% di frequenza
Introduzione      Progettazione   Implementazione   Analisi   Conclusioni


Analisi della frequenza dei digrammi


       Misurazione degli spostamenti in pixel




       Words per minute


       45 wpm
Introduzione           Progettazione     Implementazione     Analisi   Conclusioni


Conclusioni




       Conclusioni
          QWERTY difficile da sostituire

       Tuttavia
           Alternativa ai layout virtuali esistenti
               Creazione di tastiere ottimizzate per altre lingue
               Spunto per migliorare i sistemi di input tradizionali
Introduzione   Progettazione   Implementazione   Analisi   Conclusioni


Layout applicato a Wtx
Introduzione      Progettazione   Implementazione   Analisi   Conclusioni


Layout italiano

More Related Content

Similar to Development and analysis of a virtual keyboard optimized (Italian)

Relazione informatica
Relazione informaticaRelazione informatica
Relazione informaticamattia98
 
Sift - Scale Invariant Feature Transform
Sift - Scale Invariant Feature TransformSift - Scale Invariant Feature Transform
Sift - Scale Invariant Feature TransformAlain Bindele
 
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...Marco Potok
 
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Università degli Studi di Trieste
 
Input e output
Input e outputInput e output
Input e outputgiovi98
 
EVEN Presentation - April 2009
EVEN Presentation - April 2009EVEN Presentation - April 2009
EVEN Presentation - April 2009matteodefelice
 
Fusione di impronta digitale e impronta vocale per il controlllo accessi
Fusione di impronta digitale e impronta vocale per il controlllo accessiFusione di impronta digitale e impronta vocale per il controlllo accessi
Fusione di impronta digitale e impronta vocale per il controlllo accessisanpi89
 
Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTNino Lopez
 

Similar to Development and analysis of a virtual keyboard optimized (Italian) (11)

Relazione informatica
Relazione informaticaRelazione informatica
Relazione informatica
 
Sift - Scale Invariant Feature Transform
Sift - Scale Invariant Feature TransformSift - Scale Invariant Feature Transform
Sift - Scale Invariant Feature Transform
 
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
Analisi delle differenze strutturali nelle espressioni regolari costruite da ...
 
Sensor Node Plugin System
Sensor Node Plugin SystemSensor Node Plugin System
Sensor Node Plugin System
 
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
Input e output
Input e outputInput e output
Input e output
 
EVEN Presentation - April 2009
EVEN Presentation - April 2009EVEN Presentation - April 2009
EVEN Presentation - April 2009
 
Fusione di impronta digitale e impronta vocale per il controlllo accessi
Fusione di impronta digitale e impronta vocale per il controlllo accessiFusione di impronta digitale e impronta vocale per il controlllo accessi
Fusione di impronta digitale e impronta vocale per il controlllo accessi
 
Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICT
 
come costruire un algoritmo
come costruire un algoritmocome costruire un algoritmo
come costruire un algoritmo
 

Development and analysis of a virtual keyboard optimized (Italian)

  • 1. Introduzione Progettazione Implementazione Analisi Conclusioni Sviluppo e analisi di una tastiera virtuale ottimizzata Candidato: Alberto Minetti Relatore: Prof. Massimo Ancona Università degli Studi di Genova Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica
  • 2. Introduzione Progettazione Implementazione Analisi Conclusioni Sommario 1 Introduzione Sistemi di input Tastiere virtuali 2 Progettazione Principi di Progettazione Analisi delle frequenze dei digrammi Euristiche 3 Implementazione Scelta della configurazione iniziale Algoritmo Esempio iterazione 4 Analisi Analisi della frequenza dei tasti Analisi della frequenza dei digrammi 5 Conclusioni Conclusioni Layout applicato a Wtx Layout italiano
  • 3. Introduzione Progettazione Implementazione Analisi Conclusioni Sistemi di input T9 è l’acronimo di text on 9 keys Nasce su tastiera fisica Solo 9 tasti grandi Più caratteri in un tasto Predizione Dizionario interno Nota Samsung e Android implementano T9 che si trasforma in QWERTY quando il telefono è orientato in landscape
  • 4. Introduzione Progettazione Implementazione Analisi Conclusioni Sistemi di input Wtx Vuole minimizzare il numero di tap Dizionario interno Estensioni: Predizione (multi-mode) Riconoscimento della grafia location awareness ecc...
  • 5. Introduzione Progettazione Implementazione Analisi Conclusioni Sistemi di input TenGO Nasce su tastiera virtuale Solo 6 tasti grandi Più caratteri in un tasto Dizionario interno
  • 6. Introduzione Progettazione Implementazione Analisi Conclusioni Tastiere virtuali QWERTY Standard de facto Ottimizzata per 10 dita L’ottimizzazione per 10 dita non giova in nessun modo ad aumentare la velocità di battitura con un dito o un pennino
  • 7. Introduzione Progettazione Implementazione Analisi Conclusioni Tastiere virtuali Tastiera alfabetica Facilità d’uso per chi non conosce il layout Nessun vantaggio da chi è esperto
  • 8. Introduzione Progettazione Implementazione Analisi Conclusioni Tastiere virtuali FITALY Ottimizzata per i tap Forma quadrata Disposizione per frequenza Due tasti spazio grandi
  • 9. Introduzione Progettazione Implementazione Analisi Conclusioni Tastiere virtuali Metropolis Ottimizzata per i tap Tasti esagonali Tasto spazio centrale Mantiene vicine le coppie di lettere comuni
  • 10. Introduzione Progettazione Implementazione Analisi Conclusioni Principi di Progettazione Come progettare una nuova tastiera virtuale? Lettere maggiormente utilizzare al centro Lettere meno utilizzate ai bordi Struttura quadrata e non rettangolare Accostare le coppie di lettere più utilizzate Legge di Fitts La legge di Fitts rappresenta il modello matematico di un movimento umano.
  • 11. Introduzione Progettazione Implementazione Analisi Conclusioni Principi di Progettazione Legge di Fitts La legge di Fitts rappresenta il modello matematico di un movimento umano. Legge di Fitts applicata alle tastiere virtuali Dij MTij = a + b log2 ( + 1) Wj
  • 12. Introduzione Progettazione Implementazione Analisi Conclusioni Analisi delle frequenze dei digrammi Analisi delle frequenze dei digrammi L’analisi delle frequenze dei digrammi più comuni mostrata nella tabella successiva. Colori di sfondo I colori di sfondo delle celle identificano l’importanza della coppia, in ordine crescente: Viola, Blu, Azzurro, Verde, Rosso, Rosa, Giallo. Nota Un digramma è una sequenza di 2 grafemi (o lettere) che all’interno di una lingua identificano graficamente un fonema
  • 13. Introduzione Progettazione Implementazione Analisi Conclusioni Analisi delle frequenze dei digrammi
  • 14. Introduzione Progettazione Implementazione Analisi Conclusioni Analisi delle frequenze dei digrammi Analisi delle frequenze dei digrammi Con tali valori ho creato un grafo mostrato nella figura successiva. I nodi sono le lettere dell’alfabeto Gli archi sono pesati secondo le frequenze dei digrammi
  • 15. Introduzione Progettazione Implementazione Analisi Conclusioni Analisi delle frequenze dei digrammi
  • 16. Introduzione Progettazione Implementazione Analisi Conclusioni Come trovare la migliore disposizione dei tasti? Algoritmo euristico L’approccio euristico è molto diffuso nelle simulazioni riduce la complessità per problemi che possono essere troppo costosi. Ricerca locale La soluzione verso cui converge un algoritmo di ricerca locale è un ottimo locale relativamente all’intorno scelto. Algoritmo iterativo Per migliorare la soluzione trovata con tecniche di ricerca locale è possibile eseguire l’algoritmo più volte.
  • 17. Introduzione Progettazione Implementazione Analisi Conclusioni Come trovare la migliore disposizione dei tasti? Algoritmo euristico L’approccio euristico è molto diffuso nelle simulazioni riduce la complessità per problemi che possono essere troppo costosi. Ricerca locale La soluzione verso cui converge un algoritmo di ricerca locale è un ottimo locale relativamente all’intorno scelto. Algoritmo iterativo Per migliorare la soluzione trovata con tecniche di ricerca locale è possibile eseguire l’algoritmo più volte.
  • 18. Introduzione Progettazione Implementazione Analisi Conclusioni Come trovare la migliore disposizione dei tasti? Algoritmo euristico L’approccio euristico è molto diffuso nelle simulazioni riduce la complessità per problemi che possono essere troppo costosi. Ricerca locale La soluzione verso cui converge un algoritmo di ricerca locale è un ottimo locale relativamente all’intorno scelto. Algoritmo iterativo Per migliorare la soluzione trovata con tecniche di ricerca locale è possibile eseguire l’algoritmo più volte.
  • 19. Introduzione Progettazione Implementazione Analisi Conclusioni Come trovare la migliore disposizione dei tasti? Algoritmo euristico L’approccio euristico è molto diffuso nelle simulazioni riduce la complessità per problemi che possono essere troppo costosi. Ricerca locale La soluzione verso cui converge un algoritmo di ricerca locale è un ottimo locale relativamente all’intorno scelto. Algoritmo iterativo Per migliorare la soluzione trovata con tecniche di ricerca locale è possibile eseguire l’algoritmo più volte.
  • 20. Introduzione Progettazione Implementazione Analisi Conclusioni Euristiche Simulated Annealing Il Simulated Annealing è un algoritmo euristico iterattivo basato sulla ricerca locale. Ideato osservando il processo di annichilazione dei metalli.
  • 21. Introduzione Progettazione Implementazione Analisi Conclusioni Scelta della configurazione iniziale Layout iniziale Numero più basso corrisponde a lettera più comune
  • 22. Introduzione Progettazione Implementazione Analisi Conclusioni Scelta della configurazione iniziale Layout iniziale Al centro ci sono le lettere più comuni
  • 23. Introduzione Progettazione Implementazione Analisi Conclusioni Scelta della configurazione iniziale
  • 24. Introduzione Progettazione Implementazione Analisi Conclusioni Algoritmo Algoritmo Ad ogni step abbiamo: FASE 1: calcolo della best position FASE 2: Simulate Annealing
  • 25. Introduzione Progettazione Implementazione Analisi Conclusioni Algoritmo Algoritmo: calcolo delle best positions Per ogni lettera α si prova ogni posizione. In ogni posizione si valutano i pesi degli archi tra le lettere adiacenti e α. Inoltre si tiene conto della frequenza della lettera α cercando di riservarle un posto adeguato in modo da mantenere al centro dello schermo la maggior parte dei tap.
  • 26. Introduzione Progettazione Implementazione Analisi Conclusioni Algoritmo Algoritmo: calcolo delle best positions function calcola_best_positions(){ var lambda = 0.8; //importanza delle vicinanze (archi del grafo) var gamma = 1 - lambda; //importanza delle frequenze delle lettere var best_positions = new array_associativo(); foreach(lettera){ foreach(posizione){ var desiderio = 0; //desiderio di lettera di andare in posizione // calcolo vicinanze var vicini=getVicini(posizione); foreach(vicino from vicini){ desiderio += lambda*getPesoArco(lettera, vicino); } desiderio += gamma*(26 - abs(rank_di(posizione)-rank_di(posizione_attuale))); desideri[lettera][posizione] = desiderio; } } foreach(lettera in desideri){ best_positions[lettera] = getMax(desideri[lettera]);} ordina_per_valore(best_positions); return best_positions;//un array associativo ordinato decrescentemente }
  • 27. Introduzione Progettazione Implementazione Analisi Conclusioni Algoritmo Algoritmo: Simulated Annealing Viene spostata una lettera per volta solo se la lettera che dovrebbe prenderne il posto ha anch’essa un desiderio di spostarsi maggiore del desiderio di restare nella posizione attuale. Dopo il primo spostamento si inizia un nuovo step con relativa fase 1 e fase 2. Nota Deadlock, minimo locale, cicli infiniti e situazioni di stallo sono risolti dal parametro T (temperatura).
  • 28. Introduzione Progettazione Implementazione Analisi Conclusioni Algoritmo Algoritmo: Simulated Annealing while(T > 0){ best_positions = calcola_best_positions(); foreach(lettera, posizione from best_positions){ if( testMovimento(lettera, posizione) ){ move(lettera, posizione); } } diminuisci(T); }
  • 29. Introduzione Progettazione Implementazione Analisi Conclusioni Algoritmo Algoritmo: Simulated Annealing - funzione testMovimento function testMovimento(lettera, posizione) { if( posizione_attuale == posizione ) return false; lettera_swap = getLettera_in_posizione(posizione); desiderio_spostamento = desideri[lettera][posizione] + desideri[lettera_swap][posizione_attuale]; desiderio_non_spostamento = desideri[lettera][posizione_attuale] + desideri[lettera_swap][posizione]; if(desiderio_spostamento * (1 + T) > desiderio_non_spostamento){ return true; } return false; }
  • 30. Introduzione Progettazione Implementazione Analisi Conclusioni Esempio: situazione iniziale
  • 31. Introduzione Progettazione Implementazione Analisi Conclusioni Esempio: primo spostamento (swap E A)
  • 32. Introduzione Progettazione Implementazione Analisi Conclusioni Esempio: secondo spostamento (swap A T)
  • 33. Introduzione Progettazione Implementazione Analisi Conclusioni Esempio: terzo spostamento (swap I O)
  • 34. Introduzione Progettazione Implementazione Analisi Conclusioni Esempio: quarto spostamento (swap S I)
  • 35. Introduzione Progettazione Implementazione Analisi Conclusioni Layout finale
  • 36. Introduzione Progettazione Implementazione Analisi Conclusioni Analisi della frequenza dei tasti Lettere che formano taneoi 44% di frequenza Lettere che formano taneoirsh 63% di frequenza
  • 37. Introduzione Progettazione Implementazione Analisi Conclusioni Analisi della frequenza dei digrammi Misurazione degli spostamenti in pixel Words per minute 45 wpm
  • 38. Introduzione Progettazione Implementazione Analisi Conclusioni Conclusioni Conclusioni QWERTY difficile da sostituire Tuttavia Alternativa ai layout virtuali esistenti Creazione di tastiere ottimizzate per altre lingue Spunto per migliorare i sistemi di input tradizionali
  • 39. Introduzione Progettazione Implementazione Analisi Conclusioni Layout applicato a Wtx
  • 40. Introduzione Progettazione Implementazione Analisi Conclusioni Layout italiano