计算机科学

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

3
NFA如何使用epsilon转换?
在下面的图片中,我试图弄清楚NFA到底接受了什么。 什么是困惑我的是在跳q 0。ϵϵ\epsilonq0q0q_0 如果输入,系统是否同时移动到q 0和q 1(接受状态)?000q0q0q_0 q1q1q_1 如果输入,系统是否同时移动到q 1和q 2?111q1q1q_1q2q2q_2 如果没有输入(空字符串),系统是否仅移至(接受状态)?q1q1q_1

1
我们为什么不对编译时间保证进行更多研究?
我喜欢所有的编译时间,我喜欢这样的想法:一旦您编译了程序,就可以保证程序的执行。一般来说,静态类型系统(Haskell,C ++等)似乎比任何动态类型系统都提供了更强大的编译时保证。 据我了解,Ada在编译时间检查方面走得更远,并且能够在执行之前检测到更大范围的错误。考虑到在某个时间点,它被选用于脆弱的领域(编程错误可能会导致人员伤亡),因此它也被认为是相当安全的。 现在,我想知道:如果更强大的静态保证导致代码更完整,更安全,那么我们为什么不朝这个方向进行更多研究呢? 一种似乎缺少的东西的例子是一种语言,它不是定义int具有由基础体系结构的位数确定的范围的通用类型,而是可以具有范围(在下面的示例中Int [a..b]描述了一个介于包括a和b): a : Int [1..24] b : Int [1..12] a + b : Int [2..36] a - b : Int [-11..23] b - a : Int [-23..11] 或(从Ada那里获得): a : Int [mod 24] b : Int [mod 24] a + b : Int [mod 24] …

1
图论与图算法研究
我有一个非常普通的问题要问。它与研究有关。我对图论感兴趣。我已经完成了其中的课程。作为数学学生,我已经完成了与图论相关的一些主题,并且还研究了一些图算法。我要去图论研究实习。但是我心中有点毛病,因为缺乏关于图学算法研究或数学专业图论的真正区别的恰当独特的想法,我无法确定我对图的真正兴趣。我想知道以下几点: 作为数学系学生进行图论或进行图算法的真正区别是什么?他们两个有真正的不同吗? 有人可以告诉我一些获取有关图论和图算法研究论文的良好资源。 作为数学系学生开始画图是否好? 我不知道提出这类问题是否合适。如果这不适合,请告诉我。

4
非常规的常规语言的联盟
我遇到了一个问题: “给出两种常规语言的示例,它们的并集不会输出常规语言。” 这让我感到非常震惊,因为我相信常规语言是在联盟下关闭的。对我来说,这意味着如果我使用两种常规语言并将它们结合起来,那么我必须获得一种常规语言。 而且我想我理解这一点的证明:用我的话来说,如果语言是规则的,则存在可以识别它们的自动机。如果采用所有状态(联合),并为入口点添加新状态,并使用epsilon修改新状态的转换函数,我们可以。我们还表明存在从每个状态等出发的路径。 您能告诉我哪里错了,或者可以用另一种方式解决这个问题。 问题的来源,练习4,法文。 同样,对交叉点也问相同的问题。



2
为什么有k界的生成树问题NP完全?
以界的生成树问题是您拥有无向图G (V ,E )的问题,您必须决定它是否具有生成树,以使每个顶点的度数最大为k。kkkG(V,E)G(V,E)G(V,E)kkk 我意识到对于的情况,这就是哈密顿路径问题。但是我在k > 2的情况下遇到麻烦。我试着从可以将更多节点添加到k = 2的现有生成树上的角度考虑问题,并且也许由于基数是NP完整的,因此添加内容也会使其也成为NP完整的,但这似乎并没有对。我正在自学CS,并且在理论方面遇到麻烦,因此我们将不胜感激!k=2k=2k=2k>2k>2k>2k=2k=2k=2

4
量子计算机是模拟的吗?
几十年前,我们曾经有过模拟计算机。现代计算机是数字的。那昆腾计算机呢?是模拟还是数字?我问这个问题是因为qubit可以同时做很多事情。

9
究竟是什么算法?
我知道这听起来可能有点开箱即用,实际上我以前总是在盒子里思考,但是最近我一直在思考,可能是因为计算机科学提供了高度的自由度,所以除了设计程序以外,大学里教过的 考虑阶乘函数。通常我们将这个函数定义为 int fact(int n) { int r = 1; for(int i=2;i<=n;i++) r = r*i; return r; } 我将其称为算法,并且毫无疑问,这是正确的方法。然后,我想知道“我可以在固定时间内执行此操作吗?”,这使我想到了以下几点:如果我有一个整数数组,其中array [n]容纳n的阶乘怎么办?一旦这个数组被填充,我可以简单地将事实定义为: int fact(int n) { return array[n]; } 即使它提供了正确的结果并在恒定的时间O(1)中运行,我仍然似乎无法为该算法定标。这可以称为算法吗?否则,为什么不呢?我可以争辩说,填充数组将需要某种算法在某个时间运行,即使它在我们的大脑中才能填充数组,但这是否是标准?这些方面如何得到正式处理? 请注意,该概念可以扩展到任何在整数上操作的函数,而与参数的数量无关,如果函数具有2个参数,则仅需使用矩阵;如果函数具有3个参数,则仅需使用3,等等。而且,难道不是仅由于内存消耗而使用这些解决方案吗? 同样,该功能也可能不包含任何带有输出的程序,因为我可以找到一种方法来索引程序可以提供的每个可能的输出。 再举一个例子,考虑一下数组的一般用法:我首先分配一个大小为N的数组,然后通过将值存储在索引n处并将n增加一个单位来向数组添加元素。然后,如果我想寻找一个元素,我不禁要对数组执行线性搜索。相反,如果我创建一个大小为Integer.MAXVALUE的数组来存储整数(用零初始化),则可以通过在其索引处放置1来存储整数。然后我可以在O(1)时间中搜索它在数组中的存在。如果我希望能够放置多个相同编号的设备怎么办?没问题,我只是增加存储在整数索引处的值。 排序会稍微复杂一些,但是仍然可以在O(1)时间内执行查找和加法。
12 algorithms 

