Il modo più semplice per implementare questo è un ciclo tra tutti gli elementi e deposito K più vicino. (solo confrontando). La complessità di questo è O(n)
che non è così buona, ma non è necessaria alcuna pre-elaborazione. Quindi ora dipende davvero dalla tua applicazione. È necessario utilizzare un indice spaziale per l'area di partizione in cui si cerca knn. Per alcune applicazioni, la struttura spaziale basata sulla griglia va bene (basta dividere il mondo in blocco fisso e cercare solo all'interno di blocchi prima). Questo è buono quando le tue entità sono equamente distribuite. Meglio approccio è quello di utilizzare alcuni struttura gerarchica come kd-tree ... E 'davvero tutto dipende da quello che vi serve
Per ulteriori informazioni, tra cui sguardo pseudocodice in queste presentazioni:
http://www.ulozto.net/xCTidts/dpg06-pdf
http://www.ulozto.net/xoh6TSD/dpg07-pdf
Per quali problemi stanno per applicare questo algoritmo? KNN è davvero semplice e puoi provare a implementare il tuo approccio. –