计算机科学

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

2
是否存在以纯数据流样式构成“增量更新”功能的范例?
我不知道问这个问题的正确术语,所以我会用很多单词来描述它,请耐心等待。 背景,正好在同一页上:程序通常包含缓存-时间/内存的权衡。程序员的一个常见错误是在更改其上游源/先例之一后忘记更新缓存的值。但是数据流或FRP编程范例可以避免此类错误。如果我们有许多纯函数,并在有向依存关系图中将它们连接在一起,则节点可以缓存并重用其输出值,直到任何函数的输入发生变化。该系统体系结构在《基于数据流的环境中的缓存》一文中进行了描述,并且使用命令式语言或多或少地类似于记忆。 问题:当函数的输入之一确实发生变化时,我们仍然必须整体执行该函数,丢弃其缓存的输出并从头开始重新计算。在许多情况下,这对我来说似乎是浪费。考虑一个简单的示例,该示例生成一个“前5名”列表。输入数据是任何内容的未排序列表。它作为输入传递给输出排序列表的函数。依次输入到仅接受前5个项目的功能。用伪代码: input = [5, 20, 7, 2, 4, 9, 6, 13, 1, 45] intermediate = sort(input) final_output = substring(intermediate, 0, 5) 排序函数的复杂度为O(N log N)。但是请考虑在应用程序中使用此流程,在该应用程序中,输入仅通过添加1个元素而仅稍有变化。与其每次都从头开始重新排序,不如使用O(N)函数,它通过在正确位置插入新元素来更新旧的缓存排序列表,将更快。这只是一个示例-许多“从头开始”功能都具有这种“增量更新”功能。另外,也许新添加的元素甚至不会出现在final_output中,因为它位于第5位之后。 我的直觉表明,有可能以某种方式将这样的“增量更新”功能与现有的“从头开始”功能并排添加到数据流系统中。当然,从头开始重新计算所有内容必须始终具有与进行一系列增量更新相同的结果。系统应具有这样的特性:如果每个单独的原始FromScratch增量对总是给出相同的结果,然后由他们建造的大型复合功能也应该会自动给出相同的结果。 问题:是否可能有一个系统/体系结构/范式/元算法既可以支持FromScratch函数也可以支持它们的增量对等函数,并为提高效率而合作并组成大量流程?如果没有,为什么?如果有人已经研究了该范式并发布了它,那么它被称为什么,我能否简要了解它的工作原理?

2
哈达玛门背后的直觉
我试图自学量子计算,并且对线性代数有相当的了解。 我通过了NOT门,这还不错,但是后来我到达了Hadamard门。而且我被卡住了。主要是因为尽管我“理解”了这些操作,但我不理解它们的真正作用或为什么要这样做(如果有道理的话)。 例如,当Hadamard门输入它给出。这是什么意思?对于NOT门,它取并给出。对此并不清楚。它给出位的“相反”(对于叠加,它取并给出),我理解为什么是有用的;出于相同的原因(基本上),它在经典计算机中很有用。但是,例如Hadamard门在几何上对向量什么?为什么这有用?| 0 ⟩ + | 1 ⟩| 0⟩|0⟩|0\rangle | 0⟩| 1⟩α| 0⟩+β| 1⟩β| 0⟩+α| 1⟩[αβ]| 0⟩+ | 1⟩2√|0⟩+|1个⟩2\frac{|0\rangle + |1\rangle}{\sqrt{2}}| 0⟩|0⟩|0\rangle| 1⟩|1个⟩|1\rangleα | 0 ⟩ + β| 1⟩α|0⟩+β|1个⟩\alpha|0\rangle+\beta|1\rangleβ| 0⟩+α | 1⟩β|0⟩+α|1个⟩\beta|0\rangle + \alpha|1\rangle[ αβ][αβ]\begin{bmatrix}\alpha \\ \beta \end{bmatrix}


1
此代码终止的机会是什么?
我写了这个Python代码,想知道它有时是否根本不会终止(假设我们有无限的内存/时间并且没有递归深度限制)。 凭直觉,您会认为它会终止,因为在某些时候您必须很幸运,如果它没有终止,您将有无限的时间来获得幸运。另一方面,随着递归深度的增加,您必须变得越来越幸运。 import random def random_tree(): if random.random() < 0.5: return 0 return [random_tree() for _ in range(random.randint(1, 5))] 如果random_tree不总是终止,为什么?终止的机会是什么? 我已经尝试使用来计算的话,其在它的极好的无用任一给出的答案〜0.684124或... 1。P=1−(1−0.5)(1−(P+P2+P3+P4+P5)/5)P=1−(1−0.5)(1−(P+P2+P3+P4+P5)/5)P = 1 - (1 - 0.5)(1 - (P + P^2 + P^3 + P^4 + P^5)/5)0.6841240.6841240.684124111 可能更复杂,但也令我着迷的是,以下情况的终止机会 :P(a,b)P(a,b)P(a, b) def random_tree(a, b): if random.random() < a: return 0 …

