12.07.2015 Views

Cap. 4 Complejidad temporal de algoritmos - Inicio

Cap. 4 Complejidad temporal de algoritmos - Inicio

Cap. 4 Complejidad temporal de algoritmos - Inicio

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

14 Estructuras <strong>de</strong> Datos y Algoritmos4.15. Sobre el costo O(1).Las personas que conocen los <strong>de</strong>talles internos <strong>de</strong> un procesador saben que una suma <strong>de</strong>moramenos que una multiplicación o división; esto si los números son enteros. En el caso <strong>de</strong>flotantes los costos son aún mayores que para enteros.Veamos esto con más <strong>de</strong>talle. Si consi<strong>de</strong>ramos números <strong>de</strong> n bits, y un sumador organizado <strong>de</strong>tal manera que sume primero los bits menos significativos, luego la reserva <strong>de</strong> salida <strong>de</strong> éstosmás los dos bits siguientes; y así sucesivamente. Si se consi<strong>de</strong>ra O(1) el costo <strong>de</strong> la suma <strong>de</strong> unbit, entonces la suma <strong>de</strong> dos enteros <strong>de</strong> n bits será O(n). Esta estructura <strong>de</strong> un sumador conpropagación ondulada <strong>de</strong> la reserva pue<strong>de</strong> mejorarse con circuitos adicionales para generarreservas a<strong>de</strong>lantadas.Un algoritmo primitivo para efectuar multiplicaciones es mediante la suma repetitiva <strong>de</strong> uno <strong>de</strong>los operandos.Por ejemplo el producto <strong>de</strong> dos números <strong>de</strong> 4 bits:0101*1100------0000000001010101-------0111100Esto implica efectuar n sumas si los operandos son <strong>de</strong> n bits. Lo cual implica un costo O(n 2 )para la multiplicación, consi<strong>de</strong>rando que cada suma es <strong>de</strong> costo O(n). Razón por la cual sesuelen diseñar unida<strong>de</strong>s <strong>de</strong> multiplicación, en hardware, con mejores <strong>algoritmos</strong>.En un ambiente <strong>de</strong> microcontroladores o microprocesadores que no tengan implementada laoperación multiplicación o división, pero que si tengan en su repertorio <strong>de</strong> acciones: sumas,restas y <strong>de</strong>splazamientos a la izquierda y <strong>de</strong>recha en un bit, se consi<strong>de</strong>ran esas instrucciones <strong>de</strong>costo O(1); nótese que en el ambiente anterior, la suma era O(n).Consi<strong>de</strong>remos, en este último contexto, dos <strong>algoritmos</strong> para multiplicar:4.17.1. Algoritmos <strong>de</strong> multiplicación./* retorna m*n */unsigned int multipliquelineal(unsigned int m, unsigned int n){ unsigned int r=0;while ( n>0 ){ r+=m; n--; }return(r);}Profesor Leopoldo Silva Bijit 20-01-2010

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

Saved successfully!

Ooh no, something went wrong!