问题标签 [computer-science]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
39316 浏览

math - 平等和等价有什么区别?

0 投票
5 回答
12725 浏览

math - 阅读有关神经网络的书籍(并理解它们)所需的先决条件

我已经尝试学习神经网络一段时间了,我可以在线理解一些基本教程,并且我已经能够通过部分神经计算 - 简介,但即使在那里,我也对很多数学,在前几章之后完全超出了我的想象。即便如此,它也是我能找到的最少的“数学”一书。

不是我害怕数学什么的,只是我还没有学会我需要什么,我不确定我到底需要什么。我目前在我当地的大学就读,正在努力赶上我需要进入 Comp 的 MS 的课程。科学程序(我的学士学位是商业/信息。系统。)我还没有走得很远。根据大学的小课程描述,NN 实际上包含在关于模式识别的电气工程课程中(我觉得这门课程是 EE 对我来说很奇怪),其中有一些我不需要进入 MS Comp 的 EE 先决条件. 科学。程序。

我对这个话题非常感兴趣,并且知道我最终想了解更多关于它的信息,问题是,我不知道我首先需要知道什么。以下是我认为我可能需要的主题,但这只是无知的猜测:

  • 单变量微积分(我有过 Calc I 和 II,所以我想我已经在这里介绍过了,只是为了完整性而列出)
  • 多变量微积分
  • 线性代数(我还没有正式接受这个,但实际上可以理解我在维基百科和其他网站上设法了解的许多概念)
  • 离散数学(另一个我没有正式学过,但我自己学了一部分
  • 图论
  • 概率论
  • 贝叶斯统计
  • 电路设计
  • 其他数学?
  • 其他计算机科学主题

显然这里也有神经科学的成分,但是当他们谈论应用于神经网络的书籍时,我实际上并没有遇到任何困难,主要是因为它的概念性

简而言之,有人可以列出一条需要真正理解、阅读书籍并最终实现神经网络的半清晰路径吗?

0 投票
6 回答
1725 浏览

algorithm - 包络算法优化——放置圆圈的最佳位置

我必须以最佳方式解决以下问题。

输入数据为:

  • 平面中的 N 个点,以 (x, y) 对整数坐标的形式给出
  • M 点在同一平面上,以 (x, y) 对表示圆心的整数坐标给出。所有这些圆圈的边缘都有 (0, 0)。

我需要找到一种方法来隔离具有属性的多个圆,而不是对于任何“好”圆,前 N 个点中的任何点都不位于所选圆或所选圆的边缘。

点和圆的数量在 100,000 左右。用每个点检查每个圆的明显解决方案具有 O(N * M) 的复杂度,对于 100,000 个圆和 100,000 个点,在具有 64 位 SSE3 单精度代码的 Core 2 Duo 上大约需要 15 秒。我竞争的参考实现在相同的数据下只需要大约 0.1 秒。我知道参考实现是 O(Nlog N + Mlog M)。

我曾想过以下列方式优化我的算法。制作点数据的 2 个副本,并分别根据 x 坐标和 y 坐标对副本进行排序。然后仅使用位于由 [(xc - r, yc - r); 定义的正方形中的点。(xc + r, yc + r)],其中 (xc, yc) 是“当前”圆的中心,半径为 r。我可以使用二分搜索找到该区间中的点,因为现在我使用已排序的数据。这种方法的复杂度应该是 O(Nlog N + Mlog^2 N),确实比参考更快,但仍然明显慢。

我或多或少知道参考实现是如何工作的,但是有些步骤我不明白。我将尝试解释到目前为止我所知道的:

坐标为 (Xc, Yc) 的圆的半径为:

  • Rc = sqrt(Xc * Xc + Yc * Yc) (1)

那是因为 (0, 0) 在圆的边缘。

对于点 P(x, y) 在圆外,以下不等式必须为真:

  • sqrt((Xc - x)^2 + (Yc - y)^2) > Rc (2)

现在,如果我们将 (1) 中的 Rc 代入 (2),然后在我们进行一些简单计算后将不等式平方,我们得到:

  • Yc < 1/2y * (x^2 + y^2) - Xc * x/y (3.1) 对于 y > 0
  • Yc > 1/2y * (x^2 + y^2) - Xc * x/y (3.2) 对于 y < 0

对于从输入数据中选择的任何 (x, y),对于给定的圆 C(Xc, Yc),(3.1) 和 (3.2) 必须为真。

为简单起见,让我们做一些符号:

  • A(x, y) = 1/2y * (x^2 + y^2) (4.1)
  • B(x, y) = -x/y (4.2)
  • E(Xc) = 1/2y * (x^2 + y^2) - Xc * x/y = A(x, y) + Xc * B(x, y) (4.3)

我们可以看到,对于给定的圆 C(Xc, Yc),我们可以将 (3) 写为:

  • 对于 y > 0 的所有点,Yc < MIN(E(Xc)) (5.1)
  • 对于 y < 0 的所有点,Yc > MAX(E(Xc)) (5.2)

我们可以看到 E(Xc) 是关于 Xc 的线性函数,具有 2 个参数 - A(x, y) 和 B(x, y)。这意味着基本上 E(Xc) 在欧几里得空间中表示具有 2 个参数的线族。

现在来了我不明白的部分。他们说,由于上一段中所述的属性,我们可以使用包络算法在 O(1) 分摊时间而不是 O(N) 时间内计算 MIN() 和 MAX()。我不知道信封算法如何工作。

关于如何实现信封算法的任何提示?

提前致谢!


编辑:

问题不在于数学意义上的信封是什么——我已经知道了。问题是如何在比 O(n) 更好的时间内确定包络,显然它可以在摊销 O(1) 中完成。

我有计算包络所需的一系列函数,并且我有一个包含所有可能参数的数组。如何以最佳方式解决最大化问题?

再次感谢!

0 投票
9 回答
74964 浏览

foreach - foreach 和 map 有区别吗?

好吧,这更像是一个计算机科学问题,而不是基于特定语言的问题,但是 map 操作和 foreach 操作之间有区别吗?还是它们只是同一事物的不同名称?

0 投票
10 回答
3194 浏览

accessibility - 对于盲人程序员来说,有哪些好的计算机科学资源?

我是一个完全失明的人,想了解更多计算机科学的理论方面。我有一个介绍数据结构类和一般介绍编程,但想了解更多关于软件设计、高级数据结构和编译器设计等内容。我想把它作为一门自学课程来做,而不是作为大学课程的一部分。

不幸的是,我通常从那里得到我的教科书的盲人和阅读障碍者录音中的计算机科学教科书并不多。我会很感激任何最好是免费的电子资源,它可以帮助我获得更多的计算机科学教育,而不是许多编程网站似乎关注的最新语言或平台。

0 投票
8 回答
465 浏览

algorithm - 编写桌面应用程序所需的最低 CompSci 知识

作为一名业余程序员已经 3 年(主要是 Python 和 C)并且从未编写过超过 500 行代码的应用程序,我发现自己面临着两种选择:

(1) 学习数据结构和算法设计的基本知识,这样我就可以成为一名 33 岁的计算机科学家。

(2) 学习 Qt,这将帮助我构建我一直渴望构建的项目。

对于学习(1),大家似乎都推荐阅读CLRS。不幸的是,阅读 CLRS 至少需要一年的学习时间(或者更多,我不是 Peter Krumins)。我也明白,要使用 (2) 完成任何中等复杂的任务,我至少需要了解 (1) 的基础知识,这让我想到了我的问题:假设我使用 C++ 作为选择的编程语言,哪些部分CLRS 会给我足够的算法和数据结构知识,以便使用 (2) 处理大型项目?

换句话说,我需要一份对日常应用程序编程任务绝对必要的理论 CompSci 主题列表。此外,我想将 CLRS 用作方便的参考,因此我不想跳过任何对理解本书后面部分至关重要的材料。

不要在这里误会我的意思。离散数学和 CompSci 的理论基础已经在我的“TODO: URGENT”列表上大约 6 个月了,但由于大学工作,我没有足够的时间。很长一段时间后,我有 15 天的假期来做任何我喜欢做的事,我想用这 15 天来构建我真正想要构建的应用程序,而不是坐在办公桌前,手里拿着笔和纸,试图写下来教科书问题的解决方案。

(顺便说一句,关于算法的少数学多代码资源将受到高度赞赏。我刚从高中毕业,我的数学还没有达到应有的水平。)

谢谢 :)

