Esto fue un problema en el concurso Pacific ACM-ICPC 2010. La esencia de esto es tratar de encontrar una manera de dividir un conjunto de puntos dentro de un triángulo en tres subtriángulos de modo que cada partición contenga exactamente un tercio de los puntos.Partición triangular
de entrada:
- coordenadas de un triángulo de delimitación:
(v1x,v1y),(v2x,v2y),(v3x,v3y)
- Un número
3n < 30000
representa el número de puntos que se encuentran dentro del triángulo - coordenadas de los
3n
puntos:(x_i,y_i)
parai=1...3n
de salida:
- Un punto
(sx,sy)
que divide el triángulo en 3 subtriángulos tal que cada subtriangulo contiene exactamenten
puntos.
La forma en que el punto de división divide el triángulo delimitador en subtriángulos es la siguiente: Dibuje una línea desde el punto de división a cada uno de los tres vértices. Esto dividirá el triángulo en 3 subtriángulos.
Tenemos la garantía de que existe tal punto. Cualquier punto de ese tipo será suficiente (la respuesta no es necesariamente única).
Aquí hay un ejemplo del problema de n=2
(6 puntos). Se nos dan las coordenadas de cada uno de los puntos coloreados y las coordenadas de cada vértice del triángulo grande. El punto de división está marcado con un círculo en gris.
Puede alguien sugerir un algoritmo más rápido que O(n^2)
?
Debe preguntar esto aquí: http://math.stackexchange.com/ – Ariel
Esta es una pregunta de algoritmos, no una pregunta matemática. – tskuzzy
Usaría un método simplex. – wildplasser