计算机科学

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

6
从任何基数转换为任何基数而不经过基数10的背后的数学运算?
我一直在研究从任何基础转换为任何基础的数学运算。这比确认我的结果更重要。我在mathforum.org上找到了我的答案,但是我仍然不确定我是否正确。我可以从较大的基数转换为较小的基数,因为这只是将第一位数字乘以要添加下一位数字重复的基数即可。我的问题是从较小的基数转换为较大的基数时出现的。在执行此操作时,他们会讨论如何将所需的较大基准转换为较小的基准。一个例子是从4到6的基数,您需要将数字6转换为4到12的基数。然后执行与从大到小转换时相同的操作。我遇到的困难是,似乎您需要知道另一个数中的一个。因此,我需要知道4中的6是什么。这在我脑海中产生了一个大问题,因为那时我需要一个表。有谁知道以更好的方式做到这一点的方法。 我以为基本转换会有所帮助,但找不到任何有效的方法。从我发现的站点来看,它似乎允许您从基数转换为基数,而无需经过10底,但是您首先需要知道如何将第一个数字从基数转换为基数。这使得它毫无意义。 评论员说我需要能够将字母转换为数字。如果是这样,我已经知道了。但是那不是我的问题。我的问题是为了将大基数转换为小基数,我需要先将我拥有的基数转换为所需的基数。这样做我无法达到目的,因为如果我能够将这些碱基转换为其他碱基,那么我已经解决了我的问题。 编辑:我已经找到了如何从小于或等于10的基数转换为小于或等于10的其他基数的方法。我也可以从大于10的基数转换为小于等于10的任何基数。当从大于10的基数转换为大于10的基数时,或者从小于10的基数变为大于10的基数时,问题就开始了。我不需要代码,我只需要它后面的基本数学即可。适用于代码。

2
为什么二进制搜索的big-O中的日志不是以2为底的?
我是了解计算机科学算法的新手。我了解二进制搜索的过程,但是我对其效率有些误解。 在元素的大小中,平均需要步骤才能找到特定元素。取双方的底数为2的对数,得出。那么二分查找算法的平均步数不是吗? n log 2(s )= n log 2(s )s=2ns=2ns = 2^nnnnlog2(s)=nlog2⁡(s)=n\log_2(s) = nlog2(s)log2⁡(s)\log_2(s) 维基百科有关二进制搜索算法的文章说,平均性能为。为什么会这样呢?为什么这个数字不是?log 2(n )O(logn)O(log⁡n)O(\log n)log2(n)log2⁡(n)\log_2(n)


6
无损压缩算法会减少熵吗?
根据维基百科: 香农的熵衡量的是消息中包含的信息,而不是确定的(或可预测的)消息部分。后者的示例包括语言结构的冗余或与字母或单词对,三胞胎等的出现频率有关的统计属性。 因此,熵是对消息中包含的信息量的度量。熵编码器用于将此类消息无损压缩到表示该消息所需的最小位数(熵)。对我来说,这似乎是一个完美的熵编码器,它是尽可能无损压缩消息所需的全部。 然而,许多压缩算法在熵编码之前使用步骤以减少消息的熵。 根据德国维基百科 Entropiekodierer werdenhäufigmit anderen Kodierern kombiniert。大律师,大律师,大律师和大律师。 用英语: 熵编码器经常与其他编码器结合使用。前面的步骤用于减少数据的熵。 即bzip2在应用熵编码(在这种情况下为霍夫曼编码)之前先使用Burrows-Wheeler-Transform,然后再进行Move-To-Front-Transform。 这些步骤是否真的减少了消息的熵,这意味着减少了消息中包含的信息量?这在我看来是矛盾的,因为那将意味着在压缩过程中信息丢失,从而阻止了无损解压缩。还是仅转换消息以提高熵编码算法的效率?还是熵不直接对应于消息中的信息量?


