Está en la página 1de 12

Los Algoritmos en la Computación

Un algoritmo es un procedimiento computacional bien definido que


toma algún valor, o un conjunto de valores como entrada y produce algún
Home Page valor, o un conjunto de valores como salida.
Title Page
Un algoritmo es también un conjunto finito de instrucciones que
Contents resuelven un problema computacional bien espécificado :
◭◭ ◮◮ Entrada: El algoritmo recibe un conjunto de valores de entrada.
◭ ◮ Salida : El algoritmo produce unos valores de salida. Estos valores
de salida es una solución al problema.
Page 2 of 13

Unicidad: Los resultados intermedios en cada paso quedan definidos


Go Back
de manera única y sólo dependen de las entradas y los resultados de
Full Screen los pasos anteriores.

Close Finito : El algoritmo se detiene después de ejecutar un número finito


de instrucciones.
Quit
Correctitud : El algoritmo produce valores de salida correctos para
cada conjunto de valores de entrada.
Eficiente : Es posible ejecutar cada etapa del algoritmo en tiempo
finito.
Problema de Ordenamiento
Ordenar una secuencia de números en orden creciente (definido for-
malmente como un problema de ordenamiento).
Home Page
Entrada:
Title Page
Sucesión de n números <a1 , ..., an >.
Contents

Salida:
◭◭ ◮◮
′ ′ ′
Una permutación (reordenamiento) <a1 , a2 , ..., an > de la entrada tal que:
◭ ◮
′ ′ ′

Page 3 of 13
a1 ≤a2 ≤...≤an

Go Back
Ejemplo :

Full Screen Entrada:

Close <31,41,59,26,41,58>
Quit Salida:

<26,31,41,41,58,59>

Una secuencia de entrada es llamada una instancia del problema


de ordenamiento.
Home Page

Title Page

Contents
Problema de Ordenamiento (Cont.)
◭◭ ◮◮

◭ ◮ Algoritmos de ordenamiento

Page 4 of 13
Diseño

Go Back
Análisis

Full Screen Implementación

Close

Quit
Tipos de Problemas Solucionados utilizando
Home Page
Algoritmos
Title Page Las aplicaciones prácticas de los algoritmos son muchas, incluimos
los siguientes ejemplos.
Contents
Proyecto del Genoma Humano: La meta es identificar todos los
◭◭ ◮◮ 100,000 genes en el ADN de la especie humana, determimando la
◭ ◮ secuencia de 3 billones de pares de bases quı́micos que forma el ADN
humano. Se ordenan esta información en una bases de datos y se
Page 5 of 13 desarrolla herramientas para analizar los datos. Cada una de estas
etapas requiren sofisticados algoritmos.
Go Back

Posibilidades de Internet: Millones de personas alrededor del


Full Screen
mundo tienen acceso a Internet, buscando y recuperando grandes
Close cantidades de información. Algoritmos ingeniosos son empleados para
manejar y manipular grandes volumenes de datos. Problemas como
Quit
encontrar la mejor ruta por donde pueda viajar los datos y realizar
busquedas para encontrar rápidamente paginas de una información
particular.
Más sobre Solución de Problemas utilizando
Home Page Algoritmos (Cont.)
Title Page

