Está en la página 1de 32

Analizando algoritmos

• El análisis de un algoritmo es para predecir los recursos que este


requiere.

• Recursos como:
– Tiempo (complexity time).

– Memoria (complexity space).

– Comunicación (complexity communication).


• Lo mas frecuente es la complejidad de tiempo (complexity time).

• Generalmente, para un problema se analizan diversos algoritmos


candidatos, esto permite identificar al mas eficiente.

• El análisis puede indicar mas de un candidato viable, pero en el


proceso diversos algoritmos generalmente son descartados.
• Analizar un algoritmo simple puede ser un descubrimiento. Pues
− Como el comportamiento de un algoritmo puede ser diferente para cada
entrada posible, entonces es necesario resumir el comportamiento en
fórmulas fácilmente entendibles.

− Aunque, generalmente, se selecciona un solo modelo de máquina (para


analizar un algoritmo); es posible enfrentarse a muchas opciones (decidir
cómo expresar nuestro análisis).

¿Que
modelo
debo
usar?
• En el proceso de análisis se debe:
− Hallar un medio de expresión que sea simple para escribir y manipular,

− Mostrar las características importantes de los recursos que el algoritmo


requiere, y

− Suprimir detalles tediosos.

• Para el análisis, la matemática requerida puede incluir:


– Matemática discreta.

– Teoría de probabilidades.

– Algebra.

– Habilidad para identificar los términos mas significantes en una fórmula.


Problemas y algoritmos

 Un algoritmo es un método detallado paso a paso para la solución


de un problema.

 ¿Qué es un problema?.

 Los siguientes cuatro primeros problemas han motivado el


desarrollo de la teoría de complejidad.
Problema 1: Grafos alcanzables (graph reachability)

 Grafo: G = (V, E).

 Muchos problemas computacionales están relacionados


con grafos.

 Problema básico:
– Dado un grafo G y dos nodos 1, n  V, ¿existe un camino de 1 hacia n?.
Este problema es llamado alcanzabilidad.
 La alcanzabilidad tiene un conjunto infinito de posibles instancias.
– Cada instancia es un objeto matemático del cual damos una interrogante y
se espera una respuesta.
 Ejemplo:
– El grafo y dos de sus nodos.

 El tipo de pregunta formulada es lo que caracteriza el problema.

 Nota: La alcanzabilidad formulada tendrá como respuesta un SI o un


NO.

 Por lo tanto, tales problemas son llamados: Problemas de decisión.


 Estamos interesados en algoritmos que solucionan problemas.
Pero es necesario conocer un modelo formal (MT) para expresar
cualquier algoritmo.

 El problema de la alcanzabilidad puede ser solucionado con un


algoritmo de busca (search algorithm).

– Complejidad de tiempo: O(n2).


– Complejidad de espacio: O(n).
Problema 2: Flujo máximo (maximum flow)

 Es una generalización de la alcanzabilidad en grafos.

 Se trabaja con un tipo especial de grafo, llamado: Red.

Capacidad del
arco: c(i,j)

Nodo de origen Nodo de destino

Flujo del arco (i,j): f(i,j)


N = (N, A, s, t, c)
 (i,j), f(i,j)  c(i,j)
 Problema: Dada un red N, hallar un flujo de mayor valor posible.

 Este problema no es un problema de decisión, pero puede ser


convertido, es decir:
– Dada una red y un valor entero k, ¿existe un flujo de valor k o mas ?.

 Existes diversos algoritmos:


– Los algoritmos de tiempo polinomial se basan en el llamado “teorema de
flujo maximo-corte mínimo”.
 Algunos algoritmos presentan:
– Complejidad de tiempo:
 O(n3C), donde C denota la capacidad máxima de cada arco en la red.

 O(n5).

– Complejidad de espacio:
 O(n2).
Problema 3: casamiento bipartido (bipartite matching)

 Un grafo bipartido se define por:


– B = (U, V, E)
 Donde
– U = {u1, u2, …, un}: Hombres.

– V = {v1, v2, …, vn}: Mujeres.

– EUxV : Conjunto de arcos.

U V
 Problema computacional
– Dado un grafo bipartido, ¿ existe un casamiento?.
 Un concepto central en los algoritmos es la llamada: Reducción.
– Una reducción es un algoritmo que soluciona un problema A,
transformando cualquier instancia de A en otra que sea equivalente de un
problema B, del cual se conoce como se solucionan sus instancias.

Red con los:


Grafo bipartido: nodos: U  V  {s, t}.
(U, V, E)
arcos: {(s, u)/ u  U}  E  {(v, t)/ v V}

