Você está na página 1de 8

A

Notao Big-Oh
Introduo:

O objetivo principal de uma anlise algortmica consiste em termos indicadores capazes de nos fornecer informaes pertinentes ao tempo de execuo de um determinado algoritmo sem precisarmos implement-lo e test-lo toda vez que quisermos medir o seu tempo de execuo. m fator de medida de dimenso de um algoritmo torna o trabal!o de anlise algortmica muito mais prtico pois programas mais elaborados e complicados geralmente so constitudos por outros algoritmos menores e seria muito trabal!oso testar as diversas alternativas para cada trec!o do programa. "endo essa medida de dimenso do algoritmo podemos ter rapidamente uma viso geral de comparao do comportamento de diversos algoritmos na resoluo de determinado problema. O comportamento de um algoritmo # influenciado por diversos fatores o que torna impossvel termos uma previso exata de como o algoritmo vai reagir de acordo com as diferentes ocasies de entrada. $ara contornar esse problema % procuramos obter as principais caractersticas do algoritmo% ou seja% os fatores predominantes que mais influenciam na perfomance do algoritmo em questo. &esta forma% definiremos determinados par'metros e medidas que sero a base de nossa anlise algortmica. (trav#s desses par'metros% com a nossa anlise poderemos comparar diferentes algoritmos e determinar o mel!or e mais adequado para os nossos prop)sitos.

Anlise do Comportamento Assinttico de Funes:


*ossa anlise tem como objetivo aplicar uma determinada metodologia a fim de prever o tempo de execuo aproximado de algoritmos e nos permitir comparaes entre os diferentes algoritmos em questo. O ponto c!ave da nossa anlise consiste em ignorar os fatores constantes e nos direcionarmos para o comportamento do algoritmo de acordo com o taman!o da entrada% especificamente quando o taman!o dessa entrada vai para o infinito. O tempo de execuo de um algoritmo pode ser representado em funo desse taman!o da entrada% o qual ser denotado pela letra +n+. &esta forma% se a entrada for um registro ou um arra, de taman!o +n+% e se tivermos um algoritmo cuja funo representativa do n-mero de passos realizados por ele em funo de +n+ for

f.n/0123n% ento essa constante 123 ser ignorada e diremos que o tempo de execuo ser aproximadamente +n+. O fato de ignorarmos os fatores constantes ocorre por conseq45ncia de estarmos interessados nos casos em que o taman!o da entrada # suficientemente grande% ou mel!or ainda% quando +n+ tende ao infinito. *esses casos o crescimento de qualquer constante # desprezvel em relao ao crescimento de +n+. $ara a nossa anlise% # relevantemente considervel que raciocinemos sempre levando em conta valores grandes para 6n7 o que vai nos fornecer uma viso mais real do comportamento do algoritmo. O que c!amamos de 6taman!o da entrada7 pode ser entendido como a medida da quantidade de espao requerido para armazenar a entrada. 8eria impossvel listarmos o tempo de execuo de um determinado algoritmo para todas as diferentes e possveis entradas. $or isso que definimos como 6n7 a medida de uma entrada e relativo 9 essa medida que desenvolvemos nossa anlise. 8abemos que um algoritmo pode no se comportar exatamente da mesma maneira para todas as entradas de igual taman!o% por#m esperamos que essa variao de comportamento seja pequena e no interfira em nossa abordagem. (l#m disso no nos prenderemos em definir o taman!o da entrada para todos os algoritmos pois nosso prop)sito principal ser comparar diferentes algoritmos para o mesmo problema e estudarmos suas respectivas respostas. &entre as entradas de igual taman!o% procuramos escol!er a entrada que represente a pior situao para o algoritmo% a pior entrada% ou seja% o 6pior caso7. $oderamos escol!er a mel!or entrada% mas uma abordagem em cima da mel!or entrada no seria representativo devido ao fato de que esse caso # minoria na prtica. ma entrada intermediria seria de trabal!osa abordagem devido ao fato de que poderamos avali-la atrav#s de muitos par'metros diferentes% al#m de no possuirmos ferramentas matemticas capazes de nos proporcionar uma anlise deste caso. O fato de escol!ermos a pior entrada como indicador ser de grande utilidade pois o algoritmo que possuir a mel!or performance para a pior entrada tamb#m ter uma boa performance para os outros casos. :omo j estudamos anteriormente quando tratamos de complexidade% o custo para obter uma soluo para um determinado problema aumenta a medida que o taman!o 6n7 do problema aumenta. &esta forma% o par'metro 6n7% nos fornece uma medida da dificuldade para se resolver o problema em questo% no sentido de que o tempo necessrio para solucionar o problema cresce quando 6n7 cresce. $odemos observar tamb#m que para valores suficientemente pequenos de 6n7% qualquer algoritmo custa pouco para ser executado% mesmo quando se trata de algoritmos ineficientes. :onclumos ento que a escol!a do algoritmo no # um problema crtico quando se trata de problemas de pequenos taman!os. ;ntretanto% a nossa anlise se direciona para valores grandes de 6n7% estudando o comportamento assinttico das funes de custo dos algoritmos de acordo com esse grande crescimento de 6n7. 8endo f.n/ uma funo representativa do custo de um algoritmo que se relaciona com o seu tempo de execuo% temos que

