Questions tagged «optimization»

有关需要从一组可用替代方案中选择最佳元素的问题以及解决方案。

3
可被n整除的最大和
我在StackOverflow上问了这个问题,但我认为这是一个更合适的地方。 这是算法概论课程中的一个问题: 您有aaa包含nnn正整数的数组a(该数组无需排序或元素唯一)。建议使用O(n)O(n)O(n)算法查找可被整除的元素的最大和nnn。 例如: a=[6,1,13,4,9,8,25],n=7a=[6,1,13,4,9,8,25],n=7a = [6, 1, 13, 4, 9, 8, 25], n = 7。答案是565656(与元件6,13,4,8,256,13,4,8,256, 13, 4, 8, 25) 这是比较容易找到它O(n2)O(n2)O(n^2)使用动态编程和存储与余最大的一笔0,1,2,...,n−10,1,2,...,n−10, 1, 2,..., n - 1。 另外,如果我们将注意力集中在元素的连续序列上,则可以通过存储部分和以n为模的总和来轻松地在O(n)O(n)O(n)时间内找到最佳的此类序列:让S [ i ] = a [ 0 ] + a [ 1 ] + ⋯ + 一个[ 我],对于每个剩余ř记住最大索引Ĵ使得小号[ Ĵ ] ≡ řnnnS[i]=a[0]+a[1]+⋯+a[i]S[i]=a[0]+a[1]+⋯+a[i]S[i]=a[0]+a[1]+\dots + …

