首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用scala从文本文件功能创建图形

使用scala从文本文件功能创建图形
EN

Stack Overflow用户
提问于 2018-11-01 05:21:20
回答 1查看 137关注 0票数 0

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

代码语言:javascript
运行
复制
3, 5
4, 6
7, 8

在图中,3,5表示从35的边,我使用typeMap[Vertex,List[Vertex]]来处理图。我的方法是使用foreach逐行读取并处理它,我认为这不是一种函数式方法。在这方面的任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2018-11-01 06:30:48

我将把文件读取留给您,因为有许多方法可以根据您的特定应用程序进行读取。你可能会发现Here是一个对它很有用的资源。

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

代码语言:javascript
运行
复制
arr.groupBy(_._1).mapValues(arr => arr.map(_._2))

说明:

  1. 我们首先按第一个元素(._1)对元组进行分组。这将产生一个表示从每个顶点到其所有边的映射的Map[Int, Array[(Int, Int)]]
  2. 下一步,因为我们将数组转换为不包含完整的边信息(u,v),而只包含与该边对应的相邻顶点v

我们就完了!

注意:这是假设你的图是有向的。如果您想将其转换为无向图,只需为每个(u,v)添加(v,u)即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53092130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档