Questo è noto come "Centro di distanza" ed è diverso dal centroide.
In primo luogo è necessario definire quale misura della distanza si sta utilizzando. Se assumiamo che stai usando la metrica standard di d = sqrt ((x1-x2)^2 + (y1-y2)^2), allora non è univoco, e il problema sta minimizzando questa somma.
L'esempio più semplice per mostrare questa risposta non è univoco è l'esempio di linea retta. Qualsiasi punto tra i due punti ha una distanza totale uguale da tutti i punti.
In 1D, la risposta corretta sarà qualsiasi risposta che abbia lo stesso numero di punti a destra e a sinistra. Finché questo è vero, qualsiasi spostamento verso sinistra e verso destra aumenterà e diminuirà i lati sinistro e destro della stessa quantità, e quindi lascerà la distanza uguale. Ciò dimostra anche che il centroide non è necessariamente la risposta giusta.
Se estendiamo a 2D questo non è più il caso - poiché sqrt rende il problema ponderato. Sorprendentemente per me non sembra essere un algoritmo standard! La pagina here sembra utilizzare un metodo di forza bruta. Non l'ho mai saputo!
Se volessi utilizzare un algoritmo, troverei il punto mediano in X e Y come punto di partenza, quindi userei un gradient descent algorithm - questo otterrebbe la risposta abbastanza rapidamente. L'intera equazione finisce come quadratica, quindi sembra che dovrebbe esserci una soluzione esatta.
fonte
2009-12-07 09:06:39
Non chiudere questa, algoritmi di geometria sono del tutto nell'ambito di overflow dello stack –
E 'compiti a casa? Inoltre, in che lingua stai cercando di implementarlo? – Piskvor
No, non è compito. Sto studiando algoritmi sulla geometria computazionale. Quindi ho un dubbio. Lo sto facendo in C. – nowonder