4
给定一组集合,从每个集合中找出包含至少一个元素的最小集合
给定一组套,我想找到一套,使得每一套在包含至少一个元素。我还希望在满足此标准的同时包含尽可能少的元素,尽管可能存在不止一个具有此属性的最小(解决方案不一定是唯一的)。S小号\mathbf{S}S S M M MM中号MS小号SS小号\mathbf{S}M中号MM中号MM中号M 作为一个具体的例子,假设一套是一组的国旗,并为每个标志在,元素是在该国的国旗使用的颜色。美国将具有而摩洛哥将具有。那么将是一组颜色,其属性是每个国旗至少使用一种颜色。(奥林匹克颜色蓝色,黑色,红色,绿色,黄色和白色是这种的示例,至少在1920年是这样。) S S S = { r e dS小号\mathbf{S}S小号SS小号\mathbf{S}S = { r e d ,g r e e n } M M MS={red,瓦特ħ 我吨e,blue}小号={[RËd,wH一世ŤË,b升üË}S = \{red, white, blue\}S={red,g[Reen}小号={[RËd,G[RËËñ}S = \{red, green\}M中号MM中号MM中号M 这个问题有通用名称吗?是否有公认的“最佳”算法来查找集合?(我对解决方案本身更感兴趣,而不是对计算复杂度进行优化。)M中号M

5
如何找到最大集合元素的
我有一个算法问题。 TŤTnñnSSSTTTa∈Sa∈Sa\in Sa⩾|S|a⩾|S|a\geqslant |S| 例如: 如果 = [1、3、4、1、3、6],则可以为[3、3、6]或[3、4、6]或[4、3、6]。TTTSSS 在 = [7,5,1,1,7,4]中,则为[7,5,7,4]。小号TTTSSS 我已经尝试过此递归函数。 function(T): if minimum(T) >= length(T): return T else: return function(T\minimum(T)) 是否有任何非递归算法。(我没有检查我的递归算法,所以它可能有一些缺陷。)

6
在一个间隔中找到两个数字的最大异或:我们能做得比二次更好吗?
lllrrrmax(i⊕j)max(i⊕j)\max{(i\oplus j)}l≤i,j≤rl≤i,j≤rl\le i,\,j\le r 天真的算法只检查所有可能的对。例如在红宝石中,我们有: def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j > max) max = i ^ j end end end max end 我感觉到,我们可以做得比二次。是否有针对此问题的更好算法?


1
1962年宝洁公司TSP竞赛的最佳解决方案是什么?
如果您找到解决在33个城市定义的欧式旅行推销员问题的解决方案,那么在1962年,您可能会赢得10,000 美元的奖金(按今天的汇率计算,大约是80,000 美元)。 http://www.math.uwaterloo.ca/tsp/history/pictorial/car54.html 看图片,问题似乎很容易。但是,我未能找到有关该问题的更多详细资源。 有人知道更多细节吗,例如确切的距离和最佳解决方案?

1
查找常规语言的最大因式分解
让语言为常规。L⊆Σ∗L⊆Σ∗\mathcal{L} \subseteq \Sigma^* 因式分解是单词集的最大对,其中(X ,Y )LL\mathcal{L}(X,Y)(X,Y)(X,Y) X⋅Y⊆LX⋅Y⊆LX \cdot Y \subseteq \mathcal{L} X≠∅≠YX≠∅≠YX \neq \emptyset \neq Y, 其中 | 。X ∈ X ,ÿ ∈ ÿ }X⋅Y={xyX⋅Y={xyX \cdot Y = \{xyx∈X,y∈Y}x∈X,y∈Y}x \in X, y \in Y\} (X,Y)(X,Y)(X,Y)如果每个对与都是或Y \就是最大不是\ subseteq Y'。(X′,Y′)≠(X,Y)(X′,Y′)≠(X,Y)(X',Y') \neq (X,Y)X′⋅Y′⊆LX′⋅Y′⊆LX'\cdot Y' \subseteq \mathcal{L} X⊈X′X⊈X′X \not \subseteq X'Y⊈Y′Y⊈Y′Y \not \subseteq Y' …

1
分析纸牌游戏《战争》的修改版
一个通常由儿童玩的简单游戏,战争游戏由两个人使用标准的52张纸牌玩。最初,牌组被洗牌,所有牌都发给了两个玩家两张,因此每张都有随机顺序的26张随机卡。我们假设允许玩家检查(但不能更改)两个牌组,以便每个玩家都知道两个牌组中的纸牌和纸牌顺序。这通常是在实践中完成的记录,但不会改变游戏的玩法,并有助于使该问题的版本完全确定。 然后,玩家展示各自卡组中最上面的卡。露出较大牌的玩家(按照通常的顺序:2、3、4、5、6、7、8、9、10,Jack,Queen,King和Ace)赢得回合,首先将其牌(高牌),然后是对手牌底部的对手牌(低牌)(通常不执行此顺序,而是为了使该问题的第一个版本保持确定性,例如订单将被强制执行)。 如果出现平局,则每个玩家从其牌组顶部再显示四张额外的牌。如果一个玩家显示的第四张牌高于另一位玩家显示的第四张牌,则具有较高第四张牌的玩家将赢得决胜局中所有已玩过的牌,在这种情况下,获胜者的牌首先被放置在获胜者的牌(按照先进先出的顺序;换句话说,较旧的牌排在最底部),其次是败者的牌(以相同的顺序)。 在随后的平局中,重复此过程,直到确定平局获胜者为止。如果一名玩家用完了纸牌并且无法继续打破平局,则仍然拥有纸牌的玩家被宣布为获胜者。如果两个玩家都用完纸牌同时玩游戏,则该游戏被视为平局。 进行回合,直到一名玩家的纸牌用完(即,他的牌组中没有更多的纸牌),此时仍拥有纸牌的玩家被宣布为获胜者。 到目前为止,已经对游戏进行了描述,因此,确定结果并不涉及技巧和运气。由于有52张牌的排列有一定数量的限制,因此可以有一定数量的初始套牌发行方式,并且随之而来(因为游戏中唯一的状态信息是两个玩家的套牌的当前状态)每个游戏配置的结果都可以事先确定。当然,有可能赢得战争游戏,并且以同样的理由失去它。我们也没有保留战争游戏可能导致并列或无限循环的可能性。对于上述完全确定性版本,可能会或可能不会。 尝试使游戏变得更有趣的几种变体(不,并非全部都涉及将其变成饮酒类游戏)。我想让游戏变得更有趣的一种方法是允许玩家在某些回合中声明自动“王牌”。在每个回合中,任何一个球员(或两个球员)都可以宣布“王牌”。如果一个玩家宣布“王牌”,则该玩家将赢得该回合,而与所玩的牌无关。如果两个玩家都宣布“王牌”,则该回合被视为平局,比赛继续进行。 可以想象有多种规则限制玩家的胜败能力(无限的胜局总会导致并列游戏,因为玩家每回合都会胜出)。我根据这个想法提出了两个版本的战争(就在我脑海中;更有趣的版本是可能的),但使用了不同的王牌限制机制: ķkk ķkk 现在,这些问题适用于上述每个版本: 是否存在一种策略,对于某些可能的初始游戏配置,使用该策略的玩家始终会获胜(强烈获胜策略)?如果是这样,这是什么策略?如果没有,为什么不呢? 是否有一种策略,对于某些可能的初始游戏配置,使用该策略的玩家始终可以赢得或强制平局(获胜策略)?如果是这样,这是什么策略?如果没有,为什么不呢? 小号SSS′S′S' 明确地说,我认为“策略”是一种固定算法,它确定使用策略的玩家应该胜过几轮。例如,“只要有可能就干脆”算法是一种策略,也是一种算法(启发式算法)。我要问的另一种方式是: 玩这些游戏是否有任何好的(或证明是最佳的)试探法? kkkk=0k=0k=0

2
矩阵链乘法和求幂
如果我有两个矩阵AAA和BBB,分别为维度1000×21000×21000\times2和2×10002×10002\times1000,并且要计算(AB)5000(AB)5000(AB)^{5000},则将表达式重写为A(BA)^ {4999}效率更高BA(BA)4999BA(BA)4999BA(BA)^{4999}B,然后才进行数字评估,因为ABABAB的尺寸为1000×10001000×10001000\times1000而BABABA的尺寸为2×22×22\times2。 我想解决此问题的广义版本。是否有合理有效的算法(不是蛮力)来优化包含以下内容的表达式: 已知尺寸的自由矩阵变量 任意子表达式的乘积 任意子表达式提升为自然幂 ...这样,用自由矩阵变量替换为具体的矩阵值之后,进行数字评估所需的工作最少。 该矩阵链乘积问题是我的问题的一个特例。 编辑: 这是一个暂定答案。直觉上对我来说似乎正确,但是我没有证据证明它是正确的。如果事实证明是正确的,我仍然对证明感兴趣。(当然,如果不正确,请纠正我。) 对于每个乘幂的乘积,例如(A_1 A_2 \ ldots A_k)^ n(A1A2…Ak)n(A1A2…Ak)n(A_1 A_2 \ldots A_k)^n,请考虑因子的每个循环排列: (A1A2…Ak)n(A1A2…Ak)n(A_1 A_2 \ldots A_k)^n A1(A2…AkA1)n−1A2…AkA1(A2…AkA1)n−1A2…AkA_1 (A_2 \ldots A_k A_1)^{n-1} A_2 \ldots A_k A1A2(A3…AkA1A2)n−1A3…AkA1A2(A3…AkA1A2)n−1A3…AkA_1 A_2 (A_3 \ldots A_k A_1 A_2)^{n-1} A_3 \ldots A_k ... A1A2…Ak−1(AkA1A2…Ak−1)n−1AkA1A2…Ak−1(AkA1A2…Ak−1)n−1AkA_1 A_2 \ldots A_{k-1} (A_k A_1 A_2 \ldots …

2
MIN-2-XOR-SAT和MAX-2-XOR-SAT:它们是NP硬的吗?
和\ text {MAX-2-XOR-SAT}的复杂性是什么?他们在P吗?他们是NP硬手吗?MIN-2-XOR-SATMIN-2-XOR-SAT\text{MIN-2-XOR-SAT}MAX-2-XOR-SATMAX-2-XOR-SAT\text{MAX-2-XOR-SAT} 为了更精确地将其形式化,让 Φ(x)=∧niCi,Φ(x)=∧inCi,\Phi\left(\mathbf x\right)={\huge\wedge}_{i}^{n}C_i, 其中x=(x1,…,xm)x=(x1,…,xm)\mathbf{x} = (x_1,\dots,x_m)并且每个子句CiCiC_i的形式为(xi⊕xj)(xi⊕xj)(x_i \oplus x_j)或(xi⊕¬xj)(xi⊕¬xj)(x_i \oplus \neg x_j)。 该2-异或2-异或\text{2-XOR-SAT}问题是要找到一个分配XX\mathbf{x}是满足ΦΦ\Phi。这个问题在PPP,因为它对应于线性方程组mod 222。 该MAX-2-XOR-SATMAX-2-XOR-SAT\text{MAX-2-XOR-SAT}问题是要找到一个分配XX\mathbf{x},最大限度地提高被满足子句的数目。该MIN-2-XOR-SATMIN-2-XOR-SAT\text{MIN-2-XOR-SAT}问题是要找到一个分配XX\mathbf{x},最大限度地减少被满足子句的数目。这些问题的复杂性是什么? 受到MIN或MAX-True-2-XOR-SAT NP-hard的启发吗?

3
抽象游戏的最佳策略
在一次采访中,我遇到了以下问题(我已经解决不了,没有试图欺骗自己):游戏从一个正整数。(例如)此数字转换为二进制表示形式,而是设置为的位数。(例如,)A0A0A_0A0=1234A0=1234A_0 = 1234NNN111A0=b100 1101 0010A0=b100 1101 0010A_0 = b100\ 1101\ 0010N=5.N=5.N = 5. 玩家1选择一个比小的数字。只能将一位设置为1。(例如)令。(例如)如果满足先前的约束,并且设置的位数仍然等于N,则移动有效。B0B0B_0A0A0A_0B0B0B_0B0=b10 0000 0000=512B0=b10 0000 0000=512B_0 = b10\ 0000\ 0000 = 512A1=A0−B0A1=A0−B0A_1 = A_0 - B_0A1=1234−512=722=b1011010010A1=1234−512=722=b1011010010A_1 = 1234-512 = 722 = b10 1101 0010B0B0B_0A1A1A_1 玩家2通过选择有效的从继续,然后玩家1从继续,依此类推。如果没有有效的动作,则玩家将输。A1A1A_1B1B1B_1A2A2A_2 假设两个玩家都发挥最佳状态,则使用合理有效的方法确定获胜玩家。(在我的问题定义中,对此的限制是程序必须能够为容纳有符号的32位整数的数百万个输入数字提供解决方案。)也就是说,解决方案不需要完全分析。 我个人的兴趣是弄清楚我对找到并实施正确解决方案的期望是否合理,而在给出的120分钟内却没有关于正确性的反馈。或者这是那些“让我们看看他们之前是否曾经看过这个难题”之一。 我失败了,因为我选择实施一种看似合理的策略,这给了我一些预先给出的测试用例正确的结果,浪费了太多时间使它快速运行,最终导致错误的处理我的时间用完了。 回想起来,我应该对小数目的起始号码实施强力搜索并记住部分解决方案,但是事后看来总是20/20。我很好奇,但是是否有一种另类的通用方法使我无法成为一个蓬松的人。

1
对鲁珀特来说,包装一袋礼物比圣诞老人容易吗?
或者:我们是否需要鲁珀特才能获得礼物? 除了路由问题之外,圣诞老人还面临以下问题(很多次都过去了): 给定一个容量为的袋子和一组礼物{ p 1,… ,p n },每个礼物的大小为s i,他希望使孩子{ c 1,… ,c k }开心。他从所有的愿望清单知道孩子ç Ĵ值目前p 我正好v 我,Ĵ ∈ Q ≥ 0得多。CCC{p1,…,pn}{p1,…,pn}\{p_1, \dots, p_n\}sisis_i{c1,…,ck}{c1,…,ck}\{c_1, \dots, c_k\}cjcjc_jpipip_ivi,j∈Q≥0vi,j∈Q≥0v_{i,j} \in \mathbb{Q}_{\geq 0} 这(两两不相交)套礼物挑选为每一个孩子,使一切都适合,即Ij⊆[1..n]Ij⊆[1..n]I_j \subseteq [1..n] ,∑j∈[1..k]∑i∈Ijsi≤C∑j∈[1..k]∑i∈Ijsi≤C\qquad\displaystyle \sum_{j \in [1..k]} \sum_{i \in I_j} s_i \leq C 随之而来的是尽可能多的幸福²,即 max!∑j∈[1..k]∑i∈Ijvi,jmax!∑j∈[1..k]∑i∈Ijvi,j\qquad\displaystyle \max! \sum_{j \in [1..k]} \sum_{i \in I_j} …

2
调度问题的这种特殊情况是否可以在线性时间内解决?
爱丽丝(Alice)是一名学生,在接下来的几周里要完成很多作业。每一项家庭作业都需要她一天的时间。如果每个项目都错过了截止日期,那么每个项目都有一个截止日期,并且会对她的成绩产生负面影响(假设为实数,仅假设可比性,则获得加分)。 编写一个函数,该函数给出了(截止日期,成绩影响)列表,该时间表列出了在哪一天进行作业的时间表,以最大程度地减少对她的成绩造成的负面影响。 所有作业都必须最终完成,但是如果她错过了某个项目的截止日期,那么上交多晚都没关系。 在替代公式中: ACME公司希望向客户供水。他们都住在一条上坡路。ACME在这条街上分布着几口井。每口井可容纳一名顾客的水。客户出价要提供的金额不同。水只下坡。通过选择供应哪些客户来最大化收入。 我们可以使用存储桶排序对截止期限进行排序(或者假设我们已经按截止期限进行了排序)。 如果我们首先按降级影响进行排序,则可以使用贪婪算法轻松解决该问题。该解决方案不会比O(n log n)好。 受到中位数中位数和随机线性最小生成树算法的启发,我怀疑我们也可以在(随机化的)线性时间内解决我的简单调度/流程问题。 我在寻找: (潜在随机化)线性时间算法 或者替代地,认为不可能有线性时间 作为垫脚石: 我已经证明,仅知道在截止日期之前可以完成哪些项目,就足以在线性时间内重建完整的计划。(这种见解是我仅询问证书的第二种提法的基础。) 一个简单的(积分!)线性程序可以对这个问题进行建模。 使用该程序的对偶性,如果还为对偶程序提供了解决方案,则可以在线性时间内检查候选提议的解决方案是否最优。(两个解都可以用线性位数表示。) 理想情况下,我想在仅使用坡度影响之间比较而不在此处假设数字的模型中解决此问题。 对于这个问题,我有两种方法-一种基于使用截止日期和影响的挖掘,另一种类似于QuickSelect的方法,其基于选择随机枢轴元素并按影响对项目进行划分。两者都具有迫使O(n log n)或更坏的性能的最坏情况,但是我无法构造一个简单的特殊情况来降低两者的性能。

1
选择一个子集以最大化点之间的最小距离
我有一组点,每个点之间有距离D (P i,P j)。这些距离是欧几里得距离,但这些点实际上在特征空间中。CCCD(Pi,Pj)D(Pi,Pj)D(P_i,P_j) 我想从点中选择n点的子集。将此子集称为。我想选择这个子集,以最大限度地提高新的设定点之间所有的最小距离小号。CCCnnnssssss maxs⊂C|s|=n⎛⎝⎜mini,j∈si≠jD(Pi,Pj)⎞⎠⎟maxs⊂C|s|=n(mini,j∈si≠jD(Pi,Pj)) \max_{\substack{s \subset C \\ |s| = n}} \left( \min_{\substack{i,j \in s \\ i \neq j} } D \left( P_i, P_j \right) \right) 现在,我正在使用登山来解决这个问题。我知道模拟退火可能会提供更好的解决方案。 是否存在针对此类问题的已知解决方案?还是可以将此问题重新表述为易于解决的另一个问题?

5
数据科学与运筹学
顾名思义,一般的问题是: DS和OR /优化之间有什么区别。 从概念上讲,我知道DS会尝试从可用数据中提取知识,并主要使用统计,机器学习技术。另一方面,“或” 使用数据以便基于数据做出决策,例如通过优化数据(输入)上的某些目标函数(准则)来进行决策。 我想知道这两种范例之间的比较。 是另一个子集吗? 他们在考虑互补领域吗? 是否有一个例子可以补充一个领域或将它们结合使用? 我特别对以下内容感兴趣: 是否有使用OR技术解决数据科学问题的示例?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.