Questions tagged «ds.algorithms»

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

4
矩阵乘法指数
通俗地讲,矩阵乘法指数的定义是存在已知的矩阵乘法算法的最小值。作为正式的数学定义,这是不可接受的,因此我想技术定义就像是整个t的最小值,因此n t中存在矩阵乘法算法。ñ ωωω\omegañωñωn^{\omega}ŤŤtñŤñŤn^t 在这种情况下,不能说有一个算法矩阵乘法ñωñωn^{\omega}甚至ñω + o (1 )ñω+Ø(1个)n^{\omega + o(1)},仅仅是对于所有在存在一个算法。但是,使用矩阵乘法的论文和结果通常会简单地将其成本报告为。Ñ ω + ε Ö (Ñ ω)ϵ > 0ϵ>0\epsilon > 0ñω + ϵñω+ϵn^{\omega + \epsilon}Ø (ñω)Ø(ñω)O(n^{\omega}) 有其他替代定义可以使用吗?是否有保证时间的算法任何结果ñ ω或ñ ω + Ö (1 )必须存在?或者是使用Ø (ñ ω)只是马虎?ωω\omegañωñωn^{\omega}ñω + o (1 )ñω+Ø(1个)n^{\omega + o(1)}Ø (ñω)Ø(ñω)O(n^{\omega})


1
订单维护问题(或“维护列表中的订单”)是为了支持以下操作: singleton:创建一个包含一个项目的列表,并返回指向它的指针 insertAfter:给定一个指向项目的指针,在其后插入一个新项目,并返回指向该新项目的指针 delete:给定指向项目的指针,将其从列表中删除 minPointer:给定两个指向同一列表中项目的指针,则返回更靠近列表前面的那个 我知道此问题的三种解决方案可以在摊销时间内执行所有操作。它们都使用乘法。O(1)O(1)O(1) Athanasios K. Tsakalidis:维护广义链表中的顺序 Dietz,P.,D. Sleator,两种用于维护列表顺序的算法 Michael A. Bender,Richard Cole,Erik D. Demaine,Martin Farach-Colton和Jack Zito,“维护列表中顺序的两种简化算法” 是否可以在摊销时间内以列表形式维护订单,而无需使用A C 0以外的任何算术运算?O(1)O(1)O(1)AC0AC0AC^0


3
Bob的销售(对具有约束的对进行重新排序以最大程度地减少产品总和)
我前一阵子在Stack Overflow上问过这个问题:问题:Bob的sale。有人建议也将问题张贴在这里。 有人已经在这里提出了与此问题相关的问题- 给定基数的最小重量子森林 -但据我了解,这对我的问题没有帮助。StackOverflow上评分最高的答案也值得一看。 这是我的StackOverflow问题的逐字记录副本。该网站的格式可能不适当(哎呀,我只是在这里问这个问题而感到没有足够的知识),因此可以随时对其进行编辑: 注意:这是对现实生活中有关对SWF文件中的记录进行排序的问题的抽象措词。一个解决方案将帮助我改善开源应用程序。 鲍勃(Bob)有一家商店,并想进行销售。他的商店有许多产品,并且每种库存产品都有一定数量的单位数量。他还具有许多在架子上安装的价格标签(与产品数量一样多),并且价格已经打印在标签上。他可以在任何产品上贴上任何价格标签(该产品的全部库存价格统一为一件产品),但是某些产品还有其他限制-任何此类产品可能都不比某些其他产品便宜。 您必须找到如何安排价格标签的方法,以使鲍勃所有商品的总成本尽可能低。总成本是每种产品分配的价格标签的总和乘以该产品的库存数量。 鉴于: N –产品数量和价格标签 小号我,0≤ 我 <N -与指数产品的库存数量我(整数) P Ĵ,0≤ Ĵ <N -具有索引价格标签上的价格Ĵ(整数) K –附加约束对的数量 甲ķ,B ķ,0≤ ķ <K -产品指数对附加的约束 任何产品索引最多只能在B中出现一次。因此,由该邻接表形成的图实际上是一组有向树。 该程序必须找到: 中号我,0≤ 我 <N -从产品索引映射到价格标签指数(P 中号我是产品的价格我) 满足条件: P 中号甲ķ ≤P 中号乙ķ,对于0≤ ķ <K Σ(š 我 ×P 中号我)为0≤ 我 <N是最小 请注意,如果不是针对第一个条件,则解决方案将是简单地按价格对标签进行排序,并按数量对产品进行排序,然后直接将二者进行匹配。 输入的典型值为N,K …

