Questions tagged «ds.algorithms»

有关完成任务的明确指令的问题,以及有关时间/内存/等方面的相关分析。

3
最新的最大流量算法是否可行?
对于最大流量问题,似乎有许多非常复杂的算法,最近至少有一种算法是在去年开发的。Orlin的最大流量为O(mn)或更佳时间,给出的算法以O(VE)运行。 另一方面,我最常看到的算法是(我不声称已经进行了详尽的搜索;这只是从偶然的观察中得出的): Edmonds-Karp:,Ø (VË2)O(VE2)O(VE^2) 推入重贴标签:使用FIFO顶点选择的或O (V 3),Ø (V2Ë)O(V2E)O(V^2 E)Ø (V3)O(V3)O(V^3) Dinic算法:。Ø (V2Ë)O(V2E)O(V^2 E) 渐近运行时间更好的算法对现实世界中的问题大小不切实际吗?另外,我看到“动态树”涉及许多算法。这些在实践中曾经使用过吗? 注意:此问题最初是在此处的堆栈溢出时提出的,但有人告诉我在这里更合适。 编辑:我在cs.stackexchange上询问了一个相关的问题,特别是关于使用动态树(又名链接剪切树)的算法的问题,追随此问题的人们可能会感兴趣。

10
出色的算法,机器学习和线性代数
我教授一门高级算法课程,并且希望包括一些与机器学习相关的主题,这将使我的学生感兴趣。结果,我想听听人们对机器学习中当前最有趣/最伟大的算法结果的看法。潜在的棘手约束是,学生将不会对线性代数或机器学习中的其他主要主题有任何特定的先前知识。 这的确使他们兴奋,并使他们知道ML对于算法专家来说是一个潜在的令人兴奋的研究领域。 编辑:这是最后一年的本科课程(因为我们主要在英国没有研究生课程)。他们将事先至少完成一门基本算法课程,并且大概在其中做得很好,从而选择了高级后续课程。当前的高级课程提纲中包含诸如完美哈希,Bloom过滤器,van Emde Boas树,线性程序等的主题。我不打算在ML上专门花费一堂以上的讲座,但如果某门课程与一门算法课程和一门ML确实相关,那么当然也可以包括在内。

10
当前用于计算的并行模型
1980年代出现了并行计算的PRAM和BSP模型。似乎两个模型的鼎盛时期都在80年代末和90年代初。 这些领域在并行算法的研究方面仍然活跃吗?是否有更新的更复杂的模型用于并行计算?通用模型是否仍在流行,或者研究人员正在尝试专门研究GPGPU或基于云的计算吗?

1
使用一些抛硬币找到有偏差的硬币
在研究过程中出现了以下问题,并且非常干净: 您有硬币的来源。每个硬币都有一个偏差,即它掉在“头上”的概率。对于每个硬币,独立的概率为2/3,其偏差至少为0.9,其余概率的偏差可以为[0,1]中的任何数字。您不知道硬币的偏见。您在任何步骤都可以做的就是抛硬币并观察结果。 对于给定的N,你的任务是找到一个硬币偏置至少0.8的概率至少是。您可以仅使用O(n)个抛硬币来做到这一点吗?1 − 经验(- ñ )1−exp⁡(−n)1-\exp(-n)

2
您能确定多项式时间内两个置换的总和吗?
有2个 问题最近问上cs.se它们或者涉及或有一个特殊的等同于以下问题情况: 假设有一个序列a1,a2,…ana1,a2,…ana_1, a_2, \ldots a_n的nnn号码,使得∑ni=1ai=n(n+1).∑i=1nai=n(n+1).\sum_{i=1}^n a_i = n(n+1). 分解成两个置换的总和,ππ\pi和σσ\sigma,的1…n1…n1 \dots n,使得ai=πi+σiai=πi+σia_i = \pi_i + \sigma_i\,。 有一些必要条件:如果aiaia_i 进行排序,这样a1≤a2≤…≤ana1≤a2≤…≤ana_1 \leq a_2 \leq \ldots \leq a_n\,,那么我们必须 ∑i=1kai≥k(k+1).∑i=1kai≥k(k+1).\sum_{i=1}^k a_i \geq k(k+1). 但是,这些条件还不够。从我问的这个math.se问题的答案来看,序列5,5,5,9,9,9不能分解为两个排列的总和(一个人可以通过使用1或5都只能与4配对)。 所以我的问题是:这个问题的复杂性是什么?

