En el problema de la edición de una cadena se tienen dos cadenas y se quiere conocer que tan disímiles o tan parecidas son de acuerdo con alguna medida. En esta implementación tenemos una respuesta... d ms "" = length ms d "" ms = length ms d (a:ms) (b:ns) | a==b = d ms ns d (a:ms) (b:ns) | a/=b = 1+minimum [d ms (b:ns), d (a:ms) ns, d ms ns] y éste algoritmo es ¡triplemente recursivo! Para intentar ver sus llamadas, creamos un tipo de dato: data T = H String | Tri T T T deriving Show y aquí conformamos una construcción de las llamadas: si [] ms = H ms si ms [] = H ms si (a:bs) (c:cs) = Tri (si bs (c:cs)) (si bs cs) (si (a:bs) cs) En general, no es fácil ver árboles, pero lo siguiente puede ser pasado a LaTeX para visualizar algunos resultados (primero se genera la cadena, y se hace copy/paste a un archivo LaTeX; sería posible escribir el resultado directamente a un archivo, pero queda como opcional, pues aún no hemos visto cómo hacerlo). showTC (H i) = "\\T...
Comentarios
Publicar un comentario