- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决整数线性规划问题的一个特例,但我似乎在算法上有问题。
具体来说,假设您有一些二进制变量 x_{1}, ... x_{n}
和一些形式的不等式:
i.e. x_{2} + x_{3} + x_{10} <= 2
请注意,不等式的系数均为 1,右侧始终为左侧的变量数减 1。
另外,请记住变量 x_{1}, ..., x_{n}
可以取 0 或 1 的值。
这是一个家庭作业(编写程序),但我找不到可以开始的算法。
我尝试了 DP 和 Network Flow,但没有结果。
目标函数(在编辑中迷路了)是最大化总和:
x_{1} + ... + x_{n}
最佳答案
问题等同于Set Cover: http://en.wikipedia.org/wiki/Set_cover_problem#Integer_linear_program_formulation .一种容易理解的方法是将 x_{i}
替换为 1-y{i}
,这给出了一个等效的 0-1 线性规划问题,即
maximize (1-y_{1}) + (1-y_{2}) + ... + (1-y_{n}) = n - (y_{1} + ... + y_{n}),
which is equivalent to minimizing y_{1} + ... + y_{n},
subject to the following family of inequalities indexed by j:
(1-y_{i_{1j}}) + (1-y_{i_{2j}}) + ... + (1-y_{i_{kj}) <= k-1,
which are equivalent to:
y_{i_{1j}} + y_{i_{2j}} + ... + y_{i_kj} >= 1
该问题的等效公式是 Set Cover 的 0-1 整数线性规划公式。
在这种情况下,贪婪算法会提供一个合理的近似值。确定 x_{i0}
中哪个出现在约束中最频繁,并将其设置为 0。现在满足 x_{i0}
出现的所有约束,因此可以将它们从考虑中移除,并且变量 x_{i0}
可以从目标中移除。对在剩余约束中最常出现的变量 x_{i1}
重复,等等。
或者,实线性规划也将提供近似值。
由于 Set Cover 是 NP-hard,您将能够找到的最佳精确解在时间上呈指数级增长。一个简单的算法会尝试所有可能性(遍历从 x_{n}x_{n-1}...x_{1}x_{0} = 00...00
到x_{n}x_{n-1}...x_{1}x_{0} = 11...11 = 2^(n+1)-1
。肯定有更快的 (但仍然是指数时间)算法,如果你搜索的话。
关于algorithm - 整数线性规划特例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29833000/
数组的倒置计数表示——数组离排序有多远(或接近)。如果数组已经排序,则反转计数为 0。如果数组以相反的顺序排序,则反转计数为最大值。形式上来说,如果 a[i] > a[j] 且 i < j,则两个元素
假设我有两座建筑物,我可以在其中 build 不同的单元。一个建筑物只能同时 build 一个单元,但有一个最多 5 个单元的 fifo 队列,它们将按顺序 build 。每个单元都有构建时间。我需要
我正在执行一个查询并从数组中的数据库中获取以下数据(MySql2 类型对象): +-----------+---------------+---------------+------+------+
在 ghci 中: λ> :t (pure 1) (pure 1) :: (Applicative f, Num a) => f a λ> show (pure 1) :1:1: No ins
在这种特殊情况下,我不会让 file_get_contents() 返回页面,其中 url 包含一个“Ö”字符。 $url = "https://se.timeedit.net/web/liu/db1
这是我的字符串10000000000000000000000000000000000000000000000000000000000 与 60 1/0 组合的字符串。 我想把它放入一个 int Arr
你好, 我有以下代码: 43 while (TRUE) 44 { 45 printf("Swipe Card: "); 46 scanf("%s
我正在寻找在多项式时间内解决的 3-SAT 特例及其算法。任何链接? 谢谢。 最佳答案 阅读 Thomas J Schaeffer 的优秀(但有点难以阅读)论文:The Complexity of S
我正在清理我的一个旧项目。它必须做的一件事是——给定笛卡尔网格系统和网格上的两个正方形,找到所有正方形的列表,连接这两个正方形中心的线将通过这些正方形。 这里的特殊情况是所有起点和终点都被限制在正方形
如果你在“alloc.c”中有如下代码: typedef __typeof__(sizeof(int)) size_t; extern void *calloc (size_t __nmemb, si
我在 Ruby 中有一个数组,其值如下 xs = %w(2.0.0.1 2.0.0.6 2.0.1.10 2.0.1.5 2.0.0.8) 等等。我想对数组进行排序,使最终结果应该是这样的: ys =
关于将应用程序提交到 iOS AppStore,我遇到了一个非常独特的困境。 这是一款适用于 1.5 至 3 岁 child 的应用程序,该应用程序背后的想法是通过语音引导您学习动物名称和它们的声音。
我是一名优秀的程序员,十分优秀!