11.05.2013 Views

Evaluación de Algoritmos de Ruteamiento Multipunto en Redes de ...

Evaluación de Algoritmos de Ruteamiento Multipunto en Redes de ...

Evaluación de Algoritmos de Ruteamiento Multipunto en Redes de ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ANEXO A : Función Complejidad <strong>de</strong> Tiempo & NP<br />

Completitud<br />

En simples palabras se pue<strong>de</strong> <strong>de</strong>cir que un algoritmo es una secu<strong>en</strong>cia <strong>de</strong> pasos que<br />

permit<strong>en</strong> resolver un problema. Normalm<strong>en</strong>te, esta resolución involucra traducir el<br />

algoritmo a algún l<strong>en</strong>guaje para computador. Esto último ya es una limitante <strong>en</strong> términos <strong>de</strong><br />

la comparación <strong>de</strong> algoritmos, pues el resultado <strong>de</strong> los algoritmos <strong>de</strong>p<strong>en</strong><strong>de</strong> <strong>de</strong> la máquina <strong>en</strong><br />

la cual se trabaje, el l<strong>en</strong>guaje <strong>de</strong> programación utilizado, etc. Entonces ¿Cómo comparar<br />

algoritmos <strong>de</strong> una manera objetiva?. En términos <strong>de</strong> la ejecución <strong>de</strong>l algoritmo, un aspecto <strong>de</strong><br />

importancia es el tiempo que éste tarda <strong>en</strong> <strong>en</strong>contrar una solución. Se hace notar que <strong>en</strong> otros<br />

ámbitos, tal como la ing<strong>en</strong>iería <strong>de</strong> software, lo que pue<strong>de</strong> interesar es la compresión <strong>de</strong>l<br />

algoritmo. Sin embargo, t<strong>en</strong>i<strong>en</strong>do <strong>en</strong> cu<strong>en</strong>ta sólo el tiempo <strong>de</strong> ejecución <strong>de</strong>l algoritmo: ¿cómo<br />

juzgar cuál algoritmo se ejecuta más rápido?. En rigor esto no es posible, tal como se<br />

m<strong>en</strong>ciona anteriorm<strong>en</strong>te, ya que el tiempo <strong>de</strong> ejecución <strong>de</strong>p<strong>en</strong><strong>de</strong> <strong>de</strong>l procesador <strong>de</strong> la<br />

máquina, el l<strong>en</strong>guaje utilizado, el estilo <strong>de</strong> programación, etc. A pesar <strong>de</strong> esto es posible<br />

medir cuantos pasos <strong>de</strong> computación elem<strong>en</strong>tales (operaciones básicas) realiza cada<br />

algoritmo para <strong>en</strong>contrar una solución. Se asume que las operaciones básicas son aquellas<br />

que <strong>de</strong>moran una unidad <strong>de</strong> tiempo <strong>de</strong> máquina, tales como: sumar, multiplicar, comparar,<br />

etc.<br />

Si se consi<strong>de</strong>ra un algoritmo como una secu<strong>en</strong>cia <strong>de</strong> pasos que se sigue para resolver un<br />

problema, dada una cierta <strong>en</strong>trada <strong>de</strong> datos, el número <strong>de</strong> pasos <strong>de</strong>l algoritmo <strong>de</strong>p<strong>en</strong><strong>de</strong> <strong>de</strong>l<br />

tamaño <strong>de</strong> dicha <strong>en</strong>trada. Consi<strong>de</strong>rando un tamaño específico <strong>de</strong> la <strong>en</strong>trada, un algoritmo se<br />

pue<strong>de</strong> evaluar <strong>de</strong> distintas maneras. Algunas <strong>de</strong> estas formas <strong>de</strong> evaluación pue<strong>de</strong>n<br />

correspon<strong>de</strong>r al peor caso, al mejor caso o al caso promedio.<br />

Peor caso: El peor caso <strong>de</strong> tiempo <strong>de</strong> ejecución es el límite superior para el tiempo <strong>de</strong><br />

ejecución consi<strong>de</strong>rando cualquier <strong>en</strong>trada. El algoritmo no supera este valor <strong>en</strong> ningún caso.<br />

Mejor caso: ti<strong>en</strong>e <strong>de</strong>finición análoga a la <strong>de</strong> peor caso.<br />

Caso promedio: La i<strong>de</strong>a es obt<strong>en</strong>er el valor esperado para el tiempo. Normalm<strong>en</strong>te se obti<strong>en</strong>e<br />

suponi<strong>en</strong>do todas las <strong>en</strong>tradas posibles con igual probabilidad.<br />

Cada problema ti<strong>en</strong>e asociado un tamaño, y el concepto exacto que mi<strong>de</strong> el tamaño <strong>de</strong>l<br />

problema <strong>de</strong>p<strong>en</strong><strong>de</strong> <strong>de</strong> su naturaleza. Así, para una <strong>en</strong>trada correspondi<strong>en</strong>te a un vector, el<br />

tamaño correspon<strong>de</strong> a su longitud; para una matriz, el número <strong>de</strong> elem<strong>en</strong>tos que la<br />

compon<strong>en</strong>; para un grafo, pue<strong>de</strong> ser el número <strong>de</strong> nodos (a veces es más importante<br />

consi<strong>de</strong>rar el número <strong>de</strong> arcos, <strong>de</strong>p<strong>en</strong>di<strong>en</strong>do <strong>de</strong>l tipo <strong>de</strong> problema a resolver); <strong>en</strong> un archivo<br />

se suele usar el número <strong>de</strong> registros, etc. En g<strong>en</strong>eral no es posible dictar una regla g<strong>en</strong>eral,<br />

pues cada problema ti<strong>en</strong>e su propia lógica <strong>de</strong> costo.<br />

El ʺtime complexity functionʺ (función <strong>de</strong> complejidad <strong>de</strong> un algoritmo) es una función<br />

que <strong>de</strong>p<strong>en</strong><strong>de</strong> <strong>de</strong>l tamaño <strong>de</strong> la <strong>en</strong>trada al algoritmo, y expresa la mayor cantidad <strong>de</strong> tiempo<br />

que el algoritmo requeriría para resolver el problema.<br />

Casi siempre los problemas pequeños pue<strong>de</strong>n resolverse <strong>de</strong> manera simple y <strong>de</strong> diversas<br />

formas, sin embargo las limitaciones aparec<strong>en</strong> cuando se abordan problemas más gran<strong>de</strong>s.<br />

En consecu<strong>en</strong>cia, interesa estudiar el comportami<strong>en</strong>to <strong>de</strong> un algoritmo cuando el tamaño <strong>de</strong>l<br />

problema crece, esto es cuando ti<strong>en</strong><strong>de</strong> a infinito.<br />

82

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!