• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Distancia de Levenshtein

on

  • 2,423 views

Presentación de distancia de levenshtein

Presentación de distancia de levenshtein

Statistics

Views

Total Views
2,423
Views on SlideShare
2,420
Embed Views
3

Actions

Likes
0
Downloads
51
Comments
0

1 Embed 3

http://blankani.blogspot.com 3

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Distancia de Levenshtein Distancia de Levenshtein Presentation Transcript

    • MENU INTRODUCCIÓN APLICACIONES PSEUDOCODIGO IMPLEMENTACIÓN ESPECIFICACIONES ALGORITMO EJEMPLO
    • La distancia de Leveinshtein o también conocida como distancia de edición , es un algoritmo tal que dadas dos cadenas, devuelve un entero que da una idea de la distancia (o parecido) entre ellas. La definición de distancia es el mínimo número de operaciones que hay que realizar para transformar una cadena en la otra. Debe su nombre al matemático ruso Vladimir levenshtein . Este entero se calcula contando las transformaciones que es necesario hacer sobre una de estas cadenas para obtener la otra. Estas posibles transformaciones son: Borrado de un carácter Inserción de un carácter
    • Alfabeto binario= {0,1] Asignacion de pesos  Borrado (Pb=1) por si mismo (Psm=0)  Sustitucion por su contrario (Psc=1)
    • Algunas aplicaciones en la que se puede usar la distancia de edición son: Sistemas para la revisión de faltas ortográficas automatizada en textos. Sistemas de reconocimiento de voz Sistemas para el análisis de ADN. Sistemas para la detección de plagios.
    • 1. Inicio 2. Elegir la palabra que se va a cambiar e insertarla. 3. Insertar la palabra por la que se va a cambiar. 4. Saber cual es la menor cantidad de transacciones para cambiar una palabra. 5. Identificar el tipo de transacción: • Insertar una letra • Quitar una letra • Cambiar una letra por otra 5. Fin
    • Escribir “ingrese palabra 1” Leer palabra Escribir “ingrese palabra 2” Leer palabra 2 Longpalabra.longitud() Long2plabra2.longitud2() Palabrapalabra.mayusculas() Palabrapalabra2.mayusculas( ) Matriz[long+1][long2+1] i1 Mientras que i<=long matriz[0][i]i ii+1
    • j1 Mientras que i<=long i1 mientras i<=long2 si (palabra[j-1]==palabra2[i-1]) matriz[i][j]=menor(matriz[i-1][j-1], matriz[i][j- 1], matriz[i-1][j]) si no matriz[i][j]=menor(matriz[i][j], matriz[i][j- 1], matriz[i-1][j])+1 ii+1 jj+1 Escribir “distancia”+carácter(matriz[long2][long])
    • 1.-Pide la primer palabra y la ingresa a una variable llamada palabra p e r r o 0 1 2 3 4 2.-Pide la segunda palabra y la ingresa a una variable llamada palabra2 g a t o 0 1 2 3 3.-Calcula la longitud de cada una de las palabras con la función len() y las agrega ala variable correspondiente long y long2 por ejemplo len(palabra) la longitud de la palabra perro es de 5 4.-crea la matriz donde se realizara las operaciones necesarias para obtener la distancia matriz= [[0 for x in xrange(long+1)] for y in xrange(long2+1)] esto crea eje “x” y asigna el valor de 0 con un rango de long + 1 y crea el eje “y” y asigna el valor de 0 con un rango de long2+1
    • p e r r o 0 0 0 0 0 0 g 0 0 0 0 0 0 a 0 0 0 0 0 0 t 0 0 0 0 0 0 o 0 0 0 0 0 0 5.- se enumeraran las letras de cada palabra, para eso se utilizo lo siguiente i=1 while i<=long: p e r r o matriz[0][i]=i 0 1 2 3 4 5 i=i+1 g 1 0 0 0 0 0 i=1 while i<=long2: a 2 0 0 0 0 0 matriz[i][0]=i t 3 0 0 0 0 0 i=i+1 4 0 0 0 0 0 o
    • 6.- Comienza hacer las operaciones necesarias para obtener la distancia, para recorrer toda la tabla se utilizaron 2 ciclos anidados como que fue el while, al entrar al ciclo se compara letra por letra de las 2 palabras, y se van comparando de 1 en 1, esto lo hace con el siguiente if(palabra[j-1]==palabra2[i-1]): (se pone “-1” ya que como lo mencione anteriormente la palabra empieza desde la posición 0 ) en el cual si las letras son iguales, busca el número menor en la matriz, una posición menos en “x”, una posición menos en “y”, y una posición menos en “x” y “y”, Esto se realiza con una función que es min(), que esta te regresa el valor menor. matriz[i][j]=min(matriz[i-1][j-1],matriz[i][j-1],matriz[i-1][j])
    • si las letras no son iguales hace lo mismo que el paso anterior , nada mas que al número menor le suma un 1 matriz[i][j]=min(matriz[i-1][j-1],matriz[i][j-1],matriz[i-1][j]) + 1 7.- Cuando termina de recorrer toda la tabla y de comparar todas las letras el resultado que buscamos se guardara en la última posición de “x” y “y” . p e r r o 0 1 2 3 4 5 g 1 0 0 0 0 0 a 2 0 0 0 0 0 t 3 0 0 0 0 0 4 0 0 0 0 0 o print "distancia: " +str(matriz[long2][long])
    • EJEMPLO FACILDIFICIL F A C I L 0 1 2 3 4 5 D 1 1 2 3 4 5 I 2 2 2 3 3 4 F 3 2 3 3 4 4 I 4 3 3 4 3 4 C 5 4 4 3 4 4 I 6 5 5 4 3 4 L 7 6 6 5 4 3 RESPUESTA