Questions tagged «optimization»

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


2
为什么C的void类型不同于Empty / Bottom类型?
维基百科以及我发现的其他来源都将C的void类型列为单位类型,而不是空类型。我觉得这很混乱,因为在我看来,它void更适合于空/底类型的定义。 void据我所知,没有价值观存在。 返回类型为void的函数指定该函数不返回任何内容,因此只能执行某些副作用。 类型的指针void*是所有其他指针类型的子类型。同样,void*在C中进行来回转换是隐式的。 我不确定最后一点是否可以作为void空类型的参数,void*或多或少是与无关的特例void。 另一方面,void它本身不是所有其他类型的子类型,据我所知,这是将类型作为底部类型的要求。
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

2
销售时间段
给定个人想要购买的个时隙。人对于每个时隙都有值。每个人只能购买一个连续的时隙块,这可能是空的。nnnkkkiiih(i,j)≥0h(i,j)≥0h(i,j)\geq 0jjj 是否有多项式时间算法来计算卖方可以实现的最大值? 没有连续性约束,我们可以将每个时隙分配给最重视它的人。同样,如果我们固定了个人的时隙顺序,则可以使用动态编程来求解第一个个人购买第一个时间的最大值插槽。kkk0≤i≤k0≤i≤k0\le i \le k0≤j≤n0≤j≤n0\le j \le n

2
优化版本的决策问题
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 已知每个优化/搜索问题都有一个等效的决策问题。例如最短路径问题 优化/搜索版本: 给定一个未加权无向图G=(V,E)G=(V,E)G = (V, E)和两个顶点v,u∈Vv,u∈Vv,u\in V,找到之间的最短路径vvv和。uuu 决策版本: 给定无向非加权图,两个顶点和一个非负整数,在和之间的是否存在一条路径,该路径的长度最大为?v ,Ü ∈ V ķ ģ ù v ķG=(V,E)G=(V,E)G = (V, E)v,u∈Vv,u∈Vv,u\in VkkkGGGuuuvvvkkk x∗∈Xx∗∈Xx^*\in XX ∈ X ˚F (X )≤ ķf(x∗)=min{f(x)∣x∈X}f(x∗)=min{f(x)∣x∈X}f(x^*) = \min\{f(x)\mid x\in X\}x∈Xx∈Xx\in Xf(x)≤kf(x)≤kf(x) \leq k 但是反过来也是如此,也就是说,每个决策问题都有一个等效的优化问题吗?如果不是,那么没有等效优化问题的决策问题的例子是什么?

