Comience con el punto con la x-coord más baja. (Llámalo Punto X) Construir conjunto de "puntos límite" empezando por el punto x, y línea vertical por el punto, no debería haber otros puntos a la izquierda de PointX) encontrar el siguiente punto en el límite girando lentamente la línea en sentido horario (O en sentido antihorario) hasta que la línea toque algún otro punto (ver abajo). Agregue ese punto al conjunto y repita con el siguiente punto para obtener el siguiente, hasta que finalmente regrese al punto x original. Usted npw tiene un conjunto de puntos que forman el límite del conjunto completo. Compara la distancia entre cada par en este conjunto reducido para encontrar el par que está más alejado.
Para "girar la línea" (para encontrar cada punto límite secuencial), tome el punto que está "más alejado" en la dirección perpindicular a la línea utilizada para el último punto límite y construya una nueva línea entre el último límite punto y ese "próximo" punto. Luego verifique que no haya otros puntos furthur en la nueva dirección perpindicular formada por esa nueva línea. Si no hay otros puntos "furthur out" en la dirtección perpindicular a esta línea o a la última línea, entonces esta es la opción correcta para el siguiente punto límite, si hay tal punto, cambie a ese punto y vuelva a realizar la prueba.
Es O (n) solo después de encontrar el casco convexo - si solo le dan un conjunto de puntos, puede ser O (n log n) para encontrar primero el casco convexo. – ShreevatsaR
@ShreevatsaR: por supuesto. Mi respuesta dice explícitamente "donde n es el número de puntos en el casco convexo", lo que deja bastante claro que primero debe encontrar el casco convexo. –
Sí, quizás sí. La claridad está en el ojo del lector. :-) (El algoritmo para la tarea en la pregunta obviamente no es O (n) donde n es el número de puntos en el casco convexo, es la segunda parte que es, como dices.) De todos modos, pensé que vale la pena mencionar , solo para completar: las personas pueden llegar a estas respuestas años después a través de motores de búsqueda que no pueden leer cuidadosamente, y pueden confundirse, etc. – ShreevatsaR