2
最常见的子序列
字符串具有个子序列,但是它们通常并不完全不同。找到任何子序列的最大频率的复杂性是什么?2ñ2ñ2^n 例如,字符串“子序列”包含子序列“ sue”的7个副本,这是最大值。 http://ideone.com/UIp3t上的示例暴力代码 有相关的结构定理吗?这两个都是错误的: 最大频率子序列中最长的序列是唯一的 任何长度的最大频率序列以为单峰ķķkķķk 可能相关的链接: 计算#个不同的子序列http://11011110.livejournal.com/254164.html∈ P∈P\in \mathbf{P} 多个来源的相关比赛问题http://www.spoj.pl/problems/CSUBSEQS/ 相关论文http://dx.doi.org/10.1016/j.tcs.2008.08.035 十天后编辑:感谢您的关注!我想知道这是否会带来一个很好的多项式时间可解决的编程竞赛问题。我猜不是,但是我希望稍后再考虑。

4
比“无向”变体容易的“有向”问题。
我当时正在做一个关于煎饼分类的讲座,并提到: 通过冲销排序是NP难的 通过逆向进行的“有符号”排序在P中。 这让我开始思考。从某种意义上说,“符号”排序是“定向”的-您可以将符号视为一个方向(实际上,这是进化生物学的动力)。但这是一个更简单的问题!这是不寻常的,因为通常(至少在图形上)有针对性的问题要比无向问题更困难(或至少同样困难)。 假设对“有向”进行了宽泛的定义,是否有比无向对等问题更容易解决的有向性问题的示例?

16
定理使难看的算法问题变得容易
我正在寻找很好的示例,其中发生以下现象:(1)如果您想根据定义并仅使用标准结果来解决算法问题,那么算法问题就很难解决。(2)另一方面,如果您知道一些(不是那么标准的)定理,则变得很容易。 这样做的目的是向学生说明,学习更多定理甚至对理论领域之外的人(例如软件工程师,计算机工程师等)也很有用。这是一个例子: 问题:给定整数,是否存在一个顶点图(如果存在,找到一个),使得其顶点连通性为,其边缘连通性为,其最小度为?n ,k ,l ,dñ,ķ,升,dn, k, l, dññnķķk升升lddd 请注意,我们要求参数必须完全等于给定的数字,而不仅仅是边界。如果您想从头解决这个问题,它可能会显得很难。另一方面,如果您熟悉以下定理(请参阅B. Bollobas的《极值图论》),情况将大为不同。 定理:令为整数。当且仅当满足以下条件之一时,存在一个具有顶点连通性,边缘连通性和最小度 的顶点图:n ,k ,l ,dñ,ķ,升,dn, k, l, dññnķķk升升lddd 0 ≤ ķ ≤ 升≤ d&lt; ⌊ Ñ / 2 ⌋0≤ķ≤升≤d&lt;⌊ñ/2⌋0\leq k\leq l \leq d <\lfloor n/2 \rfloor, 1 ≤ 2 d+ 2 - Ñ ≤ ķ ≤ 升= d&lt; n …

3
如何产生没有哈密顿循环的随机图?
令A类表示所有具有哈密顿环的大小为的图。从此类中生成随机图很容易-获取孤立的节点,添加随机的汉密尔顿周期,然后随机添加边。ññnnñnn 令B类表示不具有哈密顿环的所有大小为的图。我们如何从此类中选择随机图?(或做些接近的事情)ñnn

