Geometria Para ICPC

26
Geomet ı a par a ICPC Training Camp Argentina 2013 Fidel I. Schaposnik (UNLP) -  [email protected] 19 de julio de 2013

Transcript of Geometria Para ICPC

Page 1: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 1/26

Geometrıa para ICPC

Training Camp Argentina 2013

Fidel I. Schaposnik (UNLP) - [email protected] de julio de 2013

Page 2: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 2/26

Contenidos

IntroduccionRepresentacion de objetos fundamentales

Puntos y vectoresLıneas y segmentos

Problemas lineales en geometrıa computacionalEcuaciones implıcitasInterseccion de planos en 3D

Tecnicas de barridoA Safe Bet November Rain

Problemas para practicar

Training Camp Argentina 2013 Geometrıa para ICPC

Page 3: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 3/26

Introduccion

¿En que consiste un problema de geometrıa computacional?

Generalmente, los problemas de geometrıa en el ICPC requierencalcular alguna cantidad (e.g. distancia, area, parametros ´ optimospara una conguracion determinada, etc) relacionada conelementos geometricos como puntos, lıneas, cırculos, y demas. Lasolucion de un problema de geometrıa involucra dos pasos:

1 Representar los objetos geometricos involucrados en elproblema, de modo de poder operar con ellos.

2 Desarrollar un algoritmo utilizando lo anterior para calcular la

respuesta buscada.

Para poder dedicarnos a la parte “interesante”, debemos primeroasegurarnos de que el primer punto no es un impedimento.

Training Camp Argentina 2013 Geometrıa para ICPC

Page 4: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 4/26

Introduccion (cont.)

A FAVOR: Podemos visualizar los algoritmos facilmente.EN CONTRA: Debemos evitar nuevos tipos de problemas (erroresnumericos, casos degenerados, c odigo mas largo, etc).

Training Camp Argentina 2013 Geometrıa para ICPC

Page 5: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 5/26

Introduccion (cont.)

A FAVOR: Podemos visualizar los algoritmos facilmente.EN CONTRA: Debemos evitar nuevos tipos de problemas (erroresnumericos, casos degenerados, c odigo mas largo, etc).

Antes de empezar, algunas consideraciones generalesA lo largo de esta clase nos vamos a concentrar casiexclusivamente en problemas de geometrıa en 2D.

La practica y las buenas costumbres son todavıa masimportantes que en los problemas “convencionales”.

¡Los problemas de geometrıa muchas veces sirven paradistinguir a los buenos equipos de los excelentes!

Training Camp Argentina 2013 Geometrıa para ICPC

Page 6: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 6/26

Puntos y vectores

Un punto en el plano (o un vector desde el origen hasta dichopunto) se puede representar con un par ordenado de coordenadasen un sistema cartesiano:

P = ( x , y ) con x , y ∈R

Algunas operaciones entre vectoresLa suma y resta de vectores se realiza componente acomponente:

P = P 1 ± P 2 ⇐⇒ (x , y ) = ( x 1 ± x 2, y 1 ± y 2)

La longitud o norma de un vector es | P | =

x 2 + y 2.

La distancia euclıdea entre dos puntos P 1 y P 2 es | P 1 − P 2 |El producto escalar de dos vectores es un numero, y se denecomo

P 1 · P 2 := x 1x 2 + y 1y 2 = | P 1 || P 2 | cos θ

Observar que es la proyeccion de un vector sobre otro, y en

particular si θ = 90 ◦ el producto escalar se anula.Training Camp Argentina 2013 Geometrıa para ICPC

Page 7: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 7/26

Puntos y vectores (cont.)

El producto vectorial de dos vectores es un vector en ladireccion normal al plano generado por ellos. En dosdimensiones nos puede interesar su unica componente no nula,

P 1 × P 2z

= x 1y 2 − x 2y 1 ≡ P 1 ∧ P 2

Observar que| P 1 × P 2 | = | P 1|| P 2 | sin θ,

es decir el area del paralelogramo formado por los vectores y

sus traslaciones paralelas.En particular si θ = 0 ◦ o θ = 180 ◦ el producto vectorial seanula.

Training Camp Argentina 2013 Geometrıa para ICPC

Page 8: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 8/26

Puntos y vectores (codigo.)

