查找节点的直接和间接的继任者(斯卡拉-图)

问题描述 投票:1回答:1

在斯卡拉图中methoddiSuccessors允许查找节点的直接继承者。例如 :

import scalax.collection.mutable.Graph
import scalax.collection.GraphPredef._, scalax.collection.GraphEdge._

val g = Graph(0~>1, 1~>4, 1~>2,2~>3)

g.get(1).diSuccessors //return Set(2, 4): scala.collection.immutable.Set

但我的问题是要找出所有直接或间接地连接到一个节点的接班人。在我的例子,我就不得不:

import scalax.collection.mutable.Graph
import scalax.collection.GraphPredef._, scalax.collection.GraphEdge._

val g = Graph(0~>1, 1~>4, 1~>2,2~>3)

g.get(1).AllSuccessors //return Set(2, 4, 3): scala.collection.immutable.Set

谢谢您的帮助。

scala graph scala-collections
1个回答
2
投票

您可以通过创建一个子图(AllSuccessors法),并从中删除您的节点获得withSubgraphs

  import scalax.collection.mutable.Graph
  import scalax.collection.GraphPredef._

  val graph = Graph(0 ~> 1, 1 ~> 4, 1 ~> 2, 2 ~> 3)
  val node = graph.get(1)

  val subgraph  = node.withSubgraph().toSet      //Set(1, 2, 4, 3)
  val allSuccessors = subgraph - node            //Set(4, 2, 3)
© www.soinside.com 2019 - 2024. All rights reserved.