4
在多项式时间内可以找到最大的独立集的最大类?
该ISGCI列出了1100类图。对于许多这样的函数,我们知道是否可以在多项式时间内确定独立集。这些有时称为IS简易类。我想编译一个最大的 IS-easy类列表。这些类共同构成了此问题的(已知)易处理性的边界。 由于可以在不影响易处理性的情况下,将无限数量的图添加到任何无限的IS-easy类中,因此有一些限制。让我们将类限制为遗传性的类(在获取归纳子图的情况下封闭,或者等效地,由一组排除的归纳子图定义)。此外,让我们只考虑那些带有简短描述的集合X不含X的族。有可能 是还是易处理的类的无限上升链(如(P,star1,2,k)(P,star1,2,k)(P,\text{star}_{1,2,k})-free和下面由David Eppstein描述的类),但让我们将注意力集中在实际上被证明是IS易用的类上。 这是我所知道的: 完美图 -free(P,star1,2,5)(P,star1,2,5)(P,\text{star}_{1,2,5}) -free(K3,3−e,P5)(K3,3−e,P5)(K_{3,3}-e, P_5) 梅尼尔 几乎二分 无椅子 (无,板球)P5P5P_5 -free(P5,Kn,n)(P5,Kn,n)(P_5,K_{n,n})(对于任何固定的)nnn -free(P5,X82,X83)(P5,X82,X83)(P_5, X_{82}, X_{83}) 是否知道其他此类最大类? 编辑:另请参阅Yaroslav Bulatov提出的与排除的未成年人定义的类有关的相关问题,对于未成年人的图有什么方便呢?并查看世袭阶层的整体属性?对于一个更一般的问题,我之前曾问过有关世袭阶级的问题。 正如Jukka Suomela在评论中指出的那样,未成年人排除案件也很有趣(并且会提出一个有趣的问题),但这不是这里的重点。 为了避免David的示例,最大类也应定义为无X图,其中X中并非每个图都有独立的顶点。 下面的答案中给出的类: 无苹果(由StandaŽivný建议) (无,房子)P5P5P_5(由David Eppstein建议) (爪)-freeK2∪K2∪K_2 \cup(由David Eppstein的建议) 添加了2013-10-09: Martin Vatshelle在回答中提到的Lokshtanov,Vatshelle和Villanger的最新结果取代了一些先前已知的最大类。 尤其是,无是IS易包含的,无P 5,板球,无P 5,K n ,n,无P 5,X 82,X 83,和P 5。,免费)都变得轻松。P5P5P_5P5P5P_5P5P5P_5Kn,nKn,nK_{n,n}P5P5P_5X82X82X_{82}X83X83X_{83}P5P5P_5 这意味着,现在可以将一个禁止的诱导子图最多包含五个顶点的所有遗传图类最终确定为IS-easy或not IS-easy。 不幸的是,证明无图形成IS-easy类的证明似乎不适用于无P 6的图,因此下一个领域是对由单个六顶点图定义的所有遗传图类进行分类。P5P5P_5P6P6P_6 我仍然特别是在IS-易类的形式感兴趣的 -免费为一些集合X的图形与无限多的同构类的,但在那里ÿ不含不IS-容易对任何Ÿ ⊂ …

5
二元搜索的二元搜索概括?
假设我在S上有一个位姿“ S”和一个单调谓词“ P”。我想找到S的一个或所有满足P的最大元素。 编辑:我有兴趣减少P的评估数量。 存在针对此问题的哪些算法,它们在S上需要哪些属性和其他操作? 重要的特殊情况如何,例如: S是线性顺序-只要您执行“查找中间”操作,常规二进制搜索就可以工作 S是一个晶格 S是子集格 S是一个多集格 ... 后两种情况似乎特别重要,例如对于实验设计-您具有一组布尔值或实际参数,并且您希望找到它们的最小组合以重现特定模式(例如失败的测试)。

10
“现代”计算机科学出现之前的概率(随机)算法
编辑:我选择到2012年12月6日得分最高的答案。 这是一个软问题。 (确定性)算法的概念可以追溯到BC。概率算法呢? 在此Wiki条目中,针对计算几何中最接近的对问题的拉宾算法被指定为第一个随机算法(年份???)。立顿推出拉宾的算法作为开始的随机算法当今时代的这里,但不是第一个。我也知道许多在1960年代发现的概率有限自动机(非常简单的计算模型)算法。 您是否知道1960年代之前的任何概率/随机算法(或方法)? 要么 哪个发现可以看作是第一个概率/随机算法?

