You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求分组优化算法:拆分含优先聚合元素的列表集合

带约束的列表分块算法求助

问题描述

我需要设计一个算法处理以下场景:

  • 输入为列表的列表(buckets),总元素数固定为10,每个子列表长度满足1≤size≤10,子列表内的元素优先保持聚合(条件允许时尽量不拆分)。
  • 需要将所有元素拆分为指定数量的chunk(分组),需满足两个核心要求:
    1. 每个chunk的大小尽可能接近preferredChunkSize,计算公式为:preferredChunkSize = 总元素数 / numberOfChunks
    2. 实际chunk大小必须落在允许范围内:preferredChunkSize - maxDeviation ≤ 实际chunk大小 ≤ preferredChunkSize + maxDeviation

函数声明

function split(buckets: list<list>, numberOfChunks, maxDeviation)

示例说明

示例0(maxDeviation=0,chunk大小严格等于2)

buckets = [[1, 2, 3], [4], [5], [6, 7, 8, 9, 10]]
chunks = split(buckets, 5, 0)
// 可接受的结果
// [[1,2],[3,4],[5,6],[7,8],[9,10]]

示例1(maxDeviation=1,允许chunk大小在1-3之间)

buckets = [[1, 2, 3], [4], [5], [6, 7, 8, 9, 10]]
chunks = split(buckets, 5, 1)
// 可接受的结果
// [[1,2,3],[4],[5],[6,7,8],[9,10]]

示例2(拆分2个chunk,允许大小偏差1)

buckets = [[1,2,3,4,5,6], [7,8], [9], [10]]
chunks = split(buckets, 2, 1)
// 可接受的结果
// [[1,2,3,4,5,6],[7,8,9,10]]

示例3(拆分3个chunk,允许大小偏差1)

buckets = [[1,2,3,4,5,6], [7,8], [9], [10]]
chunks = split(buckets, 3, 1)
// 可接受的结果
// [[1,2,3], [4,5,6], [7,8,9,10]]

求助问题

请问这类问题有没有通用解法?它的标准名称是什么?希望能得到相关思路或方向的帮助。

内容的提问来源于stack exchange,提问作者Stanislau Listratsenka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:57:40