Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de...
Transcript of Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de...
![Page 1: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/1.jpg)
Algoritmos I
Roberto de Beauclair Seixas
![Page 2: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/2.jpg)
2
Abu Abd-Allah ibnMusa al'Khwarizmiz Seu trabalho mais importante escrito
em 830 nos dá a palavra álgebra.Æ classifica a solução de equações quadráticas
e dá métodos geométricos para completar o quadrado.
z Al'Khwarizmi também escreveu números Hindu-árabe.Æ Este texto de árabe está perdido mas uma tradução latina
“Algoritmi de numero Indorum”, em inglês “Algoritmi denumero Indorum in English Al-Khwarizmi on the Hindu Art ofReckoning”, deu origem a palavra algoritmo que deriva donome dele no título.
z O primeiro uso do zero com lugar posicional na anotaçãobásica provavelmente foi devida a al'Khwarizmi.
![Page 3: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/3.jpg)
3
z Dicionário Webster:“Any special method of solving a certain kind of problem.”
Algoritmo
![Page 4: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/4.jpg)
4
z Dicionário Webster:“Any special method of solving a certain kind of problem.”
( parece coisa do McGuiver! )
Algoritmo
![Page 5: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/5.jpg)
5
z Fundamentals of Computer Algorithms;E.Horowitz, S.Sahni; 1978:
“A precise method useable by a computer for thesolution of a problem.”
Algoritmo
![Page 6: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/6.jpg)
6
z Fundamentals of Computer Algorithms;E.Horowitz, S.Sahni; 1978:
“A precise method useable by a computer for thesolution of a problem.”
Algoritmo
![Page 7: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/7.jpg)
7
Pi com 24 casas
How I want a drink, alcoholic ofcourse, after the heavy lecturesinvolving quantum mechanics. All ofthe geometry, Herr Planck, is fairlyhard ...
3.14159265358979323846264...
![Page 8: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/8.jpg)
8
Fibonacci0,1,1,2,3,5,8,13,21,34,55,89,144,233,377 ...
z Isto se parece um padrão simples, contudo determina a formada concha de um molusco, o bico de um papagaio ou obrotando de folhas do talo de qualquer planta, foi revelado porLeonardo Pisano (depois Fibonacci) a quase 800 anos atrás.Pisano, o primeiro grande matemático de Europa medieval, descobriu estesnúmeros mágicos analisando a natalidade de coelhos em 1202.
z A relação entre os números de Fibonacci se aproxima de 1,6180. Esta relaçãomágica os gregos chamava de “proporção divina” e seus templos, como porexemplo o Parthenon em Atenas, possuíam comprimento = 1,6180 × largura.
z Antes dos gregos, os egípcios construíram suas pirâmides seguindo as mesmasregras: base = 1,6180 × altura.
z Nos organismos vivos, as garras de um leão, os chifres de um carneiro, osdentes de elefantes, a concha de um caracol e etc., seguem a regra da “espiraldourada” (derivada do “retângulo dourado” ondelargura = 1,6180 × altura)
![Page 9: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/9.jpg)
9
Algoritmos I - Ementa
z Motivação 9Æ Presente, Passado e Futuro(?)
z Modelos de Computação
z Fundamentos Matemáticos *
z Ordenação
z Busca
z Grafos
![Page 10: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/10.jpg)
Presente
Os próximos 7 slides foramadaptados de duas apresentações
da TechMark
![Page 11: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/11.jpg)
11
Engenharia de Software:What the Hell is this?
z Engenheiros Civis fazem Plantas antes deconstruírem prédios;
z Engenheiros Eletrônicos fazem Esquemas antesde montarem aparelhos;
z Engenheiros Mecânicos fazem Desenhos antes deproduzirem máquinas;
z Engenheiros de Software são superdotados pelaMãe Natureza, e não precisam de nada disso!Æ “Se prédios fossem construídos da mesma forma que fazemos
sistemas, o primeiro pica-pau que aparecesse no planeta destruiriaa humanidade” - Weinberg
![Page 12: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/12.jpg)
12
A Engenharia de Software éuma área MUITO NOVA!
z O ser humano faz casas e abrigos hámilhões de anos;
z O ser humano lida com eletricidade hámilhares de anos;
z O ser humano produz máquinas eferramentas há outros milhares de anos;
z O ser humano faz software há 40 anos.Æ Estamos nos primórdios da computação...
![Page 13: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/13.jpg)
13
Conclusão“A formulação de um problema é
freqüentemente mais essencial do que suasolução, a qual pode ser meramente uma
questão de habilidade matemática ouexperimental.”
(LQVWHLQH,QIHOGDXWRUHVGH³$(YROXomRGD)tVLFD´
![Page 14: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/14.jpg)
14
“Tamanho” dos SistemasSistemas grandes (>12 meses) sãomelhor atendidos por metodologiascompletas e rigorosas, com passosformais, revisões estruturadas,documentos intermediários formais eciclo de vida em cascata. Odesenvolvedor deverá estarinteressado em reuso a longo prazo.
Sistemas menores (<6 meses) sãomais adequados a metodologiasleves, sem muito rigor, com passosintermediários informais e ciclo devida iterativo. Documentação não é abase do projeto, mas apenas umaferramenta de consulta. Odesenvolvedor está interessado emreuso imediato.
![Page 15: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/15.jpg)
15
Habilidades Técnicas dosAnalistas e ProgramadoresConstrói-se utilizando-se abordagensconservadoras, organizando-se bem oprocesso de desenvolvimento eutilizando-se de técnicasestruturadas, que capitalizam sobreconhecimentos existentes. Emcompensação, você está maispróximo da obsolescência.
Se a sua equipe é nova, aberta amudanças e propensa a tentar coisasnovas, não hesite. Você tem umaexcelente oportunidade de introduzirtécnicas Orientadas por Objetos emsua organização.Seus sistemas terão uma vida maislonga desta forma.
![Page 16: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/16.jpg)
16
Exigências comRelação à TecnologiasCaso os seus clientes tenham perfilconservador (denota-se através desua arquitetura de hardware e rede)você deve sintonizar-se com alinguagem deles e utilizar algo queuse a mesma terminologia. Deixeclaro o risco da obsolescência.
Caso seus clientes exigem de você a“última palavra” em tecnologia, sortesua. Mantenha o foco, invista emtecnologia OO e vá em frente. Mas,divida e responsabilidade pelosucesso (ou fracasso) com o cliente.
![Page 17: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/17.jpg)
17
Ambiente de Desenvolvimento• COBOL, FORTRAN, “C”, BASIC,Pascal, PL/1, VB3, Natural, e outraslinguagens procedurais: Fique commétodos estruturados e técnicas deEntidade/Relacionamento;• Use DeMarco, Yourdon, Martin,Constantine, Gane/Sarson, PeterChen, etc…;
• VB5, Java, PowerBuilder, C++,SmallTalk, CORBA, Forté, InformixNewEra, Delphi e outras linguagensque suportam conceitos de classes,heranças e agregações: Aprenda OOimediatamente, ou não terá benefícioem utilizá-las;• Use UML, OMT, Shlaer/Mellor,Martin/Odell, Coad/Yourdon, etc
![Page 18: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/18.jpg)
Passado e Futuro(?)
![Page 19: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/19.jpg)
19
Alan M. Turing(1912-1954)
z Computing Machinery and Intelligence.Mind, Vol. LIX. 433-460, 1950Æ Os computadores terão inteligência.
z Debate: Então, e agora ?Æ Será uma relação simbiótica ?
(computador como uma ferramenta)
Æ Os computadores terão “consciência”?
![Page 20: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/20.jpg)
20
Teste de Turingz 1o Teste - Jogo de Imitação:
Æ 3 pessoas: Juiz, homem e mulher;
Æ Toda conversa por e-mail;
Æ Homem finge ser a mulher;
Æ Homem mente;
Æ Mulher tenta ajudar o juiz;
Æ Juiz tem que identificar o homemem 5 minutos.
![Page 21: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/21.jpg)
21
Teste de Turingz 2o Teste - Jogo de Substituição:
Æ Troque o homem ou a mulher por um computador;
Æ O juiz é enganado 30% do tempo.
![Page 22: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/22.jpg)
22
O que Turing disse?“I believe that in about fifty years' time it will be possible, to
program computers, with a storage capacity of about 109 , tomake them play the imitation game so well that an averageinterrogator will not have more than 70 per cent chance ofmaking the right identification after five minutes ofquestioning. The original question, “Can machines think?”I believe to be too meaningless to deserve discussion.Nevertheless I believe that at the end of the century the use ofwords and general educated opinion will have altered so muchthat one will be able to speak of machines thinking withoutexpecting to be contradicted.”
Alan M.Turing, 1950
“Computing Machinery and Intelligence.” Mind, Vol. LIX. 433-460
![Page 23: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/23.jpg)
23
49 anos depoisz Previsão de tecnologia de Turing foi fantástica!
Æ Armazenamento de Gb de memória são comuns.
z Previsão de inteligência foi otimista.Æ Vários locais da Internet oferecem “chatterbots” do teste.
Æ Ninguém passou (ainda)
` http://www.loebner.net/Prizef/loebner-prize.html
z Mas acredita-se que não demoraráÆ menos de 50 anos, mais de 10 anos.
z Os testes de Turing ainda se apresentam como desafios delongo prazo.
![Page 24: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/24.jpg)
24
Mas, houve progresso ...z Computadores solucionaram alguns problemas:
“Mapa de 4 cores”Æ K. Appel and W. Haken, “The solution of the four-color-map problem,”
Scientific American, Oct 1977, 108-121
e uma prova “manual” http://www.math.gatech.edu/~thomas/FC/fourcolor.html(1995)
z Os computadores venceram o campeão mundial de xadrezÆ com alguma ajuda dos programadores, mas … venceu!
z Os computadores estão presentes no dia-a-dia
z Ajudam a projetar e idealizar novas coisas
z Estas são relações simbióticas.
z Aprendizado e formação de conhecimento ainda são ilusórios.
![Page 25: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/25.jpg)
25
Armadilha dos númerosz Os seres humanos possuem 100 Tb de informação (1012) e podem
processar 100 T ops.Æ ROBOT, Hans Moravec, Oxford, 1998, page 58
z Então, um supercomputador “tem” um poder comparável.
z O Genoma humano tem 109 bits:Æ 90% lixo
Æ 90% em comum com os chimpanzés
Æ 90% comum entre os indivíduos
Æ Então, realmente só 106 bytes são relevantes (huh?!)
z Estamos perdendo algo ...Æ Um excelente algoritmo de compressão ?
Æ Uma melhor linguagem de programação ?
Æ Técnicas de aprendizado ?
![Page 26: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/26.jpg)
26
![Page 27: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/27.jpg)
27
Charles Babbage(1791-1871)
z Os objetivo de Babbage foramalcançadosÆ mas ainda precisamos de melhores algoritmos e máquinas mais
rápidas.
z O que acontecerá quando:Æ A capacidade de processamento for infinita ?
Æ A capacidade de armazenamento for infinita ?
z Limites remanescentes:Æ Conteúdo: A capacidade de informação do Cyberspace
Æ Software: Bugs, >100$ por linha de código (!)
Æ Processamento: > 1,000 $/cpu/ano
![Page 28: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/28.jpg)
28
Mais 3 desafiosz Implícitos nos teste de Turing:
Æ Ler e entender tão bem quanto um humano
Æ Escrever e pensar tão bem quanto um humano
z Ouvir tão bem quanto uma pessoa (locutor nativo)– Traduzir “fala” para “texto”
z Falar tão bem quanto uma pessoa (interlocutor nativo)– Traduzir “texto” para “fala”
z Ver tão bem quanto uma pessoa (reconhecer objetos e comportamentos)
z Ilustrar/Mostrar/Desenhar tão bem como uma pessoa (já feito)Æ mas, Realidade Virtual ainda é um grande desafio
Æ criar cenas 3D “reais” em tempo real
z E ainda: Lembrar o que foi (é) visto e ouvido e rapidamente responderquando solicitado.
![Page 29: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/29.jpg)
29
Benefíciosz Hoje os computadores podem:
Æ Ler para os cegos (OCR & Texto → Fala)
Æ Ouvir para os surdos (Fala → Texto)
Æ Escrever para os deficientes (Fala → Texto)
z Logo:Æ Substituir deficiências:
` melhor memória, melhor visão, …
Æ Novas formas de comunicação
` Tradução automática de telefonemas
Æ Revolucionar a interface homem-computador
![Page 30: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/30.jpg)
30
Vannevar Bush(1890-1974)z “As We May Think” The Atlantic Monthly, 1945
http://www.theatlantic.com/unbound/flashbks/computer/bushf.htm
z MemexÆ Todo conhecimento humano
… “a billion books” hyper-linked together ...
Æ Registrando tudo o que se vê
` filmes e fotos
` ... “a machine which types when talked to” ...
Æ Navigate by
` … text search following links associations ...
z Conexões diretas ao sistema nervoso ?
![Page 31: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/31.jpg)
31
Memex IndividualMemex: “Lembrar o que é visto e ouvido e rapidamente
devolver qualquer informação solicitada”
![Page 32: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/32.jpg)
32
Quanto de Informação Existe ?z Logo, tudo poderá ser gravado e
catalogado.
z A maioria da informação nunca serávista.
z Fundamentos tecnológicos:Æ Atenção humana
Æ “Sumarização” automática
Æ Busca automática
http://www.lesk.com/mlesk/ksg97/ksg.html
![Page 33: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/33.jpg)
33
Resumoz Pense seriamente sobre Algoritmos
z Qual o melhor algoritmo para um problema?→ “aderência”
z Oito paradigmas para projetar um bom algoritmo:1. reduzir a um problema conhecido (ex: ordenação);
2. recursão;
3. criar ou expandir uma estrutura de dados;
4. dividir e conquistar;
5. guloso;
6. programação dinâmica;
7. probabilidade;
8. aproximação.
![Page 34: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/34.jpg)
34
Usa Windows ?!?
![Page 35: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/35.jpg)
35
Cuidado com os efeitos colaterais!
![Page 36: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/36.jpg)
Modelos de Computação
![Page 37: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/37.jpg)
37
Problemas & AlgoritmosProblema: Como computar S ? suponha n=8
Æ entrada: lista de salários S1, S2, … , Sn
Æ saída: despesa total com salários: S = S1+S2+…+Sn
Æ recursos: pessoa alfabetizada, papel e lápis
solução 1: solução 2: solução 3:
- estimar o salário típico T
(por exemplo, o 1o da lista)
- calcular S por S = n * T
![Page 38: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/38.jpg)
38
Modelos Computacionaisz Procuram abstrair e simplificar o comportamento
dos computadores.Æ Máquina de Turing
` Utilizado para estabelecer resultados básicos emcomputabilidade e complexidadecomputacional.
Æ Árvore de Decisões Algébricas
` Muito usado para obtenção de resultadosteóricos em computação.
![Page 39: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/39.jpg)
39
Problema Algorítmicoz Problema
E ⇒ conjunto das possíveis entradas
S ⇒ conjunto das saídas desejadas
R(E,S) ⇒ relação entre entradas e saídas desejadas
O ⇒ operações válidas
z SoluçãoA ⇒ algoritmo correto
e sA
∀e ∈ E (e,s) ∈ R(E,S)
![Page 40: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/40.jpg)
40
Solução de Problemasmodelo matemáticoalgoritmo informal
modelo matemáticoalgoritmo informal
tipo abstrato de dadospseudo código
tipo abstrato de dadospseudo código
estrutura de dadosprograma
estrutura de dadosprograma
código de máquinacódigo de máquina
...
![Page 41: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/41.jpg)
41
Algoritmos e Complexidadez Problema, Instância e Algoritmo.
z Dado um problema:Æ Como encontrar um algoritmo eficiente para
solucioná-lo ?
Æ Uma vez encontrado, como compará-lo a outrosalgoritmos que também resolvem o problema ?
Æ Como determinar se o algoritmo está correto ?
Æ Como determinar se o algoritmo é eficiente ?
![Page 42: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/42.jpg)
42
AlgoritmoConjunto finito de instruções, composta de uma ou
mais operações válidas, com o objetivo deresolver um problema específico.
z Operações válidasÆ definidas 5 ÷ 0
Æ efetivas √ π
z Término em tempo finito (procedimento computacional)
z Entrada (opcional)
z Saída (uma ou mais)
![Page 43: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/43.jpg)
43
Alguns Exemplos IniciaisPara qualquer algoritmo, temos que provar que ele sempre
retornará o resultado desejado para todas as instânciaspossíveis do problema.
¼ Correção (Correctness)
¼ Eficiência
![Page 44: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/44.jpg)
44
Critérios de Análisez Eficácia
Æ Correção
z EficiênciaÆ Tempo
Æ Espaço
Æ Simplicidade / Clareza
Æ Otimalidade
z LimitaçõesÆ Computabilidade
Æ Tratabilidade
z Parcialmente CorretoÆ entrada válida → saída desejada
Æ pode ser tempo infinito
z Totalmente CorretoÆ tempo finito
Æ saída desejada
especificação
requisitos
código
verificação NÃOerros
problemaalgoritmo
SIMsolução
![Page 45: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/45.jpg)
45
Correção não é óbvio!¼ Você recebeu a tarefa de programa um braço de robô de
soldagem.
¼ O robô deve soldar (visitar) o primeiro ponto de solda,depois o segundo, terceiro e assim por diante.
¼ Determine um algoritmo para achar o melhor caminho.
![Page 46: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/46.jpg)
46
Vizinho Mais Próximo¼ Inicie em algum ponto p0 e então vá para o ponto mais
próximo p1. Repita o processo a partir de p1, etc. até quetodos os pontos sejam visitados.
Escolha e visite um ponto inicial p0
p = p0; i = 0;
enquanto existirem pontos não visitados
i = i + 1
escolha e visite o ponto pi, mais próximo de pi-1
retorne ao ponto inicial
¼ Este algoritmo é simples de entender, simples de entendere muito eficiente. Está correto ?
![Page 47: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/47.jpg)
47
Vizinho Mais Próximo¼Algoritmo não é correto!
¼Escolher sempre o ponto mais próximo é muitorestritivo, pois pode nos levar a fazer movimentosdesnecessários.
![Page 48: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/48.jpg)
48
Par Mais Próximo¼ Conectar ao par mais próximo de pontos cuja conexão
não irá causar um ciclo ou bifurcações, até se formar umaúnica cadeia de pontos com todos os pontos.
faça n ser o número de pontos do conjunto e d = ∞para i = 1 até n - 1 faça
para cada par de pontos (x,y) de caminhos parciais
if (dist(x,y) <= d) então
xm = x; ym = y; d = dist(x,y);
conecte (xm, ym) por uma aresta
conecte os dois pontos por uma aresta
¼ Este algoritmo está correto para o contra-exemploanterior. Então agora estará correto ?
![Page 49: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/49.jpg)
49
Par Mais Próximo¼Algoritmo não é correto!
¼Existe algoritmo correto ?!
![Page 50: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/50.jpg)
50
Um algoritmo corretoz Podemos tentar todas as ordenações de pontos possíveis e
então selecionar a ordenação que minimiza ocomprimento total.
z Uma vez que todas as possíveis ordenações sãoconsideradas, podemos garantir que teremos o melhorcaminho possível.
z Mas, isso significa testar n! permutações, que éextremamente lento. Tão lento que é inviável quanto setem mais de 10 ou 20 pontos.
z Conclusão: Não existe um algoritmo correto eficiente!
Traveling Salesman Problem
![Page 51: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/51.jpg)
51
Eficiência“Porque (simplesmente) não usar um supercomputador?”
z Supercomputadores são para pessoas muito ricas e muitoestúpidas para escrever algoritmos eficientes! (S.Skiena)
z Um algoritmo rápido rodando em um computador lentoirá sempre ganhar de um supercomputador com umalgoritmo ruim para instâncias suficientemente grandes.
z Normalmente, os problemas não chegam a ficar tãograndes antes do algoritmo rápido ganhar.
![Page 52: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/52.jpg)
52
Correçãoz Método de Solução
Æ Fórmulas / Propriedades
Æ Lemas / Teoremas
z Conjunto de InstruçõesÆ Invariantes & Convergentes
` trecho de código faz exatamente o desejado
` não tem nenhum loop infinito
Æ Prova de Teoremas
` seqüência de instruções usa corretamente as propriedadesteóricas
` garante a integridade das fórmulas
![Page 53: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/53.jpg)
53
M.D.C.Entrada: x, y ∈ Z*
Saída: mdc(x,y)
maxz ∈ Z | ∃ a,b ∈ Z, x=a*z, y=b*z
exemplo 1: mdc(67,12) = 1
exemplo 2: mdc(64,12) = 4
![Page 54: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/54.jpg)
54
Algoritmo Ingênuo - mdcint mdc(int x, int y)
int t;
if (x < y) t = x;
else t = y;
while ((x%t != 0) && (y%t != 0))
t--;
return t;
![Page 55: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/55.jpg)
55
Correção Parcial + Término = Correção Totalz Correção Parcial
Æ pontos de verificação e invariantes
z TérminoÆ 0 < t <= min(x,y)
Æ t = 1 ⇒ não itera
Æ a cada iteração t decresce ⇒ t é o convergente
Conclusão: O algoritmo ingênuo para o problemado M.D.C. é totalmente correto!
Correção Total
![Page 56: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/56.jpg)
56
Algoritmo de Euclides - mdcEntrada: x, y ∈ Z*
Saída: mdc(x,y)
maxz ∈ Z | ∃ a,b ∈ Z, x=a*z, y=b*z
exemplo 1: exemplo 2: 5 1 1 2 2 5 3
67 12 7 5 2 1 64 12 4
7 5 2 1 0 4 0
![Page 57: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/57.jpg)
57
mdc (54180,13125) = ? 4 7 1 4 3
54180 13125 1680 1365 315 105
7 5 2 1 0
Algoritmo Ingênuo: 13020 iterações
Algoritmo Euclides: 5 iterações (2604 x !!!)
Correção:Æ mdc (0, x) = x, pois qualquer número é divisor de zero
Æ mdc (x, y) = mdc (y, x mod y) é o resultado básico usado na solução
Algoritmo de Euclides - mdc
![Page 58: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/58.jpg)
58
Algoritmo de Euclides - mdcCom recursividade: int mdc(int u, int v)
if (v == 0)return (u);
else return (mdc(v,u%v));
int mdc(int u, int v)
int t;
while (v != 0)
t=u%v; u=v; v=t;
return u;
int mdc(int u, int v)
int t;
while (v != 0)
t=u%v; u=v; v=t;
return u;
Convertendo derecursivo paranão-recursivo:
![Page 59: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/59.jpg)
59
Problema: Ponto em Polígono
Dado em polígono plano simples, ou seja, oslados não se cruzam, P e um ponto p doplano, decidir se p é interior ou não aopolígono P.
P•p
![Page 60: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/60.jpg)
60
Complexidade Assintóticaz Existe algum algoritmo que resolve o problema?
Æ Isso requer que o algoritmo pare após um número finito depassos para qualquer instância do problema.
z Dado um certo algoritmo A, quão eficiente é estealgoritmo? Dado dois algoritmos A e B, qual deles ésuperior?
z Dentre todos os algoritmos que resolvem o problema, qualdeles é melhor?
z Medir a complexidade (ou eficiência) de um algoritmopelo tempo necessário à sua execução em função dotamanho da instância. (Complexidade Assintótica O(f (n)))
![Page 61: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/61.jpg)
61
Análise de Algoritmosz Recursos Computacionais
Æ Tempo de execução e quantidade de memória
z Implementação do AlgoritmoÆ Linguagem e arquitetura
z Tamanho da entrada (N)Æ Número de elementos ou número de nós da expressão
z Complexidade (tempo) de Pior CasoÆ T(N): Maior tempo de execução do algoritmo com todos os
problemas possíveis de tamanho N.
Æ T(N) é proporcional ao número total de instruções t (N)executadas para o pior caso de tamanho N ⇒ T(N) = c t (N)
![Page 62: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/62.jpg)
62
Definição 1Um algoritmo A para resolver P tem
complexidade O(f (n)) se existe umaconstante k > 0 e um natural N tais que, paraqualquer instância de P de tamanho n > N, onúmero de passos de A necessários pararesolver esta instância é, no máximo, k f (n).
ex. 1000 n2 “ambiente computacional” “natureza do método”
![Page 63: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/63.jpg)
63
Ordens de Magnitude
x ← x + y
1
for i ← 1 to n
begin
x ← x + y
end
n
for i ← 1 to n
begin
for j ← 1 to n
begin
x ← x + y
end
end
n2
![Page 64: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/64.jpg)
64
Complexidadez Se um algoritmo processa problemas de tamanho
n em tempo cn2 para alguma constante c, entãodizemos que a complexidade (time complexity) doalgoritmo é O(n2), lendo-se “ordem n2”.
algoritmo complexidade 1 s 1 m 1 h
A1 n 1000 6x104 3.6x106
A2 n log n 140 4893 2.0x105
A3 n2 31 244 1897
A4 n3 10 39 153
A5 2n 9 15 21
![Page 65: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/65.jpg)
65
Complexidade
![Page 66: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/66.jpg)
66
Tempo de Execução20 50 100 200 500 1000
1000 n 0.02 s 0.05 s 0.1 s 0.2 s 0.5 s 1 s
1000 n log n 0.09 s 0.3 s 0.6 s 1.5 s 4.5 s 10 s
100 n2 0.04 s 0.25 s 1 s 4 s 25 s 2 m
10 n3 0.02 s 1 s 10 s 1 m 21 n 2.7 h
nlog n 0.4 s 1.1 h 220 d 125 s 5E8 s -
2n 1 s 35 a 3E4 s
TamanhoComplexidade
Obs.: Supondo que 1 operação leva 1 µs.
![Page 67: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/67.jpg)
67
Tamanho Máximo do Problema
1 s 1.7 m 2.7 h 12 d 3 a 3 s
1000 n 1E3 1E5 1E7 1E9 1E11 1E13
1000 n log n 1.4E2 7.7E3 5.2E5 3.9E7 3.1E9 2.6E11
100 n2 1E2 1E3 1E4 1E5 1E6 1E7
10 n3 46 2.1E2 1E3 4.6E3 2.1E4 1E5
nlog n 22 36 54 79 112 156
2n 19 26 33 39 46 53
TempoComplexidade
![Page 68: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/68.jpg)
68
Curiosidadez Explosão Combinatorial
Æ 100! → número com 158 dígitos
Æ 120! → número com 200 dígitos
Æ número de prótons no universo → 126 dígitos
Æ número de µ segundos desde o Big-Bang → 24 dígitos
z Impacto da Evolução Tecnológicaalgoritmo atuais 100 x 1000 x
n N1 100 N1 1000 N1
n2 N2 10 N2 31.6 N2
n3 N3 4.64 N3 10 N3
2n N4 N4 + 6.64 N4 + 9.97
![Page 69: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/69.jpg)
69
z Dada a função f abaixo, calcule o seu valorpara x = 40545 e y = 70226.
f (x,y) = 9 x4 - y4 + 2 y2
dígitos: 3 7 11 15 19 21
1010 -10-13 1.3 107 82152 2
Oops! O valor correto é 1
Outra Curiosidade (sic!)
![Page 70: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/70.jpg)
70
Outra Curiosidade (sic!)z Dada a função f abaixo, calcule o seu valor para:
x = 77617 y = 33096.
f (x,y) = 333.75 y6 + x2 (11 x2 y2 - y6 - 121 y4 - 2) + 5.5 y8 + x/2y
Precisão simples: 1.172603…
Precisão dupla: 1.1726039400531…
Precisão extendida: 1.172603940053178…
Oops! O valor correto é -0.8273960599… ( - 54767 / 66192 )
![Page 71: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/71.jpg)
71
Moral da História
“Computers do not solve problems,
People do!”
E.R.Davidson
![Page 72: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/72.jpg)
72
Algoritmos para Ordenaçãoz Insertion Sort
z Selection Sort
z Bubble Sort
z Shell Sort
z etc.
![Page 73: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/73.jpg)
73
Ordenação por SeleçãoSelectionSort(x,n)
para i = 1 .. n-1m = ipara j = i+1 .. n
se xj < xm então m = jtroque xi com xm
![Page 74: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/74.jpg)
74
Ordenação por Seleção
![Page 75: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/75.jpg)
75
z Para analisar tal algoritmo, a primeira observação é que otamanho de uma instância é dada pelo número n de reais aserem ordenados.
z Na primeira execução do corpo do loop principal, são feitasn-1 comparações e 1 troca, num total de n operações.
z Na segunda execução, n-2 comparações e 1 troca, e assimpor diante. Logo, o número de passos para o algoritmo é:
z Assim, o algoritmo tem complexidade O(n2)
Ordenação por Seleção
( ) ( ) ( ) 22
222
1121 n
nnnnnnn ≈+=+=++−+−+
![Page 76: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/76.jpg)
76
Não entendeu ?!z Porque ?
… soma de seqüências!
z Quanto é a soma de inteiros de 1 até 100 ?Æ Com papel e lápis pode demorar um pouco …
Æ Podemos usar uma calculadora …
Æ Escrever um programa …
z Em 1786, um garoto de 9 anos respondeu emalguns 5 segundos!
z Nome dele ? Gauss.
( )2
1
1
+=∑=
NNi
N
i
![Page 77: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/77.jpg)
77
Demonstração de Gauss
( )
( )( ) ( ) ( )( ) ( ) ( ) ( )
( ) ( )2
1
1112
121
321
3211
+⋅=
++++++=++−+−+=++++=
++++== ∑=
nnnS
nnnnS
nnnnS
nnS
ninSn
i
+
n vezes
![Page 78: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/78.jpg)
78
Ordenação por InserçãoInsertsort(x)
para i = 2 .. Nv = xi
j = ienquanto xj-1 > v
xj = xj-1
j = j - 1xj = v
Este algoritmo descobre a posiçãocorreta para xi no segmentox1..xi-1 ao mesmo tempo que ocoloca lá.
Com isso, obtemos soluçõesparciais e algoritmo deste tiposão chamados de incrementaisou on-line.
Usando árvores balanceadas, épossível implementaralgoritmos incrementais ótimospara ordenação.
![Page 79: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/79.jpg)
79
Ordenação por Inserção
![Page 80: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/80.jpg)
80
Mergesortz Usa o paradigma “dividir-para-conquistar” que obtém a
solução de um problema através da resolução de problemasde tamanho menor.
z Ao invés de ordenar o conjunto de n números, dividimoseste conjunto em dois conjuntos com n/2 elementos cada,ordenamos cada um destes conjuntos e reunimos essesconjuntos já ordenados.
z Para ordenar cada um dos conjuntos com n/2 elementos,aplicamos recursivamente o mesmo algoritmo.
![Page 81: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/81.jpg)
81
MergesortMergesort (x, l, r)
se (r <= l) então retorne; /* caso básico da recursão */
m = (l + r) / 2; /* separação */mergesort(x, l, m); /* recursão */mergesort(x, m+1, r);merge(x, l, m, r) /* combinação */
![Page 82: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/82.jpg)
82
Mergesort
![Page 83: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/83.jpg)
83
Mergesortz Para facilitar, n=2p e seja T(n) a complexidade do
algoritmo, expressa pelo número de passos necessários àsua execução.
z Duas chamadas recursiva do mesmo algoritmo parainstâncias de tamanho n/2, seguidas por uma etapa em que,a partir de dois conjuntos já ordenados, deve-se obter suaunião, também já ordenada. Esta união é obtida em umnúmero de passos que é proporcional a n.
T(n) = 2 T(n/2) + k nonde k é uma constante.
![Page 84: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/84.jpg)
84
MergesortT(n) = 2 T(n/2) + k n
Por sua vez, T(n/2) = 2 T(n/4) + k n/2
o que fornece T(n) = 4 T(n/4) + 2 k n
Continuando o mesmo processo, obtemos sucessivamente:
T(n) = 8 T(n/8) + 3 k n
. . .
T(n) = n T(n/n) + p k n
n = 2p T(n) = 2p T(n/2p) + p k n
p = log2 n T(n) = n T(1) + k (log2 n) n
Daí, concluímos que T(n) = O(n log n)
![Page 85: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/85.jpg)
85
Algoritmo Dividir-para-Conquistar
Separação: decompor a instância doproblema em duas instâncias de tamanhosmenores;
Recursão: aplicar recursivamente o mesmoalgoritmo para cada uma destasinstâncias;
Combinação: combinar os resultados paraobter a solução da instância original.
![Page 86: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/86.jpg)
86
Teorema 1Se um algoritmo recursivo do tipo dividir-para-
conquistar para resolver um problema decompõeuma instância de tamanho n em duas instâncias detamanho n/2 do mesmo problema e, se oprocessamento necessário à execução das etapasde separação e combinação tem, no total,complexidade O(n), então o algoritmo resultantetem complexidade O(n log n).
![Page 87: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/87.jpg)
87
QuickSortz Também utiliza o paradigma de dividir-para-conquistar.
z Toma-se um elemento do conjunto (x1) e a etapa deseparação consiste em dividir o conjunto a ser ordenado emdois subconjuntos: o primeiro é composto por todos oselementos menores que x1 e o segundo por todos os maioresou iguais a x1. Cada um destes conjuntos é ordenadoutilizando recursivamente o mesmo algoritmo.
z A etapa de combinação é trivial, já que a seqüênciaordenada consiste em listar os elementos (já ordenados) quesão menores que x1, seguidos pelos elementos (também jáordenados) que são maiores ou iguais a x1.
![Page 88: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/88.jpg)
88
QuickSortquicksort(r,s) se (s <= r) então retorne /* caso básico */ v = xr ; i = r; j = s + 1; repita /* separação */
repita i = i + 1 até xi >= vrepita j = j + 1 até xj <= vtroque xi com xj
até j <= i troque xi com xj
troque xi com xj
quicksort(r,i - 1) /* recursão */
quicksort(i+1,s)
Observações:
• não há uma chamada explícitade combinação
• o início do algoritmo se dáchamando quicksort(1,n)
Observações:
• não há uma chamada explícitade combinação
• o início do algoritmo se dáchamando quicksort(1,n)
![Page 89: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/89.jpg)
89
QuickSort
![Page 90: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/90.jpg)
90
QuickSortz Como o processamento da separação requer O(n) passos,
uma análise semelhante à desenvolvida para o Mergesortpermite demonstrar que a complexidade média do algoritmoé O(n log n).
z No entanto, a complexidade deste algoritmo no pior caso éO(n2). Para se constatar este fato, basta observar que, caso oconjunto esteja ordenado, o algoritmo descrito vai executarn-1 separações. A primeira exige n-1 comparações, asegunda n-2, e assim por diante, num total de O(n2)comparações.
![Page 91: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/91.jpg)
91
ShellSortz Utiliza o algoritmo de inserção em sub-seqüências periódicas
da entrada para produzir um algoritmo mais rápido.shellsort(a) h = 1; faça (h = 3 * h + 1) até (h > N) faça
h = h div 3para i = h+1 até N faça
v = ai; j = i;enquanto aj-h > v faça
aj = aj-h; j = j - h;se (j <=h) termine enquanto
aj = vaté (h = 1)
![Page 92: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/92.jpg)
92
• Usa uma seqüência decremental de incrementos;• Cada passo torna o próximo mais fácil;• Como saber qual incremento usar ?
• Ex.: 1, 4, 13, 40, 121, 363, ...
ShellSort13
4
1
![Page 93: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/93.jpg)
93
BubbleSortn bubblesort(a)
faça
t = a1
para j = 2 até N faça
se (aj-1 > aj) então t = aj-1; aj-1 = aj; aj = t;
até (t = a1)
o bubblesort(a)
para i = 1 até n-1
para j = n até i+1 passo -1
if (aj < aj-1) troque aj com aj-1
![Page 94: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/94.jpg)
94
BubbleSort
![Page 95: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/95.jpg)
95
Comparaçãoz Selection Sort
Æ comparações: n-1 + n-2 + … + 2 + 1 = n2/2
Æ trocas: n
z Insertion SortÆ comparações: (n-1 + n-2 + … + 2 + 1) / 2 = n2/4
Æ trocas: n2/4
z Bubble SortÆ comparações: n-1 + n-2 + … + 2 + 1 = n2/2
Æ trocas: n2/2
![Page 96: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/96.jpg)
96
Árvore de DecisãoA complexidade de uma árvore de decisão é dada pela sua
profundidade p, isto é, pela profundidade máxima de uma de suasfolhas.
No caso do problema de ordenação, cada uma das folhas da árvorede decisão deverá estar associada a uma possível ordenação dos nelementos. Como há n! ordenações possíveis, a árvore possui nomínimo n! folhas.
Mas o número máximo possível de folhas é obtido quando todas asfolhas ocorrem a profundidade p e cada nó que não é uma folhatem exatamente 2 descendentes.
Assim, o número de folhas é igual ao número de nós à profundidadep que é 2p.
![Page 97: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/97.jpg)
97
Árvore de DecisãoLogo, a profundidade p de uma árvore de decisão que possua pelo
menos n! folhas satisfaz 2p ≥ n , isto é, p ≥ log2 (n!)
Mas a aproximação de Stirling para n! é
ou seja:
Logo, como existe um algoritmo de complexidade O(n log n),concluímos que a complexidade do problema de ordenação éΘ(n log n).
( )nennn Π= 2!
( ) ( ) nknennnnn logloglog2log!log 2222 ≥−+Π=
![Page 98: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/98.jpg)
98
Definição 2Dizemos que a complexidade de um problema P tem
cota inferior dada por Ω(f (n)) se existe umaconstante k tal que todo algoritmo que resolve Prequer pelo menos k f (n) passos para resolveralguma instância de tamanho n. Dizemos que acomplexidade de P é Θ(f (n)) se, além disso,existir um algoritmo de complexidade O(f (n))para P. Neste caso, dizemos que o algoritmo éótimo para P.
![Page 99: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/99.jpg)
99
Análise de Algoritmosz Medidas de Consumo dos Recursos Computacionais
Æ Θ (f) Cota assintótica superior
Æ Ο (f) Ordem
Æ Ω (f) Cota assintótica inferior
z Contabilidade
Æ por pontos de verificação
` em geral entrada de loops
Æ por rateio (usado em grafos)
` centros de custo
![Page 100: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/100.jpg)
100
Exemplo: Régua comumEntrada: número de marcas n
Saída: régua com n marcas
regua(n)
para i = 1 até n faça ⇒ Ο(n)marque(i,”|”)
fim_para
...
![Page 101: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/101.jpg)
101
Exemplo: Régua bináriaEntrada: número de marcas n
Saída: régua com n marcas
n = 2h (h marcas diferentes)
regua_binaria(l,r,k)
m = (l + r) / 2 marque(l,m,k)se (k > 1) então
regua_binaria(l,m,k-1)
regua_binaria(m,r,k-1)
![Page 102: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/102.jpg)
102
Recorrênciaz Vários algoritmos, particularmente os baseados no
paradigma Dividir-para-Conquistar, tem complexidadesque são naturalmente modeladas por relações derecorrência.
z Uma relação de recorrência é uma equação que é definidaem termos dela mesma.
z Várias funções naturais são facilmente expressas comorecorrências:Æ an = an-1 + 1, a1 = 1 → an = n (polinomial)
Æ an = 2 * an-1, a1 = 1 → an = 2n-1 (exponencial)
Æ an = n * an-1, a1 = 1 → an = n! (explosão combinatória)
![Page 103: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/103.jpg)
103
Induçãoz Recursão é uma indução matemática
Æ Temos condições gerais e de fronteira, com a condiçãogeral dividindo em partes cada vez menores o problema.
Æ A condição de fronteira (ou inicial) termina a recursão.
z Nenhum procedimento (geral) é conhecido parase resolver relações de recorrência.
z A indução provê uma ferramenta para resolverrecorrências: Adivinhar a solução e prová-la porindução.
![Page 104: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/104.jpg)
104
Prova por InduçãoTn = 2 * Tn-1 + 1, T0 = 0
n 0 1 2 3 4 5 6 7Tn 0 1 3 7 15 31 63 127
z Qual a solução ? Prove que é Tn = 2n -1 por indução.Æ Mostre a condição básica: T0 = 20 - 1 = 0
Æ Assuma que é verdade para Tn-1
Æ Partindo da afirmação anterior, mostre que
Tn = 2 * Tn-1 + 1 = 2 (2n-1 - 1) + 1 = 2n - 1
![Page 105: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/105.jpg)
105
Exemplo: Régua bináriaEntrada: número de marcas n
Saída: régua com n marcas
n = 2h (h marcas diferentes)
regua_binaria(l,r,k)
m = (l + r) / 2 marque(l,m,k)se (k > 1) então
regua_binaria(l,m,k-1) ⇒ T(n/2) regua_binaria(m,r,k-1) ⇒ T(n/2)
⇒ c
![Page 106: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/106.jpg)
106
Exemplo: Régua bináriaT(n) = 2 T(n/2) + c
= 2 [ 2 T(n/4) + c] + c= c + 2c + 4 T(n/4)= c + 2c + 4c + 8c + … + 2i T(n/2i)
mas, T(2) = c
T(n) = c + 2c + 4c + 8c + … + 2i-1 T(2)= c (1 + 2 + 22 + 23 + … + 2h-1)= c (20 + 21 + 22 + 23 + … + 2h-1)= c (2h - 1) = c (n - 1)
T(n) = c (n - 1) ⇒ T(n) = O(n)
![Page 107: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/107.jpg)
107
Recorrências Usuais em DPCn = ck
z T(n) = a T(n/c) + k nÆ a → fator de crescimento dos sub-problemas
Æ c → fator de divisão (tamanha dos sub-problemas)
Æ a < c T(n) = O(n)
Æ a = c T(n) = O(n log n)
Æ a > c T(n) = O(nlogc a)
z T(n) = T(n/c) + kÆ T(n) = O(logc n) p.ex.: busca binária
Esforço de combinação
![Page 108: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/108.jpg)
108
ExemplosT(n) = 9 T(n/3) + n
` T(n) = O(n2)T(n) = T(2n/3) + 1
` T(n) = (log n)T(n) = 3 T(n/4) + n log n
` T(n) = O(nlog4 3) = O(n0.793)
![Page 109: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/109.jpg)
109
HeapSortz Construindo a heap
![Page 110: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/110.jpg)
110
HeapSortz “Ordenando” a heap
![Page 111: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/111.jpg)
111
Radix Sortz Até agora, foi razoável definir métodos de
ordenação em termos de operações básicas decomparação e troca de dois elementos quaisquer.
z Entretanto, para algumas aplicações é possíveltirar vantagem de que os elementos são númerosdentro de um intervalo.
z Esse métodos são chamados de Radix Sorts.Æ Não somente comparam os elementos.
Æ Processam e comparam pedaços dos elementos.
![Page 112: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/112.jpg)
112
Radix Sort329 720 720 329
457 355 329 355657 436 436 436839 457 839 457436 657 355 657
720 329 457 720355 839 657 839
Qual a complexidade deste algoritmo ?
![Page 113: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/113.jpg)
113
Radix Sort
![Page 114: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/114.jpg)
114
Radix Sort (exchange)radix_sort (l,r,b)
if (r > l) and (b >= 0) theni = l; j = r;repeat while (bits(a[i],b,1)=0) and (i<j) do i=i+1; while (bits(a[j],b,1)=1) and (i<j) do j=j+1; t=a[i]; a[i]=a[j]; a[j]=t;until j=i;if (bits(a[r],b,1)=0) then j = j+1;radix_sort(l,j-1,b-1);radix_sort(j,r,b-1);
![Page 115: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/115.jpg)
115
Radix Sort (straight)
![Page 116: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/116.jpg)
116
Reduçãoz Os resultados obtidos a respeito do
problema de ordenação são úteis paraestabelecer cotas inferiores para váriosproblemas computacionais.
z Para tal, recorreremos a um mecanismo queconsiste em reduzir um problema a outro.
![Page 117: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/117.jpg)
117
Definição 3
Um problema P1 é redutível (em tempolinear) a um problema P2 se dada umainstância de tamanho n de P1 forpossível, em tempo O(n), obter umainstância de I2 de P2 tal que a resposta deP1 para I1 possa ser obtida, em tempoO(n), a partir da resposta de P2 para I2.Neste caso, escrevemos P1∝ P2 .
![Page 118: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/118.jpg)
118
![Page 119: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/119.jpg)
119
Algoritmos de Buscaz Linear Search
z Binary Search
z Binary Search Tree
z B-Tree
z Hashing
z Quadtree
![Page 120: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/120.jpg)
120
Busca Linearz Este método de procurar dados é direto e fácil entender.
Æ Para achar um determinado dado, comece sua procura aocomeço do conjunto de dados e continue ou olhando até vocêachar, ou acabar o espaço de procura.
Æ A complexidade deste tipo de procura é O(n) porque, no piorcaso serão examinados todos os dados no espaço de procura.
z Como nós veremos adiante, existem muitos algoritmosque podem melhorar tempo de procura. Por exemplo, oalgoritmo de busca binária opera muito mais eficazmenteque uma busca linear mas requer que o conjunto de dadosesteja ordenado.
![Page 121: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/121.jpg)
121
Busca Bináriaz Para se determinar se um elemento a está no vetor
A, comparamos a com o elemento b da posiçãomediana do vetor A. Se a=b então “sim”. Senão,repetimos o processo na primeira metade de A sea<b, ou na segunda metade de A se a<b.
z Pela divisão sucessiva do espaço de busca, nuncafaremos mais de log n+1 comparações para achara, ou que a ∉ A.
![Page 122: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/122.jpg)
122
Busca Bináriabusca_bin(a,f,l)
se (f > l) então retorne “não”senão se (a = A[(f+l)/2]) então retorne “sim” senão se (a < A[(f+l)/2]) então busca_bin(a,f,(f+l)/2-1)
senão busca_bin(a,(f+l)/2+1,l)
2 3 6 558 12 20 24 29 32 38 46
7 ?
não
32 ?
sim
![Page 123: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/123.jpg)
123
Árvore de Busca Binária - BSTDefinição: Uma árvore de busca binária é uma árvore binária
onde cada vértice v é identificado por um elementol(v) ∈ S tal que:Æ para cada vértice u na sub-árvore esquerda de v, l(u) < l(v)
Æ para cada vértice u na sub-árvore direita de v, l(u) > l(v)
Æ para cada elemento a ∈ S, existe um único vértice v tal que l(v) = a.
z A operação mais comum realizada em uma BST é a buscapor um elemento armazenado na árvore. No entanto,também se pode realizar mínimo, máximo, sucessor epredecessor.
z Todas essas operações são feitas em tempo O(h) em umaBST de altura h.
![Page 124: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/124.jpg)
124
Árvore de Busca Bináriasearch_BST(13) ⇒ 15 → 6 → 7 → 13.
min_BST() ⇒ 15 → 6 → 3 → 2.
max_BST() ⇒ 15 → 18 → 20.
suc_BST(15) ⇒ min_BST(right[15]) → 17.
pre_BST(15) ⇒ max_BST(left[15]) → 13.
15
6
3 7
13
942
18
17 20
![Page 125: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/125.jpg)
125
BST: Busca, Min e Maxsearch_BST(x,k)
if x = nil or x = key[x]
then return x
if k < key[x]
then return search_BST(left[x],k)
else return search_BST(right[x],k)
min_BST(x) max_BST(x)
while left[x] ≠ nil while right[x] ≠ nildo x ← left[x] do x ← right[x]
return x return x
![Page 126: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/126.jpg)
126
BST: Sucessor e Predecessorsuc_BST(x)
if right[x] ≠ nilthen return min_BST(right[x])
y ← parent[x]
while y ≠ nil and x = right[y]
do x ← y
y ← parent[y]
return y
pre_BST(x)
if left[x] ≠ nilthen return max_BST(left[x])
y ← parent[x]
while y ≠ nil and x = left[y]
do x ← y
y ← parent[y]
return y
![Page 127: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/127.jpg)
127
BST: Inserçãoinsert_BST(T,z)
y ← nil x ← root[T]
while x ≠ nildo y ← x
if key[z] < key[x] then x ← left[x]
else x ← right[x]
parent[z] ← y
if y = nil then root[T] ← z
else if key[z] < key[y] then left[y] ← z
else right[y] ← z
![Page 128: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/128.jpg)
128
BST: Inserção
![Page 129: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/129.jpg)
129
BST: Remoçãodelete_BST(T,z)
if left[z] = nil or right[z] = nil then y ← z
else y ← suc_BST(z)
if left[y] ≠ nil then x ← left[y]
else x ← right[y]
if x ≠ nil then parent[x] ← parent[y]
if parent[y] = nil then root[x] ← x
else if y = left[parent[y]] then left[parent[y]] ← x
else right[parent[y]] ← x
if y ≠ z then key[z] ← key[y]
return y
![Page 130: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/130.jpg)
130
BST: Remoção
Nó não tem filhos.
Nó tem 1 filho.
Nó tem 2 filhos.
![Page 131: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/131.jpg)
131
Balanced Treesz 2-3-4 Tree
z Red-Black Tree
![Page 132: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/132.jpg)
132
2-3-4 Treez Para eliminar o pior caso da BST, precisamos de
alguma flexibilidade na estrutura de dados.
z Para obter esta flexibilidade, permitimos que osnós da árvore possam conter mais de um elemento.Æ Especificamente, permite-se 3-nodes ou 4-nodes, que
podem conter dois ou três elementos respectivamente.
Æ Os nós padrões (BST) 2-nodes possuem um elementoe dois links.
![Page 133: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/133.jpg)
133
2-3-4 TreeE
A
P
E
X
M
L
![Page 134: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/134.jpg)
134
Red-Black Treesz É uma BST com um bit extra por nó: sua cor, que pode ser
“red” ou “black”.
z Por restrição, a forma como os nós são coloridos, por qualquercaminho, da raiz para as folhas assegura que nenhum caminhoé mais do que duas vezes maior que qualquer outro. Assim, éaproximadamente balanceada.
z Propriedades:
Æ Todo nó é red ou black sendo que toda folha (nil) é black.
Æ Se um nó é red, então os filhos são black.
Æ Todo caminho de um nó para um descendente, tem omesmo número de nós black.
![Page 135: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/135.jpg)
135
Red-Black Tree
Uma red-black tree com n nós internos tem no máximo 2 log(n +1).
![Page 136: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/136.jpg)
136
Heap e Heap Treez Heap = garbage-collected storage
z Heap Tree: É uma BSP (a) que possui um vetorassociado (b).
![Page 137: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/137.jpg)
137
Heap Treez A Heap Tree tem as seguintes propriedades:
Æ A[parent(i)] ≥ A[i]Æ parent(i) return (i/2)
Æ left(i) return (2*i) Æ right(i) return (2*i + 1)
A
![Page 138: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/138.jpg)
138
Heapify: Corrigir a Heap
A[2], i = 2 → violou a propriedade da heap
heapify(A,2) → troca A[2] com A[4]
A[4], i = 4 → violou a propriedade da heap
heapify(A,4) → troca A[2] com A[4]
A[9], i = 9 → propriedade da heap ok!
Heapify(A,9) → não precisa fazer nada
![Page 139: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/139.jpg)
139
Heapifyheapify(a,i)
l ← left(i)r ← right(i)if A[l] > A[i] and l ≤ heap_size[A]
then largest ← lelse largest ← i
if A[r] > A[largest] and r ≤ heap_size[A]then largest ← r
if largest ≠ ithen exchange(A[i],A[largest]) heapify(A,largest)
T(n) = T(2n/3) + cT(n) = O(log n)
Obs.: Alternativamente, podemoscaracterizar o tempo de execuçãodo heapify em um nó de altura hcom O(h).
T(n) = T(2n/3) + cT(n) = O(log n)
Obs.: Alternativamente, podemoscaracterizar o tempo de execuçãodo heapify em um nó de altura hcom O(h).
![Page 140: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/140.jpg)
140
Construindo a Heap Treez Podemos usar a heapify para converter um array A em
uma heap.
z Uma vez que os elementos do sub-array A[n/2+1..n] sãotodos folhas da árvore, cada um é um heap para se iniciar.
build_heap(A)
heap_size[A] ← length[A]for i = length[A] / 2 downto 1
do heapify(A,i)
![Page 141: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/141.jpg)
141
Heap
![Page 142: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/142.jpg)
142
Heap Sortz Construir uma Heap Tree (build_heap)
Æ Maior elemento do array que é armazenado na raiz deve sercolocado no seu lugar correto A[n] e então basta chamar aheapify(A,1)
heap_sort(A)build_heap(A)
for i ← length[A] downto 2do exchange(A[1],A[i])
heap_size[A] ← heap_size[A] - 1 heapify(A,1)
Heapsort é O(n log n)pois:build_heap é O(n)heapify é O(log n) * n-1
Heapsort é O(n log n)pois:build_heap é O(n)heapify é O(log n) * n-1
![Page 143: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/143.jpg)
143
build_heap
HeapSort
heapify
![Page 144: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/144.jpg)
144
Inserindo elementos na Heap Tree
heap_insert(A,key)
heap_size[A] ← heap_size[A]+1
i ← heap_size[A]
while i > 1 and A[parent(i)] > key
do A[i] ← A[parent(i)]
i ← parent(i)
A[i] ← key
Insere uma folha
Insere o 15Desce os elementosum nível, desde a novafolha até o local correto
![Page 145: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/145.jpg)
145
B-Treez São balanced search trees projetadas para trabalhar
em memória secundária, tais como discos, fitas ououtro dispositivo de armazenamento secundário deacesso direto.
z Diferem das red-black trees e 2-3-4 trees poispodem ter vários filhos, de unidades a milhares.
z A característica de “branching factor” de umaB-tree é determinada pelo dispositivo dearmazenamento utilizado.
![Page 146: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/146.jpg)
146
Propriedades da B-Treez Todo nó x tem os seguintes dados:
Æ n[x], o número de elementos armazenados no nó x;
Æ os n[x] elementos armazenados de forma ordenada;
Æ leaf[x], indica se é uma folha (true) ou um nó (false).
z Cada folha tem a mesma profundidade, que é a altura h da árvore.
z Existem limites, inferior e superior, que um nó pode conter. Esseslimites podem ser expressos em termos de um inteiro fixo t ≥ 2chamado grau mínimo da B-tree.Æ Exceto o nó raiz, cada nó tem que ter ao menos t-1 elementos e tem pelo
menos t filhos. Se a árvore não for vazia, o nó raiz tem que conter pelo menosum elemento.
Æ Cada nó pode conter no máximo 2t-1 filhos e no máximo 2t filhos. O nóestará cheio quando conter exatos 2t-1 elementos.
![Page 147: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/147.jpg)
147
Busca na B-Treez Alguns detalhes:
Æ A raiz da B-tree esta sempre na memória principal.
Æ Todos os nós utilizados tem que ser previamentelidos para a memória principal.
z Searching a B-TreeÆ É parecida com a BST, exceto que ao invés de uma
escolha binária a cada nó, teremos uma escolhamúltipla dependente do número de filhos.
Æ Mais precisamente, a cada nó teremos n[x]+1escolhas a decidir.
![Page 148: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/148.jpg)
148
Inserindo elementosna B-Tree
Supondo t = 3, cada nópode ter no máximo5 elementos.
![Page 149: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/149.jpg)
149
Retirando elementos da B-Tree
![Page 150: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/150.jpg)
150
Hashingz Uma abordagem completamente diferente da
baseada em comparações é conhecida comohashing: referencia registros em uma tabela atravésde operações aritméticas que convertem o elementoem um endereço da tabela.
z Hash function: converte o elemento de busca emum endereço da tabela.
z Collision-resolution: trata o problema de dois oumais elementos serem convertidos para um mesmoendereço da tabela.
![Page 151: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/151.jpg)
151
Hash Functionz Como as funções serão aritméticas, o primeiro
passo é converter o elemento em números.
z O métodos mais comum é escolher um númeroprimo M que, para qualquer elemento k, calcularhash(k) = k mod M.
z Exemplos:Æ M = 101, elemento “AKEY” = 44217 ⇒ 44217 mod 101 = 80Æ Mas, se o elemento for “BARH”, o resultado também é 80.
![Page 152: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/152.jpg)
152
Tratamento de Colisões
Tratamento da colisão por listas encadeadas.
![Page 153: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/153.jpg)
153
Separate Chaining
M = 11
![Page 154: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/154.jpg)
154
Linear Probingz Se o número de elementos N é previamente
conhecido e se M > N, então existirão espaçosvazios na tabela. Os métodos que se aproveitamdisso são chamados de open-addressing.
z Destes, o método mais simples é conhecido porlinear probing.
ÆQuando existir uma colisão, simplesmenteteste (probe) a(s) posição(ões) seguinte(s).
![Page 155: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/155.jpg)
155
Linear Probing
M = 19
![Page 156: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/156.jpg)
156
Linear Probing
![Page 157: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/157.jpg)
157
Double Hashingz Em linear probing, principalmente quando a tabela
começa a encher, várias posições tem que serexaminadas para se poder inserir um elemento.
z Ainda pior, geralmente ocorre em vários lugares databela um agrupamento, denominado clustering,fazendo com que o desempenho caia muito.
z No entanto, existe um forma fácil de resolver esteproblema, denominada double hashing: em caso decolisão, utilizamos uma outra função de hashing.
![Page 158: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/158.jpg)
158
Double Hashing
M = 19
![Page 159: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/159.jpg)
159
Double Hashing
![Page 160: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/160.jpg)
160
Grafosz Vários problemas são naturalmente modelados
por objetos e conexões entre eles.
z Por exemplo:Æ Caminho mínimo:
` Qual o menor caminho entre a cidade A e a cidade B ?
Æ Conectividade:
` O interruptor A está conectado a lâmpada B ?
Æ Fluxos:
` Para fazer a tarefa A, precisamos antes fazer a B e C.
z Um grafo (graph) é um objeto matemático quemodela precisamente estes problemas.
![Page 161: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/161.jpg)
161
Nomenclatura de GrafosÆ Um grafo é uma coleção de vértices (ou nós) e arestas.
Æ Um caminho (path) entre os vértices a e b é uma lista sucessivade vértices conectados por arestas.
Æ Um grafo é dito conectado se existe um caminho de cada nópara qualquer outro.
Æ Um ciclo é um caminho em que começa e termina no mesmovértice.
![Page 162: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/162.jpg)
162
Nomenclatura de GrafosÆ Um grafo sem ciclos é chamado de árvore.
Æ Um grupo de árvores desconectadas é chamada de floresta.
Æ Uma spanning tree de um grafo é um sub-grafo que contémtodos os vértices mas apenas as arestas necessárias para formaruma árvore.
![Page 163: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/163.jpg)
163
Nomenclatura de Grafosz Além dos tipos anteriores, denominados não dirigidos
(undirected graphs), existem tipos de grafos maiscomplicados, onde algumas informações são atribuídas aosvértices e/ou as arestas.
z Quando associamos a cada aresta uma informação, um custoou uma distancia por exemplo, denomina-se weighted graphs.
z Quando as arestas possuem uma única direção, ou seja, umaaresta conecta o vértice a ao vértice b mas não o inverso, é ditoque temos um grafo dirigido (directed graphs).
z Os grafos que possuem as duas características anteriores, sãochamados directed weighted graph ou de networks.
![Page 164: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/164.jpg)
164
Representação de Grafos
Lista de adjacências MatrizGrafo
![Page 165: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/165.jpg)
165
Busca em Grafosz Problema: Dado um vértice inicial, queremos
percorrer o grafo visitando todos os vérticespossíveis de serem alcançados a partir do vérticeinicial.
z Os dois algoritmos mais usados em árvores, ouseja, grafos sem ciclos, são a busca em largura e abusca em profundidade.
ÆBreadth-First Search
ÆDepth-First Search
![Page 166: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/166.jpg)
166
Depth-First Search - DFSTambém conhecido como backtracking, faz um
caminho partindo do vértice inicial e vai até omais longe possível no grafo.Æ Cada nova aresta percorrida tem que ser uma aresta
ainda não usada pelo algoritmo.
Æ O algoritmo continua até atingir um vértice que nãopossua arestas ou que conduzam a vértices ainda nãovisitados. A partir deste vértice, retornamos aovértice anterior e escolhemos uma nova aresta. Esteprocedimento é feito até que todas as arestas sejampercorridas e todos os vértices visitados.
![Page 167: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/167.jpg)
167
Depth-First Search
?
![Page 168: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/168.jpg)
168
DFS (com matriz)visit(k)
id = id + 1; val[k] = id
para t = 1 até V faça
se a[k,t] então
se val[t]=0 então visit(t);
dfs()
id = 0;
para k = 1 até V faça val[k] = 0;
para k = 1 até V faça
se val[k] = 0 então visit(k);
![Page 169: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/169.jpg)
169
DFS (com listas)visit(k)
id = id + 1; val[k] = id
t = next[k];
enquanto t ≠ nil faça
se val[t]=0 então visit(t);
t = next[t];
dfs()
id = 0;
para k = 1 até V faça val[k] = 0;
para k = 1 até V faça
se val[k] = 0 então visit(k);
![Page 170: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/170.jpg)
170
Breadth-First Search - BFSz DFS “explora” o grafo procurando novos vértices
cada vez mais distante do vértice inicial e sóutiliza vértices mais próximos quando não existenada “mais distante” naquele caminho.
z BFS “explora”, primeiro, todos os vértices maispróximos do vértice inicial, só utilizando vérticesmais distantes depois que todos os vérticespróximos forem visitados.
z É também chamada de busca em amplitude.
![Page 171: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/171.jpg)
171
Breadth-First Search
![Page 172: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/172.jpg)
172
BFS (com listas)visit(k)
queue(k);
faça
k = dequeue();
id = id + 1; val[k] = id;
t = next[k]
enquanto t ≠ nil faça
se val[t] = 0 então
queue(t);
val[t] = -1;
t = next[t];
até queue_empty();
![Page 173: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/173.jpg)
173
DFS x BFS
DFS BFS
1/3 2/3 1/3 2/3
![Page 174: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/174.jpg)
174
Árvore Geradora Mínimaz Minimum Spanning Tree
z Algoritmo de Prim
![Page 175: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/175.jpg)
175
MST = 16
![Page 176: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/176.jpg)
176
Algoritmo de Primz Segue a estratégia do guloso (greedy)
z Existem três tipos de vértices:Æ os vértices que já estão na árvore mínima (S)
Æ os adjacentes aos vértices da árvore (F de fringe)
Æ os vértices ainda não examinados (U de unseen)
V = S ∪ F ∪ U
![Page 177: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/177.jpg)
177
Algoritmo de Prim
![Page 178: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/178.jpg)
178
Algoritmo de Prim1. Inicie com qualquer vértice v
S = V
F = vértices adjacentes
U = vértices restantes
![Page 179: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/179.jpg)
179
Algoritmo de Prim2. Construa a MSTrepita
ache aresta (v,w) de menor peso tal que v∈S e w∈Finclua (v,w) na MSTinclua w a Satualize F
até S = V.
Usa-se uma heap para armazenar os vértices de F. O menor peso fica na raiz da heap.
Usa-se uma heap para armazenar os vértices de F. O menor peso fica na raiz da heap.
![Page 180: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/180.jpg)
180
Algoritmo de Prim:passo-a-passo
![Page 181: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/181.jpg)
181
Algoritmo de Prim:passo-a-passo
![Page 182: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/182.jpg)
182
Caminho Mínimoz Shortest Paths
z Algoritmo de Dijkstraorigem
destino
![Page 183: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/183.jpg)
183
Algoritmo de Dijkstra1. Adicione um vértice de cada vez ao caminho mínimo,
escolhendo o vértice mais próximo a um vértice da árvore.
2. Os vértice são divididos em unseen, fringe e tree.
3. Os vértices vão de unseen para fringe via da operação deinsert.
4. Os vértices vão de fringe para tree via operação deremove_min.
5. Atualiza-se a fringe sempre que um novo vértice forinserido na tree.
![Page 184: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/184.jpg)
184
Algoritmo de Dijkstra
![Page 185: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/185.jpg)
185
Algoritmo de Dijkstra
![Page 186: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/186.jpg)
186
Algoritmo de Dijkstra
![Page 187: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/187.jpg)
187
Algoritmo de Dijkstra
![Page 188: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/188.jpg)
188
Algoritmo de Dijkstra
d(PVD, SFO) = 200+1000+1500+800d(PVD, SFO) = 3500
![Page 189: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/189.jpg)
189
Caminho Mínimo em umaSuperfície 3D
![Page 190: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/190.jpg)
190
Caminho Mínimo em Mapas
![Page 191: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/191.jpg)
191
Caminho Mínimo em Imagens:Detecção de Contorno
![Page 192: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/192.jpg)
192
Redes de Fluxosz Maximum Flow
z The Tao of Flow:Æ “Let your body go with the flow.”
- Madonna, Vogue
Æ “Maximum flow … because you’re worth it.”
- Lóreal
Æ “Use the flow, Luke!”
- Obi-wan Kenobi, Star Wars
![Page 193: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/193.jpg)
193
Redes de Fluxosz Possui dois vértices distintos dos demais:
Æ Fonte s (source) e Tanque t (sink)
z Os pesos (weights) das arestas são chamados de“capacidades”.
![Page 194: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/194.jpg)
194
Fluxo e Capacidadesz Capacidades:
Æ Similares aos pesos dos grafos, mas não podem sernegativos.
z Fluxo:Æ É função da rede de arestas.
Æ 0 ≤ fluxo ≤ capacidade
Æ Em cada vértice: fluxo entrando = fluxo saindo
Æ Valor: combinação dos fluxos no tanque.
![Page 195: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/195.jpg)
195
Fluxo e Capacidades
![Page 196: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/196.jpg)
196
Problema do Fluxo Máximo“Dada uma rede de fluxos N, ache o fluxo f de
valor máximo.”
z Aplicações:Æ Tráfego
Æ Sistemas hidráulicos
Æ Circuitos Elétricos
![Page 197: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/197.jpg)
197
Aumentando o Fluxo
Fluxo da rede = 3 Caminhos aumentados Fluxo da rede = 4
?
![Page 198: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/198.jpg)
198
Caminhos Aumentadosz Arestas para frente
Æ fluxo < capacidade
Æ fluxo pode ser aumentado!
z Arestas para trásÆ fluxo > 0
Æ fluxo pode ser diminuído!
z Teorema do Fluxo Máximo
“Um fluxo tem um valor máximo se e somentese não tiver um caminho aumentado.”
![Page 199: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/199.jpg)
199
Algoritmo de Ford & Fulkersonz inicialize a rede com fluxo igual a zero
z Find_Flow()se existir um caminho aumentado então
ache o caminho aumentadoaumente o fluxoFind_Flow()
![Page 200: Algoritmos I - w3.impa.brw3.impa.br/~rbs/pdf/algI.pdf · mágica os gregos chamava de “proporção divina” e seus templos, como por exemplo o Parthenon em Atenas, possuíam comprimento](https://reader031.fdocumentos.tips/reader031/viewer/2022031300/5be639a309d3f22b448d4619/html5/thumbnails/200.jpg)
200
Achando o Fluxo Máximo