SlideShare una empresa de Scribd logo
1 de 29
Semin´ario: Laborat´orio de Algoritmos Avan¸cados
Grupo 10
Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP
13 de junho de 2013
Bianca 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
Laborat´orio de Algoritmos Avan¸cados
Algoritmos Avan¸cados e Laborat´orio de Algoritmos Avan¸cados s˜ao
disciplinas optativas que foram criadas no ICMC-USP para:
prover ao aluno um contato pr´atico com algoritmos sem estar
atrelado a nenhuma ´area;
a partir de 2013 a disciplina Algoritmos Avan¸cados se tornou
obrigat´oria.
formalizar e dar cr´editos aos alunos e professores que est˜ao
envolvidos na prepara¸c˜ao para a ACM-ICPC (Programming
Challenge, que no Brasil recebe o nome de Maratona de
Programa¸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
Diretrizes Curriculares
Aprovada em 09/03/2002
N˜ao traz restri¸c˜oes/obriga¸c˜oes para a disciplina;
Optativa e agrega conhecimento adicional para a forma¸c˜ao
b´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
Maratona de Programa¸c˜ao?
A Maratona de Programa¸c˜ao ´e a vers˜ao universit´aria da Olimp´ıada
Brasileira 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˜ao
julgados quanto a corretude e eficiˆencia);
A Maratona de Programa¸c˜ao, que ´e organizada pela Sociedade
Brasileira de Computa¸c˜ao (SBC) e Funda¸c˜ao Carlos Chagas
(FCC), ´e a respons´avel por selecionar os times brasileiros que
competir˜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
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
Laborat´orio de Algoritmos Avan¸cados
Uma disciplina dedicada a Maratona de Programa¸c˜ao n˜ao ´e
exclusividade 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 de
curso 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
Plano de Curso
Carga 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
Online Judge
Figura: 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
Plano de Curso
Tabela: Ementa da disciplina.
# Descri¸c˜ao da Aula
1 Ad-hoc
2 Union-Find
3 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´aria
6 Convex Hull
7 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 Array
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 9/29
Plano de Curso
Bibliografia recomendada:
“Competitive Programming 3: The
New Lower Bound of Programming Contests”,
Steven Halim. 3a Edi¸c˜ao (2013), lulu.
“Art of Programming
Contest”, Ahmed Shamsul Arefin. 2006.
“Programming Challenges: The Programming
Contest Training Manual”, Steven
S. 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
Aula
Aula anterior:
Busca Bin´aria
At´e aqui, espera-se que o aluno tenha compreendido os
conceitos b´asicos de busca bin´aria.
Esta aula:
Busca Tern´aria
Apresentaremos uma motiva¸c˜ao com um problema
Introduziremos os conceitos do assunto
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 11/29
Motiva¸c˜ao
Descri¸c˜ao do problema:
Part´ıculas com velocidade e dire¸c˜ao constantes em um plano
As part´ıculas se movem com o decorrer do tempo
´E desejado o quadrado de menor ´area que contenha todas as
part´ıculas em algum instante
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 12/29
Motiva¸c˜ao
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 13/29
Redu¸c˜ao do Problema
Um problema mais simples consiste em uma varia¸c˜ao com uma
dimens˜ao:
Part´ıculas com velocidade e dire¸c˜ao constantes sobre o eixo x
Cada part´ıcula se move apenas em uma dire¸c˜ao: esquerda ou
direita
´E desejado o menor intervalo que contenha todas as part´ıculas
em algum instante
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 14/29
Redu¸c˜ao do Problema
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 15/29
Particulas opostas Grafico de distancia
Problema Original: Solu¸c˜ao
Deseja-se minimizar
f (t) = max
i,j
( max( xi (t) − xj (t), yi (t) − yj (t) ) ),
que pode ser reescrita como
f (t) = max
i,j
( max( (vxi t+pxi )−(vxj t+pxj ), (vyi t+pyi )−(vyj t+pyj ) ) ),
f (t) = max
i,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
Problema Original: Solu¸c˜ao
Tem-se que
f (t) = max
i,j
( max( (vxi −vxj )t+(pxi −pxj ), (vyi −vyj )t−(pyi +pyj ) ) )
´e equivalente a
f (t) = max
k
(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 os
pares 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
Exemplo
4 part´ıculas
Velocidade v = (vxi , vyi ), i = 1 . . . 4
Posi¸c˜ao inicial p = (pxi , pyi ), i = 1 . . . 4
Part´ıcula vx vy px py
1 -5 40 50 -10
2 -10 -10 10 30
3 -15 -1 30 20
4 -5 -50 15 40
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 18/29
Exemplo
C´alculo de A
vx -5 -10 -15 -5
-5 – 5 10 0
-10 -5 – 5 -5
-15 -10 -5 – -10
-5 0 5 10 –
vy 40 -10 -1 -50
40 – 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
Exemplo
Minimizar
f (t) = max
k
(Akt + Bk),
onde
A = [5, 10, 0, −5, 5, −5, −10, −5, −10, 0, 5, 10, 50,
41, 90, −50, −9, 40, −41, 9, 49, −90, −40, −49]
e
B = [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
Exemplo
Minimizar f (t):
0.0 0.5 1.0 1.5
4050607080
t
f(t)
q
Figura: Em azul, fun¸c˜ao f (t) a ser minimizada; Cada reta corresponde a
um 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
Busca Tern´aria
Quando
Fun¸c˜ao f ´e unimodal e
Um intervalo do dom´ınio que contenha o m´aximo da fun¸c˜ao ´e
conhecido: argmax f (x) ∈ [a, b]
A Busca Tern´aria divide uniformemente o intervalo em trˆes
por¸c˜oes, e elimina aquela para qual h´a impossibilidade de conter o
m´aximo.
Processo iterativo at´e alcan¸car erro desejado
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 22/29
Busca Tern´aria: Algoritmo
1. Calcule da = a + (b+a)
3 e db = b − (b+a)
3
2. Calcule ya = f (da) e yb = f (db);
3. se ya > yb ent˜ao atualize o intervalo para [a, db]; caso
contr´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 e
repita.
´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
Busca Tern´aria: Exemplo Visual
O 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
Busca Tern´aria: Exemplo Visual
O 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
Busca Tern´aria: Complexidade (caso discreto)
Cada n´ıvel tem processamento O(1): compara¸c˜ao de dois
valores
Busca Tern´aria ´e O(H)
n = 3
2
H
→ H = log3
2
n
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 26/29
Busca Tern´aria: Complexidade
Na pr´atica, usamos com o dom´ınio real e limitamos a busca por
um erro m´aximo .
Seja n o tamanho do intervalo inicial, ap´os h itera¸c˜oes
queremos obter um nh ≤
A cada itera¸c˜ao reduzimos o intervalo em 2/3 do tamanho
anterior
= 2
3
h
n → h = log3
2
n
Assim, a complexidade do algoritmo para casos real ´e O(log3
2
n
).
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
Busca Tern´aria: Dificuldades
Problemas resolvidos com Busca Tern´aria tˆem por dificuldades
naturais
Verificar se fun¸c˜ao ´e unimodal
Especificar intervalo inicial
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 28/29
Considera¸c˜oes Finais
Exerc´ıcios para treinar
UVa 10385: Duathlon
SPOJ: Hamster flight
TopCoder: Catch The Mice
Conte´udo da pr´oxima aula
Convex Hull
Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 29/29

Más contenido relacionado

Similar a Seminário Laboratório Algoritmos

Algoritmo e fluxogramas: introdução à lógica
Algoritmo e fluxogramas: introdução à lógicaAlgoritmo e fluxogramas: introdução à lógica
Algoritmo e fluxogramas: introdução à lógicaBrunoCosta121828
 
Fuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de AplicaçãoFuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de AplicaçãoHenrique Rocha
 
Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Pacc UAB
 
Projeto em informatica educativa i. 1
Projeto em informatica educativa i. 1Projeto em informatica educativa i. 1
Projeto em informatica educativa i. 1Fernando Lima
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfLuanaBatista74
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlabblogmaxima
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...Manuel Menezes de Sequeira
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1Isaac Barros
 
Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...
Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...
Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...Jesimar Arantes
 
Tutorial br mathematica 5.2
Tutorial br mathematica 5.2Tutorial br mathematica 5.2
Tutorial br mathematica 5.2Luiz Dias
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Pacc UAB
 
Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1Pacc UAB
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 

Similar a Seminário Laboratório Algoritmos (20)

Algoritmo e fluxogramas: introdução à lógica
Algoritmo e fluxogramas: introdução à lógicaAlgoritmo e fluxogramas: introdução à lógica
Algoritmo e fluxogramas: introdução à lógica
 
Fuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de AplicaçãoFuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
Fuzzy C-Means na Seleção de Currículos - Projeto de Aplicação
 
Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1Aula 6 - Estruturas de seleção encadeada - parte 1
Aula 6 - Estruturas de seleção encadeada - parte 1
 
Projeto em informatica educativa i. 1
Projeto em informatica educativa i. 1Projeto em informatica educativa i. 1
Projeto em informatica educativa i. 1
 
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdfMC-102 — Aula 01 Introdução à Programação de Computadores.pdf
MC-102 — Aula 01 Introdução à Programação de Computadores.pdf
 
Matematica aplicada
Matematica aplicadaMatematica aplicada
Matematica aplicada
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Aula 2 - Programação 1
Aula 2 - Programação 1Aula 2 - Programação 1
Aula 2 - Programação 1
 
Algii aula00-cic2 na446
Algii aula00-cic2 na446Algii aula00-cic2 na446
Algii aula00-cic2 na446
 
Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...
Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...
Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...
 
ALG1-aula00
ALG1-aula00ALG1-aula00
ALG1-aula00
 
Atividade 12
Atividade 12Atividade 12
Atividade 12
 
Computacao cientifica
Computacao cientificaComputacao cientifica
Computacao cientifica
 
Tutorial br mathematica 5.2
Tutorial br mathematica 5.2Tutorial br mathematica 5.2
Tutorial br mathematica 5.2
 
Aula2
Aula2Aula2
Aula2
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1
 
Algop - aula 03
Algop - aula 03Algop - aula 03
Algop - aula 03
 
Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1Aula 8 - Repetição PARA ATÉ - parte 1
Aula 8 - Repetição PARA ATÉ - parte 1
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 

Seminário Laboratório Algoritmos

  • 1. Semin´ario: Laborat´orio de Algoritmos Avan¸cados Grupo 10 Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP 13 de junho de 2013 Bianca 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. Laborat´orio de Algoritmos Avan¸cados Algoritmos Avan¸cados e Laborat´orio de Algoritmos Avan¸cados s˜ao disciplinas optativas que foram criadas no ICMC-USP para: prover ao aluno um contato pr´atico com algoritmos sem estar atrelado a nenhuma ´area; a partir de 2013 a disciplina Algoritmos Avan¸cados se tornou obrigat´oria. formalizar e dar cr´editos aos alunos e professores que est˜ao envolvidos na prepara¸c˜ao para a ACM-ICPC (Programming Challenge, que no Brasil recebe o nome de Maratona de Programa¸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. Diretrizes Curriculares Aprovada em 09/03/2002 N˜ao traz restri¸c˜oes/obriga¸c˜oes para a disciplina; Optativa e agrega conhecimento adicional para a forma¸c˜ao b´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. Maratona de Programa¸c˜ao? A Maratona de Programa¸c˜ao ´e a vers˜ao universit´aria da Olimp´ıada Brasileira 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˜ao julgados quanto a corretude e eficiˆencia); A Maratona de Programa¸c˜ao, que ´e organizada pela Sociedade Brasileira de Computa¸c˜ao (SBC) e Funda¸c˜ao Carlos Chagas (FCC), ´e a respons´avel por selecionar os times brasileiros que competir˜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. 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. Laborat´orio de Algoritmos Avan¸cados Uma disciplina dedicada a Maratona de Programa¸c˜ao n˜ao ´e exclusividade 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 de curso 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. Plano de Curso Carga 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. Online Judge Figura: 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. Plano de Curso Tabela: Ementa da disciplina. # Descri¸c˜ao da Aula 1 Ad-hoc 2 Union-Find 3 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´aria 6 Convex Hull 7 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 Array Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 9/29
  • 10. Plano de Curso Bibliografia recomendada: “Competitive Programming 3: The New Lower Bound of Programming Contests”, Steven Halim. 3a Edi¸c˜ao (2013), lulu. “Art of Programming Contest”, Ahmed Shamsul Arefin. 2006. “Programming Challenges: The Programming Contest Training Manual”, Steven S. 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. Aula Aula anterior: Busca Bin´aria At´e aqui, espera-se que o aluno tenha compreendido os conceitos b´asicos de busca bin´aria. Esta aula: Busca Tern´aria Apresentaremos uma motiva¸c˜ao com um problema Introduziremos os conceitos do assunto Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 11/29
  • 12. Motiva¸c˜ao Descri¸c˜ao do problema: Part´ıculas com velocidade e dire¸c˜ao constantes em um plano As part´ıculas se movem com o decorrer do tempo ´E desejado o quadrado de menor ´area que contenha todas as part´ıculas em algum instante Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 12/29
  • 13. Motiva¸c˜ao Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 13/29
  • 14. Redu¸c˜ao do Problema Um problema mais simples consiste em uma varia¸c˜ao com uma dimens˜ao: Part´ıculas com velocidade e dire¸c˜ao constantes sobre o eixo x Cada part´ıcula se move apenas em uma dire¸c˜ao: esquerda ou direita ´E desejado o menor intervalo que contenha todas as part´ıculas em algum instante Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 14/29
  • 15. Redu¸c˜ao do Problema Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 15/29 Particulas opostas Grafico de distancia
  • 16. Problema Original: Solu¸c˜ao Deseja-se minimizar f (t) = max i,j ( max( xi (t) − xj (t), yi (t) − yj (t) ) ), que pode ser reescrita como f (t) = max i,j ( max( (vxi t+pxi )−(vxj t+pxj ), (vyi t+pyi )−(vyj t+pyj ) ) ), f (t) = max i,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. Problema Original: Solu¸c˜ao Tem-se que f (t) = max i,j ( max( (vxi −vxj )t+(pxi −pxj ), (vyi −vyj )t−(pyi +pyj ) ) ) ´e equivalente a f (t) = max k (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 os pares 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. Exemplo 4 part´ıculas Velocidade v = (vxi , vyi ), i = 1 . . . 4 Posi¸c˜ao inicial p = (pxi , pyi ), i = 1 . . . 4 Part´ıcula vx vy px py 1 -5 40 50 -10 2 -10 -10 10 30 3 -15 -1 30 20 4 -5 -50 15 40 Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 18/29
  • 19. Exemplo C´alculo de A vx -5 -10 -15 -5 -5 – 5 10 0 -10 -5 – 5 -5 -15 -10 -5 – -10 -5 0 5 10 – vy 40 -10 -1 -50 40 – 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. Exemplo Minimizar f (t) = max k (Akt + Bk), onde A = [5, 10, 0, −5, 5, −5, −10, −5, −10, 0, 5, 10, 50, 41, 90, −50, −9, 40, −41, 9, 49, −90, −40, −49] e B = [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. Exemplo Minimizar f (t): 0.0 0.5 1.0 1.5 4050607080 t f(t) q Figura: Em azul, fun¸c˜ao f (t) a ser minimizada; Cada reta corresponde a um 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. Busca Tern´aria Quando Fun¸c˜ao f ´e unimodal e Um intervalo do dom´ınio que contenha o m´aximo da fun¸c˜ao ´e conhecido: argmax f (x) ∈ [a, b] A Busca Tern´aria divide uniformemente o intervalo em trˆes por¸c˜oes, e elimina aquela para qual h´a impossibilidade de conter o m´aximo. Processo iterativo at´e alcan¸car erro desejado Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 22/29
  • 23. Busca Tern´aria: Algoritmo 1. Calcule da = a + (b+a) 3 e db = b − (b+a) 3 2. Calcule ya = f (da) e yb = f (db); 3. se ya > yb ent˜ao atualize o intervalo para [a, db]; caso contr´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 e repita. ´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. Busca Tern´aria: Exemplo Visual O 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. Busca Tern´aria: Exemplo Visual O 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. Busca Tern´aria: Complexidade (caso discreto) Cada n´ıvel tem processamento O(1): compara¸c˜ao de dois valores Busca Tern´aria ´e O(H) n = 3 2 H → H = log3 2 n Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 26/29
  • 27. Busca Tern´aria: Complexidade Na pr´atica, usamos com o dom´ınio real e limitamos a busca por um erro m´aximo . Seja n o tamanho do intervalo inicial, ap´os h itera¸c˜oes queremos obter um nh ≤ A cada itera¸c˜ao reduzimos o intervalo em 2/3 do tamanho anterior = 2 3 h n → h = log3 2 n Assim, a complexidade do algoritmo para casos real ´e O(log3 2 n ). 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. Busca Tern´aria: Dificuldades Problemas resolvidos com Busca Tern´aria tˆem por dificuldades naturais Verificar se fun¸c˜ao ´e unimodal Especificar intervalo inicial Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 28/29
  • 29. Considera¸c˜oes Finais Exerc´ıcios para treinar UVa 10385: Duathlon SPOJ: Hamster flight TopCoder: Catch The Mice Conte´udo da pr´oxima aula Convex Hull Grupo 10, Instituto de Ciˆencias Matem´aticas e de Computa¸c˜ao — USP Semin´ario: Laborat´orio de Algoritmos Avan¸cados 29/29