【问题标题】:Creating graph from text file functionally using scala使用 scala 从文本文件功能性地创建图形
【发布时间】:2018-11-01 06:30:48
【问题描述】:

我是函数式编程范式和 Scala 的新手。我正在尝试使用 scala 解决问题。我有一个包含以下格式的图形边缘的文本文件:

3, 5
4, 6
7, 8

其中3,5 表示图中从35 的边 我正在使用Map[Vertex,List[Vertex]]type 来处理图表。我的方法是使用foreach 逐行阅读并处理它,我认为这不是一种实用的方法。对此的任何帮助表示赞赏。

【问题讨论】:

    标签: scala functional-programming


    【解决方案1】:

    我将把文件留给您阅读,因为根据您的特定应用程序有很多方法可以做到这一点。 Here 是您可能会发现对它有用的一个来源。

    假设您已设法将文件读入Array[(Int, Int)],即元组数组,在您的示例Array((3,5), (4,6), (7,8)) 中,我们可以将其转换为您正在寻找的adjacency map,如下所示:

    arr.groupBy(_._1).mapValues(arr => arr.map(_._2))
    

    说明:

    1. 我们首先按第一个元素 (._1) 对元组进行分组。这会生成一个Map[Int, Array[(Int, Int)]],表示从每个顶点到其所有边的映射。

    2. 接下来,由于我们将数组转换为不包含完整的边信息(u,v),而只包含与该边对应的相邻顶点v

    我们完成了!

    注意:这是假设您的图表是有向的。如果你想把它变成一个无向图,你可以简单地为每个(u,v)添加(v,u)

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 2015-11-30
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多