2
严格的积极性
来自这个参考文献:严格的积极性 严格的阳性条件排除了诸如 data Bad : Set where bad : (Bad → Bad) → Bad A B C -- A is in a negative position, B and C are OK 为什么A是负数?又为什么允许B?我了解为什么允许使用C。

1
是否可以针对3个符号的一维元胞自动机确定停止问题?
我一直在尝试确定暂停问题对于3符号一维元胞自动机是否可以确定。 定义令表示系统在时间步骤i的配置。更正式地f :A ∗ × N → A ∗,其中A是字母。F(w ,我)f(w,i)f(w,i)一世iif:A∗×N→A∗f:A∗×N→A∗f:A^*\times \mathbb{N} \to A^*AAA 定义。元胞自动机在配置已经停止,如果∀ ķ ∈ Ñ我们有˚F (瓦特,我)= ˚F (瓦特,我+ ķ )。f(w,i)f(w,i)f(w,i)∀k∈N∀k∈N\forall k\in \mathbb{N}f(w,i)=f(w,i+k)f(w,i)=f(w,i+k)f(w,i)=f(w,i+k) 给定元胞自动机的暂停问题如下: 输入:有限词问题:自动机会在某些状态s停止吗?www sss 此处定义了基本元胞自动机(带有2个符号)。我专注于相同类型的celullar自动机,除了我对带有3个符号而不是2个符号的CA感兴趣。 从现在起,我会表示的形式我的规则,这意味着3个相邻的符号产生另一个在他们之下。∗∗∗→∗∗∗∗→∗***\to* 对于基本的2符号元胞自动机,暂停问题是可以确定的 我将用表示白色单元格,用1表示黑色单元格。000111 如果我们有规则,001 → 1,100 → 1,我们知道自动机不会暂停。因为按照第一个规则,由于我们的网格是无限的,所以我们总是会有3个白细胞生成一个黑细胞。使用第二和第三条规则,单词将扩展到两侧,并且自动机将永不停止。000→1000→1000 \to 1001→1001→1001 \to 1100→1100→1100 \to 1 在其余情况下,我们可以让它进化步,看看它是否停止。如果它停止了,那么好了,它停止了,如果没有停止,那么它重复了一些组合并陷入了一个循环,所以我们还可以得出结论,它不会停止。2n2n2^n 我对3符号案例的理解 显然,如果我们有规则或000 → 2,它不会停止。但是形式为00 x → y和x …

3
为什么(无冲突)哈希表查找真的是O(1)?
免责声明:我知道这里和Stackoverflow上已经存在类似的听起来的问题。但是它们都是关于碰撞的,这不是我要的。 我的问题是:为什么在碰撞较少查找O(1)摆在首位? 假设我有此哈希表: Hash Content ------------- ghdjg Data1 hgdzs Data2 eruit Data3 xcnvb Data4 mkwer Data5 rtzww Data6 现在,我正在寻找k哈希函数h(k)给出的键h(k) = mkwer。但是查找如何“知道”哈希mkwer在位置5?为什么不必在所有按键中滚动O(n)才能找到它?哈希不能是某种真正的硬件地址,因为我失去了移动数据的能力。据我所知,哈希表未按哈希排序(即使是哈希,搜索也将采用O(log n))? 知道哈希如何帮助您找到表格中的正确位置?

1
自类型是否会使归纳构造的微积分过时?
自我类型是构造微积分[1]的扩展,允许语言表达通过Scott编码编码的代数数据类型。Scott编码提供了一种模式匹配功能O(1),这是在CC中包含归纳定义的主要动机之一。然而,“自我类型”却使基础理论变得更加简单和优雅,并且似乎同样强大。 从理论的角度来看,自我类型会否使CIC过时,或者在某些方面CIC相对于Self Tyes是有利的? [1] http://staff.computing.dundee.ac.uk/pengfu/document/talks/mvd-2012.pdf


2
寻找最大程度地躺在球上的球的复杂性
给定一组点和半径。在距离小于的地方找到数量更多的点的复杂性。例如最大化?x1,…,xn∈R2x1,…,xn∈R2x_1, \ldots, x_n \in \mathbb{R}^2rrrrrr∑ni=11∥x−xi∥≤r∑i=1n1‖x−xi‖≤r\sum_{i=1}^n \mathbb{1}_{\|x - x_i\| \leq r} 蛮力算法将遍历每个点并计算距离小于r的点的数量rrr。这将导致\ mathcal {O}(n ^ 2)的复杂性O(n2)O(n2)\mathcal{O}(n^2)。 有没有更好的方法?

