Sto giocando con Levenshteins Edit Distance algorithm e voglio estenderlo per contare le trasposizioni - ovvero, scambi di lettere adiacenti - come 1 modifica . L'algoritmo non modificato conta inserimenti, eliminazioni o sostituzioni necessarie per raggiungere una determinata stringa da un'altra. Per esempio, la modifica distanza dal "kitten" per "seduta" è 3. Ecco la spiegazione da Wikipedia:Come modificare Levenshteins Modifica Distanza per contare "scambi di lettere adiacenti" come 1 modifica
- gattino → Sitten (sostituzione di 'k' con 's')
- Sitten → sittin (sostituzione di 'e' con 'i')
- sittin → sitting (inserire 'g' alla fine).
Seguendo lo stesso metodo, la modifica distanza dal "Chiar" a "sedia" è 2:
- Chiar → CHAR (delete 'I')
- CAR → SEDIA (inserire 'I ')
Vorrei contarlo come "1 modifica", poiché scambio solo due lettere adiacenti. Come potrei andare a fare questo?
molto tempo fa ho modificato il LED di prendere in considerazione il posizionamento tasto sulla tastiera (ad esempio, se si digita su una tastiera QWERTY o Tastiera AZERTY "dpgs", quindi il mio algo darà "cani" più vicini di "scava" perché 'o' è vicino a 'p' mentre 'i' è a due chiavi di distanza) ma non l'ho mai modificato nel modo che preferisci.* (btw la mia modifica è stata una modifica relativamente semplice e l'algo ha mantenuto tutte le sue proprietà di programmazione dinamiche) * – SyntaxT3rr0r