1 s t r u c t p t {2 doub le x , y ;

3 p t ( doub le x x = 0 . 0 , doub le yy=0.0) { x=xx ; y=yy ; }4 } ;56 p t o p e r a t o r +( c o n s t pt &p1 , c o n s t p t &p2) {7 r e t u r n p t ( p1 . x+p2 . x , p1 . y+p2 . y ) ; }89 p t o p e r a t o r − ( c o n s t pt &p1 , c o n s t p t &p2) {

10 r e t u r n pt ( p1 . x− p2 . x , p1 . y− p2 . y ) ; }1112 do ub l e o p e r a t o r ∗( c o n s t pt &p1 , c o n s t p t &p2) {13 r e t u r n p1 . x∗p2 . x + p1 . y∗p2 . y ; }1415 do ub l e o p e r a t o r ˆ ( c o n s t pt &p1 , c o n s t p t &p2) {16 r e t u r n p1 . x∗p2 . y − p1 . y∗p2 . x ; }1718 doub le norm( c o n s t p t &p) { r e t u r n s q r t ( p ∗p ) ; }1920 doub le d i s t ( c o n s t pt &p1 , c o n s t p t &p2) {21 r e t u r n norm(p1 − p2) ; }

Estructura y operaciones elemental e s co n p u nt os Training Camp Argentina 2013 Geometrıa para ICPC

Page 9: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 9/26

Lıneas y segmentos

Una lınea o un segmento se pueden representar de varias formasdistintas:

Con dos puntos P 1 y P 2 sobre la lınea (los extremos delsegmento)

Con un punto P 0 sobre la lınea y un vector director V

Mediante una ecuacion implıcita ax + by + c = 0.Se puede pasar de una a otra representaci on trivialmente, y laeleccion de una u otra depende en denitiva del uso que se vaya adarle.

La representacion P 0, V se conoce como parametrica, porquenos permite recorrer todos los puntos de la lınea o segmento con

P (t ) = P 0 + t V cont ∈R lıneat ∈ [0, 1] segmento

Training Camp Argentina 2013 Geometrıa para ICPC

Page 10: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 10/26

Lıneas y segmentos (cont.)

1 s t r u c t l i n e {

2 doub le a , b , c ;3 l i n e ( doub le a a = 0 . 0 , doub le bb=0 .0 , doub le c c=0 .0 ) {4 a=aa ; b=bb ; c=cc ;5 }6 } ;78 doub le d i s t ( c o n s t pt &p , c o n s t l i n e &l ) {

9 r e t u r n ABS( l . a∗p . x+l . b∗p . y+l . c ) / s q r t (SQ( l . a )+SQ( l . b ) ) ; }1011 l i n e l i n e p p ( c o n s t pt &p1 , c o n s t p t &p2) {12 r e t u r n l i n e ( p2 . y− p1 . y , p1 . x− p2 . x , p2ˆp1 ) ; }1314 l i n e l i n e p e r p p ( c o n s t l i n e &l , c o n s t p t &p) {15 r e t u r n l i n e (− l . b , l . a , l . b∗p . x − l . a∗p . y ) ; }1617 l i n e m e d i a t r i z ( c o n s t pt &p1 , c o n s t p t &p2) {18 r e t u r n l i n e p e r p p ( l i n e p p ( p1 , p2 ) , ( p 1+p2 ) / 2 . 0 ) ; }

Ejemplo de uso de la representaci´ on implıcita

Training Camp Argentina 2013 Geometrıa para ICPC

Page 11: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 11/26

Lıneas y segmentos (cont.)

1 l i n e b i s e c t r i z ( c o n s t pt &p1 , c o n s t pt &pc , c o n s t p t &p2 ) {2 p t pc1 = p1 − pc , p c2 = p2 − pc ;

34 i f (ABS(pc1ˆpc2) < EPS) {5 i f ( pc1∗pc2 > ZERO) r e t u r n l i n e p p ( pc , p1 ) ;6 e l s e r e t u r n l i n e p e r p p ( l i n e p p ( p1 , p2 ) , pc ) ;7 }8 r e t u r n l i n e p p ( pc , pc+(pc1/norm( pc1 )+pc2/norm( pc2 ) ) /2 .0 ) ;9 }

