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

如何在CPLEX中筛选大小为奇数的奇节点子集

筛选奇节点集中大小为奇数的子集解决方案

问题说明

已获取图的奇节点集合并生成其所有子集,需从中筛选出大小为奇数的子集。现有两种实现思路:第一种可运行但会生成空集合,第二种暂未正确编写,基础生成子集的代码如下:

range SS=1..ftoi(2^n_odd-1);
{int} Sub_odd[s in SS] = {item(odd_nodes,i-1) | i in 1..n_odd : (s div ftoi(2^(i-1))) mod 2 == 1};

方案修正与实现

方案1:避免生成空集合

原方案会输出空集合,可通过提前过滤条件,仅为符合要求的子集赋值,跳过空集合的生成:

{int} Sub_odd_odd[s in SS: card(Sub_odd[s]) mod 2 == 1] = Sub_odd[s];

这样定义的Sub_odd_odd仅包含元素个数为奇数的子集,不会混入空集合。

方案2:正确实现子集集合的筛选

原方案使用union会将所有符合条件的子集合并为一个大集合,若需要保留每个子集作为独立元素,需用集合的集合类型存储,修正代码如下:

{{int}} Sub_odd_odd = {Sub_odd[s] | s in SS : card(Sub_odd[s]) mod 2 == 1};

这里{{int}}表示存储集合的集合,每个元素都是一个元素个数为奇数的奇节点子集。

内容的提问来源于stack exchange,提问作者Mohammad Omidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:55:20