计算机科学

为学生,研究人员和计算机科学从业者提供的问答

1
断头台削减与一般削减
切割问题是将某个大物体切割成几个小物体的问题。例如,假设你有一个工厂,与大的片材宽度的原始玻璃,作品和长度。有几个买家,每个买家都想要无限数量的小玻璃板。买方想要长为且宽度为纸张。您的目标是从大张纸上切下小张纸,以使总使用量最大化,浪费最小化(还有其他类型的切割和包装问题)。w ^w ^W大号大号L一世一世i升一世升一世l_iw一世w一世w_i 切割问题的一个普遍限制是,切割必须是断头台切割,即每个现有的矩形只能切割成两个较小的矩形;显然,具有断头台切割的最大使用面积可能小于没有限制的最大使用面积。 我的问题是:最佳断头台切割与最佳普通切割之间的比率是否有上限和下限? 相关工作:Song等。(2009年)描述了一种使用限制型断头台切刀的算法- 两次断头台切刀。他们使用几何约束证明,最大两次断头台切工与最大断头台切工之间的比率受。我正在寻找关于最大断头台切割量与最大常规切割量之间的比率的可比结果。6767\frac{6}{7}

4
用有偏向的模子模拟公平的模子
给定一个偏向芯片,如何均匀地生成范围内的随机数?模子面的概率分布是未知的,所知道的是每个面的概率都为非零,并且所有抛出的概率分布都是相同的(特别是,抛出是独立的)。这是带有不公平死亡的公平结果的明显概括。NNN[1,N][1,N][1,N] 用计算机科学的术语来说,我们有一个代表死角的预言片:使得为非零且独立于。我们正在寻找一个确定性算法其通过参数化(即可向呼叫),使得。该算法必须以概率1终止,即概率使得多于到呼叫必须收敛到作为。D:N→[1,N]D:N→[1,N]D : \mathbb{N} \to [1,N]pi=P(D(k)=i)pi=P(D(k)=i)p_i = P(D(k)=i)kkkAAADDDAAADDDP(A()=i)=1/NP(A()=i)=1/NP(A()=i) = 1/N一种一种AññnddD000n → ∞ñ→∞n\to\infty 对于(使用有偏差的硬币模拟硬币翻转产生的公平硬币),有一种众所周知的算法:ñ= 2ñ=2N=2 重复“翻转两次”,直到两次掷出的结果不同((头,尾)或(尾,头))。换句话说,循环直到k = 0 ..∞ķ=0 ..∞k = 0..\inftyd (2 ķ + 1 )≠ d (2 ķ )d(2ķ+1个)≠d(2ķ)D(2k+1) \ne D(2k) 如果最后一对翻转是(头,尾),则返回0,如果是(尾,头),则返回1。换句话说,返回,其中是终止循环的索引。D(2k)D(2k)D(2k)kkk 从有偏的模型制作无偏的骰子的一种简单方法是使用硬币翻转无偏方法来构建一个公平的硬币,并通过拒绝采样来构建一个公平的骰子,如序列无偏中所述。但是,这是否最优(对于概率分布的通用值)? 具体来说,我的问题是:什么是需要的算法最小预期呼叫到Oracle的数量?如果一组可达到的期望值是开放的,那么下界是什么?向该下界收敛的一类算法是什么? 如果不同的算法家族对于不同的概率分布是最优的,那么我们将重点放在几乎公平的骰子上:我正在寻找一种算法或一种算法家族,对于表示。∀i,∣∣pi−1/N∣∣<ϵ∀i,|pi−1/N|<ϵ\forall i, \bigl|p_i - 1/N\bigr| \lt \epsilonϵ>0ϵ>0\epsilon \gt 0

1
何时使用SAT vs约束满意度?
如果我遇到难题,一种标准方法是将其表示为SAT实例,然后尝试在其上运行SAT解算器。另一种标准方法是将其表示为约束满足问题,然后尝试使用CSP求解器。两者在某种程度上可以用输入格式自然地表达出什么样的问题,感觉有点相似。 是否有任何准则或经验法则针对特定问题如何识别哪种方法更可能产生良好的结果?对于SAT求解器比CSP求解器能更好地处理哪些类型的问题,是否有人能提供任何指导?反之亦然? (显然,这两种方法都可以解决一些简单的问题。还有一些困难的问题都无法通过两种方法解决。让我们将它们放在一边。指导最有用的情况是其中任何一个SAT都存在问题求解器的性能优于CSP求解器,或者CSP求解器的性能优于SAT求解器如何识别SAT求解器比CSP求解器更合适,或者CSP求解器比SAT求解器更适合SAT求解器-即首先尝试哪种方法?)

