我有一个弧列表(最大200行)在一个图表中,如下图所示。三元组是(x,y,z),这意味着从x到y的边的权重为z。我确切地知道文件中有多少行(边的数量),以及节点的数量。我想使用Scala中的List在Scala中用这些边创建一个邻接矩阵输入。语法类似于,例如List(List(0,0,0,0), List(0,0,0,0)))
我想要一个脚本,它可以接收下面所示的.txt文件并输出adj的Scala语法。从这些边列出。你知道吗
LIST OF ARCS
0 1 0.440004
0 2 0.244452
0 3 0.433273
对于上面的输入,输出应该是
ListBuffer(
ListBuffer(0, 0.440004, 0.244452, 0.433273),
ListBuffer(0.440004, 0, 0, 0),
ListBuffer(0.244452, 0, 0, 0),
ListBuffer(0.433273, 0, 0, 0))
这是我的想法。
值线=Source.fromFile文件(“f1.txt”)。getLines.toList.map(i=>;打印n(i))
我可以预先填充ListBuffer.fill文件(10) (10)然后如果我能弄清楚如何使每一行成为int类型的三倍,那么我就可以更新我预先填充的ListBuffer结构。你知道吗
在awk中:
运行它:
当我们可以通过在Scala中读取文件并处理其输入来直接创建所需的结构时,就不需要尝试用脚本生成Scala源代码。你知道吗
考虑到以下情况”弧.txt“文件:
我们读取数据并把它列成一个列表
删除标题,解析文本并将格式良好的数据点保留为
Map
的(x,y)-> weight
。请注意,这已经是一种稀疏矩阵表示,其中缺少的值可以假定为0。你知道吗为了获得稠密矩阵,我们首先使用稀疏矩阵的关键点计算顶点:
然后,我们创建一个密集的邻接矩阵表示:
相关问题 更多 >
编程相关推荐