计算机科学

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

2
对于每个“邪恶”的正则表达式,是否存在非邪恶的替代项,还是语法中的恶魔?
显然,ReDos攻击利用了某些(其他有用的)正则表达式的特征...本质上导致了通过NFA定义的图的可能路径的爆炸式增长。 通过编写等效的“非邪恶”正则表达式可以避免此类问题吗?如果不是这样(因此,NFA无法在实际的空间/时间中处理语法),哪种解析方法会更好?为什么?

2
什么时候两种常规语言的连接才是明确的?
由于语言的和乙,让我们说,他们的级联一乙是明确的,如果所有的单词w ^ ∈ 一乙,恰好有一个分解w ^ = 一b有一个∈ 一和b ∈ 乙,和暧昧否则。(我不知道该属性是否存在一个确定的术语,这很难搜索!)作为一个简单的示例,{ ε ,a }与自身的串联是不明确的(w = aAAABBBABABABw∈ABw∈ABw \in ABw=abw=abw = aba∈Aa∈Aa \in Ab∈Bb∈Bb \in B{ε,a}{ε,a}\{\varepsilon, \mathrm{a}\}),但的级联 { 一个 }与本身是明确的。w=a=εa=aεw=a=εa=aεw = \mathrm{a} = \varepsilon \mathrm{a} = \mathrm{a} \varepsilon{a}{a}\{\mathrm{a}\} 是否有一种算法来确定两种常规语言的连接是否明确?

1
N体问题的不可解性等于停止问题吗
对于n体问题,没有通用的解析解决方案可以产生解析函数,该解析函数可用于在任意时间t精确给出n体系统的状态。但是,在某些n体系统的特殊情况下,已知解析功能。 以几乎相同的方式,没有通用的算法可以预测任意图灵机的结果。虽然,有许多种可以确定永远停止或运行的车床。 这两个结果相等吗?其中之一的证据是否暗示另一个?能够解决停止问题的魔术机是否能够精确地预测n体系统的状态?反之亦然,对n体问题的一般解析解是否可以让我们在任意图灵机上确定停机问题? 我最初对如何解决这个问题的猜测是,证明在重力作用下的n体系统是图灵完整的。我怀疑这是考虑到图灵已经完成,并且本质上是在引力(以及其他一些行为类似的力)下运行的,但我不知道如何证明这一点。 但是我怀疑这种方法是否足够,因为我认为有可能(尽管我认为不太可能)缺乏对n体问题的解析通用解可以独立于图灵完成而已。 编辑:阅读了其他一些与切线相关的问题后,我意识到重力作用所在的维数可能与该问题有关。我是专门问3个空间维度上的重力。但是,鉴于这样的事实,例如,您至少需要3条规则才能制造通用图灵机,并且2维的重力将只有一个反定律而不是一个平方反比定律∝ 1 / r 2,导致没有封闭的轨道,我可以看到,三个维度的引力是图灵完成的,而不是两个或一个。∝1/r∝1/r \propto 1/r ∝1/r2∝1/r2 \propto 1/r^2

1
下推式自动机是否可以识别给定的常规语言是否可以确定?
两个下推自动机是否识别相同语言的问题尚不确定。下推式自动机是否识别空语言的问题是可以确定的,因此也可以确定是否可以识别给定的有限语言。下推式自动机接受的语言是否正常是不确定的。但是... ...是否可以确定下推式自动机是否可以识别给定的常规语言? 如果答案是否定的,如果给定的常规语言的星星高度为 111,是否可以确定问题?

3
加洛瓦定理是否存在复杂性观点?
伽罗瓦定理有效地表明,不能使用系数和根的有理函数来表达> = 5的多项式的根-这难道不是说给定多项式没有确定性算法可找到根吗? 现在考虑以下形式的决策问题:“给定实根多项式ppp且数字k 至少在间隔k处是的第三和第四高根ppp?” 该决策问题的证明证书仅是该多项式的根的集合,即简短证书,因此看起来NPNPNP BUT不是Galois定理,它说不存在任何确定性算法来为此找到证书决定问题?(如果为true,则此属性排除任何算法来决定该问题的答案) 那么,这个决策问题位于哪一类复杂性中? 我见过的所有NP完全问题总是有一个简单的指数时间算法可以解决。我不知道这是否应为对所有NP完整问题都应该正确的属性。对于这个决策问题,这似乎并非正确。