1
算法设计和复杂性-如何以这种“方式”思考?
我的问题是一个普遍的问题:如何开始就算法设计和复杂性进行思考?我将选修算法设计研究生课程。我早些时候注册了它,但后来又放弃了,因为我跟不上它。我必须参加这门课程。 是否有以这种方式思考的“技巧”?我知道这是很粗略的说法,但有时以崭新的视角有助于以不同的方式思考一个主题。 我在本课程(和类似的理论课程)中遇到的主要问题是:我怎么知道我提出的解决方案是正确的?我发现理论部分是任意的,特别是当“证明”某种算法以某种方式起作用或表现时? 我们的课程将使用标准文本:CLRS算法简介。 是否有教科书/网站/书籍/等?可能提供一种在该领域变得自信的方法? 谢谢大家, 杰森·丹恩(Jason Dane)

2
排序列表的最小换位数
在尝试设计自己的排序算法时,我正在寻找可以与之进行比较的最佳基准。对于元素的未排序的顺序一个和排序顺序乙,什么是计算换位的最优数量得到一种有效的方式一至乙? 换位定义为切换列表中2个元素的位置,例如 1 2 4 3 有一个变调(变调4和3) 1 2 3 4 就像是 1 7 2 5 9 6 需要4个换位(7,2),(7,6),(6,5),(9,7) 更新(9/7/11):问题更改为使用“换位”而不是“掉期”来指代不相邻的交易所。

3
NP中的超级马里奥流?
最大流量问题的一个经典扩展是“随时间的最大流量”问题:您将得到一个有向图,将其两个节点分别作为源和汇,其中每个弧具有两个参数,每容量-单位时间和延迟。同时,也给出一个时间跨度TŤT。目的是计算随时间变化的流量,该流量在时间从源到接收器获得最大数量的物料。可以通过多项式时间中的最小经典最大流量的巧妙经典归约来计算最大值的流量。TŤT 我对此模型的扩展感兴趣,该模型的边缘具有第三个“寿命”参数。如果电弧的寿命为,并且是最早的正向电弧通过的时间,那么我们在时间处销毁电弧。您可以将其视为“超级马里奥兄弟”中的平台,踩到平台后不久就会掉落或被破坏,或者可以将它们视为为边缘供电所需的电池,在开启后无法关闭。(编辑:)决策问题是,当还给定流量值下限,是否可以调度同时满足时间范围上限和流量值下限的流量。ℓℓ\elltŤtt+ℓŤ+ℓt+\ellB乙B 到目前为止,我可以看到此问题对NP来说非常困难(通过3分区)。但是,我实际上并不知道它是否包含在NP中:是否可以保证有一种紧凑表达解决方案的方法?在经典版本中,使用某些特殊类型的最优流来规避此问题。 注意:由于您可能允许或不允许在节点上存储流量,因此上述模型的指定有点不足,并且您可能具有离散时间模型或连续模型。解决这些模型中的任何一个问题都是非常好的。

1
图分解以结合顶点标记的“局部”功能
假设我们要找到 或 最大X Π 我Ĵ ∈ È ˚F(X我,XĴ)∑X∏我Ĵ ∈ ËF(x一世,XĴ)∑X∏一世Ĵ∈ËF(X一世,XĴ)\sum_x \prod_{ij \in E} f(x_i,x_j)最大值X∏我Ĵ ∈ ËF(x一世,XĴ)最大值X∏一世Ĵ∈ËF(X一世,XĴ)\max_x \prod_{ij \in E} f(x_i,x_j) 如果对V的所有标记取max或sum VVV,则对图G = \ {V,E \}的所有边E取乘积,并且f是任意函数。对于有界树宽图,容易找到此数量;对于平面图,通常很难找到此数量。适当着色的数量,最大独立集和欧拉子图的数量是上述问题的特殊情况。我对此类问题的多项式时间逼近方案感兴趣,尤其是对于平面图。哪些图分解会有用?ËËEG = { V,E}G={V,Ë}G=\{V,E\}FFf 编辑11/1:作为示例,我想知道分解可能类似于统计物理学的聚类扩展(即Mayer扩展)。当FFf表示弱相互作用时,此类展开收敛,这意味着您可以使用ķķk项来达到给定的精度,而不管图形的大小。这是否意味着该数量存在PTAS? 更新02/11/2011 高温膨胀将分区函数Z重写žžZ为项的总和,其中高阶项依赖于高阶相互作用。当“相关性衰减”时,高阶项衰减得足够快,因此几乎所有žžZ的质量都包含在有限数量的低阶项中。 例如,对于Ising模型,请考虑其分区函数的以下表达式 ž= ∑X ∈ X经验值Ĵ∑我Ĵ ∈ ËX一世XĴ= c ∑一∈ Ç(谭Ĵ)| A |ž=∑X∈X经验值⁡Ĵ∑一世Ĵ∈ËX一世XĴ=C∑一种∈C(谭⁡Ĵ)|一种|Z=\sum_\mathbf{x\in \mathcal{X}} \exp J \sum_{ij \in E} …

