260 likes | 544 Views
Tipos de Algoritmos. Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea. Clases de algoritmos.
E N D
Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea
Clases de algoritmos Una forma de clasificar los algoritmos consiste en diferenciarlos por su metodología de diseño. A continuación se presenta una síntesis de las metodologías más comunes, aplicables cada una a diferentes clases de problemas:
Fuerza bruta Los algoritmos de fuerza bruta resuelven el problema con la estrategia más obvia de solución, que no siempre es la mejor según el número de operaciones que se requiere.
Divide and conquer (divide y reinarás) Esta metodología divide las instancias del problema a resolver en instancias cada vez más pequeñas, usualmente en forma recursiva, hasta llegar a una instancia en que el problema es resuelto en forma trivial o con unas pocas instrucciones.
Programación dinámica Cuando un problema presenta una subestructura óptima – o sea, cuando la solución óptima de un problema se obtiene a partir de las soluciones óptimas de sus subproblemas–, se encuentra la solución resolviendo primero los subproblemas más sencillos y luego utilizando esas subsoluciones para resolver problemas incrementalmente difíciles.
Búsqueda y enumeración Muchos problemas (como por ejemplo, un juego de ajedrez) pueden modelarse con grafos y resolverse a partir de un algoritmo de exploración del grafo. Tal algoritmo especificará las reglas para moverse en el grafo en busca de la solución al problema. Esta categoría incluye también algoritmos de backtracking (vuelta atrás), los cuales van ensayando distintos caminos con posibles soluciones y vuelven atrás cuando no las encuentran.
Algoritmos heurísticos El propósito de estos algoritmos no es necesariamente encontrar una solución final al problema, sino encontrar una solución aproximada cuando el tiempo o los recursos necesarios para encontrar la solución perfecta son excesivos. Muchos sistemas antivirus utilizan métodos heurísticos para detectar conductas de programas que podrían estar actuando en forma maliciosa.
Algoritmos voraces Seleccionan la opción de solución (solución local) que tenga un costo menor en la etapa de solución en la que se encuentran, sin considerar si esa opción es parte de una solución óptima para el problema completo (solución global).
Cómo se calcula un dígito verificador mod10 Un dígito verificados es usado para verificar la exactitud de un código de barra. Uno de los más populares dígitos verificadores es el mod10. Un dígito verificador mod10 usa el algoritmo Módulo 10 para calcular el valor. Cálculo del dígito verificador mod10: Para este ejemplo, usamos el código de barras que contiene los datos 12345678912. Empezando del lado izquierdo del código de barra, sume los dígitos en posiciones impares, ignorando el digito verificador. Sume los dígitos primero, tercero, quinto, séptimo, noveno, y undécimo:
1+ 3 + 5 +7 + 9 + 2 = 27 Multiplique el resultado del paso 1 por 3: 27 * 3 = 81 Sume los dígitos restantes. Sume los dígitos segundo, cuarto, sexto, octavo, décimo, y décimo segundo: 2 + 4 + 6 + 8 + 1 = 21 Sume los resultados de los pasos 2 y 3: 81 + 21 = 102 Busque el número que, cuando sea sumado al resultado del paso 4, generará un número que sea divisible por 10: 102 + ? = 110? = 8El número 8 es el dígito verificador mod10 para este arreglo de dígitos
Cómo se calcula un dígito verificador para una referencia Este módulo de validación realiza el cálculo del doble dígito verificador de la referencia proporcionada por el cliente, esta puede ser numérica o alfanumérica y con longitud máxima de 38 caracteres. Referencias Alfanuméricas En caso que la referencia contenga caracteres alfabéticos, es necesario convertirla toda a numérica, para ello se toma en cuenta la siguiente tabla:
Ejemplo: Referencia alfanumérica: 15ABC13b Referencia Alfabética: EmpresaX Referencia numérica: 15123132 Referencia numérica: 54795116 Una vez que la referencia sea numérica, se aplica la rutina de cálculo.
Rutina de cálculo • Ejemplo : Referencia: 0 7 6 8 0 5 0 0 0 0 0 3 0 0 0 7 0 • 1) Para realizar el cálculo, se ignora el último dígito de la referencia, los dígitos restantes se deben multiplicar por los números 13,17,19, 23, 11 iniciando de derecha a izquierda y siempre con el número 13 aún cuando el número a multiplicar sea 0, éste debe tomarse en cuenta: • Referencia07680500000300070Algoritmo13112319171311231917131123191713
Se multiplica la referencia por el Algoritmo • ReferenciaAlgoritmo0x137x116x238x190x175x130x110x230x190x170x133x110x230x190x177x130 • Multiplicación077138152065000003300091 • Se suman los resultados de las multiplicaciones: • 0 + 77 + 138 + 152 + 0 + 65 + 0 + 0 + 0 + 0 + 0 + 33 + 0 + 0 + 0 + 91 = 556 • 4) Al resultado obtenido, se le suma el número 330: 330 + 556 = 886
El resultado anterior se divide entre el número 97 y al residuo se le suma el número 1: • 9 • 97 | 886 Suma (Dígito verificador) • 13 (residuo)------ 13 + 1 = 14 • NOTA: Si el resultado de la suma es de un solo dígito, es necesario anteponer un cero (0) • Suma = 2 el doble dígito verificador será: 02 • 6) Como resultado se obtiene el doble dígito verificador de la referencia 14, la cual queda de la siguiente forma: 0 7 6 8 0 5 0 0 0 0 0 3 0 0 0 7 0 – 14
Cómo se calcula un dígito verificador mod10 La clave completa del RFC consta de 13 posiciones: una vez asignada la clave de las 10 primeras posiciones con la primera letra del apellido paterno y la siguiente vocal del mismo; la primera letra del apellido materno; la primera letra del nombre; y la fecha de nacimiento (últimos dos dígitos del año, mes y día), la autoridad fiscal genera 2 posiciones para la clave diferenciadora de homonimia y una posición para el dígito verificador.
Para obtener la clave diferenciadora de homonimia se asignaran valores a las letras del nombre de acuerdo a la tabla del Anexo I del presente voto. Para Juan Pablo Guerrero Amparán, nacido el 13 de diciembre del año 1963, la clave de RFC es GUAJ 631213AZ4. G U E R R E R O A M P A R A N J U A N P A B L O 0 17 34 15 29 29 15 29 26 00 11 24 27 11 29 11 25 00 21 34 11 25 00 27 11 12 23 26 Espacio = 00 B = 12 O = 26 0 = 00 C = 13 P = 27 1 = 01 D = 14 Q = 28 2 = 02 E = 15 R = 29 3 = 03 F = 16 S = 32 4 = 04 G = 17 T = 33 5 =05 H = 18 U = 34 6 = 06 I = 19 V = 35 7 = 07 J = 21 W = 36 8 = 08 K = 22 X = 37 9 = 09 L = 23 Y = 38 & = 10 M = 24 Z = 39 A = 11 N = 25 Ñ = 40
En seguida, se efectuarán las multiplicaciones de los números tomados de dos en dos para la posición de la pareja: 01 * 1 = 1 92 * 2 = 184 91 * 1 = 91 50 * 0 = 50 17 * 7 = 119 26 * 6 = 156 11 * 1 = 11 00 * 0 = 0 73 * 3 = 219 60 * 0 = 0 12 * 2 = 24 02 * 2 = 4 34 * 4 = 136 00 * 0 = 0 25 * 5 = 125 27 * 7 = 189 41 * 1 = 41 01 * 1 = 1 50 * 0 = 0 71 * 1 = 71 15 * 5 = 75 11 * 1 = 11 00 * 0 = 0 11 * 1 = 11 52 * 2 = 104 12 * 2 = 24 02 * 2 = 0 11 * 1 = 11 29 * 9 = 261 24 * 4 = 96 21 * 1 = 21 12 * 2 = 24 92 * 2 = 184 42 * 2 = 84 13 * 3 = 39 22 *2 = 44 29 * 9 = 261 27 * 7 = 189 34 * 4 = 136 23 *3 = 69 91 * 1 = 91 71 * 1 = 71 41 * 1 = 41 32 *2 = 64 15 * 5 = 75 11 * 1 = 11 11 * 1 = 11 26 *6 = 156 52 * 2 = 104 12 * 2 = 24 12 * 2 = 24 29 * 9 = 261 29 * 9 = 261 25 * 5 = 25
Posteriormente, se suma el resultado de las multiplicaciones y del resultado obtenido, se tomarán las tres últimas cifras y éstas se dividen entre el factor 34: El resultado de la suma de las multiplica-ciones es: 4339 9 cociente
34 / 339 33 residuo Con el cociente y el residuo se consulta la tabla del Anexo II del presente voto y se asigna la homonimia: 9 = A 33 = Z
Para calcular el dígito verificador del RFC se asignan los valores del Anexo III del presente voto a las letras y números del registro federal de contribuyentes formado a 12 posiciones: Ejemplo: GUAJ 631213 AZ G = 16 U = 31 A = 10 J = 19 6 = 06 3 = 03 1 = 01 2 = 02
1 = 01 3 = 03 A = 10 Z = 36 Una vez asignados los valores, se aplica la siguiente fórmula tomando como base el factor 13 en orden descendente a cada letra y número del RFC para su multiplicación:
(Vi * (Pi + 1)) + (Vi * (Pi + 1)) + ..............+ (Vi * (Pi + 1)) MOD 11 Vi Valor asociado al carácter de acuerdo a la tabla del Anexo III del presente voto. Pi Posición que ocupa el i-esimo carácter tomando de derecha a izquierda es decir P toma los valores de 1 a 12.
Ejemplo: D = ( 16(13) + 31(12) + 10(11) + 19(10) + 06(9) + 03(8) + 01(7) + 02(6) + 01(5) + 03(4) + 10(3) + 36(2) ) = 1096 El resultado de la suma se divide entre el factor 11. 99 cociente 11 / 1096 07 residuo Si el residuo es igual a cero, este será el valor que se le asignara al dígito verificador. Si el residuo es mayor a cero se restara este al factor 11. Si el residuo es igual a 10 el dígito verificador será “A”. Si el residuo es igual a cero el dígito verificador será cero. 11 - 7 = 4 Ello resulta en: GUAJ 631213AZ4