I am trying to find and implement nearest neighbors algorithm. I tried using bfs algorithm but I don't think it is right approach. Can anyone help me implementing it?
var g2 = g.mapVertices((vid,vd) => vid == origin)
.mapTriplets(et => (et.attr,false))
var nextVertexId = origin
var edgesAreAvailable = true
do {
type tripletType = EdgeTriplet[Boolean,Tuple2[Double,Boolean]]
val availableEdges =
g2.triplets
.filter(et => !et.attr._2
&& (et.srcId == nextVertexId && !et.dstAttr
|| et.dstId == nextVertexId && !et.srcAttr))
edgesAreAvailable = availableEdges.count > 0
if (edgesAreAvailable) {
val smallestEdge = availableEdges
.min()(new Ordering[tripletType]() {
override def compare(a:tripletType, b:tripletType) = {
Ordering[Double].compare(a.attr._1,b.attr._1)
}