Contents
Congruencia Lineal : Dada una ecuación de ax ∼ = b (mod n), donde
◭◭ ◮◮ a, b y n son enteros y debemos encontrar todos los enteros x modulo
n, que satisfagan la ecuación. Pueden no tener solución o existe una
◭ ◮ o más soluciones.
Page 6 of 13 Multilplicación de Matrices: Dadas una secuencia
Go Back
<A1 , A2 ..., An > de n matrices y deseamos determinar el pro-
ducto A1 A2 ...An . La multiplicación de matrices es asociativa,
Full Screen por lo tanto existe varias formas correctas de realizar el orden
de la multiplicación. Por ejemplo si n = 4 las posibles forma de
Close
asociar las matrices son : (A1 (A2 (A3 (A4 ))), (A1 ((A2 A3 )(A4 )),
Quit ((A1 (A2 )(A3 (A4 )) ((A1 (A2 A3 ))A4 ), (((A1 A2 )A3 )A4 ). Si todas la
matrices son cuadradas, no se afecta el tiempo tome la multiplicación
de matrices.
Home Page Los Algoritmos como una Tecnologı́a
Title Page
Supongamos que tenemos un computador infinitamente rápido y sin
Contents restricciones de espacio en memoria.
Existe entonces alguna razón para estudiar el comportamiento
◭◭ ◮◮ de los algoritmos?.
◭ ◮
Si tenemos un computador infinitamente rápido y el método para solu-
Page 7 of 13 cionar el problema es correcto.
De acuerdo a que normas realizarı́a la implementación del algo-
Go Back
ritmo?.
Full Screen Si tenemos un computador rápido, pero no infinitamente rápido. La memo-
ria se pueden conseguir a un costo económico, pero con lı́mitaciones en
Close
espacio.
Quit
Qué podemos hacer para administrar estos recursos correcta-
mente?
Técnicas de Análisis y Diseño de Algoritmos
Home Page
A través del análisis de algoritmos es posible establecer unas medi-
Title Page da de eficiencia sobre un algoritmo y compararlo con otros algoritmos
que se puedan escribir para resolver el mismo problema, sin necesidad de
Contents
implementarlos.
◭◭ ◮◮ Factores a tener en cuenta al analizar un algoritmo :

◭ ◮ Correctitud del algoritmo.

Page 8 of 13
Eficiencia.

Go Back • Tiempo
• Espacio
Full Screen

La estructura de datos utilizadas en el algoritmo para resolver el


Close
problema.
Quit
Modelo Computacional.
El número de datos con los cuales trabaja el algoritmo.
Home Page
Eficiencia
Title Page
Lo ideal, al hacer la evaluación de eficiencia de un algoritmo, seria
Contents encontrar una función matemática que describiera de manera exacta el
tiempo empleado por un algoritmo en procesar una entrada de tamaño n y
◭◭ ◮◮
producir una solución al problema. Como ejemplo de eficiencia analicemos
◭ ◮ dos algoritmos de ordenamiento.

Page 9 of 13 Insertion Sort: Toma aproximadamente un tiempo de c1 n2 para


ordenar n elementos (c1 es una constante que no depende de n).
Go Back
Merge Sort: Toma aproximadamente un tiempo c2 nlgn para or-
Full Screen
denar n elementos (c2 es otra constante que no depende de n).
Close
c1 < c2 .
Quit
lgn vs n.
Eficiencia (Cont.)
Si n = 1000000 = 106

Computador A Computador B
Insertion-Sort Merge-Sort
Home Page

Title Page (c1 n2 ) Inst. (c2 nlg n) Inst.

Contents Supercomputador PC
◭◭ ◮◮
109 Inst/s (1 billón) 107 Inst/s (10 millones)
◭ ◮
Supercompilador: 2n2 Intr. Compilador ineficiente: 50nlg n Inst.
Page 10 of 13

Go Back c1 =2 c2 =50

Full Screen 2n2 = 2(106 )2 = 2(1012 ) 50nlg n = 50(106 )lg(106 )


Close 6 2
50(106 )lg106 )Inst
Tiempo real: 2(10 ) Inst
10 Inst/s
9 Tiempo real : 107 Inst/s
Quit

50lg106
= 2(103 ) ∼
= 2000 s 10

= 100 s

=33.33 minutos ∼
= 1.67 minutos
La ventaja del Merge Sort es mucho mayor al ordenar 10 millones
de nuúmeros, donde el Insertion Sort toma aproximadamente 23 dias
en ordenar los números, mientra el Mege Sort tarda unos 20 minutos.
Problemas Difı́ciles (Hard Problems)
Home Page

Existe unos problemas para los cuales no existe una solución efi-
Title Page
ciente, este tipo de problemas son conocidos como NP-Completos
Contents

Por qué son interesantes los problema NP-completos?


◭◭ ◮◮

◭ ◮
Aunque no han encontrado algoritmos eficientes para problemas NP-
Page 11 of 13 completos, en la actualidad no se ha demostrado que un algoritmo
eficiente para esté tipo de problemas no exista.
Go Back
En la actualidad existe muchos problemas NP-completos sin resolver.
Full Screen Si se encuentra un algoritmo eficiente para alguno de ellos, entonces
Close
existirı́a un algoritmo eficiente para el resto.

Quit
Varios problemas NP-completos son similares pero no identicos. Un
pequeño cambio en el enunciado del problema puede causar grandes
cambios en la eficiencia.
Problemas Difı́ciles (Cont.)
Ejemplos

Home Page
Problema del Clique : Un clique es un grafo G = (V, E) con
Title Page un subconjunto V’⊆ V de vértices, donde cada pareja de vértices
está conectada por una arista de E. En otras palabras, un clique es
Contents
un subgrafo completo en G. El tamaño de un clique es el número de
◭◭ ◮◮ vértices que contiene. El problema del Clique es un problema de
optimización : encontrar un clique de tamaño máximo en un grafo.
◭ ◮ Como problema de decisión se pregunta si existe un clique de tamaño
k en el grafo. La definición formal es
Page 12 of 13
Clique = { (G, k) : G es un grafo con un clique de tamaño k }
Go Back
Problema de la Suma de subconjuntos : En el problema Suma
Full Screen de Subconjuntos, tenemos un conjunto finito de números natu-
rales S ⊂ N y un número natural t ∈ N. La pregunta es si existe
Close
un subconjunto S’⊆ S donde la suma de los elementos es igual a t.
Quit
Por ejemplo, si S = {1,2,7,14,49,98,43,686,2409, 2793, 16808, 17206,
117206, 117705, 117993} y t = 138457, entonces el subconjunto S’=
{1,2,7, 98, 343,686,2409,17206,117705} es la solución. La definición
formal al problemas es

P − subconj = { (S, t) : existe un subconjunto S ⊆ S tal que t
suma
= s∈S ′ S }
Problemas Difı́ciles (Cont.)

Home Page
Ciclos Hamiltoniano : Un ciclo hamiltoniano es un grafo G =
Title Page (V, E) es un simple ciclo que contiene cada vértice en V. Un grafo
es hamiltoniano si contiene un ciclo hamiltoniano; en otro caso no es
Contents
hamiltoniano.
◭◭ ◮◮
" "
# #

" "
# #

" "
# #

3 3

2 2

◭ ◮ ! !
1

0
1

0
3

2
3

4
4

4
4
5

5
4
4
5

5
$
$

$
$
%

%
$
$
%

1 1

0 0

4 4 4 $ $ $
5 5 % %

! !

1 1

. . 6 6 6
/ / 0 0 7 7

! !

B B D D D
C C E E

. . 6 6 6
/ / 7 7

B B D D D
C C E E

. . 6 6 6
/ / 7 7

Page 13 of 13 B
C
B
C
D D
E
D
E

, , @ @ @ 8 8

- - A A 9 9

F F F
G G G

, , @ @ @ 8 8

- - A A 9 9

F F F
G G G

> > >


? ? ?

, , @ @ @ 8 8
- - A A 9 9

F F F

G G G

> > >


? ? ?

Go Back >
?
>
?
>
?

< < < : : :


= = ; ;

* *
+ +

< < < : : :


= = ; ;

* *
+ +

< < < : : :


= = ; ;

* *
+ +

Full Screen (
)

(
)
(
)

(
)
&
'

&
'
&
'

&
'

( ( & &

) ) ' '

Close

Quit
Fig 1: Grafo con ciclo hamiltoniano

Podemos definir el problema de los ciclos hamiltoneanos como: Un


grafo G tiene un ciclo hamiltoniano?. La definición formal es
Ciclo − Ham = { (G) : G es un grafo hamiltoniano }

También podría gustarte