Questions tagged «divide-and-conquer»

2
展示如何手动执行FFT
假设您有两个多项式:和。3+x3+x3 + x2x2+22x2+22x^2 + 2 我试图了解FFT如何帮助我们将这两个多项式相乘。但是,我找不到任何可行的示例。有人可以告诉我FFT算法如何将这两个多项式相乘。(注意:这些多项式没有什么特别的,但我想简化它以使其易于理解。) 我已经看过伪代码中的算法,但是它们似乎都存在问题(不要指定输入应该是什么,未定义的变量)。令人惊讶的是,我找不到任何人实际经过(手动)使用FFT相乘多项式的示例。

2
分而治之的理论基础
在算法设计方面,通常采用以下技术: 动态编程 贪婪策略 分而治之 尽管对于前两种方法,有著名的理论基础,即Bellman最优性原理和拟阵理论(分别是Greedoid),但我找不到基于D&C的算法通用框架。 首先,我知道我们(或更确切地说,教授)在函数式编程类中引入的某种东西,称为“算法框架”,它是在组合器的上下文中产生的。作为示例,我们为D&C算法提供了如下框架: 定义:令为非空集。我们称解的元素,而的元素(即的子集)称为问题。然后,D&C骨架为4元组,其中:A,SA,SA,SSSS P:=P(A)P:=P(A)P:=\mathfrak{P}(A)AAA(Pβ,β,D,C)(Pβ,β,D,C)(P_\beta, \beta, \mathcal{D}, \mathcal{C}) PβPβP_\beta是在一系列问题的谓词和我们说一个问题是基本的当且仅当成立。pppPβ(p)Pβ(p)P_\beta(p) ββ\beta是映射,为每个基本问题分配解决方案。Pβ→SPβ→SP_\beta \rightarrow S DD\mathcal{D}是一个映射 ,它将每个问题分为一组子问题。P→P(P)P→P(P)P \rightarrow \mathfrak{P}(P) CC\mathcal{C}是一个映射,它将子问题的解决方案(取决于“枢轴问题”的类型)连接起来以产生一个解决方案。P×P(S)→SP×P(S)→SP\times \mathfrak{P}(S) \rightarrow S 然后,对于给定的骨架和问题,以下泛型函数计算一个解(在形式上义)为:s=(Pβ,β,D,C)s=(Pβ,β,D,C)s=(P_\beta, \beta, \mathcal{D}, \mathcal{C})pppfs:P→Sfs:P→Sf_s: P\rightarrow Sppp fs(p)={β(p)C(p,f(D(p)))if p is basicotherwisefs(p)={β(p)if p is basicC(p,f(D(p)))otherwisef_s(p)= \left\{ \begin{array}{l l} \beta(p) & \quad \text{if $p$ is basic}\\ \mathcal{C}(p,f(\mathcal{D}(p))) & \quad \text{otherwise} …
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.