Anar al contingut

Quickhull

De L'Enciclopèdia, la wikipedia en valencià

Quickhull és un método per a calcular el tancament convexo d'un conjunt finito de punts (generalment en el pla 2D, pero també existixen versions per a dimensions superiors). Ampra una tècnica basada en dividix i venceràs similar a l'empleada per l'algoritme d'ordenació quicksort, del que pren el seu nom.[1]

La seua complexitat promig és Θ(n * log(n)), encara que en el pijor cas pot prendre O(n2) en situacions d'alta simetria o en conjunts de punts situats en forma de circumferència.

Algoritme

[editar | editar còdic]

La versió en 2D de l'algoritme Quickhull pot dividir-se en els següents passos:

  1. Buscar un parell de punts optimales, generalment els punts en menor i major coordenada X, ya que estos sempre formen part del tancament convexo.
  2. Usar la llínea entre abdós punts per a dividir el conjunt en dos subconjunts que seran processador de forma recursiva.
  3. Determinar el punt situat a major distància de la llínea anterior. Junt als dos punts anteriors, formarà un triàngul.
  4. Tots els punts situats en l'interior del triàngul poden ser descartats, ya que no formaran part del tancament convexo.
  5. Repetir els dos passos anteriors en els dos costats del triàngul (no en el costat inicial).
  6. Repetir fins que no queden punts sense classificar. Els punts seleccionats formen el tancament convexo..

Implementacions públiques

[editar | editar còdic]

Els autors de l'algoritme mantenen una implementació de l'algoritme per mig d'una llibreria en llenguage C que pot ser cridada des de varis llenguages (com C++, Python). El còdic pot descarregar-se des de la pàgina del proyecte www.qhull.org o des del seu repositori de GitHub

Referències i enllaços externs

[editar | editar còdic]
  1. ACM Transactions on Mathematical Software.22(4)
    469–483.doi:10.1145/235815.235821.


Referències

[editar | editar còdic]