在这段代码之前定义:
dataset
可以是Vector
或List
numberOfSlices
表示Int
对数据集进行切片的次数
我想将数据集分成多个numberOfSlices
切片,尽可能均匀地分布。“分裂”我想我的意思是“分区”(所有的交集应该是空的,所有的联合应该是原始的)使用集合论术语,虽然这不一定是一个集合,只是一个任意集合。
例如
dataset = List(1, 2, 3, 4, 5, 6, 7)
numberOfSlices = 3
slices == ListBuffer(Vector(1, 2), Vector(3, 4), Vector(5, 6, 7))
有没有比我下面的更好的方法?(我什至不确定这是最优的......)或者这可能不是算法上可行的努力,在这种情况下,任何已知的好的启发式方法?
val slices = new ListBuffer[Vector[Int]]
val stepSize = dataset.length / numberOfSlices
var currentStep = 0
var looper = 0
while (looper != numberOfSlices) {
if (looper != numberOfSlices - 1) {
slices += dataset.slice(currentStep, currentStep + stepSize)
currentStep += stepSize
} else {
slices += dataset.slice(currentStep, dataset.length)
}
looper += 1
}