0 投票
2 回答
1153 浏览

language-agnostic - 为什么我有时会听到“词法变量”这个词?

我已经多次看到术语“词法变量”,主要是在闭包的上下文中。Paul Graham 在他关于 Lisp 的书中使用这个术语来指代使用 let 表达式定义的变量。

我知道词法作用域是静态作用域的另一个名称。词法变量只是在程序单元的引用环境中可见的变量吗?

我希望在这个假期用这个词给我的朋友和家人留下深刻的印象,有人可以帮帮我吗?

0 投票
5 回答
504 浏览

video - 作为开发人员,哪些演讲/视频吸引了您?

作为开发人员,哪些演讲/视频吸引了您?

我真的很喜欢 Clay Shirky 的演讲:
http
://www.youtube.com/watch?v=Xe1TZaElTAs 以及 David 的 Startup School 演讲:
http ://www.omnisio.com/startupschool08/david-heinemeier-hansson-在-startup-school-08

你推荐哪些?如果可能,请提供链接和简短描述。

编辑:我知道有一个线程什么是很棒的与编程相关的在线讲座/视频?..但我正在寻找更一般的,而不是专门针对编程的谈话/视频。

0 投票
8 回答
9767 浏览

computer-science - 讲座以 MP3/播客的形式提供?

有没有特别好的大学讲座可以在线下载为 MP3(或其他音频格式)?我特别有兴趣听到一些我在工程学位上没有上过的更高级的课程,比如编译器、操作系统、人工智能、密码学等。

还有一个关于CS 视频讲座的问题,但我想在我的 MP3 播放器上听讲座。

0 投票
5 回答
2961 浏览

database - 可以重复应用并产生相同结果的数据库操作?

我正在画一个空白,或者像某些人所说的那样,有一个高级的时刻。我知道这个概念有一个正式的定义和一个名称,如果重复运行,在数据库中运行的 db 操作(存储过程)将产生相同的结果。

这是数学家的自反、对称、传递等类型的东西。