1
稀疏Walsh-Hadamard变换
该沃尔什-哈达玛变换(WHT)是傅立叶变换的概括,并且是尺寸的实数或复数的矢量正交变换。该变换在量子计算中很流行,但是最近作为一种对高维向量的随机投影的预处理器进行了研究,以用于Johnson-Lindenstrauss引理的证明。它的主要特征是,尽管它是平方矩阵,但它可以通过类似FFT的方法应用于时间为(而不是)的向量。d= 2米d=2米d = 2^md× dd×dd\times dØ (d日志d)Ø(d日志⁡d)O(d \log d)d2d2d^2 假设输入向量是稀疏的:它只有几个非零条目(例如 )。有任何方法来计算在时间上的WHT,使得和 为 ?[R « d[R≪dr \ll dF(- [R ,d)F([R,d)f(r,d)F(d,d)= O (d日志d)F(d,d)=Ø(d日志⁡d)f(d,d) = O(d \log d)F(- [R ,d)= o (d日志d)F([R,d)=Ø(d日志⁡d)f(r,d) = o(d \log d)r = o (d)[R=Ø(d)r = o(d) 注意:这些要求只是形式化想法的一种方法,即我希望小运行速度比快。d日志dd日志⁡dd \log d[R[Rr

1
在线传递闭包效果优于每个边添加的O(N ^ 2)
我正在寻找一种在线算法来维护有向无环图的传递闭合,其时间复杂度小于每个边添加的O(N ^ 2)。我当前的算法是这样的: For every new edge u->v connect all nodes in Pred(u) \cup { u } with all nodes in Succ(v) \ \cup { v }. 对于O(N ^ 2)边,这转化为O(N ^ 4)的总时间复杂度,这比例如Floyd-Warshall更差。

6
Fisher-Yates随机算法的复杂度
这个问题是关于费舍尔-耶茨算法的,该算法用于返回给定数组的随机混洗。在维基百科页面称,其复杂度为O(n),但我认为这是O(n log n)的。 在每个迭代i中,在1和i之间选择一个随机整数。简单地将整数写到内存中就是O(log i),由于有n次迭代,所以总数为 O(log 1)+ O(log 2)+ ... + O(log n)= O(n log n) 天真的算法效果不佳。我在这里想念什么吗? 注意:天真的算法是在(0,1)区间为每个元素分配一个随机数,然后根据分配的数字对数组进行排序。

3
带有树的子图同构
如果我们有一个大的(有向)图和一个较小的有根树H,那么找到与H同构的G的子图的最著名的复杂度是什么?我知道子树同构的结果,其中G和H都是树,并且G是平面的或具有限制的树宽(和其他树宽),但不适用于该图和树的情况。 GGGHHHGGGHHHGGGHHHGGG

2
计算矩形矩阵秩的最快算法是什么?
给定一个矩阵(假设米≥ Ñ),什么是最快的算法来计算其列秩和依据?m×nm×nm \times nm≥nm≥nm \ge n 我知道它可以通过线性拟阵相交,这意味着一个来解决时间确定性算法和ø (米Ñ ω - 1)时间随机化算法。是否有一个ø (米Ñ ω - 1)时间确定性算法更直接减少的问题(或高斯消元),以矩阵乘法?O(mn1.62)O(mn1.62)O(mn^{1.62})O(mnω−1)O(mnω−1)O(mn^{\omega-1})O(mnω−1)O(mnω−1个)O(mn^{\omega-1})

3
检查公式有两个量词(
SAT求解器提供了一种强大的方法,可以使用一个量词来检查布尔公式的有效性。 例如,要检查的有效性,我们可以使用SAT解算器来确定φ (x )是否可满足。要检查的有效性∀ X 。φ (X ),我们可以使用一个SAT解算器,以确定是否¬ φ (X )是可满足的。(这里x = (x 1,… ,x n)是布尔变量的n-向量,并且φ∃ X 。φ (x )∃x.φ(x)\exists x . \varphi(x)φ (x )φ(x)\varphi(x)∀ X 。φ (x )∀x.φ(x)\forall x . \varphi(x)¬ φ (X )¬φ(x)\neg \varphi(x)x = (x1个,… ,xñ)x=(x1,…,xn)x=(x_1,\dots,x_n)ñnnφφ\varphi 是一个布尔公式。) QBF求解器设计为使用任意数量的量词检查布尔公式的有效性。 如果我们有一个带有两个量词的公式怎么办?它们是否是用于检验有效性的有效算法:比仅对QBF使用通用算法更好的算法?更具体我有如下形式的公式(或∃ X 。∀ Ÿ 。ψ (X ,Y ^ )),并要检查它的有效性。有什么好的算法吗? …

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.