You are on page 1of 5

UNIVERSIDADE ESTADUAL DO MARANHÃO – UEMA

CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT
CURSO DE ENGENHARIA DA COMPUTAÇÃO 1º PERÍODO
MATEMÁTICA DISCRETA BÁSICA
COMPLEXIDADE COMPUTACIONAL
SEQUÊNCIAS
FUNÇÕES RECURSIVAS
São Lu! " MA
#$1%
1 COMPLEXIDADE COMPUTACIONAL
O que é um algoritmo?
É a especificação da sequência ordenada de passos que deve ser seguida para a
realização de uma tarefa, garantindo a sua repetibilidade.
Quais são as a!lises "e um algoritmo?
• Compreender o problema a ser resolvido.
• Definir os dados de entrada, quais destes dados serão 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 precisarão ser mostradas.
Construir o algoritmo, utilizando uma das formas dispon#veis %serão 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 competência 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 são problemas de decisão. ,o entanto,
classes de comple(idade podem ser definidas com base em problemas de função,
problemas de contagem, problemas de otimização, problemas de promessa, etc.
" modelo mais comum de computação * a m!quina de 'uring determin#stica, mas
muitas classes de comple(idade são baseadas em m!quinas de 'uring não)
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 são geralmente declaradas em conunto, tais como 1tempo polinomial1,
1espaço 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, também, que não importa a ordem
com que as cidades são 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 otimização combinat.ria. Como
transform!)lo num problema de enumeração ?
Como determinar todas as rotas do cai(eiro ?Como saber qual delas * a menor ?
2"3456"/ 2ão %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 não 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 não podem fazer.
Ti#os "e %om#le$i"a"e.
Es#a%ial. 0ste tipo de comple(idade representa o espaço 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(ecução do algoritmo
/+ ,Emero de instruç$es necess!rias D e(ecução
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&
então falso F F Gnstrução 7
senão
2e cabeça%lista&Helemento
então verdadeiro F F Gnstrução <
senão
-uscaHbusca%elemento, resto%lista&& F F Gnstrução recursiva
I Jamos c:amar a este algoritmo de - e D sua comple(idade " %-&
Kodemos c:amar a instrução de 7 e < f%(& e D instrução recursiva de g%(&.
C comple(idade de um algoritmo pode)se calcular/
"%-&H"%f%(&& I "%g%(&&
"%-&H"%<In&
"%-&H"%<n&
"%-&H"%n&