小编Dud*_*ude的帖子

如何在dijkstra算法的O(log n)时间中更新优先级队列中的密钥?

在过去的一周中,我一直在研究dijkstra的算法,其中一个在Java中具有正确的运行代码。它使用数组来计算标准的findMin函数,该函数可以为您提供距离最小的顶点。显然它是O(n),现在我想使用Priority Queue(Min Heaps)来实现它

我的思考过程是:

while (there are unseen Vertex)
{

    vertex= get TheVertex WithSmallest Distance Yet;//(In can be done in O(log n) using heap)

  for this vertex {

    find all of the adjacent edges and traverse them.

    for a particular vertex which is not there in heap yet{

        Simply add it in the queue;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果堆中存在特定的顶点,则可以考虑找到的Min节点的距离来更新其距离。

现在,我的问题是如何在O(log n)时间更新堆中的特定元素。

我们在O(1)时间找不到该元素吧?

在像我这样的幼稚实现中,它是O(n),

那么,谁能建议可以采取什么措施来解决这一瓶颈呢?我们如何在O(log n)时间中更新堆中的特定顶点?(类似地,我们如何在O(1)时间中找到特定元素)

algorithm dijkstra priority-queue data-structures

5
推荐指数
1
解决办法
3863
查看次数

mac的WC命令显示少一个结果

我有一个超过60MB大小的文本文件.它有5105043行的条目,但是当我在做wc -l时,它只给出了5105042个结果,比实际结果少了一个.有谁知道为什么会这样?

当文件大小很大时,它是常见的吗?

unix

5
推荐指数
1
解决办法
3812
查看次数

tr命令无法指示输出?

我有一个文件file.txt女巫有这些条目

纽约

LA

SF

我运行命令tr'\n'','<file.txt并成功删除了所有换行符.

我需要在同一个file.txt文件中输出所有这些,所以我重定向了这样的输出

tr'\n'','<file.txt> file.txt,

但它没有在file.txt中放置任何内容,结果文件为空,任何人都可以向我解释为什么tr的输出因重定向而丢失.

linux sed tr

5
推荐指数
1
解决办法
5906
查看次数

在java中缓存内存中大文件的数据

您好我正在研究自然语言处理的Spelling Corrector项目,我应该从一个大小为6.2 MB 1 GB 的文件中读取数据.虽然它工作正常,但我面临的问题是,每次运行java程序时,我都必须将数据加载到内存中,并且每次运行时都需要相同的时间.

有没有办法将这些数据缓存到java中的内存中?有人可以建议我解决一些问题吗?

基本上我想知道的是什么是在内存中存储大文件内容的过程,以便我不必再读它?让我们说文件是GB.

java algorithm garbage-collection nlp memory-management

4
推荐指数
1
解决办法
4163
查看次数

telnet一个localhost

嗨,我想了解像ssh和telnet这样的网络命令.不幸的是,除了我自己以外,我没有任何其他系统,所以我只使用localhost进行测试.虽然当我尝试在本地telnet时能够在本地执行ssh但是我收到此错误

我正在尝试的命令是telnet localhost,我没有输入任何端口号.

试试127.0.0.1 ......

telnet:连接到地址127.0.0.1:连接被拒绝

试试fe80 :: 1 ......

telnet:连接到地址fe80 :: 1:连接被拒绝

telnet:无法连接到远程主机

如果我能在本地做ssh,那么同样适用于telnet吗?

linux telnet

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

如何在这个numpy的例子中应用广播?

我正在学习numpy并且对广播感到有点困惑,这是我的设置.我有两个矩阵

>>> y=np.array([1,2,3])
>>> v = np.array([1,2,3])
>>> r=np.reshape(v, (3, 1))
Run Code Online (Sandbox Code Playgroud)

因此r是(3*1)矩阵,而y是秩为1的矩阵,其形状为(3,).

如果我做y.dot(r),我得到14,假设numpy在y上应用广播,使它(1*3)然后它用r(3*1)做点积,所以得到的矩阵将是1*1.

但是,当我执行r.dot(y)时,它会抛出错误.为什么不在这里做同样的事情?应该使y(1*3)和r为(3*1),它应该给出3*3矩阵.这个推理出了什么问题?

python numpy numpy-broadcasting

4
推荐指数
1
解决办法
147
查看次数

'numpy.ndarray'对象在尝试生成boxplot时没有属性'find'?

我正在尝试生成一个盒子图.这是我的代码,数据如下:

def loadData(fileName):
 data = pd.read_csv(fileName, quotechar='"')
    cols = data.columns.tolist()

    cols = cols[1:] + [ cols[0] ]
    data = data[cols]
    return data.values

cols={}
cols['close/last']=0
cols['volumne']=1
cols['open']=2
cols['high']=3
cols['low']=4
cols['date']=5

fileName = 'microsoft.csv'

def boxplot():
    data1 = loadData(fileName)
    ithattr1 = cols['high']
    ithattr2 = cols['close/last']
    dataset1 = data1[:,ithattr1]
    dataset2 = data1[:,ithattr2]

    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.boxplot([dataset1,dataset2])
    plt.show()


boxplot()
Run Code Online (Sandbox Code Playgroud)

数据是浮点数,由输出的print命令验证 <type 'float'>.在运行代码时,我收到以下错误(下面的完整堆栈跟踪)

AttributeError: 'numpy.ndarray' object has no attribute 'find'

我的数据(例如in dataset1)看起来像这样

[52.21 52.2 52.44 52.65 52.33 51.58 51.38 51.68 …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

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

用于检查String是否具有平衡括号的递归算法

可能重复:
基本递归,检查平衡括号

我最近在算法设计手册中遇到了这个问题,即使基于堆栈的算法非常简单,我想为这个问题写一个递归算法,但是由于在递归中是一个菜鸟我不能提出太多,所以可以有人帮我解决这个问题吗?

PS我只看到关于这个问题的其他帖子,但是他们不是很有效率,而且那些人是非常非常有说服力的.

algorithm recursion solution data-structures

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

在Java中复制数据的速度更快?

我被赋予了从服务器复制数据的任务.我正在使用BufferedInputStream和输出流来复制数据,我正在逐字节地进行.即使它正在运行但复制数据需要花费很长时间,因为其中一些数据是100的MB,所以肯定它不会起作用.任何人都可以建议我Byte副本的Byte副本,以便我的代码可以复制几百MB的文件.缓冲区是2048.

以下是我的代码的样子:

static void copyFiles(SmbFile[] files, String parent) throws IOException {

  SmbFileInputStream input = null;
  FileOutputStream output = null;
  BufferedInputStream buf_input = null;
  try {
    for (SmbFile f : files) {
      System.out.println("Working on files :" + f.getName());
      if (f.isDirectory()) {

        File folderToBeCreated = new File(parent+f.getName());
        if (!folderToBeCreated.exists()) {
          folderToBeCreated.mkdir();
          System.out.println("Folder name " + parent
                + f.getName() + "has been created");
        } else {
          System.out.println("exists");

        }

        copyFiles(f.listFiles(), parent +  f.getName());
      } else {

        input = (SmbFileInputStream) f.getInputStream();

        buf_input = …
Run Code Online (Sandbox Code Playgroud)

java performance file-io copy bufferedinputstream

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

在NoSQL和RDBMS中扩展?

我试图了解可伸缩性方面的nosql和关系数据库的体系结构差异。

我对可伸缩性(水平)的理解是,随着数据的增长,我们添加了越来越多的服务器来平均分配负载。

在键值NO-SQL数据库中,我们可以添加新机器并拆分键。但是,到目前为止,我所看到的所有示例都是为了理解NO-SQL数据库中的最终一致性,它们都具有主从配置,在该配置中,数据将在所有从属服务器之间复制,而不是在各种机器之间进行拆分以实现可伸缩性。

我的问题是,使用复制整个数据不会破坏No-SQL数据库的可扩展性吗?在RDBMS中也可以使用一个主机(用于写入)和一个从属(用于读取)来完成相同的工作,在这方面,NO-SQL如何更具可伸缩性?

database scalability nosql

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