小编tem*_*def的帖子

如果你失明了,你怎么编程?

视觉是大多数程序员认为理所当然的感官之一.大多数程序员会花几个小时看电脑显示器(特别是在他们在区域的时候),但我知道有盲人程序员(例如目前在谷歌工作的电视拉曼).

如果您是一个盲人(或者慢慢变得盲目),您将如何设置开发环境来帮助您进行编程?

(请回答一个建议.这个问题的目的是将好的想法带到最顶层.此外,屏幕阅读器可以更早地阅读好的想法.)

workflow development-environment accessibility blind

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

为什么quicksort比mergesort更好?

我在接受采访时被问到这个问题.他们都是O(nlogn),但大多数人使用Quicksort而不是Mergesort.这是为什么?

language-agnostic sorting algorithm mergesort quicksort

351
推荐指数
13
解决办法
19万
查看次数

LL和LR解析有什么区别?

任何人都可以给我一个LL解析与LR解析的简单例子吗?

algorithm parsing ll-grammar lr-grammar

216
推荐指数
4
解决办法
7万
查看次数

如果文件夹尚不存在,如何使用Bash创建文件夹?

#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
    mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.有人可以帮忙吗?

directory bash

165
推荐指数
6
解决办法
28万
查看次数

有没有人真正有效地实施了斐波纳契堆?

有没有人曾经实施过Fibonacci-Heap?几年前我这样做了,但它比使用基于阵列的BinHeaps要慢几个数量级.

那时候,我认为这是一个很有价值的教训,研究的结果并不像它声称的那样好.然而,许多研究论文声称他们的算法的运行时间基于使用Fibonacci-Heap.

你有没有设法产生有效的实施?或者你使用的数据集如此之大,以至于Fibonacci-Heap效率更高?如果是这样,一些细节将不胜感激.

language-agnostic algorithm performance data-structures fibonacci-heap

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

为什么C++ rand()似乎只生成相同数量级的数字?

在用C/C++编写的小应用程序中,我遇到了一个问题 rand函数也许是种子:

我想生成一系列具有不同顺序的随机数,即具有不同的对数值(基数为2).但似乎所有产生的数字都是相同的顺序,波动在2 ^ 25到2 ^ 30之间.

是因为rand()用Unix时间播种,现在是一个相对较大的数字?我忘记了什么?我rand()只在一开始播种一次main().

c c++ random math

146
推荐指数
7
解决办法
9724
查看次数

加载骰子的数据结构?

假设我有一个n侧加载的模具,当我滚动它时,每个侧面k都有一些概率p k.我很好奇是否存在静态存储此信息的良好算法(即,对于一组固定的概率),以便我可以有效地模拟模具的随机滚动.

目前,我有一个针对此问题的O(lg n)解决方案.想法是存储所有k的前k个边的累积概率的表,它们生成范围[0,1)中的随机实数并且对表执行二元搜索以获得其累积的最大索引值不大于所选值.我更喜欢这个解决方案,但运行时没有考虑概率似乎很奇怪.特别是,在一方总是出现或值均匀分布的极端情况下,可以使用朴素的方法在O(1)中生成滚动的结果,尽管我的解决方案仍然需要采用多个步骤的对数.

有没有人对如何以某种方式在运行时"自适应"的方式解决这个问题有任何建议?

编辑:基于这个问题的答案,我写了一篇文章,描述了这个问题的许多方法,以及他们的分析.看起来Vose的别名方法的实现给出了Θ(n)预处理时间和每次掷骰的O(1)时间,这确实令人印象深刻.希望这是对答案中包含的信息的有用补充!

language-agnostic random algorithm probability data-structures

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

使用Dijkstra算法的负权重

我试图理解为什么Dijkstra的算法不适用于负权重.阅读最短路径上的示例,我试图找出以下场景:

    2
A-------B
 \     /
3 \   / -2
   \ /
    C
Run Code Online (Sandbox Code Playgroud)

来自网站:

假设边缘全部从左向右指向,如果我们从A开始,Dijkstra算法将选择最小化d(A,A)+长度(边缘)的边(A,x),即(A,B).然后设置d(A,B)= 2并选择另一个边(y,C),使d(A,y)+ d(y,C)最小化; 唯一的选择是(A,C),它设置d(A,C)= 3.但它从未找到从A到B的最短路径,通过C,总长度为1.

我无法理解为什么使用Dijkstra的以下实现,d [B]将不会更新为1(当算法到达顶点C时,它将在B上运行放松,看到d [B]等于2,因此更新它的价值1).

Dijkstra(G, w, s)  {
   Initialize-Single-Source(G, s)
   S ? Ø
   Q ? V[G]//priority queue by d[v]
   while Q ? Ø do
      u ? Extract-Min(Q)
      S ? S U {u}
      for each vertex v in Adj[u] do
         Relax(u, v)
}

Initialize-Single-Source(G, s) {
   for each vertex v ? V(G)
      d[v] ? ?
      ?[v] …
Run Code Online (Sandbox Code Playgroud)

algorithm dijkstra shortest-path graph-algorithm

106
推荐指数
5
解决办法
9万
查看次数

什么会导致算法具有O(log log n)复杂度?

此早期问题解决了可能导致算法具有O(log n)复杂性的一些因素.

什么会导致算法具有时间复杂度O(log log n)?

algorithm complexity-theory big-o logarithm time-complexity

94
推荐指数
1
解决办法
7万
查看次数

什么是假多项式时间?它与多项式时间有何不同?

什么是假多项式时间?它与多项式时间有何不同?在伪多项式时间运行的一些算法具有运行时间,如O(nW)(对于0/1背包问题)或O(√n)(对于试验除法); 为什么不算作多项式时间?

algorithm big-o time-complexity

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