Reducción

U V
 Formalmente:
– Un grafo bipartido original tiene un casamiento sii la red resultante tiene un
flujo de valor n.

 Matching  max flow.

 Con esta reducción se afirma que el problema de casamiento es


polinomial.

Me he casado
polinomialment
e
Problema 4: Agente viajero (TSP)

 Problema:
– Dada n ciudades y un distancia dij entre dos ciudades cualquiera i y j. El
problema es cubrir todas las ciudades al menor costo.

 Problema de decisión para el TSP:


– Dado un limite B y la matriz dij que denota distancias entre las ciudades,
¿existe un tour con una distancia total de a lo mas B?.
 Procedimiento:
– Enumerar todas la posibles soluciones, computando el costo que ella
implica y escogiendo la mejor.

 Análisis de eficiencia computacional:


– Complejidad de tiempo:
 n!, pues existen ½(n-1)! tours que se deben considerar.

– Complejidad de espacio:
 O(n), pues solamente se necesita recordar la permutación actualmente
examinada.

 No existe un algoritmo polinomial que solucione el problema. Pero


existen heurísticas.
Problema abierto en ciencia de la
computación:

¿P = NP?
Modelamiento matemático

 Metodología
– Conjunto de conceptos que cohesionan los principios y técnicas,
mostrando cuando, como y porque usarlos en situaciones diferentes.

 La metodología que usa la matemática en la solución de problemas,


es llamada modelamiento matemático.

Problema Solución

Modelo abstracto Modelo transformado


 Ejemplo
– Supongamos una red trenes entre las ciudades A, …, F

Problema: Hallar un subconjunto de la red de modo que enlace todas


las ciudades y tenga una longitud mínima.

B C D E F
A 5 10
B 5 10 20
C 20 30
D 20
E 10

Esta tabla es un modelo del mundo real.


20

5 5
A B C
Esta tabla puede ser transformada en
10 10 20 30
un grafo (modelo matemático)
20 10
D E F
El siguiente paso es:

Hallar una solución en términos de este modelo, es decir, hallar una


grafo G’ con la misma cantidad de nodos y un conjunto mínimo de arcos
que conecte todas las ciudades y que satisfaga la condición del
problema.

El modelo matemático es escogido, con el objetivo de obtener una solución.

La solución es dada por un algoritmo:

1) Seleccionar cualquier nodo y colocarlo en el conjunto de nodos ya


conectados.
2) Escoger, dentro de los nodos no conectados, aquel que este mas cerca de
un nodo conectado. Si existe mas de un nodo con esa característica, escoger
arbitrariamente cualquiera de ellos.
3) Repetir el paso 2 hasta que todos los nodos estén conectados.
Por lo tanto, dado la red:
20

5 5
A B C

10 10 20 30

20 10
D E F

Tenemos las siguientes soluciones:

5 5 5 5
A 5 A 5 A B C
B C B C

10 20 10 20 10

20 10
10 F 10 F D E F
D E D E

5 5
A B C

10

20 10
D E F
En resumen:

¿Qué hemos hecho?


1) Obtener un modelo matemático para el problema.

2) Formulación de un algoritmo en términos del modelo, es decir es una


técnica de resolución de problemas en Ciencia de la Computación.
Análisis de algoritmos
Introducción

• Antes de analizar un algoritmo, primero se debe tener claro:


1) Modelo computacional.

2) Dominación asintótica.

3) Análisis de algoritmos.
– Costo de un algoritmo.
– Función de complejidad de un algoritmo.
– Tamaño de la entrada de los datos.
– Clases de comportamiento asintótico.
– Jerarquía de las funciones.
– Casos de complejidad.
– Comparación de programas.
– Técnicas para el análisis de algoritmos.
1) Modelo computacional

• Aquel que incluye los recursos que serán usados, además de los
costos que implica su uso.
• RAM
¿Que
modelo
• PRAM debo
usar?
• Modelo RAM:
– Las instrucciones son ejecutadas una después de la otra, con operaciones
no concurrentes.

X1 X2 ... Xn Cinta de entrada

Acumulador

Contador Programa

.
.
.
Memoria

Cinta de salida y1 y2 ... yn


• Modelo PRAM:
– Investigar modelos para computadores paralelos.

Unidad de Control

P1 P2 Pp
... ... ...
...
Memoria Privada Memoria Privada Memoria Privada

Interconexión en Red

...
Memoria Global
Memoria distribuida:

Memorias Procesadores

.
. Interconnection
. network
p-1

.
I/O paralela .
.

También podría gustarte