1
选择一个子集以最大化点之间的最小距离
我有一组点,每个点之间有距离D (P i,P j)。这些距离是欧几里得距离,但这些点实际上在特征空间中。CCCD(Pi,Pj)D(Pi,Pj)D(P_i,P_j) 我想从点中选择n点的子集。将此子集称为。我想选择这个子集,以最大限度地提高新的设定点之间所有的最小距离小号。CCCnnnssssss maxs⊂C|s|=n⎛⎝⎜mini,j∈si≠jD(Pi,Pj)⎞⎠⎟maxs⊂C|s|=n(mini,j∈si≠jD(Pi,Pj)) \max_{\substack{s \subset C \\ |s| = n}} \left( \min_{\substack{i,j \in s \\ i \neq j} } D \left( P_i, P_j \right) \right) 现在,我正在使用登山来解决这个问题。我知道模拟退火可能会提供更好的解决方案。 是否存在针对此类问题的已知解决方案?还是可以将此问题重新表述为易于解决的另一个问题?

2
Lambda演算:上下文与评估上下文之间的差异
首先,我想说的是,我的下面的文本可能包含错误,请随时指出我在提出问题时的任何错误。 考虑一个具有布尔值和if语句的无类型lambda演算,其条件由以下语法给出: t ::= v | t t | if t t t | x v ::= \x.t | #t | #f 在这种情况下,上下文C将根据以下语法给出: C ::= [-] | \x. C | C t | t C | if C t t | if t C t | if t t C …

2
是否有任何考虑分页的垃圾收集器?
垃圾回收必须访问所有存在的对象,以便找到可以回收的内存。(有很多世代只是延迟了一下) 在所有条件都相同的情况下,最好先访问已分页到RAM中的对象,然后再分页其他块并分页出某些对象。 另一种可能是,当OS希望从进程中删除一整页的内存时,首先会询问GC是否具有可以放弃而无需分页的页面。GC通常可以通过从页面移动对象来完成,因此可以在OS需要页面的限期内清除该页面。 但是,我想不起任何与OS分页系统集成的垃圾收集器,这些垃圾收集器会驱动GC的工作顺序。

2
具有写保护输入的单带图灵机只能识别常规语言
这是问题所在: 证明不能在包含输入字符串的磁带部分上写入的单带图灵机只能识别常规语言。 我的想法是证明该特定TM等同于DFA。 使用此TM模拟DFA非常简单。 但是,当我想使用此DFA模拟TM时,会遇到问题。对于TM转换,DFA可以通过向右读取磁带并执行相同的状态转换来明确地模拟。δ(q,a )= (q′,a ,R )δ(q,a)=(q′,a,R)\delta(q,a)=(q',a,R) 对于,我无法弄清楚如何使用此DFA或NFA模拟左移,因为DFA仅向左读取且没有堆栈或要存储的东西。δ(q,a )= (q′,a ,L )δ(q,a)=(q′,a,L)\delta(q,a)=(q',a,L) 我应该考虑另一种方式吗?有人可以给我一些提示吗?谢谢。

1
有没有一种语言可以表达自己的编译器图灵完备的语言?
对tex.SE的评论让我感到奇怪。该语句实质上是: 如果我可以用语言X编写语言X的编译器,那么X是图灵完备的。 用可计算性和正式语言来讲,这是: 如果决定大号⊆ 大号Ť 中号和⟨ 中号⟩ ∈ 大号,然后˚F 大号 = - [R Ë。中号MM大号⊆ 大号Ť 中号L⊆LTML \subseteq L_{\mathrm{TM}}⟨ 中号⟩ ∈ 大号⟨M⟩∈L\langle M \rangle \in LF大号= R EFL=REF_L = \mathrm{RE} 这里表示所有图灵机编码的语言,而F L表示由L中的机器计算的函数集。大号Ť 中号LTML_{\mathrm{TM}}F大号FLF_L大号LL 这是真的?

3
多核SAT解算器
我正在尝试解决25k子句5k变量SAT问题。由于它已经运行了一个小时(precosat),因此我想在以后解决更大的问题,因此我正在寻找一种多核SAT-Solver。 由于似乎有许多SAT解算器,我很迷茫。 有人能指出我最适合我的情况吗? 如果有人可以给我大概的时间(如果可能的话),我也很高兴。

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.