2012-11-21 33 views
7

K-en yakın komşu algoritmasının seri C/C++ uygulamasını nerede bulabilirim?
Bu kitaplığı biliyor musunuz?
AçıkCV'yi buldum ancak uygulama zaten paralel.
Seri bir uygulamadan başlamak ve pthreads openMP ve MPI ile paralelleştirmek istiyorum.

K-en yakın komşu C/C++ uygulaması

sayesinde
Alex

+1

Ne için N boyutun k-en yakın komşu arama için destek eklendi? KNN gerçekten basit ve kendi yaklaşımınızı uygulamaya çalışın. –

cevap

4
: Daha iyi bir yaklaşım kd-ağaç gibi bazı hiyerarşik yapısını kullanmaktır ... Gerçekten tüm bu sunumlarda yalancı kod görünüm içeren daha fazla bilgi için

gerekenler bağlıdır

YSA nasıl? http://www.cs.umd.edu/~mount/ANN/. Bir keresinde kdtree uygulamasını kullandım ama başka seçenekler de var.

Web sitesinden alıntılar: "ANN, C++ 'da yazılmış bir kütüphanedir; bu, isteğe bağlı yüksek boyutlarda, hem tam hem de yakın en yakın komşu araması için veri yapılarını ve algoritmaları destekler."

+0

Teşekkürler, ANN iyi bir başlangıç ​​noktasıdır. – alexsardan

1

Bunu uygulamak için en basit yolu, bütün unsurları ve mağaza K en yakın döngü olduğunu. (sadece karşılaştırma). Bunun karmaşıklığı O(n) olup bu çok iyi değildir ancak ön işleme gerek yoktur. Yani şimdi gerçekten uygulamanıza bağlı. Knn için aradığınız bölümlere ayırmak için biraz uzamsal indeks kullanmalısınız. Bazı uygulama için grid tabanlı uzaysal yapı sadece iyi durumdadır (sadece dünyanızı sabit bloğa ayırın ve sadece önce kapanış blokları içinde arayın). Varlığınız eşit dağıldığında bu iyidir.

http://www.ulozto.net/xCTidts/dpg06-pdf

http://www.ulozto.net/xoh6TSD/dpg07-pdf

+0

Cevabınız için teşekkür ederiz. Aslında halihazırda uygulanan bir versiyondan başlamak zorundayım. – alexsardan

2

En yakın komşu aramasıyla bir C++ implementation for a KD-tree yazdım. Bir öncelik sırası ekleyerek K-en yakın komşuları için kolayca genişletebilirsiniz.

Güncelleme

: Ben problemler bu algoritmayı uygulamak için gidiyoruz

+0

Teşekkürler, ancak hiçbir lisans bilgisi görünmez. –

İlgili konular