1
“零一”拼图是否完整?
我感兴趣的平铺的轻微变型中,“线锯”之谜:一个(正方形)瓦片的每个边缘被标记与来自符号,以及两个瓷砖可以被放置成邻近彼此当且仅当在一个瓦片的衬缘的符号是ķ并且在另一瓦片的衬缘的符号是ˉ ķ,对于一些ķ ∈ { 1 ... ñ }。然后,给定一组m 2的瓷砖,可以将它们放置在m × m{1…n,1¯…n¯}{1…n,1¯…n¯}\{1\ldots n, \bar{1}\ldots\bar{n}\}kkkk¯k¯\bar{k}k∈{1…n}k∈{1…n}k\in\{1\ldots n\}m2m2m^2m×mm×mm\times m正方形(旋转但不翻转瓷砖)且所有边缘正确匹配?(在此问题上还有一个变体,其中提供了四个 “框架”边缘,并且这些块必须正确地放入该框架中)。1×m1×m1\times m 我知道对于足够大的,这个问题是NP完全的,但是我在n上看到的界限似乎很大。我对n的较小值特别是n = 1的问题感兴趣,尤其是在n 为1的情况下(“零一”情况)(其中每个边都标记为0或1且边为0的边必须与边为1的边匹配)nnnnnnnnnn=1n=1n=1000111000111)。在这里(具有旋转对称性)只有六种图块类型(全零图块,全一图块,具有三个零和一个零的图块,具有三个一和零的图块以及具有两个零的两个不同的图块)和两个“ 0011”和“ 0101”),因此问题实例只是一个的规范以及一组五个数字T 0000,T 0001,T 0011,T 0101,T 0111和T 1111(代表计数)每种类型的瓦),用Ť 0000 + Ť 0001 + Ť 0011 + ŤmmmT0000T0000T_{0000}T0001T0001T_{0001}T0011T0011T_{0011}T0101T0101T_{0101}T0111T0111T_{0111}T1111T1111T_{1111}。问题很明显是在NP中(其中m以一元给出),因为可以简单地展示一个解决方案,然后以多项式(以m)为单位进行检查,但是已知它是NP完全的,或者有某种动态编程算法可以在这里申请?如果问题说明中还包括要匹配的正方形的四个边,那么在“框架”情况下该怎么办?(很明显,如果未定格的案例是NP完全的,那么定格的案例几乎也可以确定)T0000+T0001+T0011+T0101+T0111+T1111=m2T0000+T0001+T0011+T0101+T0111+T1111=m2T_{0000}+T_{0001}+T_{0011}+T_{0101}+T_{0111}+T_{1111}=m^2mmmmmm

3
有异常层次结构的理论吗?
我熟悉许多编程语言,它们以某种方式具有异常,但是我亲眼目睹了两种“病理性”趋势。 似乎没有常见的异常模式或层次结构。每种语言基本上都会发布自己的版本,如果例外将其纳入标准,则人们在标准中发现的例外种类将相当随意(大多数是在创建语言工具时实现的,例如从中读取源代码)字符串或调用调试器的异常,或找不到文件时发生的异常等) 用这种语言定义的异常很少被用户程序重用。通常会有一个或两个流行的例外(例如,“未实现”)。尽管大多数时候程序员会创建自己的异常。(例如,将其与创建新的数字类型或新的集合类型进行比较)。 这对我来说似乎是一个可怕的遗漏。没人知道用户程序中将需要哪种错误?我希望有一种很好的层次结构,类似于数字类型,集合,对象系统等。 更糟糕的是,Goolge和Wikipedia在此问题上提供的帮助很少。到目前为止,我只找到了一篇关于函数异常的论文,该论文的开头是一段: 本文认为,惰性函数式编程不仅不需要内置的异常处理机制,而且还为开发和转换使用异常的程序提供了强大的工具。 (异常的功能理论,Mike Spivey,1988年) 但是我认为例外是好的。我不想转换使用异常的程序,相反,我想减少异常的使用。 问题: 有例外理论吗?如果是这样,它叫什么?概述其基础的基石是什么(如果有)?

