计算机科学

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

1
如何衡量离散对数问题的复杂性?
对此问题在Crypto Stack Exchange上的回答基本上是说,为了测量对数问题的复杂性,我们必须考虑代表组大小的数字的长度。似乎是任意的,为什么我们不选择组的大小作为参数呢?是否有一个标准来知道选择哪种参数?实际上,我知道我忽略了一些重要的事情,因为如果我们按照小组的规模来做,复杂性会发生巨大的变化。

1
证明Presburger算术双指数复杂性的技巧
我将其发布在MathUnderflow上,但没有任何答案,所以以为我会在这里尝试, 我正在阅读拉宾(Rabin)和菲舍尔(Fischer)的旧论文[将在可能时发布链接],其中除其他外,证明了Presburger算术的双指数复杂性。 该证明依赖于公式的存在,其中非正式地断言了“ ”。尽管本文没有给出该公式的构造,但考虑到该界限以及我们只能使用加成这一事实,考虑到它可能是非常重要的,这让我感到惊讶!¹一世ñ(x )In(x)I_{n}(x)x &lt; 22k x + 1x&lt;22kx+1x < 2^{2^{kx+1}}| 一世ñ| ∈ø(Ñ)|一世ñ|∈Ø(ñ)|I_{n}| \in O(n) 后来我才知道,该公式的构建依赖于Fischer先前发现的“技巧”,而Volker Strassen则是独立发现的,但是我没有找到详细描述此技巧的论文! 因此,如果有人知道我正在谈论的论文,并且可以指出我的方向,甚至可以向我描述这个窍门... 立顿博客中的这篇文章包含该文章的链接以及提及[并为我提供了一个粗略的,不幸的是,不足之处],BTW说的把戏的草图。 ¹我知道这是一个模糊的描述。虽然,对于SX帖子而言,足够详细的描述可能太长了,所以我只希望一个已经了解了相关论文的人-可以使用该简短的草图-可以对我有所帮助。 。

2
减少最大流量以二分法匹配?
从最大二分匹配问题到最大流问题有一个著名而优雅的减少:我们为每个要匹配的项创建一个具有源节点,终端节点和一个节点的网络,然后添加适当的边。sssttt 当然,有一种方法可以将多项式时间内的最大流量减少到最大二分匹配,因为这两个函数都可以分别在多项式时间内求解。但是,从最大流量(在一般图中)到最大二分匹配是否有“精妙”的多项式时间减少?

1
简单多边形的独特三角剖分对偶
给定一个简单多边形的三角剖分(没有Steiner点),可以考虑此三角剖分的对偶,定义如下。我们为三角剖分中的每个三角形创建一个顶点,如果相应的三角形共享一条边,则我们将连接两个顶点。已知对偶图是最大度数为三的树。PPP 对于我的应用程序,我对以下内容感兴趣。给出一个在树最大度三,是总有一个简单的多边形使得双三角每一个(没有施泰纳点)的等于。在这里,的三角剖分可能不是唯一的,但是我要求对偶图是唯一的。TTTPPPPPPTTTPPP 当是路径时,这当然是正确的,但是当您具有3度的顶点时,这一点并不清楚。TTT

3
为什么状态在while循环的小步操作语义中保持不变?
通常,我看到在while循环的结构化操作语义表示中,程序状态没有改变: (whileBdoS,σ)→(ifBthenS;(whileBdoS)elseSKIP,σ)(whileBdoS,σ)→(ifBthenS;(whileBdoS)elseSKIP,σ)(while \> B \> do \>S, \sigma) \rightarrow (if \>B \> then \>S; (while \> B \> do \>S) \> else \> SKIP, \sigma) 对我来说,这不直观,如果状态没有改变(即内存状态保持不变),则将继续保持为真,并且程序将永远不会终止。B乙B 谁能解释为什么州在这条规则上没有改变?


2
二部图为平面且顶点周围无边的条件
二分图是平面的,如果它没有或。K3,3ķ3,3K_{3, 3}K5ķ5K_5 我正在寻找必要条件和/或充分条件,以允许没有边缘的平面图形“围绕”顶点集。这些是令人满意的图纸: 一部分的所有顶点都绘制在一条垂直线上。另一部分的顶点绘制在平行的顶点线上。 边仅在顶点处不相交。 边全部在点1的两条垂直线之间的无限条中。 例如,此处所有图形(右下角除外)均为非示例。可以通过交换Q和R的位置来重绘左下图以满足条件。不能重绘顶部的两个图满足条件。 前两个图是我可以找到的唯一障碍。我的问题是: 这个问题有名字吗? 我错过了其他障碍吗? 关于我如何证明这两个障碍(连同我遗漏的一切)的任何暗示,当然都是未成年人,都是必要和充分的。 注意,这与外部平面不同,是外部平面(可以绘制为正方形),但是不能满足我上面提到的条件。K2,2ķ2,2K_{2, 2}

