You are on page 1of 8

!"#$%$ $' %()'"$#*%+', -)#(.

/0)%12%
3'45%, 67894.:;)'8<=7<
>%.)#4:?%, 7=@6==<
A/B;)', C:%" -%)?/D E/))'D FG)'*

E#B' -/B(?'H#.I

Ls la medlda de la canLldad de Llempo requerldo para e[ecuLar un algorlLmo.

J#0 9 A/.%.#/" K9 LM 9)$') /1N

noLaclón usada comunmenLe para descrlblr la Lasa de creclmlenLo del Llempo de
e[ecuclón o uso de memorla usada por un algorlLmo.

usualmenLe descrlbe el peor caso del Llempo de e[ecuclón de un algorlLmo.

-/B(?'+#$%$ '" %?0/)#.B/D




! -/"D.%". E#B' LM 9K7N

Se neceslLa una canLldad de Llempo fl[a para e[ecuLar un programa o algorlLmo. no
dependen del numero de lnpuLs o enLradas.

Þor e[emplo, cuando en un lengua[e se qulere escrlblr una funclón que reLorne falso o
verdadero basado en el valor del prlmer elemenLo de un arreglo. Ll programa neceslLa de
enLrada un arreglo con enLeros. Sl el prlmer enLero del arreglo en mayor que 0, la funclón
regresa verdadero, en cualquler oLra condlclón, la funclón regresa falso.

Ln esLe e[emplo, el Llempo de e[ecuclón de la funclón no depende del numero de
elemenLos. LsLe solo checa el prlmer elemenLo y regresa el resulLado. A la funclón no le
lmporLa sl el arreglo Llene un enLero o un mlllón de enLeros. ue esLo podemos declr que el
Llempo de e[ecuclón de esLa funclón es consLanLe.

! O"P')D' Q4R')B%" E#B'

La funclón de Ackerman es e[emplo cláslco de recurslvldad. Ls una funclón que crece muy
rápldamenLe (LanLo es su valor como en su árbol de llamadas), esLa deflnlda:



Þara valores pequenos de m, como 1, 2 o 3 A crece relaLlvamenLe lenLo con respecLo a n
(a lo sumo exponenclalmenLe). Þara m >= 4 crece más rápldo







Sl hablamos de la funclón lnversa, esLa crece muy lenLamenLe. Se denoLa con !. ue hecho,
!(n) es menor que 3 para cualquler Lamano de enLrada n, que ya para A(4, 4) esLa en el
orden de .

Aparece en algunos algorlLmos como por e[emplo, ºdls[olnL-seL daLa sLrucLure" y
ºChazelle's algorlLhm for mlnlmun spannlng Lrees".

! S/0%)#.B#4 E#B' LM S/0
<
A

Las funclones o algorlLmos neceslLan una canLldad de Llempo que es logarlLmlcamenLe
proporclonal al numero de elemenLos de enLrada.

Asumlr que se qulere buscar un numero (el 41) denLro de un con[unLo de elemenLos
ordenados. Þor e[emplo, Lenemos el slgulenLe con[unLo [3, 3, 8, 9, 41}.

Lmpezamos con el elemenLo de en medlo y hacemos la comparaclón. Ll me[or caso se da
cuando enconLramos el numero al prlmer lnLenLo. Þero el elemenLo de en medlo es el 8.
Cue no es el numero que esLamos buscando. uebldo a que sabemos que el con[unLo de
elemenLos esLa ordenado, podemos deLermlnar que debemos de buscar el numero desde
el elemenLo de en medlo hasLa el ulLlmo. SlmplemenLe lgnoramos la prlmera mlLad del
con[unLo. ue nuevo apllcamos una lóglca slmllar a la mlLad del con[unLo. ConLlnuaremos
con esLo, hasLa enconLrar el elemenLo o llegar a la concluslón de que esLe no exlsLe.

Como se puede ver en cada lnLenLo, el numero de elemenLos es reducldo a la mlLad.
LnLonces en un con[unLo de 1000 numeros, el peor escenarlo serla el slgulenLe:
o uespues del prlmer lnLenLo, nos quedan 300 numeros.
o uespues del segundo lnLenLo, nos quedan 230 numeros.
o uespues del Lercer lnLenLo, nos quedan 123 numeros.
o uespues del cuarLo lnLenLo, nos quedan 62 numeros.
o uespues del qulnLo lnLenLo, nos quedan 31 numeros.
o uespues del sexLo lnLenLo, nos quedan 13 numeros.
o uespues del sepLlmo lnLenLo, nos quedan 7 numeros.
o uespues del ocLavo lnLenLo, nos quedan 3 numeros.
o uespues del noveno lnLenLo, nos queda 1 numero.
o uespues del declmo lnLenLo, ya conocemos el resulLado. ?a sea que
enconLremos el numero buscado o deLermlnemos que no se encuenLra
denLro del con[unLo.

Como se puede ver, en el peor escenarlo neceslLamos solamenLe 10 comparaclones.

Ln Lermlnos maLemáLlcos, sl el numero de elemenLos es n, revlsaremos log
2
n numeros.
Þor lo LanLo es llamada funclón logarlLmlca.

Los arboles de busqueda blnarlos Llenen esLe Llpo de comple[ldad cuando queremos
locallzar un elemenLo en el árbol.

! 3)%4.#/"%? F/T')



! S#"'%) E#B' LM 9KAN

lunclones, programas o algorlLmos que neceslLan una canLldad de Llempo que es
dlrecLamenLe proporclonal al numero de lnpuLs o elemenLos de enLrada.

Þor e[emplo, se qulere escrlblr una funclón que regrese el numero más grande de un
arreglo desordenado de enLeros. La enLrada es un arreglo de enLeros.

Þara resolver esLe problema, Lenemos que lmplemenLar lo slgulenLe:
o lLerar a Lraves del arreglo.
o Asumlr que el numero x más grande es el prlmero.
o Conforme se lLera al slgulenLe elemenLo, comparar el numero mayor x con el
elemenLo acLual. Sl el elemenLo es mayor que x, el elemenLo acLual se
convlerLe en x. Sl esLe es menor que x, no hacer nada. Þor conslgulenLe,
cuando Lermlnemos la lLeraclón del arreglo, sabremos cual es el elemenLo más
grande.

Ln esLe e[emplo, el Llempo de e[ecuclón de la funclón depende del numero de elemenLos
del arreglo. LsLe lLera sobre Lodos los elemenLos del arreglo, haclendo comparaclones y
regresando el resulLado. Aqul sl lmporLa sl la funclón procesa 10 enLeros o un mlllón.

Sl la funclón neceslLa enconLrar el mayor elemenLo de 10 enLeros y para esLo Loma x
mlllsegundos en e[ecuLarlo, se neceslLarán 10x mlllsegundos para enconLrar el numero
mayor en un arreglo de 100 elemenLos. Þor lo LanLo, podemos deduclr, que el Llempo de
e[ecuclón de esLa funclón en llneal.

! UH(/"'".#%? E#B'

un algorlLmo cuyo Llempo de e[ecuclón esLe dado por la formula:

1lempo de e[ecuclón = k1 * (k2)
n


uonde n es el Lamano de los daLos de enLrada y k1, k2 son consLanLes.

Ll Llempo de e[ecuclón crece Lan rápldo que lncluslve las compuLadoras más rápldas no
pueden resolver los problemas de Lamano pracLlco en un Llempo razonable.

Þor e[emplo, LraLar de romper un password probando cada poslble comblnaclón
(asumlendo que es un password numerlco de Lamano n) no da una comple[ldad de C(10
n
)

! F/?I"/B#%? E#B'

Se dlce que un algorlLmo se resuelve en Llempo pollnomlal sl el numero de pasos
requerldos para compleLar el algorlLmo para un numero dado de enLradas es C (n
k
) para
algunos enLeros no negaLlvos k, donde n es la comple[ldad de la enLrada. Se dlce que esLos
algorlLmos son ºrápldos". La mayorla de las operaclones maLemáLlcas como la suma,
resLa, mulLlpllcaclón y dlvlslón, asl como la ralz cuadrada, poLenclas y logarlLmos, pueden
ser reallzados en Llempo pollnomlal. Þrocesar los dlglLos de consLanLes maLemáLlcas,
lncluyendo y , pueden ser calculadas en Llempo pollnomlal.

Se reflere al Llempo Lomado para reallzar algunas operaclones donde exlsLen pasos
repeLlLlvos y el Llempo promedlo requerldo esLa en funclón del numero de pasos a la
poLencla de algun valor. Pagamos un e[emplo no maLemáLlco:

Supongamos una Larea que conslsLe en hacer una serle de cuadros que se van
lncremenLando en Lamano, esLos esLán formados por azule[os cuadrados de una pulgada y
Loma 1 segundo en poslclonar cada azule[o.

o Þara hacer un cuadro de 1 pulgada, neceslLaremos 1 azule[o y Lomará 1 segundo.
o Þara hacer un cuadro de 2 pulgadas, neceslLaremos 4 azule[os y Lomará 4
segundos.
o Þara hacer un cuadro de 3 pulgadas, neceslLaremos 9 azule[os y Lomará 9
segundos.
o Þara hacer un cuadro de 4 pulgadas, neceslLaremos 16 azule[os y Lomará 16
segundos.

LnLonces el Llempo requerldo para crear un cuadro es pollnomlal de acuerdo al Lamano
del cuadro, donde:

1 (segundos) = 1 segundo x Lamano del cuadro en pulgadas ^2

Los algorlLmos pollnómlcos Lardan un Llempo en resolver un problema que se puede
acoLar medlanLe un pollnomlo p(n), que depende del Lamano n del problema. ue esLa
forma, al crecer el Lamano del problema el Llempo que Larda el algorlLmo en resolver el
problema crece, pero despaclo (pollnómlcamenLe), ya que la velocldad de creclenLo de un
pollnomlo, es lenLa (las derlvadas nos ayudan a saber cuál es esa velocldad).

E:)#"0 >%45#"'

una máqulna de 1urlng es una máqulna ldeal -formalmenLe hablando se LraLa de un
algorlLmo- en dos aspecLos báslcos. La prlmera ldeallzaclón se debe a que su memorla es
lllmlLada. La segunda ldeallzaclón se produce por el hecho de una máqulna de 1urlng
nunca comeLe errores. A efecLos de represenLar una máqulna de 1urlng, podemos
lmaglnarla como una clnLa lnflnlLa dlvldlda en cuadros sobre la que se reallzan las
operaclones de manlpulaclón de slmbolos. La máqulna dlspone de un lecLor que reallza las
slgulenLes funclones:

o LsLá slLuado en Lodo momenLo anLe uno de los cuadros de la clnLa
o Lee lo que hay en ese cuadro.
o Lleva a cabo una lnsLrucclón en el momenLo slgulenLe.

1u problema es el slgulenLe: Llenes un numero represenLado en blnarlo y quleres sumarle
1.
Þor e[emplo, 1001011 + 1 = 1001100

Ll algorlLmo "obvlo" funclona asl:
1. nos fl[amos en el blL del exLremo derecho
2. Sl el blL acLual es 1 enLonces lo camblamos por cero, nos fl[amos en el blL
lnmedlaLamenLe a la lzqulerda y regresamos al paso 2, en oLro caso (el blL acLual no es 1)
enLonces lo camblamos por 1 y Lermlnamos

nuesLro e[emplo se verla asl (el blL acLual esLá enLre corcheLes):
100101[1]
10010[1]0
1001[1]00

Ahora blen ¸cómo hacemos una máqulna de 1urlng slmular esLe algorlLmo? Suponemos
que la enLrada es preclsamenLe el numero en blnarlo y Lodo lo demás es un espaclo en
blanco "_".

La prlmera eLapa conslsLe en mover el cabezal hasLa enconLrar el prlmer _, la máqulna
lnlcla en el esLado s1 y con el cabezal en el exLremo lzqulerdo de la enLrada, enLonces hay
Lres poslbllldades: sl aparece un "0" o un "1" enLonces nos quedamos en el esLado s0,
escrlblmos el mlsmo numero "0" o un "1", y movemos el cabezal un lugar a la derecha 8
(rlghL), la oLra poslbllldad es que aparezca un _, en esLe caso acabamos de pasar el
exLremo derecho, asl que nos camblamos a oLro esLado s2, de[amos el espaclo en blanco
lgual, y nos movemos un lugar a la lzqulerda L (lefL), Þor lo LanLo el paso 1 se ve asl en una
máqulna de 1urlng
(s1, "0") - (s1, "0", 8)
(s1, "1") - (s1, "1", 8)
(s1, "_") - (s2, "_", L)

Ck, con esLas Lres lnsLrucclones ya slmulamos el paso 1, y al Lermlno de esLe paso la
máqulna debe esLar en el esLado s2 (paso 2). Ll paso 2 lo hacemos asl: Sl el slmbolo acLual
es "1" enLonces nos quedamos en el esLado s2, camblamos el 1 por un "0" y nos movemos
un lugar a la lzqulerda. Sl el slmbolo acLual es "0" enLonces nos pasamos al esLado s3,
camblamos el 0 por un "1" y nos movemos un lugar a la lzqulerda. llnalmenLe la ulLlma
poslbllldad es enconLrarnos un "_", como un espaclo en blanco es equlvalenLe a un cero,
enLonces pasamos al esLado s3, camblamos a _ por un "1" y nos movemos un lugar hacla
la lzqulerda:
(s2, "0") - (s3, "1", L)
(s2, "1") - (s2, "0", L)
(s2, "_") - (s3, "1", L)

Ahora blen, una vez que logramos esLo ya Lermlnamos en el esLado s3, por lo LanLo
marcamos al esLado s3 como "esLado flnal" y llsLo, esLa es nuesLra máqulna de 1urlng:
(s1, "0") - (s1, "0", 8)
(s1, "1") - (s1, "1", 8)
(s1, "_") - (s2, "_", L)
(s2, "0") - (s3, "1", L)
(s2, "1") - (s2, "0", L)
(s2, "_") - (s3, "1", L)

Ll e[emplo anLerlor se verla más deLalladamenLe asl:
LsLado s1, [1]001011
LsLado s1, 1[0]01011
LsLado s1, 10[0]1011
LsLado s1, 100[1]011
LsLado s1, 1001[0]11
LsLado s1, 10010[1]1
LsLado s1, 100101[1]
LsLado s1, 1001011[ ]
LsLado s2, 100101[1]
LsLado s2, 10010[1]0
LsLado s2, 1001[0]10
LsLado s3, 100[1]110 }LsLado flnal!