1
如果
如果,那么吗?我问这个问题是因为,对于其他非确定性类,似乎总是确定它们等于确定性类。P=NPP=NP\mathbf{P} = \mathbf{NP}L=NLL=NL\mathbf{L} = \mathbf{NL}P=NPP=NP\mathbf{P} = \mathbf{NP}

5
类型理论的日常应用
我想了解类型理论,但是我首先必须知道如何应用它。除了在编程中使用类型系统之外,类型理论还会有更多非显而易见的应用吗?可以说其他应用程序,比如性格分析之类的吗?

3
无限时间内的无限计算
这可能是一个愚蠢的想法,但是假设我们有一台经过编程以执行无限次计算序列的计算机,并且假设计算需要秒才能完成。然后,这台计算机可以在有限的时间内进行无限次的计算。 1 / 2 我ithithi^\text{th}1/2i1/2i1/2^i 为什么这不可能呢?进行非平凡计算需要多长时间有下限?

4
不断发展的人工神经网络解决NP问题
最近,我从Google Research Blog上读了一个非常有趣的博客条目,内容涉及神经网络。基本上,他们使用这种神经网络来解决各种问题,例如图像识别。他们使用遗传算法来“进化”轴突的重量。 所以基本上我的想法如下。如果我应该写一个能识别数字的程序,我将不知道如何开始(我可能有一个模糊的想法,但我的意思是:这并不琐碎,也不容易。)但是通过使用神经网络,我不必这样做。通过创建正确的上下文以使神经网络进化,我的神经网络将“找到正确的算法”。在下面,我引用了文章中一个非常有趣的部分,其中他们解释了每一层如何在图像识别过程中发挥不同的作用。 神经网络的挑战之一是了解每一层到底发生了什么。我们知道,经过训练后,每一层都会逐步提取图像的越来越高的特征,直到最后一层基本上决定了图像显示的内容。例如,第一层可能寻找边缘或拐角。中间层解释基本特征以寻找整体形状或组件,例如门或叶子。最后几层将它们组合成完整的解释-这些神经元会响应非常复杂的事物(例如整个建筑物或树木)而激活。 所以,基本上我的问题是:我们不能使用遗传算法+神经网络来解决每个NP问题吗?我们只是创造正确的进化环境,而让“自然”找到解决方案。 感应主义:更深入地研究神经网络 编辑:我知道我们可以在许多情况下使用蛮力或找到效率不高的解决方案。这就是为什么我试图强调不断发展的人工神经网络。正如我在评论中所说:给定足够的时间和适当的突变率,我们可以找到最佳解决方案(或者至少我认为如此)。

1
仅当至少一个是NP-hard时,NP-完全集才由另外两个集合形成吗?
该问题与先前关于由NP-完全集的集合运算形成的集合的问题相反: 如果由两个可确定集合 和并集,交集或笛卡尔乘积得出的集合是NP完全的,则中的至少一个是否一定是NP困难的?我知道它们不能都在P中(假设P!= NP),因为在这些设置操作下P是关闭的。我还知道“可判定”和“ NP难”的条件是必要的,因为如果我们考虑NP 之外的任何NP完全集和另一个集(无论是NP难还是不可判定),那么我们可以形成两个新的NP硬集不在交集为NP完全的NP中。例如:和。但是,此后我不知道如何进行。 大号2 大号1,大号2大号乙大号1:= 01 大号∪ 11 乙大号2:= 01 大号∪ 00 乙L1L1L_1L2L2L_2L1,L2L1,L2L_1, L_2LLLBBBL1:=01L∪11BL1:=01L∪11BL_1:= 01L \cup 11BL2:=01L∪00BL2:=01L∪00BL_2:= 01L \cup 00B 我认为并集的情况可能不正确,因为我们可以采用NP完全集合并按照Ladner定理执行构造,以得到NPI中的集合它是的子集。那么是原始的NP完全集合。但是,我不知道是否仍处于NPI或NP-hard中。对于交叉点和笛卡尔积,我什至不知道从哪里开始。乙∈ 甲乙∪ (甲∖ 乙)= 阿甲∖ 乙AAAB∈B∈B \inAAAB∪(A∖B)=AB∪(A∖B)=AB \cup (A \setminus B) = AA∖BA∖BA \setminus B

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.