2
量子λ演算
通常,有3种流行的方法来考虑计算:图灵机,电路和lambda演算(我将其用作大多数功能视图的全部)。这三种方法都是思考不同类型问题的卓有成效的方法,因此,不同领域使用不​​同表述。 但是,当我使用量子计算时,我只会考虑电路模型。最初,质量控制是用量子图灵机来定义的,但是据我了解,这个定义(虽然等同于量子电路,如果两者都经过精心制定的话)还没有那么有效。我完全不熟悉第三个公式(就Lambda微积分或类似的功能设置而言)。因此,我的问题是: 量子λ演算(或其他功能范例)的有用定义是什么? 通过使用此公式而不是电路模型,QIP的哪些子领域会获得更深入的了解? 笔记 我知道我忽略了许多其他流行的形式主义,例如元胞自动机,RAM模型等。我之所以将它们排除在外是因为我没有经典地考虑这些模型的经验,更不用说量子论了。 我也知道,在量子环境中还有流行的替代方法,例如基于测量的,拓扑的和绝热的。我不讨论它们,因为我不熟悉经典的对应语言。

6
是否有任何非自动机?
在自动机理论中,我们从一开始就将自动机视为有限自动机。我想知道的是,为什么自动机是有限的?明确地说,在一个有限的自动机中,它是什么-字母,语言,用正则表达式构成的字符串,还是什么?并且(理论上)有非自动机吗?

3
最坏情况
我很难找到可以给出最坏情况良好资源,而不是稳定排序算法。有人知道任何好的资源吗?O(nlnn)O(nln⁡n)O(n \ln n) 提醒一下,这意味着它使用传入的数组,并且排序算法仅允许使用恒定的额外空间。稳定意味着具有相同键的元素在排序数组中的顺序与原始数组中的顺序相同。 例如,朴素的合并排序是最坏的情况且稳定,但使用多余的空间。可以使标准的快速排序稳定,到位,但最坏的情况是。堆排序已经到位,最坏的情况是O(n \ ln n),但不稳定。 维基百科上有一张很好的图表,说明了哪种排序算法有哪些弊端。请注意,他们没有列出列出所有具有稳定性的三个条件的排序算法,最坏情况为O(n \ ln n)且处于适当状态。O(nlnn)O(nln⁡n)O(n \ln n)O(n)O(n)O(n)O(n2)O(n2)O(n^2)O(nlnn)O(nln⁡n)O(n \ln n)O(nlnn)O(nln⁡n)O(n \ln n) 我发现Katajainen,Pasanen和Teuhola撰写了一篇名为“ Practical in-place mergesort”的论文,该论文声称就地稳定的mergesortsort变种最坏的情况。如果我正确理解了它们的结果,它们将在数组的第一个和数组的后一个上递归使用(bottom-up?)mergesort,然后使用第二个作为合并的临时空间。我仍在阅读此书,因此感谢您提供有关我是否正确解释其结果的更多信息。O(nlnn)O(nln⁡n)O(n \ln n)1414\frac{1}{4}1212\frac{1}{2}1414\frac{1}{4} 我也会对最坏情况进行稳定快速排序感兴趣。据我了解,将快速排序修改为最坏的情况需要选择一个适当的枢轴,这将破坏原本通常会享有的稳定性。O(nlnn)O(nln⁡n)O(n \ln n)O(nlnn)O(nln⁡n)O(n \ln n) 这纯粹是理论上的兴趣,我没有实际应用。我只想知道具有所有这三个功能的算法。

