Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una...

24
Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea

Transcript of Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una...

Page 1: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

Tipos de Algoritmos

Un algoritmo es un conjunto finito de instrucciones precisas que

realizan una tarea

Page 2: 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:

Page 3: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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.

Page 4: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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.

Page 5: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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.

Programación dinámicaProgramación dinámica

Page 6: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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.

Búsqueda y Búsqueda y enumeraciónenumeración

Page 7: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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 heurísticosAlgoritmos heurísticos

Page 8: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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).

Algoritmos voracesAlgoritmos voraces

Page 9: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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:

Cómo se calcula un dígito verificador mod10

Page 10: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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? = 8

El número 8 es el dígito verificador mod10 para este arreglo de dígitos

Page 11: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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:

Cómo se calcula un dígito verificador para una referencia

Letra Número correspondiente

A J S 1

B K T 2

C L U 3

D M V 4

E N W 5

F O X 6

G P Y 7

H Q Z 8

I R   9

Page 12: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

Ejemplo:

Referencia alfanumérica: 15ABC13b Referencia Alfabética: EmpresaXReferencia numérica: 15123132 Referencia numérica: 54795116

Una vez que la referencia sea numérica, se aplica la rutina de cálculo.

Page 13: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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

Page 14: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

Se multiplica la referencia por el Algoritmo ReferenciaAlgoritmo0x137x116x238x190x175x130x11

0x230x190x170x133x110x230x190x177x130 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

Page 15: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

5) 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

Page 16: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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.

Cómo se calcula un dígito verificador mod10

Page 17: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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 = 260 = 00 C = 13 P = 271 = 01 D = 14 Q = 282 = 02 E = 15 R = 293 = 03 F = 16 S = 324 = 04 G = 17 T = 335 =05 H = 18 U = 346 = 06 I = 19 V = 357 = 07 J = 21 W = 368 = 08 K = 22 X = 379 = 09 L = 23 Y = 38& = 10 M = 24 Z = 39A = 11 N = 25 Ñ = 40

Page 18: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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 = 5017 * 7 = 119 26 * 6 = 156 11 * 1 = 11 00 * 0 = 073 * 3 = 219 60 * 0 = 0 12 * 2 = 24 02 * 2 = 434 * 4 = 136 00 * 0 = 0 25 * 5 = 125 27 * 7 = 18941 * 1 = 41 01 * 1 = 1 50 * 0 = 0 71 * 1 = 7115 * 5 = 75 11 * 1 = 11 00 * 0 = 0 11 * 1 = 1152 * 2 = 104 12 * 2 = 24 02 * 2 = 0 11 * 1 = 1129 * 9 = 261 24 * 4 = 96 21 * 1 = 21 12 * 2 = 2492 * 2 = 184 42 * 2 = 84 13 * 3 = 39 22 *2 = 4429 * 9 = 261 27 * 7 = 189 34 * 4 = 136 23 *3 = 6991 * 1 = 91 71 * 1 = 71 41 * 1 = 41 32 *2 = 6415 * 5 = 75 11 * 1 = 11 11 * 1 = 11 26 *6 = 15652 * 2 = 104 12 * 2 = 24 12 * 2 = 2429 * 9 = 261 29 * 9 = 261 25 * 5 = 25

Page 19: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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

Page 20: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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

Page 21: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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 AZG = 16U = 31A = 10J = 196 = 063 = 031 = 012 = 02

Page 22: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

1 = 013 = 03A = 10Z = 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:

Page 23: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

(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.

Page 24: Tipos de Algoritmos Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea.

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

Hoja de cálculo de Microsoft Excel