Questions tagged «combinatorics»

与组合学和离散数学结构有关的问题

11
求解或近似数字序列的递归关系
在计算机科学中,我们经常必须解决递归关系,即为递归定义的数字序列找到闭合形式。在考虑运行时时,我们通常主要对序列的渐近增长感兴趣。 例子是 尾递归函数的运行时间从向下逐步降为,的身体花费时间:000nnnf(n)f(n)f(n) T(0)T(n+1)=0=T(n)+f(n)T(0)=0T(n+1)=T(n)+f(n)\qquad \begin{align} T(0) &= 0 \\ T(n+1) &= T(n) + f(n) \end{align} 的斐波那契序列: F0F1Fn+2=0=1=Fn+Fn+1F0=0F1=1Fn+2=Fn+Fn+1\qquad \begin{align} F_0 &= 0 \\ F_1 &= 1 \\ F_{n+2} &= F_n + F_{n+1} \end{align} 具有括号对的Dyck单词数:nnn C0Cn+1=1=∑i=0nCiCn−iC0=1Cn+1=∑i=0nCiCn−i\qquad\begin{align} C_0 &= 1 \\ C_{n+1}&=\sum_{i=0}^{n}C_i\,C_{n-i} \end{align} mergesort运行时重复出现在长度为列表上:nnn T(1)T(n)=T(0)=0=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1T(1)=T(0)=0T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1\qquad \begin{align} T(1) &= T(0) = 0 \\ T(n) …

4
广义3SUM(k-SUM)问题?
所述3SUM问题试图识别3点的整数a,b,ca,b,ca,b,c从一组大小的使得。n a + b + c = 0SSSnnna+b+c=0a+b+c=0a + b + c = 0 据推测,没有比二次方更好的解决方案,即。或者换句话说:。o(n log (n )+ n 2)o(n2)o(n2)\mathcal{o}(n^2)o(nlog(n)+n2)o(nlog⁡(n)+n2)\mathcal{o}(n \log(n) + n^2) 因此,我想知道这是否适用于广义问题:在大小为的集合为中的找到整数,使得。我∈ [ 1 .. ķ ] 小号Ñ Σ 我∈ [ 1 .. ķ ]一个我 = 0aiaia_ii∈[1..k]i∈[1..k]i \in [1..k]SSSnnn∑i∈[1..k]ai=0∑i∈[1..k]ai=0\sum_{i \in [1..k]} a_i = 0 我认为您可以在针对(推广简单的k = 3算法很简单)。 但是对于k的其他值是否有更好的算法?ķ …

2
为什么非可计算函数比可计算函数更多?
我目前正在阅读有关算法和复杂性的书。目前,我正在阅读有关可计算和不可计算的函数的书,并且我的书中指出,不可计算的函数比可计算的函数多,实际上,大多数函数都是不可计算的。从某种意义上说,我可以直观地接受这一点,但是这本书没有给出正式的证明,也没有对此主题进行详尽的阐述。 我只是想看一个证明/让这里的人详细介绍一下/更严格地理解为什么不可计算的功能比可计算的功能多得多的原因。