7
“平均”分配项目的算法
我正在寻找一种算法来分配列表中的值,以使结果列表尽可能“平衡”或“均匀分布”(用引号引起来,因为我不确定这些是描述它的最佳方法...稍后,我将提供一种方法来衡量结果是否优于其他结果。 因此,对于列表: [1, 1, 2, 2, 3, 3] 重新分配值之后,最好的结果之一是: [1, 2, 3, 1, 2, 3] 可能还会有其他结果,但当然,使用一组不太统一的值会变得更加复杂。 这是衡量结果是否优于其他方法的方法: 计算每个项目和具有相同值的下一个项目之间的距离。 计算该组距离的标准偏差。较低的分散度意味着更好的结果。 观察结果: 当计算距离并到达列表的末尾而没有找到具有相同值的项目时,我们返回到列表的开始。因此,最多将找到相同的项目,并且该项目的距离将是列表的长度。这意味着列表是循环的; 一个典型的列表有〜50个项目,其中〜15个不同值的数量不同。 所以: 结果[1, 2, 3, 1, 2, 3]是距离为[3, 3, 3, 3, 3, 3],标准差为0; 结果[1, 1, 2, 2, 3, 3]是距离为[1, 5, 1, 5, 1, 5],标准差为2; 这使第一个结果优于第二个结果(偏差越小越好)。 给定这些定义,我想知道应该搜索哪些算法或策略的线索。

2
用于“求和”一组和的高效算法
给定自然数X的多集,请考虑所有可能总和的集合: sums(X)={∑i∈Ai|A⊆X}sums(X)={∑i∈Ai|A⊆X}\textrm{sums}(X)= \left\{ \sum_{i \in A} i \,|\, A \subseteq X \right\} 例如,而 。sums({1,5})={0,1,5,6}sums({1,5})={0,1,5,6}\textrm{sums}(\left\{1,5\right\}) = \left\{0, 1, 5, 6\right\}sums({1,1})={0,1,2}sums({1,1})={0,1,2}\textrm{sums}(\left\{1,1\right\}) = \left\{0, 1, 2\right\} 计算逆运算最有效的算法是什么(以输入和的大小来衡量)?具体来说,可以有效地计算以下任何一项: 给定集是否为有效的和集。(例如,有效,而无效。){0,1,2}{0,1,2}\left\{0,1,2\right\}{0,1,3}{0,1,3}\left\{0,1,3\right\} 一个累加到给定集合的多重集。 在最小的多重集,总结到给定。(例如,和总和为但前者较小。){ 1 ,1 ,1 } { 0 ,1 ,2 ,3 }{1,2}{1,2}\left\{1,2\right\}{1,1,1}{1,1,1}\left\{1,1,1\right\}{0,1,2,3}{0,1,2,3}\left\{0,1,2,3\right\}

5
为什么身体素质低下的人有机会生存到下一代?
我目前正在阅读和观看遗传算法,并且发现它非常有趣(我上大学时没有机会学习它)。 我了解突变是基于概率的(随机性是进化的根源),但我不知道生存的原因。 据我了解,一个个体III具有适应性例如另一个个体具有适应性我们有,那么比具有更好的生存可能性到下一代。F(i)F(i)F(i)JJJF(j)F(j)F(j)F(i)>F(j)F(i)>F(j)F(i) > F(j)IIIJJJ 概率意味着可以生存而可能无法生存(“运气不好”)。我不明白为什么这很好?如果将始终在选择中幸免,那么算法中会出什么问题?我的猜测是该算法将类似于贪婪算法,但我不确定。JJJ III III

2
集体支付账单问题
一张桌子有个人。第个人必须支付美元。我p 我ñnn一世iip一世pip_i 有些人没有正确的账单来支付,因此他们提出了以下算法。p一世pip_i 首先,每个人都把一些钱放在桌子上。然后,每个人都收回他们多付的钱。 钞票有固定的面额集(不是输入的一部分)。 一个例子:假设有两个人,爱丽丝和鲍勃。爱丽丝欠5 美元,有5张1 美元的钞票。鲍勃欠2 美元,有一张5 美元的钞票。爱丽丝和鲍勃把所有的钱都放在桌子上之后,鲍勃收回了 3 美元,每个人都很高兴。 当然,有时候人们不必把所有的钱都放在桌子上。例如,如果爱丽丝有上千元的1 美元钞票,那么她就不必将它们全部放到桌子上,然后再将其中的大部分拿回来。 我想找到一种具有以下属性的算法: 输入指定人数,每个人欠多少钱以及每个人拥有多少种面额的钞票。 该算法告诉每个人第一轮要把哪些钞票放在桌子上。 该算法告诉每个人第二轮要从表中删除哪些账单。 放在桌子上的钞票数+从桌子上取出的钞票数被最小化。 如果没有可行的解决方案,该算法将返回错误。

1
拟阵和贪婪在算法设计中有多重要?
最初,引入拟阵来概括子集在某个地面集合的线性独立性的概念。包含此结构的某些问题允许贪婪算法找到最佳解决方案。后来引入了贪婪的概念来概括这种结构,以捕获更多的问题,以便通过贪婪的方法找到最佳的解决方案。EEEIII 这些结构在算法设计中多久出现一次? 此外,贪婪算法通常不能完全捕获找到最佳解的必要条件,但仍然可以找到非常好的近似解(例如Bin Packing)。鉴于此,有没有一种方法可以衡量问题与贪婪或类人动物有多“接近”?

3
给定体积以最小化表面积的算法
考虑以下算法任务: 输入:一个正整数nnn,连同它的因式分解 查找:正整数x,y,zx,y,zx,y,z,最大限度地减少xy+yz+xzxy+yz+xzxy+yz+xz,受到了限制xyz=nxyz=nxyz=n 这个问题的复杂性是什么?有多项式时间算法吗?是NP难吗? 这个问题基本上是在问:在体积为nnn,尺寸均为整数的所有矩形实体中,表面积最小的是哪一个? 这个问题是由丹·迈耶(Dan Meyer)提出的,题为“ 1,000名数学老师无法解决的数学问题”。到目前为止,与他一起工作的数学老师都没有找到解决这个问题的合理算法。在他的上下文中,“合理”的定义有点不精确,但是作为计算机科学家,我们可以提出一个关于此问题的复杂性的更精确的问题。 显而易见的方法是枚举所有可能性x,y,zx,y,zx,y,z,但这需要花费指数时间。丹·迈尔(Dan Meyer)博客的评论者提出了许多有效的候选算法,不幸的是,所有这些算法都被证明是不正确的。马丁·斯特劳斯( Martin Strauss)表示,这个问题似乎让人联想到3分区,但我看不到这种减少。 让我也清除一些我在评论/答案中看到的误解: 不能从3分区通过简单地更换每个数字减少qqq与其功率2q2q2^q,由于这两个问题的目标函数是不同的。明显的减少根本行不通。 最优解涉及选择x,y,zx,y,zx,y,z中的一个作为nnn与3的最接近除数是不正确的√n−−√3n3\sqrt[3]{n}。我看到多个人都认为情况确实如此,但实际上这是不正确的。Dan Meyer博客文章已对此进行了证实。例如,考虑n=68n=68n=68;68−−√3≈4683≈4\sqrt[3]{68} \approx 4和4将68,所以你可能会认为,至少一个x,y,zx,y,zx,y,z应为4; 但是,这是不正确的。最佳解是x=2x=2x=2,y=2y=2y=2,z=17z=17z=17。另一个反是n=222n=222n=222,222−−−√3≈62223≈6\sqrt[3]{222}\approx 6,但最佳的解决方案是x=37X=37x=37,y=3ÿ=3y=3,z=2ž=2z=2。(这可能是真实的,对于所有nñn,最优解决方案涉及制造在至少一个x,y,zX,ÿ,žx,y,z等于任一的最小除数nñn大于n−−√3ñ3\sqrt[3]{n} 或最大除数nñn小于n−−√3ñ3\sqrt[3]{n}我现在没有反例-但是如果您认为这句话是正确的,那就需要证明。您绝对不能认为这是真的。) “使的大小相同”似乎并不一定在所有情况下都能产生最佳答案。有关反例,请参见Dan Meyer的博客文章。或者,至少对于短语“使其大小大致相同”的一些合理解释,有一些反例表明该策略实际上并不是最佳的。如果您想尝试某种策略,请确保您准确地声明索赔,然后提供仔细的数学证明。x,y,zX,ÿ,žx,y,z 运行时间不是多项式。为了使该问题出现在P中,运行时间必须是输入长度的多项式。输入的长度类似于lg n,而不是n。可以使明显的蛮力算法在O (n 3)或O (n 2)时间中运行,但是在lg n中是指数式的,因此算作指数时间算法。因此,这没有帮助。O(n3)Ø(ñ3)O(n^3)lgnlg⁡ñ\lg nnñnO(n3)Ø(ñ3)O(n^3)O(n2)Ø(ñ2)O(n^2)lgnlg⁡ñ\lg n

3
为什么NP完全问题在近似上如此不同?
首先,我想说我是一名程序员,而我在复杂性理论方面没有很多背景。 我注意到的一件事是,尽管许多问题都是NP完全的,但是当扩展到优化问题时,有些问题比其他问题难得多。 一个很好的例子是TSP。尽管所有类型的TSP都是NP完全的,但通过连续的简化,相应的优化问题变得越来越容易。一般情况是NPO完全,度量情况是APX完全,而欧几里得情况实际上具有PTAS。 这对我来说似乎违反直觉,我想知道是否有这个原因。

1
如何在另一个多边形内打包多边形?
我订购了几张皮革,我希望通过将边缘缝合在一起来制造杂耍球。我将柏拉图式固体用于球的形状。 我可以扫描皮革板并生成一个近似于皮革板形状的多边形(如您所知,它是动物皮肤,并且不是矩形的)。 所以现在,我想将杂耍球的尺寸最大化。 在我的示例中,多边形是常规的多边形,但是我正在寻找使用简单多边形的解决方案。 我可以将多边形应用到图纸中的最大比例因子是多少? 我试图通过使用尽可能多的材料来减少浪费。 显然,将多面体网切成单个多边形会增加可能组合的空间,但也会降低最终几何图形的质量,因为这会涉及更多的缝制和累积的误差。但是,这个问题不是关于枚举展开多面体的不同方法。它们可以独立考虑。因此,多边形是简单的多边形。 正式地: 输入: :一个简单的多边形(目标)PPP :我要放置的一组多边形SSS : n个简单多边形的图-每个节点代表 S中的一个简单多边形,并且每对多边形之间有一个共享公共边的边 GGGnnnSSS (材料和连接性的使用)α>=0,β>=0α>=0,β>=0\alpha >= 0, \beta >= 0 输出: 比例因子fff , G的子图HHHGGG : V (G )中每个多边形的位置和角度大号Ô Ç大号ØCLocV(G )V(G)V(G) 解决方案的质量的度量:m = α 。˚F + β 。| E (高)|米米mm = α 。F+ β。| Ë(高)|| Ë(G )|米=α。F+β。|Ë(H)||Ë(G)| m = \alpha.f …

4
如何使用贪心算法找到最接近给定序列的非递减序列?
a1,…,ana1,…,ana_1, \ldots, a_n000lllaiaia_ibibib_i000lllbibib_ib i O (n 4max(|a1−b1|,…,|an−bn|)max(|a1−b1|,…,|an−bn|)\max(|a_1-b_1|, \ldots, |a_n-b_n|)bibib_iO(nl√4)O(nl4)O(n\sqrt[4]{l}) 老实说,我根本不知道如何开始解决这个问题。在我看来,这似乎是一个动态编程问题,但这位教授说,应该使用贪婪算法解决该问题。如果有人可以给我一点点提示就可以指出正确的方向,那将不胜感激。

3
Cookie框中有多少个Cookie?—平铺星星
随着假期临近,我决定做一些肉桂星。那很有趣(而且结果很好吃),但是当我把第一盘星星放在盒子里时,我的内心书呆子就有些畏缩了,它们不能合在一起了: 几乎!他们有办法适应吗?无论如何,我们如何才能平铺星星?假定这些是规则的六点星,我们当然可以使用众所周知的六边形平铺作为近似,如下所示: 弄乱了右上角的那个,哎呀。 但这是最佳选择吗?提示之间有足够的空间。 考虑到这一点,让我们将自己限制为矩形框和六点规则的恒星,即,每个尖端与其相邻的角之间存在三十度(或)。恒星的特征在于内半径和外半径: - [R我řöπ6π6\frac{\pi}{6}[R一世rir_i[RØror_o [ 来源 ] 请注意,对于,我们有六角形;对于,我们有六边形。我认为考虑这些极端情况(对于Cookie)并将自己限制在两者之间的范围内是合理的,即。- [R我=1[R一世= 3√2⋅ [RØ[R一世=32⋅[RØr_i = \frac{\sqrt{3}}{2} \cdot r_oř我[R一世= 13√⋅ [RØ[R一世=1个3⋅[RØr_i = \frac{1}{\sqrt{3}} \cdot r_o[R一世[R0∈ [ 13√,3√2][R一世[R0∈[1个3,32]\frac{r_i}{r_0} \in \Bigl[\frac{1}{\sqrt{3}}, \frac{\sqrt{3}}{2}\Bigr] 我的cookie的和忽略了缺陷-我只是想品尝,而不是一次成型!- [R ö ≈ 25 米米[R一世≈ 17 米米[R一世≈17米米r_i \approx 17\mathrm{mm}[RØ约25 m m[RØ≈25米米r_o \approx 25\mathrm{mm} 如上所述,最佳的恒星平铺是什么?如果没有静态的最佳平铺,是否有一种算法可以有效地找到良好的平铺?

6
动态编程与蛮力编程有何不同
当我遇到以下引用时,我正在阅读动态编程 动态编程算法将研究解决问题的所有可能方法,并选择最佳解决方案。因此,我们可以将动态编程粗略地认为是一种智能的,蛮力的方法,它使我们能够通过所有可能的解决方案来选择最佳方案。如果问题的范围如此之大,以至于可以快速解决所有可能的解决方案,那么动态编程可确保找到最佳解决方案 给出了以下示例 例如,假设您必须在高峰时段在给定的城市中尽快从A点到达B点。动态规划算法将调查整个交通报告,调查您可能会走的所有可能的道路组合,然后才告诉您哪种方式最快。当然,您可能需要等待一段时间才能完成算法,然后才能开始驾驶。您将采用的路径将是最快的路径(假设外部环境没有任何变化) 蛮力在决定最佳解决方案之前,正在尝试所有可能的解决方案。 如果动态编程在选择最佳解决方案之前也要通过所有可能的解决方案,那么它与Brute Force 有何不同,我看到的唯一区别是动态编程考虑了其他因素(在这种情况下为交通状况)。 我正确地说动态编程是蛮力方法的子集吗?

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.