1011 i n t i n t e r l l ( c o n s t l i n e &l 1 , c o n s t l i n e &l 2 , p t &p ) {12 doub le d e t = l 1 . a ∗ l 2 . b − l 1 . b∗ l 2 . a ;1314 i f (ABS( de t ) < EPS) {15 i f (ABS( l 1 . a∗ l 2 . c − l 1 . c∗ l2 . a ) < EPS) r e t u r n − 1;16 e l s e r e t u r n 0 ;17 }18 p . x = ( l 1 . b∗ l 2 . c − l 2 . b∗ l 1 . c ) / de t ;19 p . y = ( l 2 . a∗ l 1 . c − l 1 . a∗ l 2 . c ) / de t ;20 r e t u r n 1 ;21 }

Ejemplo de uso de la representaci´ on i mp lı ci ta ( co nt .)Training Camp Argentina 2013 Geometrıa para ICPC

Page 12: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 12/26

Problemas lineales en geometrıa computacional

A veces aparecen sistemas de ecuaciones en problemas de

geometrıa computacional: Joe’s Triangular Gardens (NA-GNY’08)pide hallar la elipse tangente a un triangulo en los puntos mediosde sus lados:

Training Camp Argentina 2013 Geometrıa para ICPC

Page 13: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 13/26

Problemas lineales en geometrıa computacional

A veces aparecen sistemas de ecuaciones en problemas de

geometrıa computacional: Joe’s Triangular Gardens (NA-GNY’08)pide hallar la elipse tangente a un triangulo en los puntos mediosde sus lados:

Una elipse queda denida por ax 2 + bxy + cy 2 + dx + ey + f = 0con b 2 − 4ac < 0, de modo que tenemos 5 parametros que denenla elipse (a, b , c , d , e y f , a menos de una normalizacion).

Training Camp Argentina 2013 Geometrıa para ICPC

Page 14: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 14/26

Problemas lineales en geometrıa computacional (cont.)

Si P mi = ( x mi , y mi ) con i = 1 , 2, 3 son los puntos medios de loslados del triangulo, tenemos 3 ecuaciones de interseccion

a(x mi )2 + b x mi y mi + c (y mi )2 + d x mi + e y mi + f = 0

y 2 ecuaciones de tangencia (derivando implıcitamente para dos

lados no verticales)

2a x mi + b (y mi + x mi y (x mi , y mi ))+2 c y mi y (x mi , y mi )+ d + ey (x mi , y mi ) = 0

Los valores de las derivadas son simplemente las pendientes de los

correspondientes lados del trıangulo: y (x mi , y mi ) = ∆ y

i ∆ x i .

Training Camp Argentina 2013 Geometrıa para ICPC

Page 15: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 15/26

Problemas lineales en geometrıa computacional (cont.)

Si P mi = ( x mi , y mi ) con i = 1 , 2, 3 son los puntos medios de loslados del triangulo, tenemos 3 ecuaciones de interseccion

a(x mi )2 + b x mi y mi + c (y mi )2 + d x mi + e y mi + f = 0

y 2 ecuaciones de tangencia (derivando implıcitamente para dos

lados no verticales)

2a x mi + b (y mi + x mi y (x mi , y mi ))+2 c y mi y (x mi , y mi )+ d + ey (x mi , y mi ) = 0

Los valores de las derivadas son simplemente las pendientes de los

correspondientes lados del trıangulo: y (x mi , y

mi ) =

∆ y i ∆ x i .

Si resolvemos el sistema de 5 ecuaciones con 5 inc´ognitas, lasolucion al problema esta practicamente dada.

Training Camp Argentina 2013 Geometrıa para ICPC

Page 16: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 16/26

Problemas lineales en geometrıa computacional (cont.)

Otro ejemplo: consideremos la interseccion de dos planos en tresdimensiones.

Training Camp Argentina 2013 Geometrıa para ICPC

Page 17: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 17/26

Problemas lineales en geometrıa computacional (cont.)

Otro ejemplo: consideremos la interseccion de dos planos en tresdimensiones.

Un plano se dene con un punto P 0 contenido en el plano y unvector N 0 ortogonal al mismo. Todos los otros puntos satisfacen

( P − P 0) · N 0 = 0

lo cual conduce a la ecuacion mas familiar

ax + by + cz + d = 0 para N 0 = ( a, b , c ) y d = − P 0 · N 0

En general, dos planos denidos por { P 1, N 1} y { P 2, N 2} seintersecan para dar una lınea. ¿C omo la hallamos?

Training Camp Argentina 2013 Geometrıa para ICPC

Page 18: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 18/26

Otros problemas lineales (cont.)

Usamos la representacion parametrica de la lınea, de modo quebuscamos un punto P sobre ella y un vector director V .