1
给定长度的常规语言中单词数量的渐近性
对于常规语言,令为长度为中的单词。使用约旦规范形式(应用于的某些DFA的无注释转换矩阵),可以证明对于足够大的, 其中是复数多项式,是复数“特征值”。(对于小,我们可能具有形式的附加项,其中如果且为且Ç Ñ(大号)大号ñ 大号Ñ Ç Ñ(大号)= ķ Σ我= 1个 P 我(Ñ )λ Ñ 我,P 我λ 我 Ñ Ç ķ [ Ñ = ķ ] [ Ñ = ķ ] 1 ñ = ķ 0大号LLCñ(大号)cn(L)c_n(L)大号LLñnn大号LLñnnCñ(L )= ∑我= 1ķP一世(n )λñ一世,cn(L)=∑i=1kPi(n)λin, c_n(L) = \sum_{i=1}^k P_i(n) \lambda_i^n, P一世PiP_iλ一世λi\lambda_iñnnCķ[ n = k ]Ck[n=k]C_k[n=k][ n = …

2
计数二叉树
(我是一名具有一定数学背景的学生,我想知道如何计算特定种类的二叉树的数量。) 综观对维基百科页面二叉树的,我已经注意到了这个说法,即大小的扎根二叉树的数量应该是这样的加泰罗尼亚号码: C_N = \ dfrac {1} {N + 1} {2N \选择N}nnnCn=1n+1(2nn)Cn=1n+1(2nn)C_n = \dfrac{1}{n+1}{2n \choose n} 但是我不明白我自己怎么能得出这样的结果?有找到这种结果的方法吗? 现在,如果不考虑子树的顺序(左,右)?例如,从我的角度来看,我认为这两棵树是相同的: /\ /\ /\ /\ 是否可以应用类似的方法来计算这些对象中有多少个恰好具有nnn节点?

1
贪婪算法何时可以解决硬币兑换问题?
给定一组具有不同面额和值v的硬币,您希望找到代表值v所需的最少数量的硬币。Ç 1 ,。。。,Ç ñc1,...,cnc1, ... , cn 例如,对于硬币集1,5,10,20,这给2和6的硬币和6和19的硬币。 我的主要问题是:何时可以使用贪婪策略解决此问题? 优点:这句话显然是不正确的吗?(摘自:如何分辨贪婪算法是否足以解决最小硬币找零问题?) 但是,本文证明,如果贪婪算法适用于第一个最大定理值和第二个最大定理值,那么它将适用于所有第一个定理值,并且建议仅使用贪婪算法与最佳DP算法进行检查。 http://www.cs.cornell.edu/~kozen/papers/change.pdf 附言 请注意,该线程中的答案令人难以置信-这就是为什么我再次提出这个问题。

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\}

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

1
比萨商业声称有3400万种组合
一家披萨商业广告声称您可以将其成分组合成3,400万种不同的组合。我不敢相信,所以我除掉了生锈的组合技巧,并试图弄清楚。到目前为止,这是我的一切:从在线订购网站上,我有了选择 地壳(4种,选择1种) 大小(4种,选择1),某些地壳被限制为一定的大小-不考虑该大小,但希望如此。 奶酪(5种,选择1种) 酱油(4种,选择1种) 酱油级别(3种,选择1种) 肉(9种,最多选择9种) 非肉类(15种,最多选择15种) 因此,我认为这是一个组合问题(顺序并不重要),而不是n选择k问题,除了结皮和结皮,大小,奶酪,酱汁和酱汁水平都只能选择一个以外,null不允许任何其他内容。肉类和非肉类?因此将是:2?2?2^? 外壳 (41)=4(41)=4\binom{4}{1}=4 大小 (41)=4(41)=4\binom{4}{1}=4 奶酪(51)=5(51)=5\binom{5}{1}=5 酱 (41)=4(41)=4\binom{4}{1}=4 酱汁水平(31)=3(31)=3\binom{3}{1}=3 肉29=51229=5122^9 = 512 非肉类215=32768215=327682^{15} = 32768 在这一点上,我很棘手,如何将这些结合起来以得出可能的结合总数? 我发现此站点很有帮助。 ETA: 如果我不考虑地壳尺寸的限制-一些地壳仅在某些尺寸下可用-超过160亿个;提供了16,106,127,360个组合,因此它们相差很大。

1
每个足够大的字符串都重复吗?
令为固定大小的有限字符集。令α为Σ上的一些字符串。我们说一个非空子串β的α是一个重复的,如果β = γ γ对于一些字符串γ。ΣΣ\Sigmaαα\alphaΣΣ\Sigmaββ\betaαα\alphaβ= γγβ=γγ\beta = \gamma \gammaγγ\gamma 现在,我的问题是以下条件是否成立: 对于每一个,存在一些Ñ ∈ Ñ使得对于每个字符串α超过Σ至少长度的Ñ,α含有至少一个重复。ΣΣ\Sigman∈Nn∈Nn \in \mathbb{N}αα\alphaΣΣ\Sigmannnαα\alpha 我已经对二进制字母进行了检查,在这种情况下,这非常容易,但是大小为3的字母已经很难检查了,我是否想证明任意大的语法。 如果上述猜想是正确的,那么我可以(几乎)消除在其他问题中插入空字符串的需求。

1
查找等于一个数字的二项式系数的复杂性
假设您得到一个数字mmm(使用二进制编码中的O(logm)O(log⁡m)O(\log m)位)。 您能在(找到(或确定不存在)n,k \的速度有多快Ñ ,ķ ∈ Ñ,1 &lt; ķ ≤ Ñ2:( nķ) =米ñ,ķ∈ñ,1个&lt;ķ≤ñ2:(ñķ)=米n,k\in \mathbb N, 1<k\leq\frac{n}{2}:{n \choose k}=m ? 例如,给定输入m = 8436285米=8436285m=8436285,可以输出n = 27 ,k = 10ñ=27,ķ=10n=27, k=10。 针对该问题的幼稚算法将遍历n的所有可能值ññn,并搜索满足该属性的k值ķķk。 一个简单的观察结果是,无需检查小于\ log m或大于O(\ sqrt m)的n值。但是(即使我们只能检查每个n值O(1)个可能的k值),这最终导致效率低下的算法,该算法的输入大小成指数增长。ññn日志米日志⁡米\log mÔ (米--√)Ø(米)O(\sqrt m)Ô (1 )Ø(1个)O(1)ķķkññn 一种替代方法是遍历k的可能值ķķk(足以检查{ 2 ,3 ,... ,2 日志m }{2,3,…,2日志⁡米}\{2,3,\ldots,2\log m\}),并为每次检查确定可能的ññn值。然后,我们可以使用: (nķ)ķ&lt; ( nķ) …


2
单亲图可以有多少条边?
单向图是有向图,因此从任何一个顶点到任何其他顶点最多只有一条简单路径。 单态图可以具有周期。例如,一个双向链接列表(不是循环列表!)是一个单感图。如果列表包含元素,则该图具有个长度为2的循环,总共。n - 1 2 (n - 1 )ñnnn − 1n−1n-12 (n − 1 )2(n−1)2(n-1) 具有个顶点的单态图的最大边数是多少?渐近边界将是可行的(例如或)。O (n )Θ (n 2)ñnnO (n )O(n)O(n)Θ (n2)Θ(n2)\Theta(n^2) 受到加权单态图中查找最短路径的启发; 在我的证明中,我最初想声称边的数量为但随后意识到限制循环数就足够了。O (n )O(n)O(n)

1
Sierpiński图上的哈密顿循环数
我是这个论坛的新手,只是一名物理学家,他这样做是为了保持大脑健康,因此,如果我不使用最优雅的语言,请显示优雅。如果您认为其他标签更合适,也请发表评论。 我试图解决这个问题,对此我需要计算哈密顿周期数在Ñ阶的Sierpinski-图表小号Ñ。(还请参见上面的链接以获取谢尔宾斯基图的定义和图片)C(n)C(n)C(n)nnnSnSnS_n 我找到了,但是我一定搞砸了,因为我的解决方案与给定的值C (5 )= 71328803586048不匹配。我的论点包括非常基本的思想,我找不到错误。任何帮助是极大的赞赏。即使看起来很冗长,但如果您在跟踪时查看图表,这些想法也会变得微不足道。C(n)C(n)C(n)C(5)=71328803586048C(5)=71328803586048C(5) = 71328803586048 (a)在给定的图调用外角A ,B ,C。然后定义以下数量:SnSnS_nA,B,CA,B,CA,B,C 从 A到 C的哈密顿路径的数量。N(n):=N(n):=N(n) := AAACCC 从路径数阿到ç哪个访问每个节点一次,除了乙。N¯(n):=N¯(n):=\bar{N}(n) := AAACCCBBB 我还将调用这样的路径 -或ˉ ñ型在下面的路径。NNNN¯N¯\bar{N} (b)中这是很容易看到,。N(n)=N¯(n)N(n)=N¯(n)N(n)=\bar{N}(n) 原因如下:考虑型路径。在开始甲此路径的形式为(甲,。。。,X 1,乙,X 2,。。。,C ^ )。通过更换段(X 1,乙,X 2)由(X 1,X 2),我们得到ˉ Ñ型路径。此操作唯一地映射所有NNNNAAA(A,...,X1,B,X2,...,C)(A,...,X1,B,X2,...,C)(A,...,X_1,B,X_2,...,C)(X1,B,X2)(X1,B,X2)(X_1,B,X_2)(X1,X2)(X1,X2)(X_1,X_2)N¯N¯\bar{N}NNN型路径型路径。N¯N¯\bar{N} (c)推导递归。N(n+1)=2N(n)3N(n+1)=2N(n)3N(n+1)=2N(n)^3 考虑一个从型路径甲于乙和表示子三角形在外角甲,乙,Ç由Ť 甲,Ť 乙,Ť Ç,分别。显然,从T A到T B到T C,N型路径将恰好访问每个子三角形。现在考虑子三角形T A和T C的节点ZNNNAAABBBA,B,CA,B,CA,B,CTA,TB,TCTA,TB,TCT_A,T_B,T_CNNNTATAT_ATBTBT_BTCTCT_CZZZTATAT_ATCTCT_C触摸。路径访问此点时,有两种可能性,即(i)离开之前或(ii)进入T C之后。在这些情况下三个子路径内Ť 甲,Ť 乙,Ť Ç如下类型的(ⅰ)Ñ ,Ñ ,ˉ Ñ或(ⅱ)ˉ …

4
算法中的递归和生成函数
组合学在计算机科学中起着重要作用。我们经常在分析以及算法设计中使用组合方法。例如,一种用于在图形中查找ķķk顶点覆盖集的方法可能只是检查所有( nķ)(ñķ)\binom{n}{k}可能的子集。尽管二项式函数呈指数增长,但如果ķķk是某个固定常数,我们将通过渐近分析得出多项式时间算法。 通常,现实生活中的问题需要更复杂的组合机制,我们可以根据复发情况定义这些机制。一个著名的例子是斐波那契数列(天真的)定义为: F(n )= ⎧⎩⎨1个0F(n − 1 )+ f(n − 2 )如果 n = 1如果 n = 0除此以外F(ñ)={1个如果 ñ=1个0如果 ñ=0F(ñ-1个)+F(ñ-2)除此以外f(n) = \begin{cases} 1 & \text{if } n = 1 \\ 0 & \text{if } n = 0 \\ f(n-1) + f(n-2) & \text{otherwise} \end{cases} 现在,使用该递归计算第ññn个项的值呈指数增长,但是由于有了动态编程,我们可以在线性时间内对其进行计算。现在,并不是所有的递归都适合于DP(即阶乘函数),但是当将某些计数定义为递归而不是生成函数时,它是潜在的可利用属性。 生成函数是一种对给定结构进行形式化计数的优雅方法。也许最著名的是定义为的二项式生成函数: (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.