1
迷失于“单向”音乐会
您和一位朋友在一场音乐会上失去了对方,也无法确定你们中的哪一位遥遥领先。形式上,每个坐标都位于某个整数坐标处,并且只能朝更高的坐标走或停留在原处。 假设您和您的朋友使用完全相同的算法(不,您可能不会说“ if(name ==“ R B”)做某事:)),并且两个人之间的初始距离是xxx(不是知道)。 在您和您的朋友见面之前,最小化预期步行距离的算法是什么? 您可能会假设您的朋友和您自己都以相同的恒定速度运动。 一个简单的算法示例如下: 在阶段(从0开始nnn000): 向右走步wp 13n3n3^n或等待3n个时间单位,否则。1212\frac{1}{2}3n3n3^n 要查看此算法使朋友的概率是1相遇考虑在阶段发生的事情。即使那是在朋友X领先一步走到总是和对方总是留在地方,两者之间的距离将是: X + 1 + 3 + 9 + ... + 3 日志3 X = 2 X + X - 1(log3x+1)(log3⁡x+1)(\log_3 x+1)xxxx+1+3+9+…+3log3x=2x+x−12≤3xx+1+3+9+…+3log3⁡x=2x+x−12≤3xx+1+3+9+\ldots+3^{\log_3 x}=2x+\frac{x-1}{2}\leq 3x 因此,在次迭代,其选择步行,将覆盖的距离的朋友3 日志3 X + 1 = 3 X,因此,以概率1log3x+1log3⁡x+1\log_3 x+13log3x+1=3x3log3⁡x+1=3x3^{\log_3 x+1}=3x,后面的朋友会追上他们,并会面。1414\frac{1}{4} 一个简单的优化(以减少步行距离)将是,而不是步行步,而是步行c x步,其中c表示为: 2 + …

1
角色模型与通信顺序过程(CSP)之间的差异
当我们查看Actor模型和通信顺序过程时,我们看到它们都试图基于消息传递来进行并发,但是它们是截然不同的。 (我们在go-lang的goroutines(和Clojure的core.async)中看到了CSP模型的实现,在Scala的Akka工具包中看到了Actor模型的实现) 我正在尝试获取Actor模型和CSP之间差异的简单列表。到目前为止,我有: actors消息传递是异步的,CSP消息传递是同步的 参与者是可组合的,CSP不是必需的 参与者始终具有无限的不确定性,CSP可能具有无限的不确定性 参与者具有可变拓扑,而CSP具有固定拓扑 参与者有地方性原则,CSP没有地方性 演员是根据自己的行为设计的,CSP不一定有这个 它是否正确?有什么我想念的吗? 假设条件 当我说“演员模型”时,我的意思是在Scala的Akka框架中实施的理论基础

2
针对需要平衡的计算机对手的计分方法
这个问题是关于我创建的计算机对手的一种方法,该方法目前正在或计划在几种计算机游戏中使用。 背景 去年,试图改善一个名为“扫雷舰国旗”游戏中的电脑对手时(简短描述:扫雷的回合制多人游戏版本,你必须采取比对手更多的地雷),我强烈地改变了我的算法的工作方式。我没有使用if-else-if-else这样的方法,而是使用一组具有指定权重的“得分手”来确定最佳动作。 您可能会认为对于Minesweeper Flags这样的游戏,仅是举手投足可以最大程度地夺取地雷,但这并不是那么简单。计算机将采取哪种动作通常取决于当前游戏状态下该特定动作的几个功能。功能示例: 这个举动得分的概率是多少? 在这里向我的对手透露任何信息的可能性是多少? 系统说明 系统基本上是这样的: “预得分者”:对当前游戏状态进行了一些预分析(就扫雷标志而言,通常是:计算所有概率) “得分手”:要求一组普通的得分手为每个可能的动作确定得分,每个得分手根据自己的标准应用得分。计分员可以检查进行的预分析的结果。 将上述步骤中计算出的分数相加,并设置为移动分数。 这些移动将根据其得分进行排序和排名,以便所有具有相同得分的移动都获得相同的排名。 “后记分员”:以上结果可以发送到“后记分员”,后者可以根据后记分员自己的规则以所需的任何方式修改任何字段的分数。 当结合一堆前得分手,得分手(及其权重)和后得分手时,这就是我所说的得分配置。 结果示例 这是分数被应用于扫雷旗帜的一个例子。这是得分的地图: 这是实际分数配置的输出。它显示了可能移动的等级,其中1是最佳等级,并以白色突出显示: 由于编写了高度灵活的代码,这种针对AI的方法也可以插入其他游戏中。 的优点和缺点 以下是我可以想到的该系统的一些优点和缺点 优点 为AI创建很多不同的配置非常容易。 可以与遗传算法一起使用:每个计分员都有一个相关的权重,该权重可以成为基因。 使用某些工具,可以检查为什么做出特定动作,以及哪些得分手对该动作负责 使用工具,可以创建可能动作的总体得分/等级的地图(如上面的屏幕截图) 通过将分数应用于人类的演奏方式,可以创建一个“ #AI_Mirror”,尝试做出人们认为会做出的动作 缺点 要“正确地”调整乐谱配置以使AI尽可能发挥出色,将非常困难。 问题 我在这里构建的系统在AI世界中广为人知吗?真正的AI术语又叫什么? 这种方法有意义吗?或者您会推荐其他方法吗? 有哪些方法可以使调整分数配置的过程变得更容易? 关于最后一个问题,我知道使用遗传算法的可能性,也对SARSA有所了解(我确实认为我的评分员类似于该站点对具有权重的特征的描述,但根据我的理解,这并不是我所创建的这里)。我认为SARSA的问题在于,直到游戏结束,您才知道奖励,最好的举动通常是根本不给予奖励(地雷)的举动。您当前获胜的机会取决于当前比分(您和您的对手选了多少枚地雷)以及当前地图的外观。 这个问题最初发布在现已停产的人工智能网站上。 用于此方法的(Java)代码现已发布在Code Review上。