1
当用作调用堆栈时,无垃圾的意大利面条堆栈会形成DAG吗?
我正在研究用于编程语言的实现技术,并且最近遇到了意粉堆栈,该堆栈被认为非常适合连续传递样式模型(假定它们在例如 Scheme和SML / NJ中使用)。为了简单起见,我们仅考虑此问题的单线程进程。 但是,我对Wikipedia上的图表有些困惑 (也可以在其他地方找到)。特别是,我不明白这种情况如何发生。我只能想象,变灰的分支是无法访问的,应该进行垃圾回收。另一方面,由于我对如何使用意大利面条堆栈实现CPS的含糊理解,我无法想象如何在该结构中实现循环。我必须得出一个结论,它实际上是一个有向无环图,而不是一个“父指针树”,其非垃圾源与线程一样多,宿(与)(潜在)“退出点”一样多。 但是我对这种实现的理解很模糊,所以我想我可能缺少了一些东西。我希望有人可以在“意大利面条调用堆栈”上给我启发,我的意思是指Scheme和/或SML / NJ中用于实现基于CPS的过程的数据结构。 给定以下意大利面条调用堆栈: [exit point] &lt;-- ... &lt;-- [frame A] &lt;-- [frame B (active)] ^ `---- [frame C] 据我了解,来自B的任何流控制要么通过跳到父级(A变为活动状态,现在不可访问的B现在是垃圾)来取消堆栈,要么用子图代替活动帧,仅使用B持有的引用或引用来连接到新的框架。执行无法流向框架C,这必须表示框架C是垃圾。 与以前的情况不同,我认为可能会出现以下无垃圾情况: [exit point] &lt;-- ... &lt;-- [frame W] &lt;-- [frame X] &lt;-- [frame Z (active)] ^ | `---- [frame Y] &lt;---´ 例如,我可以想象Z帧属于某个决策函数,该决策函数要么继续到X帧,要么继续到Y帧(两者都会返回到W)。这意味着意大利面条调用栈不是“父指针树 ”。 但是,我无法想象可以构造循环的任何情况。以以下情况为例: …

4
为什么我们要研究有限自动机的所有三种表示形式?
DFA,NFA和epsilon NFA三种功能都使我们能够代表特定的常规语言。使用这些表示中的任何一种,我们都可以得到相同的正则表达式,那么为什么我们需要研究有限自动机的所有三种表示形式?关于NFA可以做什么而DFA无法做到的一些解释,也就是NFA可以帮助我们设计不确定性。例如,在设计游戏(国际象棋)时,我们有很多选择可以从NFA轻松表示的特定位置移走特定的棋子。但是,当使用NFA或DFA可以完成epsilon NFA时又有什么用呢?

