Semin´ario: Laborat´orio de Algoritmos Avan¸cadosGrupo 10Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP13 de ...
Laborat´orio de Algoritmos Avan¸cadosAlgoritmos Avan¸cados e Laborat´orio de Algoritmos Avan¸cados s˜aodisciplinas optativ...
Diretrizes CurricularesAprovada em 09/03/2002N˜ao traz restri¸c˜oes/obriga¸c˜oes para a disciplina;Optativa e agrega conhe...
Maratona de Programa¸c˜ao?A Maratona de Programa¸c˜ao ´e a vers˜ao universit´aria da Olimp´ıadaBrasileira de Inform´atica ...
Maratona de Programa¸c˜ao?Figura: 2012 ACM-ICPC World Finals em Vars´ovia (Polˆonia).Grupo 10, Instituto de Ciˆencias Mate...
Laborat´orio de Algoritmos Avan¸cadosUma disciplina dedicada a Maratona de Programa¸c˜ao n˜ao ´eexclusividade do ICMC-USP:...
Plano de CursoCarga hor´aria:Uma aula semanal de 3 horas (cr´edito aula);´E prevista uma dedica¸c˜ao extra de 3 horas por ...
Online JudgeFigura: Exemplo de um contest no Codeforces.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — ...
Plano de CursoTabela: Ementa da disciplina.# Descri¸c˜ao da Aula1 Ad-hoc2 Union-Find3 Teoria dos N´umeros (propriedades de...
Plano de CursoBibliografia recomendada:“Competitive Programming 3: TheNew Lower Bound of Programming Contests”,Steven Halim...
AulaAula anterior:Busca Bin´ariaAt´e aqui, espera-se que o aluno tenha compreendido osconceitos b´asicos de busca bin´aria...
Motiva¸c˜aoDescri¸c˜ao do problema:Part´ıculas com velocidade e dire¸c˜ao constantes em um planoAs part´ıculas se movem co...
Motiva¸c˜aoGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Av...
Redu¸c˜ao do ProblemaUm problema mais simples consiste em uma varia¸c˜ao com umadimens˜ao:Part´ıculas com velocidade e dir...
Redu¸c˜ao do ProblemaGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Alg...
Problema Original: Solu¸c˜aoDeseja-se minimizarf (t) = maxi,j( max( xi (t) − xj (t), yi (t) − yj (t) ) ),que pode ser rees...
Problema Original: Solu¸c˜aoTem-se quef (t) = maxi,j( max( (vxi −vxj )t+(pxi −pxj ), (vyi −vyj )t−(pyi +pyj ) ) )´e equiva...
Exemplo4 part´ıculasVelocidade v = (vxi , vyi ), i = 1 . . . 4Posi¸c˜ao inicial p = (pxi , pyi ), i = 1 . . . 4Part´ıcula ...
ExemploC´alculo de Avx -5 -10 -15 -5-5 – 5 10 0-10 -5 – 5 -5-15 -10 -5 – -10-5 0 5 10 –vy 40 -10 -1 -5040 – 50 41 90-10 -5...
ExemploMinimizarf (t) = maxk(Akt + Bk),ondeA = [5, 10, 0, −5, 5, −5, −10, −5, −10, 0, 5, 10, 50,41, 90, −50, −9, 40, −41, ...
ExemploMinimizar f (t):0.0 0.5 1.0 1.54050607080tf(t)qFigura: Em azul, fun¸c˜ao f (t) a ser minimizada; Cada reta correspo...
Busca Tern´ariaQuandoFun¸c˜ao f ´e unimodal eUm intervalo do dom´ınio que contenha o m´aximo da fun¸c˜ao ´econhecido: argm...
Busca Tern´aria: Algoritmo1. Calcule da = a + (b+a)3 e db = b − (b+a)32. Calcule ya = f (da) e yb = f (db);3. se ya > yb e...
Busca Tern´aria: Exemplo VisualO m´aximo sempre est´a na dire¸c˜ao do maior dos dois divisores.M´aximo n˜ao precisa estar ...
Busca Tern´aria: Exemplo VisualO m´aximo sempre est´a na dire¸c˜ao do maior dos dois divisores.M´aximo n˜ao precisa estar ...
Busca Tern´aria: Complexidade (caso discreto)Cada n´ıvel tem processamento O(1): compara¸c˜ao de doisvaloresBusca Tern´ari...
Busca Tern´aria: ComplexidadeNa pr´atica, usamos com o dom´ınio real e limitamos a busca porum erro m´aximo .Seja n o tama...
Busca Tern´aria: DificuldadesProblemas resolvidos com Busca Tern´aria tˆem por dificuldadesnaturaisVerificar se fun¸c˜ao ´e u...
Considera¸c˜oes FinaisExerc´ıcios para treinarUVa 10385: DuathlonSPOJ: Hamster flightTopCoder: Catch The MiceConte´udo da p...
Próximos SlideShares
Carregando em…5
×

Laboratório de Algoritmos Avançados: Busca Ternária

1.637 visualizações

Publicada em

Exemplo de Aplicação de Busca Ternária.

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.637
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Laboratório de Algoritmos Avançados: Busca Ternária

  1. 1. Semin´ario: Laborat´orio de Algoritmos Avan¸cadosGrupo 10Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP13 de junho de 2013Bianca Madoka Shimizu Oe,Denis Moreira dos Reis,Lucas Schmidt Cavalcante,Nathan Siegle Hartmann,Rafael Umino Nakanishi.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 1/29
  2. 2. Laborat´orio de Algoritmos Avan¸cadosAlgoritmos Avan¸cados e Laborat´orio de Algoritmos Avan¸cados s˜aodisciplinas optativas que foram criadas no ICMC-USP para:prover ao aluno um contato pr´atico com algoritmos sem estaratrelado a nenhuma ´area;a partir de 2013 a disciplina Algoritmos Avan¸cados se tornouobrigat´oria.formalizar e dar cr´editos aos alunos e professores que est˜aoenvolvidos na prepara¸c˜ao para a ACM-ICPC (ProgrammingChallenge, que no Brasil recebe o nome de Maratona dePrograma¸c˜ao).Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 2/29
  3. 3. Diretrizes CurricularesAprovada em 09/03/2002N˜ao traz restri¸c˜oes/obriga¸c˜oes para a disciplina;Optativa e agrega conhecimento adicional para a forma¸c˜aob´asica do graduando.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 3/29
  4. 4. Maratona de Programa¸c˜ao?A Maratona de Programa¸c˜ao ´e a vers˜ao universit´aria da Olimp´ıadaBrasileira de Inform´atica (OBI), que tˆem como caracter´ısticas:times formados por 3 alunos (e 1 coach) com acesso a um´unico computador;prova de 5 horas de dura¸c˜ao com cerca de 10 problemas;avalia¸c˜ao autom´atica das submiss˜oes aos problemas (s˜aojulgados quanto a corretude e eficiˆencia);A Maratona de Programa¸c˜ao, que ´e organizada pela SociedadeBrasileira de Computa¸c˜ao (SBC) e Funda¸c˜ao Carlos Chagas(FCC), ´e a respons´avel por selecionar os times brasileiros quecompetir˜ao na etapa mundial (ACM-ICPC).Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 4/29
  5. 5. Maratona de Programa¸c˜ao?Figura: 2012 ACM-ICPC World Finals em Vars´ovia (Polˆonia).Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 5/29
  6. 6. Laborat´orio de Algoritmos Avan¸cadosUma disciplina dedicada a Maratona de Programa¸c˜ao n˜ao ´eexclusividade do ICMC-USP:Stanford:CS 97SI - Introduction to Competitive Programming Contests;Universidade Estadual de Campinas:MC511 - Desafios de Programa¸c˜ao I;MC611 - Desafios de Programa¸c˜ao II;MC711 - Desafios de Programa¸c˜ao III;MC811 - Desafios de Programa¸c˜ao IV;IME-USP:MAC0327 - Desafios de Programa¸c˜ao.Nos baseamos nessas disciplinas para elaborar um novo plano decurso para Laborat´orio de Algoritmos Avan¸cados.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 6/29
  7. 7. Plano de CursoCarga hor´aria:Uma aula semanal de 3 horas (cr´edito aula);´E prevista uma dedica¸c˜ao extra de 3 horas por semana(cr´edito trabalho).Avalia¸c˜ao:MF = 0.4 × MP + 0.6 × ME, no qual MF ´e ‘M´edia Final’,MP ´e ‘M´edia das Provas’, e ME ´e a ‘M´edia dos Exerc´ıcios’.Recursos:Online Judges (OJ): Universidad de Valladolid OJ (UVa),Sphere OJ (SPOJ), TopCoder e Codeforces.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 7/29
  8. 8. Online JudgeFigura: Exemplo de um contest no Codeforces.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 8/29
  9. 9. Plano de CursoTabela: Ementa da disciplina.# Descri¸c˜ao da Aula1 Ad-hoc2 Union-Find3 Teoria dos N´umeros (propriedades de n´umeros primos e crivo)4 Teoria dos Jogos (jogo do NIM e algoritmo ganhador-perdedor)5 Busca Bin´aria & Tern´aria6 Convex Hull7 Fluxo em Grafos (Algoritmos Ford-Fulkerson e Edmonds-Karp)8 Programa¸c˜ao Dinˆamica (LCS, ED, LIS e MCM)9 Arvore de Segmentos e BIT (Fenwick Tree)10 Trie & Suffix ArrayGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 9/29
  10. 10. Plano de CursoBibliografia recomendada:“Competitive Programming 3: TheNew Lower Bound of Programming Contests”,Steven Halim. 3a Edi¸c˜ao (2013), lulu.“Art of ProgrammingContest”, Ahmed Shamsul Arefin. 2006.“Programming Challenges: The ProgrammingContest Training Manual”, StevenS. Skiena & Miguel A. Revilla. 2003, Springer.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 10/29
  11. 11. AulaAula anterior:Busca Bin´ariaAt´e aqui, espera-se que o aluno tenha compreendido osconceitos b´asicos de busca bin´aria.Esta aula:Busca Tern´ariaApresentaremos uma motiva¸c˜ao com um problemaIntroduziremos os conceitos do assuntoGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 11/29
  12. 12. Motiva¸c˜aoDescri¸c˜ao do problema:Part´ıculas com velocidade e dire¸c˜ao constantes em um planoAs part´ıculas se movem com o decorrer do tempo´E desejado o quadrado de menor ´area que contenha todas aspart´ıculas em algum instanteGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 12/29
  13. 13. Motiva¸c˜aoGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 13/29
  14. 14. Redu¸c˜ao do ProblemaUm problema mais simples consiste em uma varia¸c˜ao com umadimens˜ao:Part´ıculas com velocidade e dire¸c˜ao constantes sobre o eixo xCada part´ıcula se move apenas em uma dire¸c˜ao: esquerda oudireita´E desejado o menor intervalo que contenha todas as part´ıculasem algum instanteGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 14/29
  15. 15. Redu¸c˜ao do ProblemaGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 15/29Particulas opostas Grafico de distancia
  16. 16. Problema Original: Solu¸c˜aoDeseja-se minimizarf (t) = maxi,j( max( xi (t) − xj (t), yi (t) − yj (t) ) ),que pode ser reescrita comof (t) = maxi,j( max( (vxi t+pxi )−(vxj t+pxj ), (vyi t+pyi )−(vyj t+pyj ) ) ),f (t) = maxi,j( max( (vxi −vxj )t+(pxi −pxj ), (vyi −vyj )t−(pyi +pyj ) ) ).Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 16/29
  17. 17. Problema Original: Solu¸c˜aoTem-se quef (t) = maxi,j( max( (vxi −vxj )t+(pxi −pxj ), (vyi −vyj )t−(pyi +pyj ) ) )´e equivalente af (t) = maxk(Akt + Bk),onde Ak e Bk s˜ao os vetores das diferen¸cas entre, respectivamente,as velocidades e posi¸c˜oes, componente a componente, de todos ospares de part´ıculas.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 17/29
  18. 18. Exemplo4 part´ıculasVelocidade v = (vxi , vyi ), i = 1 . . . 4Posi¸c˜ao inicial p = (pxi , pyi ), i = 1 . . . 4Part´ıcula vx vy px py1 -5 40 50 -102 -10 -10 10 303 -15 -1 30 204 -5 -50 15 40Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 18/29
  19. 19. ExemploC´alculo de Avx -5 -10 -15 -5-5 – 5 10 0-10 -5 – 5 -5-15 -10 -5 – -10-5 0 5 10 –vy 40 -10 -1 -5040 – 50 41 90-10 -50 – -9 40-1 -41 9 – 49-50 -90 -40 -49 –Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 19/29
  20. 20. ExemploMinimizarf (t) = maxk(Akt + Bk),ondeA = [5, 10, 0, −5, 5, −5, −10, −5, −10, 0, 5, 10, 50,41, 90, −50, −9, 40, −41, 9, 49, −90, −40, −49]eB = [40, 20, 35, −40, −20, −5, −20, 20, 15, −35, 5, −15,−40, −30, −50, 40, 10, −10, 30, −10, −20, 50, 10, 20]Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 20/29
  21. 21. ExemploMinimizar f (t):0.0 0.5 1.0 1.54050607080tf(t)qFigura: Em azul, fun¸c˜ao f (t) a ser minimizada; Cada reta corresponde aum par (Ai , Bi ); Valor m´ınimo em vermelho.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 21/29
  22. 22. Busca Tern´ariaQuandoFun¸c˜ao f ´e unimodal eUm intervalo do dom´ınio que contenha o m´aximo da fun¸c˜ao ´econhecido: argmax f (x) ∈ [a, b]A Busca Tern´aria divide uniformemente o intervalo em trˆespor¸c˜oes, e elimina aquela para qual h´a impossibilidade de conter om´aximo.Processo iterativo at´e alcan¸car erro desejadoGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 22/29
  23. 23. Busca Tern´aria: Algoritmo1. Calcule da = a + (b+a)3 e db = b − (b+a)32. Calcule ya = f (da) e yb = f (db);3. se ya > yb ent˜ao atualize o intervalo para [a, db]; casocontr´ario, atualize o intervalo para [da, b].se ya > yb ent˜ao com certeza o valor m´aximo n˜ao est´a em[db, b].4. se |a − b| < encerre; caso contr´ario volte ao primeiro passo erepita.´e o erro especificado pelo usu´ario. Por exemplo, = 10−8.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 23/29
  24. 24. Busca Tern´aria: Exemplo VisualO m´aximo sempre est´a na dire¸c˜ao do maior dos dois divisores.M´aximo n˜ao precisa estar entre os dois divisores!Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 24/29
  25. 25. Busca Tern´aria: Exemplo VisualO m´aximo sempre est´a na dire¸c˜ao do maior dos dois divisores.M´aximo n˜ao precisa estar entre os dois divisores!Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 25/29
  26. 26. Busca Tern´aria: Complexidade (caso discreto)Cada n´ıvel tem processamento O(1): compara¸c˜ao de doisvaloresBusca Tern´aria ´e O(H)n = 32H→ H = log32nGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 26/29
  27. 27. Busca Tern´aria: ComplexidadeNa pr´atica, usamos com o dom´ınio real e limitamos a busca porum erro m´aximo .Seja n o tamanho do intervalo inicial, ap´os h itera¸c˜oesqueremos obter um nh ≤A cada itera¸c˜ao reduzimos o intervalo em 2/3 do tamanhoanterior= 23hn → h = log32nAssim, a complexidade do algoritmo para casos real ´e O(log32n).Obs: normalmente ´e menor que 1.Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 27/29
  28. 28. Busca Tern´aria: DificuldadesProblemas resolvidos com Busca Tern´aria tˆem por dificuldadesnaturaisVerificar se fun¸c˜ao ´e unimodalEspecificar intervalo inicialGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 28/29
  29. 29. Considera¸c˜oes FinaisExerc´ıcios para treinarUVa 10385: DuathlonSPOJ: Hamster flightTopCoder: Catch The MiceConte´udo da pr´oxima aulaConvex HullGrupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 29/29

×