o comportamento assint)tico de f.n/ representa o limite do comportamento do custo quando 6n7 cresce. ;m se tratando de algoritmos% existem partes do programa que so as que mais contribuem na determinao da funo de custo% ou seja% existem partes predominantes que so as mais influentes no comportamento das funes de custo. "endo% ento% as funes de custo de diferentes algoritmos% podemos comparar o comportamento assint)tico dessas duas funes e definir o domnio assint)tico de uma funo sobre a outra< uma funo g.n/ domina assintoticamente outra funo f.n/ se existem duas constantes positivas 6c7 e 6*7 tais que% para todo n *% temos = f.n/ = c = g.n/ =. ;ssa afirmao significa que a partir de um certo valor de 6n7 a funo g.n/ multiplicada por uma constante permanece sempre maior que a funo f.n/.

$odemos observar mel!or o sentido desta afirmao observando o grfico abaixo<

cg.n/

f.n/

n *
grfico< g.n/ domina assintoticamente f.n/.

$odemos dar alguns exemplos. 8eja g.n/ 0 >n? e f.n/ 0 133n. $ara qualquer valor de n @2 e para c 0 1 temos que = 133n = = >n? =. Ou seja% com c 01

e * 0 @2 temos que a definio de domnio assint)tico # satisfeita% g.n/ domina assintoticamente f.n/. O inverso no # verdadeiro pois a afirmao = >n? = c = 133n = no # verdadeira% pois% a partir de um certo valor de 6n7% >n? # sempre maior que c 133n qualquer que seja o valor de c. Asso s) vem a reforar a nossa afirmao anterior de apenas nos direcionarmos para valores grandes de 6n7. 8e testssemos para n 0 13% com c 0 1% teramos a iluso de que f.n/ 0 133n seria maior que g.n/ 0 >n? para n maior que 13 o que seria falso. &essa maneira devemos procurar ter uma noo de quo rpido a funo cresce quando 6n7 cresce% isto #% qual funo vai mais rpido para infinito quando tomamos o limite de n tendendo para o infinito. *o nosso exemplo temos que a funo quadrtica cresce muito mais rpido do que uma funo de crescimento linear. "emos diversos tipos de funes representativas< funes lineares% quadrticas% polinomiais em geral% logartmicas% exponenciais% que iremos abordar e comparar% comparando assim diversos algoritmos e seus comportamentos quando o taman!o da entrada 6n7 for suficientemente grande. ;ntretanto% para essa abordagem ser necessria uma notao especfica que nos permita a comparao entre as funes de custo dos diversos algoritmos e que simbolize o domnio assint)tico de uma funo sobre a outra. 8obre esta notao # que falaremos em seguida. Bale ressaltar ainda que apesar da anlise assint)tica e da anlise do pior caso serem aproximaes do tempo de execuo de um particular algoritmo sobre uma entrada particular% elas so% entretanto muito bons indicadores na maioria dos casos.

