小编Pau*_* Lo的帖子

为图中的每个节点计算距离为n的未访问节点

对于大图中的每个点,我试图创建一个列表,其中包含距离n起始节点一定距离的未访问节点的数量.示例输出是: [1,3,6] 这意味着在距离0处有起始节点本身,在距离1处有3个新的(未探测的)节点等.

如果你只有一个起点,这很容易:你只需在广度优先搜索的基础上增加一个shell计数器.当我必须为图中的每个节点执行此操作时,问题就开始了.因为我的图形很大(> 100000个节点),所以对每个点执行上述例程变得相当慢.

我首次尝试优化这个是检查节点上的列表a是否可以从所有邻居的列表构建a,但到目前为止我没有运气,部分原因是图中的周期.我希望你们中的一些人可能有一些不错的想法,也许还有一些我可以缓存的额外信息.

我的问题:如果您知道必须为每个节点执行此操作,是否有一种优化此类搜索的方法?

algorithm graph breadth-first-search shortest-path

6
推荐指数
1
解决办法
203
查看次数

在 ndarray python 中获取第一个维度

假设我有一个像这样的 ndarray :

    a = [[20 43 61 41][92 23 43 33]]
Run Code Online (Sandbox Code Playgroud)

我想获取这个 ndarray 的第一个维度。所以我尝试这样的事情:

    a[0,:]
Run Code Online (Sandbox Code Playgroud)

我希望它会返回这样的结果:

    [[20 43 61 41]]
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误:

   TypeError: 'numpy.int32' object is not iterable
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?

python numpy multidimensional-array

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

Python中的页面排名

我是Python的新手,我正在尝试根据Python中的这个等式计算页面排名向量: 在此输入图像描述

其中Pi(k)是k-Th迭代后的Page-rank向量,G是Google矩阵,H是超链接矩阵,a是悬空节点向量,α = 0.85,e是1的向量.

使用G进行计算需要花费大量时间,而使用超链接矩阵H(稀疏矩阵)应该花费更少的时间.

这是我的代码:

for i in range(1, k_steps+1):
  for j in range(0, len(dictionary_urls)):
    for k in range(0, len(dictionary_urls)):
        if matrix_H[k][j] != 0:
            matrix_pi_k[i][j] += matrix_pi_k[i-1][k] * float(matrix_H[k][j])
        alpha_pi_k_a += matrix_pi_k[i-1][k]*float(vector_a[k])

    alpha_pi_k_a = alpha_pi_k_a * float(alpha)
    alpha_pi_k_a = alpha_pi_k_a + float((1- alpha))
    alpha_pi_k_a = alpha_pi_k_a / float(len(dictionary_urls))
    matrix_pi_k[i][j] = matrix_pi_k[i][j] * float(alpha)

    matrix_pi_k[i][j] = matrix_pi_k[i][j] + float(alpha_pi_k_a)
    alpha_pi_k_a = 0
Run Code Online (Sandbox Code Playgroud)

k_steps是所需的迭代次数.

dictionary_links包含所有URL.

代码执行后,matrix_pi_k应该具有所有Pi向量 …

python algorithm pagerank

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

关于“cat <<- _EOF_”的 shell 脚本

shell 脚本出错

line 6: warning: here-document at line 2 delimited by end-of-file (wanted `_EOF_')
Run Code Online (Sandbox Code Playgroud)

这是代码:

#!/bin/bash
    cat <<- _EOF_  
        test:  
        1. test  
        0. test test   
    _EOF_
Run Code Online (Sandbox Code Playgroud)

但这是对的。

#!/bin/bash
cat <<- _EOF_  
    test:  
    1. test  
    0. test test   
_EOF_  
Run Code Online (Sandbox Code Playgroud)

shell cat

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

CyclicBarrier无法按预期工作

我试图模拟一场triatlon比赛,CyclicBarrier但它不能按预期工作,我不知道为什么.

比赛的每个部分都必须等到所有选手都完成前一个比赛,但似乎它永远等待.

这是第一阶段的代码:

class Runner implements Runnable
{
    private CyclicBarrier bar = null;
    private static int runners;
    private static double[] time;
    private int number;
    public static String name;

    public Runner(int runners, String name)
    {
        time = new double[runners];
        for (int i=0; i<runners; i++)
            time[i] = 0;
        this.name= name;
    }

    public Runner(CyclicBarrier bar, int number)
    {   
        this.bar = bar;
        this.number = number;
    }

    public void run()
    {
        try { int i = bar.await(); } 
                   catch(InterruptedException e) {} 
                       catch (BrokenBarrierException …
Run Code Online (Sandbox Code Playgroud)

java concurrency cyclicbarrier

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

如何将字符串转换为java列表?

我有一个像这样的字符串:

"[1,2,3,4,5,6,7,8,9]"
Run Code Online (Sandbox Code Playgroud)

如何将其转换为List,可以是int列表或字符串列表:

[1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)

我尝试使用Gson:

List list = new Gson().fromJson(string, List.class);
Run Code Online (Sandbox Code Playgroud)

它让我:

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]
Run Code Online (Sandbox Code Playgroud)

我可以将double转换为int但我确信有更好的方法.

java string json list gson

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

有更快的方法吗?(python twitter位置)

我正在尝试返回一个字典,汇总最近的州中心的推文.我正在迭代所有推文,并且对于每条推文,我正在检查所有状态以查看哪个状态最接近.

什么是更好的方法来做到这一点?

def group_tweets_by_state(tweets):
    """

    The keys of the returned dictionary are state names, and the values are
    lists of tweets that appear closer to that state center than any other.

    tweets -- a sequence of tweet abstract data types """


    tweets_by_state = {}
    for tweet in tweets:
        position = tweet_location(tweet)
        min, result_state = 100000, 'CA'
        for state in us_states:
            if geo_distance(position, find_state_center(us_states[state]))< min:
                min = geo_distance(position, find_state_center(us_states[state]))
                result_state = state
        if result_state not in tweets_by_state:
            tweets_by_state[result_state]= []
            tweets_by_state[result_state].append(tweet)
        else: …
Run Code Online (Sandbox Code Playgroud)

python algorithm twitter python-twitter

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

你能解释一下在两个十六进制线之间使用按位运算符会发生什么吗?

我从Java教程得到了这个,我迷路了,我只是不明白当你使用&运算符时会发生什么

class BitDemo {
public static void main(String[] args) {
    int bitmask = 0x000F;
    int val = 0x2222;
    // prints "2"
    System.out.println(val & bitmask);
}
}
Run Code Online (Sandbox Code Playgroud)

我如何使两个整数(位掩码和val)显示14?我没有关于你如何操纵它们来制作数字的概念.

java bit-manipulation

0
推荐指数
2
解决办法
1566
查看次数