2
可允许的启发式方法如何确保最佳解决方案?
当使用A *(或任何其他最佳路径查找算法)时,我们说使用的启发式方法应该是可以接受的,也就是说,它绝不应高估实际解路径的长度(或移动量)。 可允许的启发式方法如何确保最佳解决方案?我最好在寻找一个直观的解释。 如果需要,您可以使用8难题的曼哈顿距离启发法进行解释。

2
对HTM性能有何批评?
我最近才了解到这种分层时态内存(HTM)的存在。我已经读过文档《分层时间记忆:概念,理论和术语》(Jeff Hawkins和Dileep George撰写),这似乎很容易理解,但有一个危险信号是,该文档既没有经过同行评审,也没有试图解释为什么应该这样做。详细工作。 我试图四处寻找一些独立的消息来源。我发现有几篇论文将其性能与其他产品进行了比较,但没有一篇解释它为什么表现良好(或不好)。我注意到一些评论声称它被主流专家所否定,但是我找不到任何实际的批评。 对HTM性能有何批评?由于HTM是通用的,因此任何针对特定领域的批评都应与更基本的问题相关。 此外,还有大量的培训数据要使用,即使是数月的培训课程也足够使用。基本上,对培训规模或时间长短的任何批评都无关紧要。

1
感知器可以忘记吗?
我想建立一个基于网络的在线机器学习系统,用户可以在其中连续添加分类的样本,并在线更新模型。我想使用感知器或类似的在线学习算法。 但是,用户可能会犯错误并插入不相关的示例。在那种情况下,我想选择删除一个特定的示例,而无需对整个示例集(可能很大)上的感知器进行重新训练。 这可能吗?

2
Google Code Jam长城问题是否有更快的解决方案
考虑以下Google Code Jam回合1C问题: 中国的长城始于一条无限的线,所有位置的高度均为。000 一些部落,会根据以下参数攻击墙壁:开始日,开始强度,开始西坐标和开始东坐标。这第一次攻击发生在一天,上范围,在强度。如果中有长城的任何部分的高度,则攻击成功,并且在一天结束时,将建造长城,以使其在高度会处于高度Ñ ≤ 1000 d 小号W¯¯ é d [ w ^ ,ë ] 小号[ w ^ ,ë ] &lt; 小号[ w ^ ,ë ] &lt; 小号小号NNNN≤1000N≤1000N \le 1000DDDSSSWWWEEEDDD[W,E][W,E][W,E]SSS[W,E][W,E][W,E]&lt;S&lt;S< S[W,E][W,E][W,E]&lt;S&lt;S< SSSS(或更大,如果当天其他一些攻击以强度击中同一段)S′&gt;SS′&gt;SS' > S 每个部落在撤退之前将进行多达攻击,并且每次攻击都将根据之前的迭代来确定。每个部落都有一些,和\ delta_S来确定攻击顺序:两次攻击之间将等待\ delta_D \ ge 1天,对于每次攻击,他们将移动其攻击范围\ delta_X单位(负=西,正=东部),但范围的大小将保持不变,并且每次攻击后它们的强度也会以恒定值增加/减少。δ d δ X δ 小号δ d ≥ 1 …

1
将任意封面转换为顶点封面
给定一个平面图并令G=(V,E)G=(V,E)G=(V,E)GG\mathcal{G}表示其嵌入平面中,每个边的长度为。我还有一组点,其中中的每个点都包含在。此外,它适用于任何点p在ģ存在一个Ç ∈ Ç与到测地距离p至多一个。(该距离被测量为G内的最短距离。)111CCCc∈Cc∈Cc \in CGG\mathcal{G}pppGG\mathcal{G}c∈Cc∈Cc \in CpppGG\mathcal{G} 我想认为给予的量,上述条件成立时,我可以很容易地将其转换成一个顶点覆盖,或将不同的,它变成一个ç '相同基数ST任何的Ç ∈ Ç '被放置在ģ 在的顶点ģ,和ç '仍然覆盖ģ。CCCC′C′C'c∈C′c∈C′c \in C'GG\mathcal{G}GGGC′C′C'GGG 我的方法是确定边缘的方向,并在圆弧的端点处移动中的点。但是到目前为止,我还没有找到从C产生C '的正确方向。CCCC′C′C'CCC 有人有主意吗?

2
将二叉树上色为红黑树
常见的采访问题是给出一种算法,以确定给定的二叉树是否高度平衡(AVL树定义)。 我想知道我们是否可以对红黑树做类似的事情。 给定一个任意的未着色的二叉树(具有NULL节点),是否存在一种“快速”算法,该算法可以确定我们是否可以对节点Red / Black进行着色(并查找着色),以便它们满足Red-Black树的所有属性(这个问题的定义)? 最初的想法是,我们可以删除NULL节点,然后尝试递归地验证生成的树是否可以是一棵红黑树,但这似乎没有任何用处。 我在网上做了简短的搜索,但是似乎找不到任何可以解决这个问题的文件。 我可能错过了一些简单的东西。


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.