Upload
rafael-sd
View
218
Download
0
Embed Size (px)
Citation preview
8/18/2019 INTRODUÇÃO AED
1/35
Algoritmos e Estruturas de Dados I
Luciano Nascimento Moreira Adaptado dos slides da
Profª. Renata Oliveira
8/18/2019 INTRODUÇÃO AED
2/35
Ementa
● Medidas de complexidade.● Anlise assint!tica de limites de complexidade.● Anlise de algoritmos.● Algoritmos para pes"uisa e ordena#$o.● %ipos A&stratos de Dados● 'omputa&ilidade.
8/18/2019 INTRODUÇÃO AED
3/35
(i&liografia
● )I*IANI+ N. Pro,etos de Algoritmos comImplementa#$o em Pascal e '. Editora Pioneira.● %O-'ANI+ L.+ *.+ *elos+ P.+ A.+ -.+ 'omplexidade
de Algoritmos+ ª Ed.+ -agra/ Lu00atto+ Rio 1randedo -ul+ 233.
● 'ORMEN+ %. 4.+ Rivest+ R. L.+ Leiserson. '. E.+ Algoritmos / %eoria e Prtica Ed. 'ampus+ 2332.
8/18/2019 INTRODUÇÃO AED
4/35
'rit5rios de Avalia#$o
● *er cronograma de atividades+ entregue em salade aula.
8/18/2019 INTRODUÇÃO AED
5/35
O&,etivos
● (uscar a efici6ncia dos algoritmos – Espa#o de mem!ria7 no de variveis+ no e taman8o
das estruturas de dados utili0adas
– %empo7 no de a#9es elementares reali0adas peloprocessador
● Mostrar princ:pios &sicos e t5cnicas de anlisede algoritmos
8/18/2019 INTRODUÇÃO AED
6/35
O&,etivos
● Despertar para "uest9es como7 – ;u$o &om 5 um algoritmo<
– Existe uma forma mel8or de pro,et/lo<
– ;ual 5 o custo de se usar um dado algoritmo pararesolver um pro&lema espec:fico<
– ;ual 5 o algoritmo de menor custo poss:vel "ue possaresolver um pro&lema particular<
– Existem algoritmos similares para resolver o pro&lema< – ;ue estrutura de dados 5 mais ade"uada ao
pro&lema<
8/18/2019 INTRODUÇÃO AED
7/35
O&,etivos
● Identificar classes de pro&lemas da 'i6ncia da'omputa#$o7 – P
– NP
– NP/'ompleto
– NP/Dif:cil
8/18/2019 INTRODUÇÃO AED
8/35
Introdu#$o
=>m con8ecimento de t5cnicas depro,eto poder a,udar a criar novos
algoritmos+ mas sem as ferramentas daanlise de algoritmos n$o 8 como
determinar a "ualidade dos resultados?
8/18/2019 INTRODUÇÃO AED
9/35
Motiva#$o
● Os &enef:cios de carter prtico podem+ s! eles+serem suficientes para ,ustificar o estudo dessadisciplina.
=Algoritmos diferentes para resolver o mesmopro&lema podem diferir dramaticamente em
efici6ncia. Essa diferen#a pode ser mais
significante "ue a diferen#a entre umsupercomputador e um des@top?
8/18/2019 INTRODUÇÃO AED
10/35
Motiva#$o
● Exemplo7 -e,a a seguinte situa#$o7 ordenar umcon,unto de um mil8$o de elementos● 'aso 7
– -upercomputador capa0 de processar de 33 mil89esde instru#9essegundoB
– Executando Ordena#$o por Inser#$o DiretaB
– Mel8or programador do mundo programou o algoritmo
de inser#$o usando linguagem de m"uinaB – Programa resultante re"uer 2Cn2 instru#9es para
ordenar n elementos.
8/18/2019 INTRODUÇÃO AED
11/35
Motiva#$o
● 'aso 27 – Des@top capa0 de processar de mil8$o de instru#9es
por segundo
– Executando Ordena#$o por 4eapsort
– Programador med:ocre programou o algoritmo de8eapsort usando linguagem de alto n:vel+ com umcompilador n$o muito eficiente
–
'!digo resultante usa 3CnClg n instru#9es docomputador para ordenar n elementos
8/18/2019 INTRODUÇÃO AED
12/35
● 'alcule o tempo de execu#$o para cada caso7
– 'aso 7 -upercomputador
– 'aso 27 P' dom5stico
Motiva#$o
T 1= 2∗(106
)
2
inst 100∗106inst /seg=
5,6 horas
T 2=50∗106∗log (106)inst
106inst / seg
=16,67min
8/18/2019 INTRODUÇÃO AED
13/35
Motiva#$o
● =A tecnologia n$o evoluiu s! em 8ardare+mas em softare tam&5m?
● 'aso 2 aprox. 23 ve0es mais rpido "ue'aso .
8/18/2019 INTRODUÇÃO AED
14/35
'omplexidade de %empo
● O custo de aplicar um algoritmo pode ser medido7.Executando o programa em um computador e medir o
tempo de execu#$o.● Ex7 no de miliseg. Em um I(M Poer com 2F1& de
mem!ria usando AIG+ Linux+ ...● 'onclu:mos "ue ele 5 rpido+ lento+ muito rpido+ muito
lento...
8/18/2019 INTRODUÇÃO AED
15/35
'omplexidade de %empo
2.>sar um modelo matemtico &aseado em umalinguagem de programa#$o ou em umcomputador ideali0ado● O con,unto de opera#9es e o custo de cada uma tem de
ser fornecido● Podemos ignorar o custo de algumas das opera#9es
envolvidas. Por exemplo para algoritmos de ordena#$oconsideramos o no de compara#9es e trocas entre os
elementos do con,unto a ser ordenado.
8/18/2019 INTRODUÇÃO AED
16/35
'omplexidade de %empo
● Podemos concluir "ue7 – O tempo de execu#$o em um computador particular
n$o 5 interessante.
– Muito mais interessante 5 uma compara#$o relativa
entre algoritmos.
8/18/2019 INTRODUÇÃO AED
17/35
'omplexidade de %empo
-upondo "ue7● As opera#9es s$o todas executadas
se"uencialmente. A execu#$o de toda e "ual"ueropera#$o toma uma unidade de tempo. A mem!riado computador 5 infinita.
● Assim nos so&ram duas grande0as7 – %empo H nmero de opera#9es executadas
– ;uantidade de dados de entrada.
8/18/2019 INTRODUÇÃO AED
18/35
'omplexidade de %empo
● Podemos expressar de forma a&strata a efici6nciade um algoritmo+ descrevendo o seu tempo deexecu#$o como uma fun#$o do taman8o dopro&lema J"uantidade de dadosK. Isto 5 c8amadode complexidade de tempo
Exemplo7 Dois algoritmos de
8/18/2019 INTRODUÇÃO AED
19/35
Exemplo7 Dois algoritmos deordena#$o1-begin
2- for i := 2 to n do
3- for j := n downto i do
4- if ( a[j-1] > a[j] )
5- begin
6- x = a[j-1];
7- a[j-1] = a[j];
- a[j] = x;
!- end;
1"-end#
1$ begin
2- for i = 1 to n-1
3- begin
4- % = i;
5- x = a[i];
6- for j = i&1 to n
7- begin
- if (a[j] ' x)
!- begin
1"- % = j;
11- x = a[%];
12- end
13- end
14- a[%] = a[i];
15- a[i] = x; 16- end
17-end
8/18/2019 INTRODUÇÃO AED
20/35
Exemplo7 Ordena#$o A
●
Racioc:nio7 – J"uadroK● Algoritmo7
1-begin
2- for i := 2 to n do
3- for j := n downto i do
4- if ( a[j-1] > a[j] )
5- begin
6- x = a[j-1];
7- a[j-1] = a[j];
- a[j] = x;
!- end;
1"- for-end
11- for-end
1"-end#
8/18/2019 INTRODUÇÃO AED
21/35
Exemplo7 Ordena#$o A
●
Anlise por nmero de compara#9es7 'JnK H
+3 'JnK H n i Q
2+ C (n)=∑i=2
n
n−i+1
C (n)=(n – 1)+1
2∗(n – 1)
C (n)=n2−n2
=O(n2)
C (n)=(n−1)+(n−2)+ ...+1
8/18/2019 INTRODUÇÃO AED
22/35
Exemplo7 Ordena#$o A
●
Anlise por nmero de trocas7 – Mel8or caso7 *etor , ordenado+ n$o reali0a troca H
OJK
– Pior 'aso7 Ordem decrescente
– 'aso M5dio7● OJn2K
C (n)=∑i=2
n
n−i+1=O (n2)
8/18/2019 INTRODUÇÃO AED
23/35
1rfico A
8/18/2019 INTRODUÇÃO AED
24/35
Exemplo7 Ordena#$o (● Racioc:nioAlgor:tmo7
1$ begin
2- for i = 1 to n-1
3- begin
4- % = i;
5- x = a[i];
6- for j = i&1 to n
7- begin
- if (a[j] ' x)
!- begin
1"- % = j;
11- x = a[%];
12- end
13- end
14- a[%] = a[i];
15- a[i] = x;
16- end
17-end
8/18/2019 INTRODUÇÃO AED
25/35
Exemplo7 Ordena#$o (
●
Neste algoritmo o nmero de ve0es "ue acompara#$o Ja, xK 5 executada 5 expresso porJn/KQJn/2KQ...Q2Q H Jn2K x Jn/K.
● O nmero de trocas a@ H aiB ai H x 5 reali0adono pior caso+ onde o vetor est ordenado emordem inversa+ somente n/ ve0es+ num total de 2
x Jn/K. OJnK
8/18/2019 INTRODUÇÃO AED
26/35
Interpreta#$o
●
Interesse7 'omportamento assint!tico da fun#$o+ou se,a+ como a fun#$o varia com a varia#$o de n.● Ra0$o7 Para mim 5 interessante sa&er como o
algoritmo se comporta com uma "uantidade de
dados real:stica para o meu pro&lema e o "ueacontece "uando eu vario esses dados.
1 fi d A (
8/18/2019 INTRODUÇÃO AED
27/35
1rfico de A x (
Comportamento Assintótico
I t t $
8/18/2019 INTRODUÇÃO AED
28/35
Interpreta#$o
●
Exemplo7 -e a complexidade de A um 5 expressapor faJnK H n2 e a de ( por f&JnK H 33Cn. – Isto significa "ue A cresce "uadraticamente Juma
par&olaK e "ue & cresce linearmente Jem&ora se,a
uma reta &em inclinadaK.
I t t $
8/18/2019 INTRODUÇÃO AED
29/35
Interpreta#$o
●
-e eu uso esses algoritmos para um con,unto de3 elementos+ o segundo com %&H333 5 pior do"ue o primeiro com %aHS33.
● -e eu os uso para um con,unto de 3.333
elementos+ por5m+ terei %aHS33.333.333 e%&H.333.333.
● Isto por"ue o comportamento assint!tico dos dois
5 &em diferente.
Al it
8/18/2019 INTRODUÇÃO AED
30/35
Algoritmos
● Algoritmo 5 um m5todo para resolver um determinado tipo depro&lema JDicionrioK.
● T um m5todo preciso e usvel por um computador para asolu#$o de um pro&lema.
● T composto por um con,unto finito de passos+ cada umre"uerendo uma ou mais instru#9es.
● 'ada opera#$o deve ser perfeitamente definida e clara.● >m programa 5 uma express$o de um algoritmo em uma
linguagem de programa#$o.● =>m algoritmo corresponde a uma descri#$o de um padr$o de
comportamento+ expresso em termos de um con,unto finito dea#9es?. JDi,@straK
U d A& 6 i
8/18/2019 INTRODUÇÃO AED
31/35
Ureas de A&rang6ncia
●
'inco reas importantes e distintas da pes"uisa7 – 'omo pro,etar um algoritmo7 o ato de criar um algoritmo 5uma arte "ue nunca poder ser totalmente automati0ada.
– 'omo expressar algoritmos7 a programa#$o estruturada+
por exemplo+ tem como finalidade a express$o clara econcisa de um algoritmo em linguagem de programa#$o.
– 'omo verificar a corretude de um algoritmo7 5 o processono "ual se verifica se o algoritmo fornece sa:da corretapara toda entrada de dados poss:vel. Esta verifica#$odeve ser feita independentemente do c!digo deprograma#$o usado na implementa#$o.
U d A& 6 i
8/18/2019 INTRODUÇÃO AED
32/35
Ureas de A&rang6ncia
● 'omo analisar algoritmos7 refere/se ao processo dedeterminar o tempo e a mem!ria de um computador "ue oalgoritmo ir re"uerer. Permite fa0er um ,ulgamento"ualitativo de um algoritmo so&re outro.
● 'omo testar um programa7 consiste em duas fases depura#$o e desempen8o. – Depura#$o7 consiste em executar o programa so&re um con,unto
de dados+ para verificar se ele funciona corretamente. T &omlem&rar "ue =uma prova de corretude vale mais "ue mil testes?.
– Desempen8o7 5 o processo de executar um programa corretoso&re um con,unto de dados para medir o tempo e o espa#ogastos. A medida de desempen8o comumente 5 c8amada de(A%ERIA DE %E-%E-.
Exemplos de contri&ui#9es da Anlise
8/18/2019 INTRODUÇÃO AED
33/35
Exemplos de contri&ui#9es da Anlisede Algoritmos.●
Pro&lema – 'riptografia
– Pes"uisa em textos
– Acesso a &anco dedados
– Otimi0a#$o
●
Pro&lema A&strato – Vatora#$o de inteiros
– 'asamento de padr$o
– Pes"uisa e Ordena#$o
– NP/'ompleto
O desenvolvimento de algoritmos
8/18/2019 INTRODUÇÃO AED
34/35
O desenvolvimento de algoritmos
●
-e algum dia algu5m escrever um sistema "uegera automaticamente algoritmos corretos eeficientes+ n$o precisaremos mais dessa disciplinae de muitas outras da 'omputa#$o. Mas+
en"uanto isso n$o acontece+ o desenvolvimentode algoritmos continua sendo AR%E e 'IWN'IA.
O desenvolvimento de algoritmos
8/18/2019 INTRODUÇÃO AED
35/35
. Esta&elecimento do pro&lema.2. Desenvolvimento de um modelo.. Pro,eto de um algoritmo.. 'orretude do algoritmo.
. Anlise de complexidade do algoritmo.X. Implementa#$oY. %este do programa7 DEP>RAZ[O e DE-EMPEN4OF. Documenta#$o.
O desenvolvimento de algoritmos