A Notao :
:omo j relatamos anteriormente% nossa anlise ignorar fatores constantes quando formos avaliar o tempo de execuo de um determinado algoritmo. $ara realizarmos essa anlise de uma forma efetiva que nos permita comparar os algoritmos% introduziremos uma notao especial que nos informe a relao entre os tempos de execuo dos diferentes algoritmos. Definio: 6&izemos que uma funo g.n/ # .f.n// de uma outra funo f.n/ . l5-se 6O!7% ou algumas vezes% 6Cig O!7% de f.n//% se existem constantes 6c7 e 6*7 % tais que% para todo n * % temos g.n/ c f.n/7. 8ignifica que% para um valor suficientemente grande de 6n7 % a funo g.n/ no # maior do que uma constante multiplicada pela funo f.n/. &esta maneira a notao 6D7 limita apenas por cima% ou seja% ela informa que uma das funes # limite superior para a outra. (ssim% se tivermos f.n/ 0 En? F G% teremos que f.n/ 0 .n? /% j que En? F 2 >n? para todo n E. (nalogamente% f.n/ 0 .nH/% j que En? F G nH para todo n >. ;ntretanto% a primeira observao # mais significante do que a segunda para uma anlise mais prtica do tempo de execuo do algoritmo.

( notao 67 nos permite ignorar constantes convenientemente% simplificando a funo em questo% direcionando-se para os fatores dominantes que determinam o comportamento da funo. &essa forma se tivermos uma funo f.n/ 0 1@2n? FE33% essa funo ser .n?/% desprezando as constantes 1@2 e E33. &a mesma forma% quando nos depararmos com funes como f.n/ 0 >log.n/ F 23 diremos que a funo # .log.n// sem nos importarmos com a base do logaritmo% pois logaritmos de diferentes bases diferem apenas por uma constante. *esta notao% uma constante ser denotada como .1/% e poder ser representada dessa maneira na forma das funes se assim desejarmos. (lgumas regras podem nos ajudar a decidir se f.n/ # .g.n// ou no #. ma regra muito -til # a seguinte< dizemos que uma funo f.n/ # uniformemente crescente se n1 n@ implica que f.n1/ f.n@/. &essa maneira podemos definir o seguinte teorema< Teorema 1: $ara todas as constantes c I 3 e a I 1% e para todas as funes f.n/ monotonicamente crescentes temos que .f.n// c 0 .a f.n//. 8ignifica que uma funo exponencial cresce mais rpido que qualquer funo polinomial. ;ssa regra # muito -til na comparao das funes dos algoritmos% al#m de poder ser expandida para outros casos diferentes de funes. $odemos substituir f.n/ por 6n7 no "eorema 1. "eremos ento que% para toda constante c I 3 e a I 1% nc 0 .an/. &a mesma forma% podemos substituir f.n/ por log an e teremos novamente que quaisquer que sejam c I 3 e a I 1% .log an/c 0 .alogan/ 0 .n/. Asso significa que qualquer funo logartmica com expoente constante diferente de zero # limitada superiormente por uma constante elevada a um logaritmo e ambas so limitadas superiormente por uma funo linear. Algumas operaes podem ser realizadas com a Notao Big-Oh. O que sugere as seguintes propriedades: 1a propriedade: Se !n" # !s!n"" e g!n" # !r!n"" ento !n" $ g!n" # !s!n"$r!n"". %a propriedade: Se !n" # !s!n"" e g!n" # !r!n"" ento !n" g!n" # !s!n"g!n"". &ssas propriedades podem ser demonstradas atra'(s da pr)pria de inio da notao Big*Oh. &+istem constantes c1, c%, N1 e N% as quais !n" c1 s!n" para n N1 , e g!n" c% r!n" para n N%. O maior entre c1, c%, e o maior entre N1 e N% podem ser usados para demonstrar as propriedades. &m geral, estas propriedades no ser'em para su-trao nem para di'iso. A ta-ela que 'eremos a seguir nos ornece uma an.lise comparati'a entre t/picas unes representati'as do tempo de e+ecuo, mostrando o tempo que o correspondente algoritmo utiliza para um pro-lema de tamanho n#1000 para di erentes 'elocidades de computador. 1odemos 'er claramente a melhoria que temos ao aumentarmos a 'elocidade do computador por um ator constante relati'amente 2 melhoria que o-temos mudando para um algoritmo assintoticamente mais r.pido 'erticalmente na ta-ela. tempo de e+ec. log%n 1000 passos3seg 0.010 1078 %000 passos3seg 0.006 1078 4000 passos3seg 0.007 1075 5000 passos3seg 0.001 1075

1.1n

A notao ( utilizada para denotar limites superiores em relao ao tempo de e+ecuo dos algoritmos, entretanto, utilizar apenas essa an.lise do limite superior no ( su iciente. 9sto se de'e ao ato de que se !n"# !n" ento conclu/mos que podemos a irmar, seguindo a de inio da notao que !n"# !n%". :a mesma orma podemos tam-(m dizer que !n"# !an", por(m consiste num limite superior longe da realidade da uno. &stamos interessados no apenas em limites superiores, mas tam-(m numa e+presso que ( to ;unto ao real tempo de e+ecuo quanto poss/'el. Nesses casos, onde ( di /cil encontrar a e+ata e+presso, n)s gostar/amos de achar o menor dos maiores e o limite menor poss/'el para isso. O-ter limites in eriores ( mais di /cil que o-ter limites superiores. <m limite superior para um tempo de e+ecuo de um algoritmo implica apenas que l. e+iste um algoritmo que no usa mais tempo do que o indicado. <m limite in erior de'e implicar que nenhum algoritmo pode o-ter um melhor limite para o pro-lema. = claramente imposs/'el considerar todos os poss/'eis algoritmos um por um. Necessitamos de m(todos para modelar pro-lemas e algoritmos de orma que nos possi-ilite pro'ar limites in eriores. &+iste ento uma notao similar para tratar limites in eriores, seguindo o mesmo racioc/nio de desprezar constantes.

A Notao :
:esta orma podemos dizer que se e+istem constantes c e N, tal que para todo nN o n>mero de passos ?!n" requeridos para solucionar o pro-lema para uma entrada de tamanho n ( no m/nimo cg!n", ento n)s dizemos que T(n) = (g(n)). Assim, por e+emplo, temos que n#!n0,6" e que n#!logn". &ssa notao corresponde 2 relao @ @ entre as unes.

A Notao :
1odemos ento concluir que se uma determinada uno !n" satis izer am-as as de inies, isto (, !n"#!g!n"" e !n"#!g!n"", ento diremos que f(n) = (g(n)), isto , as funes f(n) e g(n) possuem a mesma ordem. 1or e+emplo, temos que 8nlogn$700 # !nlogn", desprezando mais uma 'ez as constantes. Assim se pro'armos os dois primeiros casos, automaticamente teremos o terceiro caso . Nessas pro'as, as constantes en'ol'idas no necessitam ser as mesmas. Assim, , e correspondem !imprecisamente" 2s relaes @ @ ,@ @ e @ # @. Algumas 'ezes precisamos de uma notao que represente @ A @ e @ B @. :izemos ento que !n"#!g!n"" !lC-se @ !n" ( pequeno oh de g!n"D" se limn !n"3g!n" or igual a zero. Ou se;a, g!n" cresce mais !( maior" que !n". Analogamente, temos que !n"#!g!n"" se g!n"#! !n"".

<E1& - <ni'ersidade Eederal de 1ernam-uco :isciplina : Algoritmos e &strutura de :ados 1ro .: F.tia Assunto: Semin.rio so-re A Notao Big-Oh

NOTAO BIG-OH

&quipe: Gaquel H. Ionteiro. Jaldemir K. da Sil'a L>nior

Você também pode gostar