13
选择第一门编程课程的语言的标准
作为大学水平的CS教育者,在第一门编程课程中要教授哪种编程语言经常会引起讨论。有成千上万种语言可供选择,许多宗教狂热(或崇拜)支持一种语言阵营高于另一种语言阵营。所有围绕每种编程语言的主观偏见使教育工作者很难选择一种语言。 我的问题是: 教育者可以使用什么客观标准来选择编程语言作为大学一年级编程课程的基础?这些标准的依据是什么? 注意:我不想看到编程语言的列表以及为什么它们是最好的使用语言。问题不是关于最佳语言,而是关于选择语言的标准。但是,答案可能是使用编程语言来说明特定点。 这个问题的灵感来自另一个被认为是题外的问题:https : //cs.stackexchange.com/questions/1946/criteria-for-choosing-a-first-programming-language。

10
可视化编程语言
我们大多数人都是使用“文本”编程语言(例如Basic,C / C ++和Java)学习编程的。我相信人类进行视觉思考会更加自然和有效。可视化编程允许开发人员通过操纵图形元素来编写程序。我猜想使用可视化编程应该可以提高代码质量并减少编程错误。我知道一些视觉语言,例如App Inventor,Scratch和LabView。 为什么开发人员没有主流的通用视觉语言?可视化编程的优缺点是什么?

1
如果在BFS实现中将队列更改为堆栈,是否会获得DFS?
这是广度优先搜索的标准伪​​代码: { seen(x) is false for all x at this point } push(q, x0) seen(x0) := true while (!empty(q)) x := pop(q) visit(x) for each y reachable from x by one edge if not seen(y) push(q, y) seen(y) := true 此处push和pop被假定为队列操作。但是,如果它们是堆栈操作呢?生成的算法是否按深度优先顺序访问顶点? 如果您对“这很琐碎”的评论投了赞成票,请您解释一下为什么这很琐碎。我觉得这个问题很棘手。

2
是否存在在多项式时间内可解决但在多项式时间内无法验证的任务?
我和我的一位同事刚刚打了一位我们教授的笔记。注释指出,有些任务可以在多项式时间内解决(属于PF类),但不能在多项式时间内验证(不在NPF类别中)。 要详细说明这些类:​​我们得到一些输入X并产生一些输出Y,使得(X,Y)在关系R中表示我们的任务。如果可以在多项式时间内获得X的Y,则该任务属于PF类。如果可以验证多项式长度证明书Z证明在多项式时间内元组(X,Y)与关系R有关,则该任务属于NPF类。 我们不是在谈论决策问题,答案只是“是”或“否”(如果某个字符串属于某种语言,则更为正式)。对于决策问题,似乎PF是NPF的适当子集。但是,对于其他任务,可能会有所不同。 您是否知道可以在多项式时间内解决但无法在多项式时间内验证的任务?

3
算法,该算法找到的从简单的路径的数目到在
任何人都可以建议我一个线性时间算法,需要作为输入向无环图和两个顶点和,并返回从简单路径的数目到在。 我有一个算法,其中将运行DFS(深度优先搜索),但如果DFS找到则它将不会更改路径出现的任何节点的颜色(从白色到灰色),以便如果这是任何其他路径的子路径,那么DFS也会再次通过该子路径。例如,考虑邻接列表,我们需要在其中找到从p到v的路径数。G = (V,E)G=(V,E)G=(V,E)sssŤttsssŤttGGGŤtts⇝ts⇝ts \rightsquigarrow tv p o s z o r s v s r r y y v v w zpppvvv posryvzworryvwzsszvposzorsvsrryyvvwzwz\begin{array}{|c|c c c|} \hline p &o &s &z \\ \hline o &r &s &v\\ \hline s &r \\ \hline r &y \\ \hline y &v \\ \hline …


9
上下文相关(类型1)语言的重要性是什么?
看到在乔姆斯基层次结构中,类型3语言可以由没有外部存储器的状态机(即有限自动机)识别,类型2由具有单个堆栈的状态机(即下推自动机)识别,类型0可以通过类型识别。一个具有两个堆栈的状态机(或者等效地,一个磁带,就像图灵机的情况一样),类型1的语言如何适合这张图片?而且,确定一种语言不仅是Type 0还是Type 1会带来什么优势?

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.