Training Camp Argentina 2013 Geometrıa para ICPC

bl l l ( )

Page 19: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 19/26

Otros problemas lineales (cont.)

Usamos la representacion parametrica de la lınea, de modo quebuscamos un punto P sobre ella y un vector director V .

Nuestra lınea debe pertenecer a ambos planos, luego es ortogonala los vectores N 1 y N 2. Entonces

V = N 1 × N 2

Si V = 0, los planos son paralelos y no hay intersecci´on entre ellos.¿C omo hallamos P ?

Training Camp Argentina 2013 Geometrıa para ICPC

O bl li l ( )

Page 20: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 20/26

Otros problemas lineales (cont.)

Usamos la representacion parametrica de la lınea, de modo quebuscamos un punto P sobre ella y un vector director V .

Nuestra lınea debe pertenecer a ambos planos, luego es ortogonala los vectores N 1 y N 2. Entonces

V = N 1 × N 2

Si V = 0, los planos son paralelos y no hay intersecci´on entre ellos.¿C omo hallamos P ?

Sea P el punto sobre la lınea que esta mas cerca de cierto puntojo y arbitrario (e.g. el origen). Entonces P = ( x , y , z ) minimiza

D 2 = x 2 + y 2 + z 2

mientras esta en ambos planos, i.e. satisfaciendo

P − P 1 · N 1 = 0 y P − P 2 · N 2 = 0

Training Camp Argentina 2013 Geometrıa para ICPC

O bl li l ( )

Page 21: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 21/26

Otros problemas lineales (cont.)

Podemos hallar el punto P minimizando D 2 bajo estasrestricciones, usando multiplicadores de Lagrange. Denimos

f (x , y , z , µ 1, µ 2) = x 2+ y 2+ z 2+ µ1 P − P 1 · N 1+ µ2 P − P 2 · N 2

Luego debemos exigir∂ f

∂ x = 2x + µ1x N 1 = 0

∂ f

∂ y = 2y + µ1y N 1 = 0

∂ f

∂ z = 2z + µ1z N 1 = 0

∂ f ∂µ 1

= P − P 1 · N 1 = 0 ∂ f

∂µ 2= P − P 2 · N 2 = 0

Training Camp Argentina 2013 Geometrıa para ICPC

Ot bl li l ( t )

Page 22: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 22/26

Otros problemas lineales (cont.)

Podemos hallar el punto P minimizando D 2 bajo estasrestricciones, usando multiplicadores de Lagrange. Denimos

f (x , y , z , µ 1, µ 2) = x 2+ y 2+ z 2+ µ1 P − P 1 · N 1+ µ2 P − P 2 · N 2

Luego debemos exigir∂ f

∂ x = 2x + µ1x N 1 = 0

∂ f

∂ y = 2y + µ1y N 1 = 0

∂ f

∂ z = 2z + µ1z N 1 = 0

∂ f ∂µ 1

= P − P 1 · N 1 = 0 ∂ f

∂µ 2= P − P 2 · N 2 = 0

O, en notacion matricial

2 0 0 x N 1 x N 20 2 0 y N 1 y N 20 0 2 z N 1 z N 2

x N 1 y N 1 z N 1 0 0x N 2 y N 2 z N 2 0 0

x y z

µ1µ2

=000

P 1 · N 1 P 2 · N 2

Training Camp Argentina 2013 Geometrıa para ICPC

T´ i d b id A Safe Bet

Page 23: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 23/26

Tecnicas de barrido: A Safe Bet

Training Camp Argentina 2013 Geometrıa para ICPC

Tecnicas de barrido: November Rain

Page 24: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 24/26

Tecnicas de barrido: November Rain

Training Camp Argentina 2013 Geometrıa para ICPC

Problemas para practicar

Page 25: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 25/26

Problemas para practicar

In-circles Again - LA 4714Shortest Flight Path - LA 6035

Coverage - LA 4562

Malfatti Circles - LA 4642

Onion Layers - LA 3655

Deer-Proof Fence - LA 4450

Watering Plants - GCJ 2009, Round 2

High Mountains - SPOJ TAP2012H

Garden Fence - LA 5795

Training Camp Argentina 2013 Geometrıa para ICPC

Page 26: Geometria Para ICPC

8/16/2019 Geometria Para ICPC

http://slidepdf.com/reader/full/geometria-para-icpc 26/26

¡Gracias!

Training Camp Argentina 2013 Geometrıa para ICPC