Encontrar el subconjunto más grande de puntos que forman un polígono convexo

Estoy buscando un algoritmo para encontrar el subconjunto más grande de puntos (por el mayor me refiero en número) que forman un polígono convexo a partir del conjunto de puntos dado. Creo que esto podría resolverse con DP, pero no estoy seguro. ¿Es posible hacer esto en O (n ^ 3)? En realidad solo necesito el tamaño del subconjunto más grande, por lo que no necesita tener una solución única

Editar:

solo para mantener esto simple,

Entrada dada: un conjunto de puntos en 2D

Salida deseada: número máximo de puntos que forman un polígono convexo, como en el ejemplo, la salida es 5 (ABHCD es uno de los posibles polígonos convexos)

Hay un problema similar spoj.com/problems/MPOLY que se puede resolver usando DP en O (N ^ 3), mi pregunta es sobre la generalización de ese problema que no tiene que contener (0,0)

Respuestas a la pregunta(4)

Su respuesta a la pregunta