Nearest neighbor algorithm in GraphX

Viewed 16

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)
              }
0 Answers
Related