2
更难的是:对已排序的牌组进行混洗还是对经过改组的牌组进行分类?
您有不同元素组成的数组。您可以访问比较器(一个黑盒函数接受两个元素a和b并返回true iff a &lt; b)和一个真正随机的位源(一个黑盒函数不接受任何参数并返回一个独立的均匀随机位)。请考虑以下两个任务:nnnaaabbba&lt;ba&lt;ba < b 该数组当前已排序。产生均匀(或近似均匀)的随机选择排列。 该数组由自然而然随机选择的一些排列组成。产生一个排序的数组。 我的问题是 哪个任务需要渐近的能量? 我无法更精确地定义问题,因为我对信息论,热力学或其他任何需要回答此问题的知识都不了解。但是,我认为这个问题可以定义得很清楚(希望有人在回答这个问题时能帮助我!)。 现在,按照算法,我的直觉是它们相等。请注意,每种排序都是相反的顺序,反之亦然。排序需要比较,而洗牌,因为它从选取的随机排列ñ !选择,需要登录n !≈ ñ 日志ñ随机位。改组和排序都需要大约n次交换。logn!≈nlognlog⁡n!≈nlog⁡n\log n! \approx n \log nn!n!n!logn!≈nlognlog⁡n!≈nlog⁡n\log n! \approx n \log nnnn 但是,我觉得应该采用兰道尔原理来回答,该原理说需要一点能量来“擦除”。直觉上,我认为这意味着对数组进行排序更加困难,因为它需要“擦除” 位信息,从低能量,高熵的无序基态到高度有序的状态。但另一方面,对于任何给定的计算,排序只是将一个排列转换为另一个排列。由于我是一个完全的非专家,所以我希望了解物理学的人可以帮助“解决”这个问题!nlognnlog⁡nn \log n (该问题在math.se上没有得到任何答案,因此我将其重新张贴在这里。希望可以。)

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之后。在这些情况下三个子路径内Ť 甲,Ť 乙,Ť Ç如下类型的(ⅰ)Ñ ,Ñ ,ˉ Ñ或(ⅱ)ˉ …

2
元素变化时计算逆矩阵
给定矩阵。让的逆矩阵是(即,)。假设中的一个元素已更改(例如,更改)。目的是在此更改后找到。有没有找到一种比从头重新计算逆矩阵更有效的方法来找到这个目标。n×nn×nn \times nAA\mathbf{A}AA\mathbf{A}A−1A−1\mathbf{A}^{-1}AA−1=IAA−1=I\mathbf{A}\mathbf{A}^{-1} = \mathbf{I}AA\mathbf{A}aijaija _{ij}a′ijaij′a' _{ij}A−1A−1\mathbf{A}^{-1}

1
满足激进式引理但不规则的语言?
给定一个正规语言,那么很容易证明,有一个恒定的ñ,从而为σ &Element; 大号,用| σ | ≥ Ñ存在串α,β和γ,使得| α β | ≤ ñ和| β | ≠ ε,并为所有ķ它是α β ķ γ &Element; 大号LLLNNNσ∈Lσ∈L\sigma \in L|σ|≥N|σ|≥N\lvert \sigma \rvert \ge Nαα\alphaββ\betaγγ\gamma|αβ|≤N|αβ|≤N\lvert \alpha \beta \rvert \le N|β|≠ϵ|β|≠ϵ\lvert \beta \rvert \ne \epsilonkkkαβkγ∈Lαβkγ∈L\alpha \beta^k \gamma \in L。人们普遍说相反的说法是不正确的,但是我还没有看到任何明确的例子。有什么建议么?显然,证明冒犯性语言不规则的证据必须使用比典型的“不满足抽提引理”更强的方法。我会对简单的示例感兴趣,以介绍入门形式语言类。

2
随机快速排序的优点是什么?
在他们的著作随机化算法, Motwani和拉加打开与他们的RandQS功能的说明引入-随机快速排序-其中所述枢轴,用于将所述组分成两个部分,是随机选择。 一段时间以来,我一直在绞尽脑汁(虽然动力不足),但是我无法看到该算法比每次简单地选择中间元素(索引而不是大小)有什么优势。 我想我看不到这是什么:如果初始集合是按随机顺序排列的,那么在集合中随机位置拾取元素和在固定位置拾取元素之间有什么区别? 有人可以简单地启发我吗?

1
在多项式时间和强多项式时间中运行的算法的定义
维基百科将其定义为 如果算法的运行时间由该算法的输入大小的多项式表达式上限(即对于某个常数k ,T (n )= O (n k)),则该算法被称为多项式时间。Ť(n )= O (nķ)Ť(ñ)=Ø(ñķ)T(n) = O(n^k) 如果[8],该算法将在强多项式时间内运行。 计算算术模型中的运算数受输入实例中整数数的多项式限制;和 算法使用的空间以输入大小的多项式为边界。 在Bernhard Korte,Jens Vygen中,组合优化: 定义1.4。 理性输入的算法被认为在运行多项式时间内,如果 有一个整数k,它以时间运行,其中n是输入大小,并且Ø (ñķ)Ø(ñķ)O(n^k) 中间计算中的所有数字都可以用位存储。Ø (ñķ)Ø(ñķ)O(n^k) 任意输入的算法被认为在运行强多项式时间如果 对于任何由n个数字组成的输入,有一个整数k使得它以时间运行Ø (ñķ)Ø(ñķ)O(n^k) 它在多项式时间内运行以进行合理的输入。 如果我错了,请纠正我。以下是我注意到的字面差异: 对于多项式时间算法,Korte和Vygen的定义是“维基百科的定义+多项式存储空间”。 对于强多项式时间算法,Korte和Vygen的定义以及Wikipedia的定义都要求输入存储大小中的多项式时间。但是,K和V的任何输入中的数目均需要多项式时间,而Wikipedia的其他要求则是输入大小中的多项式存储空间。 那么,K和V以及Wikipedia对这两个概念的定义分别相等吗?它们之间还有什么其他区别和关系? 谢谢并恭祝安康!

