CURSO DE ENGENHARIA DA COMPUTAO 1 PERODO MATEMTICA DISCRETA BSICA COMPLEXIDADE COMPUTACIONAL SEQUNCIAS FUNES RECURSIVAS So Lu! " MA #$1% 1 COMPLEXIDADE COMPUTACIONAL O que um algoritmo? a especificao da sequncia ordenada de passos que deve ser seguida para a realizao de uma tarefa, garantindo a sua repetibilidade. Quais so as a!lises "e um algoritmo? Compreender o problema a ser resolvido. Definir os dados de entrada, quais destes dados sero fornecidos e quais a fazem parte do cen!rio. Definir os processamentos necess!rios para se resolver o problema. " processamento transforma os dados de entrada nos dados de sa#da. Definir os dados de sa#da, ou sea, quais informa$es precisaro ser mostradas. Construir o algoritmo, utilizando uma das formas dispon#veis %sero mostradas mais adiante&. 'estar o algoritmo utilizando simula$es. O que Com#le$i"a"e %om#uta%ioal? uma vertente da matem!tica computacional que estuda a competncia de um determinado algoritmo. Classifica problemas computacionais conforme a sua comple(idade espec#fica e associa essas classes entre si. Diante disso, nota)se que um problema computacional * compreendido como um problema que *, em primeira inst+ncia, solucionado por um computador. "s problemas mais comumente utilizados so problemas de deciso. ,o entanto, classes de comple(idade podem ser definidas com base em problemas de funo, problemas de contagem, problemas de otimizao, problemas de promessa, etc. " modelo mais comum de computao * a m!quina de 'uring determin#stica, mas muitas classes de comple(idade so baseadas em m!quinas de 'uring no) determin#sticas, circuitos -ooleanos, m!quinas de 'uring qu+nticas, circuitos mon.tonos, etc. " recurso %ou recursos& que est! sendo limitado e os limites/ 0ssas duas propriedades so geralmente declaradas em conunto, tais como 1tempo polinomial1, 1espao logar#tmico1, 1profundidade constante1, etc. COMPLEXIDADE EM AL&O'ITMO( COMPUTACIONAI( Suponha que um caixeiro viajante tenha de visitar n cidades diferentes, iniciando e encerrando sua viagem na primeira cidade. Suponha, tambm, que no importa a ordem com que as cidades so visitadas e que de cada uma delas pode-se ir diretamente a qualquer outra. O problema do caixeiro viajante consiste em descobrir a rota que torna mnima a viagem total!. "#O$%&'( )O *(+,&+#O -+(.(/0& " problema do cai(eiro viaante * um problema de otimizao combinat.ria. Como transform!)lo num problema de enumerao ? Como determinar todas as rotas do cai(eiro ?Como saber qual delas * a menor ? 2"3456"/ 2o %n)7&8 9otas um trabal:o f!cil para a m!quina ? A quati"a"e ) * 1 +, %res%e %om uma -elo%i"a"e alarmate n 9otas por segundo %n)7&8 C!lculo 'otal ; <;= mil:$es <> insignificante 7= 77= mil:$es ?@<AA= =,==? seg 7; B7 mil:$es AB bil:$es <= min <= ;? mil:$es 7.< ( 7=7B B? anos <; >< mil:$es @.< ( 7=<? >B= mil:$es de anos O estu"o "a %om#le$i"a"e %om#uta%ioal. Cnalisa a quantidade de recursos necess!rios para um determinado algoritmo resolver um problema. Classifica os problemas que podem ou no podem ser resolvidos com os recursos devidamente restritos. 4m dos pap*is da teoria da comple(idade computacional * determinar os limites pr!ticos do que os computadores podem e no podem fazer. Ti#os "e %om#le$i"a"e. Es#a%ial. 0ste tipo de comple(idade representa o espao de mem.ria usado para e(ecutar o algoritmo. Tem#oral. 0ste tipo de comple(idade * o mais usado, podendo dividir)se em dois grupos/ a+ 'empo %real& necess!rio D e(ecuo do algoritmo /+ ,Emero de instru$es necess!rias D e(ecuo E$em#lo "e %!l%ulo "e %om#le$i"a"e. * Com#le$i"a"e "e um algoritmo "e /us%a Clgoritmo busca% elemento/ elemento, lista/ lista&/ 2e lista vazia %lista& ento falso F F Gnstruo 7 seno 2e cabea%lista&Helemento ento verdadeiro F F Gnstruo < seno -uscaHbusca%elemento, resto%lista&& F F Gnstruo recursiva I Jamos c:amar a este algoritmo de - e D sua comple(idade " %-& Kodemos c:amar a instruo de 7 e < f%(& e D instruo recursiva de g%(&. C comple(idade de um algoritmo pode)se calcular/ "%-&H"%f%(&& I "%g%(&& "%-&H"%<In& "%-&H"%<n& "%-&H"%n&