Faculdade Campo Limpo Paulista Mestrado em Ciêcia da Computação Complexidade de Algoritmos Avaliação 2. (2,0): Resolva a seguite relação de recorrêcia. T() = T( ) + 3 T() = 3 Pelo método iterativo progressivo. T() = 3 T(2) = T() + 3 = 3 + 3 = 6 T(3) = T(2) + 3 = 3 + 3 + 3 = 9 T(4) = T(3) + 3 = 3 + 3 + 3 + 3 = 2... T() = 3
2. (2,0): Membros atigos da Sociedade de Pitágoras defiiram úmeros figurados como sedo o úmero de potos em uma certa cofiguração geométrica. Os primeiros úmeros triagulares são, 3, 6 e 0 e são semelhates aos diagramas das figuras ilustradas abaixo. Ache uma fórmula para Q(), ode Q() é a quatidade de úmeros triagulares (potos) para a figura de ordem. Prove, por idução, que a sua fórmula está correta. 0 potos 3 potos 6 potos poto = 2 3 4 Percebe-se que a soma dos potos a figura de ordem é igual a + 2 + 3 + 4 +... +. Logo propomos Q() = ( + ) / 2, para. Provaremos, por idução em, que Q() é verdadeira. i) Base. Para =, a figura tem um poto. Pela fórmula Q() = ( + ) / 2 =. Logo, a fórmula é verdadeira para =. ii) Hipótese de idução. Vamos assumir que a fórmula é verdadeira para, 2. Ou seja, estamos assumido, por hipótese, que Q( ) = ( ) / 2. iii) Relação etre a quatidade de potos da figura de ordem ( Q() ) com a quatidade de potos da figura de ordem ( Q( ) ). 2
... potos...... Q ( - ) Q ( ) Observado o esquema acima, iferimos que Q() = Q( ) +. iv) Prova do fato de que Q( ) sedo verdadeira implica o fato de que Q() é verdadeira. Q() = Q( ) +. Q() = ( ) / 2 +. Q() = ( 2 + 2 ) / 2. Q() = ( 2 + ) / 2. Q() = ( + ) / 2. 3
3. (2,0): Prove, por idução, que a soma dos âgulos iteros de um polígoo covexo de lados ( 3) é igual a S() = ( 2). 80 o. Dicas: (i) a base ( = 3) está resolvida abaixo; (ii) tete expressar a soma dos âgulos iteros de um polígoo covexo de lados como fução da soma dos âgulos iteros de um polígoo covexo de - lados. i) Base. Para = 3 temos um triâgulo. Pela figura abaixo, ifere-se que a + b + c = 80º. B b a + b + c = 80 o b A c a c C Pela fórmula S(3) = (3 2). 80 o = 80º. A fórmula é verdadeira para a base. ii) Hipótese de idução. S ( ) = ( 3 ). 80º, 4. iii) Relação etre a soma dos âgulos iteros de um polígoo covexo de lados e tal soma em um polígoo covexo de lados. Pela ilustração acima, ifere-se que S() = S( ) + 80º. 4
iv) Prova do fato de S( ) ser verdadeira implica que S() é verdadeira. S() = S( ) + 80º. S() = ( 3).80º + 80º. S() = ( 2).80º. 5
4. Calcule a complexidade do algoritmo a seguir. Algoritmo A() Etrada:, iteiro,. { se ( = ) retorar seão retorar A(/2) + } T() T() Algoritmo A() Etrada:, iteiro,. { se ( = ) T(/2) retorar seão retorar A(/2) + } tempo para fazer soma T() = T(/2) + T() = 0 Esta relação de recorrêcia é do tipo dividir para coquistar, T() = at(/b) + c k, cuja solução está tabelada. Neste caso a = ( a, OK ), b = 2 ( b 2, OK ), c = e k = 0 (c e k costates, OK). Como a = > b k = 2 0 =, etão T() = O ( k log ) = O ( log ). 6
5. (2,0): Aplicado a técica idutiva de desig de algoritmos, escreva um algoritmo que receba um cojuto A de iteiros, um iteiro k e determie se existe um subcojuto B de A tal que a soma dos elemetos de B seja igual a k. Por exemplo, se A = {2, 5, 8, 9, 5, 8} e k = 22 etão a resposta do algoritmo deve ser sim (verdadeiro), pois existe um subcojuto B = {2, 5, 5} cuja soma é igual a 22. Não é ecessário calcular a complexidade do seu algoritmo. Observação: para facilitar a escrita do algoritmo, cosidere poder utilizar a sua solução as seguites expressões: C := A B: costrói um cojuto C formado pela uião dos cojutos A e B. C := A B: costrói um cojuto C formado pela iterseção dos cojutos A e B. A [i]: represeta o i-ésimo elemeto do cojuto A. i) Iterface Sub (A,, k). ii) Sigificado Sedo A um cojuto de elemetos, retora verdadeiro caso exista um subcojuto de A cuja soma dos elemetos seja igual a k. Caso cotrário, retora falso. iii) Redução Comados B := A { A [] }; se ( Sub (B,, k) = verdadeiro ) retorar verdadeiro seão retorar Sub (B,, k A [] ) iv) Base A redução ocorre de em. Propomos uma base para =. Neste caso, basta comparar A[] com k. Se forem iguais retoramos verdadeiro e, caso, cotrário, retoramos falso. Comados se ( A [] = k ) retorar verdadeiro seão retorar falso 7
v) Algoritmo T() T() Algoritmo Sub (A,, k) { se ( = ) // BASE { se ( A [] = k ) retorar verdadeiro seão O () retorar falso } seão // REDUÇÃO { T( - ) B := A { A [] }; se ( Sub (B,, k) = verdadeiro ) retorar verdadeiro seão retorar Sub (B,, k A [] ) } } T( - ) vi) Complexidade T() = 2 T( ) + O() T() = Resolvedo-se esta relação de recorrêcia chega-se a T() = O (2 ). 8
6. (2,0): (opcioal 2 ): Prove, por idução, que S( ) = i é O( 3 ). i= Temos que mostrar que existem c > 0 e N tais que 2 S( ) = i c 3 para N. i= Base para i =, temos S() = 2 = c 3. Logo c (para satisfazer a base). Hipótese de idução 2 S( ) = i c ( ) 3 para N. i= Redução S () = 2 + 2 2 + 3 2 +... + ( ) 2 + 2 S ( - ) = 2 + 2 2 + 3 2 +... + ( ) 2 Logo, propomos a redução S() = S ( -) + 2. Prova de que a validade do teorema para S( ) implica a validade do teorema para S() S() = S ( -) + 2 S() c ( ) 3 + 2 Para provarmos o que queremos temos que coseguir mostrar que S() c 3, ou seja, mostrar que S() c ( ) 3 + 2 c 3. Se mostrarmos que existe c > 0 que satisfaz as codições desta iequação para N estará provado. c ( ) 3 + 2 c 3 c ( 3-3 2 + 3 ) + 2 c 3 c 3-3c 2 + 3c c + 2 c 3 (-3c + ) 2 + 3c c 0 Seja c =. Assim, obtemos -2 2 + 3 0. As raízes de -2 2 + 3 são /2 e. Como o coeficiete do termo 2 é egativo (parábola com a boca direcioada para baixo) esta iequação é verdadeira para /2 (ão os iteressa) e para. Dizemos, portato, que N =. Poderá ser utilizada para substituir algum dos exercícios ateriores. 9
0 Logo, existem c > 0 ( c = ) e N ( N = ) que satisfazem = = i i S 2 ) ( c 3 para N. Está, portato, provado que = = i i S 2 ) ( é O( 3 ).