1
将期望最大化应用于抛硬币示例
最近,我一直在自学“期望最大化”,并在过程中掌握了一些简单的示例: 从这里开始:三个硬币,和带有,和c 1 c 2 p 0 p 1c0c0c_0c1c1c_1c2c2c_2p0p0p_0p1p1p_1p2p2p_2分别是被抛掷时落在头上的概率。投掷c0c0c_0。如果结果是Head,则将掷c1c1c_1三遍,否则将掷c2c2c_2三遍。c1c1c_1和产生的观测数据c2c2c_2如下:HHH,TTT,HHH,TTT,HHH。隐藏数据是的结果c0c0c_0。估计p0p0p_0,p1p1p_1和p2p2p_2。 从这里开始:有两个硬币cAcAc_A和cBcBc_B其中pApAp_A和pBpBp_B分别是被抛掷落在Head上的概率。每回合随机选择一枚硬币,掷十次;记录结果。观察到的数据是这两个硬币提供的抛掷结果。但是,我们不知道为特定回合选择了哪个硬币。估计pApAp_A和pBpBp_B。 虽然我可以得到计算结果,但是我无法将它们的求解方式与原始的EM理论联系起来。具体来说,在两个示例的M-Step中,我都看不到它们如何使任何东西最大化。似乎他们正在重新计算参数,并且以某种方式,新参数比旧参数要好。而且,这两个电子步骤看上去甚至都不相似,更不用说原始理论的电子步骤了。 那么这些示例如何工作?

3
如何阅读打字规则?
我开始阅读越来越多的语言研究论文。我发现它非常有趣,并且是一种全面学习编程的好方法。然而,通常是一个部分,在那里我总是(就拿第三部分的奋斗此),因为我没有在计算机科学的理论背景:类型规则。 是否有任何好的书籍或在线资源可用于该领域的入门?维基百科含糊不清,对初学者没有任何帮助。

2
从任何NP完全问题到有界PCP的多项式约简
各地的教科书都认为有界邮政对应问题是NP完全的(重复不超过NNN索引)。但是,没有一个地方显示出另一个NP完全问题带来的简单的多项式时间缩减(例如,本科生可以理解的东西)。 但是,我能想到的每个缩减都是在运行时呈指数形式(按NñN或按序列的大小)。也许可以证明它可以还原为SAT?

1
证明第N次素数复发的(难)度
正如上一个问题所得出的那样,我一直在把里曼假设作为休闲数学问题。在此过程中,我进行了一次非常有趣的重现,并且对它的名称,它的减少以及它对于质数之间的可解性的可处理性感到好奇。 简而言之,我们可以将每个素数之间的间隔定义为先前候选素数的重复出现。例如,对于我们的基数p0= 2p0=2p_0 = 2,下一个质数将是: p1个= 最小{ x &gt; p0∣ − cos(2 π(X + 1 )/ p0)+ 1 = 0 )}p1个=分{X&gt;p0∣-cos⁡(2π(X+1个)/p0)+1个=0)}\qquad \displaystyle p_1 = \min \{ x > p_0 \mid -\cos(2\pi(x+1)/p_0) + 1 = 0) \} 或者,正如我们通过绘制此图所看到的:p1个= 3p1个=3p_1 = 3。 我们可以通过评估向前重复的每个候选素数来对素数重复该过程。假设我们要获得下一个质数。我们的候选函数变为:p 2ññnp2p2p_2 p2=min{x&gt;p1∣fp1(x)+(⋅(−cos(2π(x+1)/p1)+1)(−cos(2π(x+2)/p1)+1))=0}p2=min{x&gt;p1∣fp1(x)+((−cos⁡(2π(x+1)/p1)+1)⋅(−cos⁡(2π(x+2)/p1)+1))=0}\qquad \displaystyle \begin{align} p_2 = \min\{ x > …

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.