标签: computer-science

18
推荐指数
2
解决办法
2万
查看次数

使用正则表达式表示标识符

用C语言识别标识符的常规定义由下式给出

letter -> a|b|...z|A|B|...|Z|_
digit -> 0|1|...|9
identifier -> letter(letter|digit)*
Run Code Online (Sandbox Code Playgroud)

该定义将生成表单的标识符

标识: [_a-zA-Z][_a-zA-Z0-9]*

我现在的问题是如何将生成的标识符的长度限制为不超过31个字符.需要在常规定义中进行哪些更改,或者如何编写正则表达式以将其限制为不超过指定的长度.有谁可以帮忙.谢谢.

regex computer-science regular-language

18
推荐指数
1
解决办法
3万
查看次数

假设P = NP证明是什么样的?

它是一个特定NP完全问题的多项式时间算法,还是仅仅是抽象推理能够证明存在NP完全问题的解决方案?

似乎特定的算法更有帮助.有了它,我们要多方面地解决NP问题所需要做的就是将它转换成证明有解决方案的特定NP完全问题,我们就完成了.

algorithm math complexity-theory computer-science p-np

17
推荐指数
4
解决办法
3831
查看次数

什么是最被低估或鲜为人知但有用的算法?

我正在寻找一种如此未知但有用的算法或数据结构,您认为这是计算机科学或编程社区的可怕疏忽.如果只有我们都可以学习这样一两件事,有很多好会做很多未来的计划.

我能想出的最好的是插值搜索,只有极少数程序员知道,而每个人都知道二进制搜索.我认为毫无疑问,快速搜索有序列表是一种非常有用且基本的算法.

这两者几乎完全相同 - 所以这不是问题.

它对均匀分布的数据执行O(log(log(n))),而不是二进制搜索O(log(n)).这意味着搜索40亿个数字只需要5个探测器而不是32个,那就更好了!

在非完美统一的数据上,它在大多数情况下仍然表现得非常好.只有当数据真正偏离时才会像二进制搜索一样糟糕或者更糟糕.当数据高度偏斜时,这是O(n)最坏的情况,但在大多数现实情况下这种情况非常罕见.

即便如此,人们也可以构造一个偶数/奇数算法来在两者之间交替,并得到最差的二分搜索情况,并使用插值搜索的平均情况来缓解极端情况.

大多数程序员/图书馆都忽略了这一点.

谁能打败那个人?

theory algorithm computer-science data-structures

17
推荐指数
1
解决办法
1468
查看次数

在证据方面,你如何"得到它"?

当我们开始进入算法设计和更多离散的计算机科学主题时,我们最终必须一直在证明事物.每当我看到有人问如何变得非常擅长证明时,常见的(也可能是懒惰的)答案就是"练习".

如果你掌握了基础知识,那么练习就没有问题,但是你如何进入数学证明的思维定势?什么时候感应点击?哪些资源最适合教授这些主题?在沉迷于校对之前,应该研究哪些基础课题?

algorithm computer-science proof

17
推荐指数
3
解决办法
5519
查看次数

深度与树的高度.刷新基本面

我正在复习算法和数据结构.

我对树的深度高度的概念感到困惑.在许多情况下,特别是在关注面试评估的网站上,在我看来,这些术语可以互换使用.

在我看来,基本的文学将它们定义为适用于节点不会在一棵树上.

所以根(它是一个节点)的深度是0.根(或任何子节点)的高度是其子节点的最大高度.

但是当你在树上应用这些术语,即找到树的最大深度时,似乎这些术语现在是"无意义的"并且可以互换使用,即找到最大深度只计算最大高度.

例如,在这篇文章中检查树是否平衡,答案集中在树的高度,而平衡的定义可以在树的深度上

我的理解是正确的还是我搞砸了这些基本原理?

algorithm tree computer-science data-structures

17
推荐指数
2
解决办法
2万
查看次数

为什么二元搜索是一种分而治之的算法?

我被问到二元搜索是否是考试中的分而治之算法.我的回答是肯定的,因为你将问题分成了较小的子问题,直到你达到了结果.

但是检查员询问其中的征服部分在哪里,我无法回答.他们也不赞成它实际上是一种分而治之的算法.

但是我到网上的所有地方都说它是,所以我想知道为什么,以及征服它的部分在哪里?

algorithm computer-science binary-search divide-and-conquer data-structures

17
推荐指数
4
解决办法
2万
查看次数

请问java RMI的意义吗?

为什么人们使用RMI,或者什么时候应该使用RMI?我在oracle的网站上阅读了关于RMI的那些教程.但它没有提供足够的实际例子.

根据我的理解,软件的模块应尽可能"无关和分离".RMI似乎是一个与我高度耦合的例子.为什么这不是一个糟糕的编码实践?我认为客户端应该只发出指令,而对象的所有实际操作都是由服务器完成的.

(我目前正在攻读计算机科学学士学位并且缺乏经验,所以如果我理解这些概念错误,请纠正我.)

提前致谢!

java computer-science rmi anti-patterns software-design

17
推荐指数
3
解决办法
7030
查看次数

流行的C++编译器使用什么算法用于std :: sort和std :: stable_sort?

流行的C++编译器使用什么算法用于std :: sort和std :: stable_sort?我知道标准只提供了某些性能要求,但我想知道流行实现在实践中使用哪些算法.

如果引用每个实现的引用,答案会更有用.

c++ compiler-construction sorting algorithm computer-science

17
推荐指数
2
解决办法
5371
查看次数

是否有黑盒方法来检测排序算法是否稳定?

在JavaScript(有些适用于其他地方),你不知道你的代码在哪个目标实现上运行,是否有一种方法可以检测基础排序算法(of Array.sort)是否稳定,只知道它遵循规范

我可以在webkit (1) (2)中找到2个测试,但这些测试有多可靠?(这可以通过PCP进行检查吗?)我正在寻找一种在数学上合理的解决方案.

这是一个棘手的问题,因为更高级的排序算法可以根据源数组的长度(如Timsort)更改子算法.我一直很困惑,因为我所运行的每一项测试都表明Google Chrome的稳定性,但我见过的所有文档都说它不稳定(来源会告诉你原因).

(通常情况下,我使用此策略使我的排序稳定;它有一个小但有时显着的性能影响)

各种实现中的排序源代码:

javascript sorting computer-science computability

17
推荐指数
2
解决办法
1369
查看次数