4
就地应用置换的复杂性
令我惊讶的是,我找不到关于此的论文-可能是搜索了错误的关键字。 因此,我们得到了一个数组,其中每个函数都有一个索引;f是一个排列。FffFff 我们如何根据对数组进行重新排序,使其内存和运行时间尽可能接近O (1 )和O (n )?FffO (1 )O(1)O(1)O (n )O(n)O(n) 当此任务变得更容易时,是否还有其他条件?例如,当我们明确知道一个函数是f的逆时?GggFff 我知道一种算法,该算法遵循循环并为每个索引遍历一个循环以检查它是否在其循环中最小,但是同样,它具有最坏情况下的运行时间,尽管平均而言它似乎表现更好。 ..Ø (ñ2)O(n2)O(n^2)

1
Karger-Stein分支扩增的其他应用?
我刚在我的研究生算法课上教过Karger-Stein随机mincut算法。这是一个真正的算法瑰宝,所以我不能教它,但是它总是让我感到沮丧,因为我不知道主要技术的任何其他应用。(因此,很难分配功课来将重点带回家。) Karger和Stein算法是对Karger早期算法的改进,该算法迭代收缩随机边缘,直到图形只有两个顶点为止。这个简单的算法以时间运行,并以概率Ω (1 / n 2)返回最小割,其中n是输入图中顶点的数量。改进的“递归收缩算法”迭代收缩随机边缘,直到顶点数量从n降至n / √Ø (ñ2)O(n2)O(n^2)Ω (1 / n2)Ω(1/n2)\Omega(1/n^2)ñnnñnn,在剩余图上递归调用两次,然后返回两个结果割中较小的一个。改进算法的直接实现以O(n2logn)时间运行,并以概率Ω(1/logn)返回最小割。(这些算法有更有效的实现,以及更好的随机算法。)n / 2–√n/2n/\sqrt{2}Ø (ñ2日志n )O(n2log⁡n)O(n^2\log n)Ω (1 /对数n )Ω(1/log⁡n)\Omega(1/\log n) 还有哪些其他随机算法使用类似的分支扩增技术?我在那个例子特别感兴趣,没有(明显)涉及图切割。

2
在以下问题中是否可以找到多项式时间内是否存在序列?
我一直在思考以下问题,但尚未找到多项式解决方案。只有蛮力。我一直在尝试将NP完全问题简化为没有成功的问题。 这是问题所在: 您有一个正整数对的排序集。 {(A1,B1),(A2,B2),…,(An,Bn)}{(A1,B1),(A2,B2),…,(An,Bn)}\{(A_1, B_1), (A_2, B_2), \ldots, (A_n, B_n)\} (Ai,Bi)&lt;(Aj,Bj)⇔Ai&lt;Aj∨(Ai=Aj∧Bi&lt;Bj)(Ai,Bi)&lt;(Aj,Bj)⇔Ai&lt;Aj∨(Ai=Aj∧Bi&lt;Bj)(A_i, B_i) < (A_j, B_j) \Leftrightarrow A_i < A_j \lor (A_i = A_j \land B_i < B_j) (Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(Ai,Bi)=(Aj,Bj)⇔Ai=Aj∧Bi=Bj(A_i, B_i) = (A_j, B_j) \Leftrightarrow A_i = A_j \land B_i = B_j 以下操作可以应用于一对:Swap(pair)。它交换该对中的元素,因此将变为(10,50)(10,50)(10, 50)(50,10)(50,10)(50, 10) 交换集合中的一对时,该集合将自动再次排序(交换后的对不适当,它将移入集合中的位置)。 问题在于查看是否有从某些对开始的序列交换整个集合,并具有以下条件: 一对交换后,下一个要交换的对必须是集合中的后继对或前导对。 找到这个问题的多项式时间解,或者将NP-完全问题简化为一个很好的解决方案。 注意: 这已经是一个决策问题。我不想知道序列是什么:仅当序列存在时。 交换对后如何对集合进行排序的示例 …

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.