1
随机可熔堆-预期高度
随机可熔堆具有一个“混合”操作,然后我们将其用于定义所有其他操作,包括插入。 问题是,具有节点的那棵树的期望高度是多少?nnn Gambin和Malinkowski的定理1,随机可融合优先级队列(SOFSEM论文集,计算机科学讲座,第1521卷,第344-349页,1998;PDF)给出了该问题的答案。但是,我不明白为什么可以这样写: E[hQ]=12((1+E[hQL])+(1+E[hQR])).E[hQ]=12((1+E[hQL])+(1+E[hQR])).\mathbb{E} [ h_Q] = \frac{1}{2} ((1 + \mathbb{E}[h_{Q_L}]) + (1 + \mathbb{E}[h_{Q_R}]))\,. 对我来说,树的高度是 hQ=1+max{hQL,hQR},hQ=1+max{hQL,hQR},h_Q = 1 + \max\, \{ h_{Q_L}, h_{Q_R}\}\,, 我可以扩展为: E[hQ]=1+E[max{hQL,hQR}]=1+∑kP[max{hQL,hQR}=k].E[hQ]=1+E[max{hQL,hQR}]=1+∑kP[max{hQL,hQR}=k].\mathbb{E} [ h_Q] = 1 + \mathbb{E}[\max \,\{ h_{Q_L}, h_{Q_R}\}] = 1 + \sum k \mathbb{P}[\max\, \{ h_{Q_L}, h_{Q_R}\} = k]\,. 可以使用总概率定律重写两个子树的高度的最大值等于kkk的概率: P[max{hQL,hQR}=k]=P[max{hQL,hQR}=k∣hQL≤hQR]P[hQL≤hQR]+P[max{hQL,hQR}=k∣hQL&gt;hQR]P[hQL&gt;hQR]=P[hQR=k∣hQL≤hQR]P[hQL≤hQR]+P[hQL=k∣hQL&gt;hQR]P[hQL&gt;hQR].P[max{hQL,hQR}=k]=P[max{hQL,hQR}=k∣hQL≤hQR]P[hQL≤hQR]+P[max{hQL,hQR}=k∣hQL&gt;hQR]P[hQL&gt;hQR]=P[hQR=k∣hQL≤hQR]P[hQL≤hQR]+P[hQL=k∣hQL&gt;hQR]P[hQL&gt;hQR].\begin{align*} \hspace{2em}&\hspace{-2em} \mathbb{P}[\max\, …

2
暂停问题是否可能对于除机器代码之外的所有输入都可以解决?
这个问题是关于停止问题的问题,我在网上找不到很好的答案,想知道是否有人可以提供帮助。 只要输入不是TM本身,就可以判断任何输入上的任何TM的停止问题?基本上: Halts(TM, I) IF TM == I: Undecidable, return a random result/throw an exception, whatever ELSE: Solve the problem Halts'(X) IF Halts(X, X): Loop infinitely ELSE: Print 'done' 这似乎解决了矛盾。当我们称呼悖论性的Halts'(Halts')时,我们不能指望有一致的行为,但是所有其他对Halts(和Halts')的调用都是合法且可解决的。 我知道这是非常不直观的。如果这些位中的某些模式可以揭示所有可能程序的行为,那么当TM和输入匹配时,为什么它突然崩溃?但是我们可以在数学上消除这种可能性吗? 而且这种减少的停止问题根本不会引起人们的兴趣。即使有一些有意义的程序以其自己的代码作为输入,也可以对其进行微不足道的重写,以处理稍有不同的输入。当然,这一建议使人们更加难以理解为什么在这种警告下可能存在一种暂停的解决方案,但是再次,我们真的可以在数学上消除这种可能性吗? 谢谢你的帮助。

3
可判定性的建设性版本?
今天午餐时,我和同事们提起了这个问题,令我惊讶的是,杰夫·E(Jeff E.)认为问题是可决定的,这一观点并没有使他们信服(这是有关Mathoverflow的密切相关文章)。还可以确定一个更容易解释的问题陈述(“是P = NP吗?”):是或否,因此始终输出这些答案的两个TM中的一个确定了问题。形式上,我们可以确定集合:仅为输入输出的机器,否则由0决定的机器,或为输入2进行输出的机器。1小号:= { | { P,NP} | }S:={|{P,NP}|}S :=\{|\{P, NP\}|\}1个111个11000222 其中一个将其归结为基本上是这样的反对意见:如果这就是可判定性标准的弱性-这意味着我们可以形式化为一种可以证明是有限的语言的每个问题都是可以判定的-那么我们应该将一个标准化为不会以有限的方式确定可确定的许多可能的答案,不会造成任何问题。虽然以下内容可能是一个更强的标准,但我建议也许可以通过要求可判定性取决于能够显示出TM来进行精确说明,从本质上提出一种直觉主义的观点(我不倾向于-做我的任何一个同事,他们所有人都接受排除中间的法律)。 人们是否已正式确定并可能研究了可判定性的建设性理论?

1
向上箭头()在伪代码中是什么意思?
我正在学习有利的点树,并且在阅读Peter Yianilos撰写的论文《一般度量空间中的最近邻居搜索的数据结构和算法》(SODA会议录,SIAM,第311-321页;PDF)时遇到了这个问题。以下伪代码出现在算法1中。 function Make_vp_tree(S)if S=∅ then return ∅new(node);node↑.p:=Select_vp(S);node↑.mu:=Medians∈Sd(p,s);…function Make_vp_tree(S)if S=∅ then return ∅new(node);node↑.p:=Select_vp(S);node↑.mu:=Medians∈Sd(p,s);…\begin{align*} \hspace{2em}&\hspace{-2em} \textbf{function}\text{ Make_vp_tree(}S\text{)}\\ &\textbf{if }S=\emptyset\textbf{ then return }\emptyset\\ &\text{new(node);}\\ &\text{node}\!\uparrow\!\!\text{.p} := \text{Select_vp(}S\text{);}\\ &\text{node}\!\uparrow\!\!\text{.mu} := \text{Median}_{s\in S}\, d(p,s);\\ &\dotsc \end{align*} node是vp-tree的节点,所以我知道这node.p是什么意思,但是在这种情况下,向上箭头是什么意思?
9 notation 

2
如何证明三色是可决定的?
为了证明3色是可判定的,仅需说一下: 图中的每个节点都有3种可能的颜色 因此,我们可以列举所有可能性,然后检查没有两个边连接具有相同颜色的节点3ñ3ñ3^n 那是否证明三色是可决定的?还是我需要建造图灵机以进行适当的证明? 通过三色,我说的是图形着色问题。也就是说,将3种颜色之一分配给无向图中的每个节点,以使没有两个相邻的节点具有相同的颜色。

2
在类型系统中证明分类操作
我想知道编程语言中的类型系统可以带来多大的好处。例如,我知道在依赖类型的编程语言中,我们可以创建一个Vector在类型签名中合并向量大小的类。这就像事实上的例子。我们还可以append使用这些签名编写函数,以便编译器证明结果列表的大小将是输入列表的总和。 例如,是否有一种方法可以对排序算法的类型签名进行编码,以便编译器保证结果列表是输入列表的排列?如果可能的话,如何做到这一点?

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.