小编Mar*_*ang的帖子

什么是PageRanks Big-O复杂性?

我正在寻找PageRank算法的Big-O复杂性.我几乎找不到任何东西,我刚刚发现O(n+m)(n- 节点数,m- 弧/边数)但我现在还不相信这种复杂性.

我认为它缺少收敛标准.我不认为这是一个常数,我认为收敛取决于图形直径.将Big-O用于一次迭代可能就足够了,然后收敛并不重要.

然而,PageRank需要触及每个节点并聚合每个传入的排名,所以我期望运行时间O(n * m).

我错过了什么?有没有人知道PageRank的Big-O复杂性的宝贵来源?

提前致谢.

algorithm pagerank graph time-complexity graph-algorithm

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

Spark:计数共现 - 用于对大型集合进行有效多次通过过滤的算法

有两列的表books和readers这些书籍,其中books和readers分别是图书和阅读器的ID,:

   books readers
1:     1      30
2:     2      10
3:     3      20
4:     1      20
5:     1      10
6:     2      30
Run Code Online (Sandbox Code Playgroud)

记录book = 1, reader = 30表示id = 1用户已阅读该书id = 30.对于每本书对,我需要计算阅读这两本书的读者数量,使用此算法:

for each book
  for each reader of the book
    for each other_book in books of the reader
      increment common_reader_count ((book, other_book), cnt)
Run Code Online (Sandbox Code Playgroud)

使用该算法的优点是,与将所有书籍组合计数为2相比,它需要少量操作.

为了实现上述算法,我将这些数据组织成两组:1)用书键入,包含每本书的读者的RDD和2)由读者键入的RDD,包含由每个读者读取的书籍的RDD,例如在以下程序中:

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import …
Run Code Online (Sandbox Code Playgroud)

algorithm filtering scala group-by apache-spark

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

一种简单的方法来模拟松散定义的Python dict对象

有没有一种简单的方法来在Python中模拟松散定义的dict对象?例如,如何在给定dict的情况下轻松表达input,我想检查其中的每个值是否符合特定的元定义,如最小值和最大值,长度和类型?

能够这样做可能很方便,例如,在编写测试时.

在mock(Python版本3.3+中的unittest.mock)中,可以指定值可以是ANY值,例如

>>> mock = Mock(return_value=None)
>>> mock('foo', bar=object())
>>> mock.assert_called_once_with('foo', bar=ANY)
Run Code Online (Sandbox Code Playgroud)

但是,如果bar上面应该是类似dict的对象,就像

>>> {'baz': <an integer between -3 and 14>, 'qux': <'yes' or 'no'>}
Run Code Online (Sandbox Code Playgroud)

python unit-testing python-mock python-unittest

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

如何实现"语音"式搜索

目前我正在尝试增强我的搜索算法.

为了更好地理解,这里是它背后的当前逻辑:
我们在db中有附加n个关键字的对象.在数据库中,这是通过2个表(Object,Keyword)来解决的,其中Keyword-table的FK为Object.当我构建我的搜索树时,我创建了一个对象的所有关键字的行值(ad:remove umlauts,convert to lower-case,...).NormalizeSearchPattern()使用搜索模式完成相同的convertion-routine().我支持AND搜索和关键字,最小长度只有2个字符!

搜索算法目前是fast-reverse-search(此示例未优化)的变体:

bool IsMatch(string source, string searchPattern)
{
    // example:
    // source: "hello world"
    // searchPattern: "hello you freaky funky world"
    // patterns[]: { "hello", "you", "freaky", "funky", "world" }

    searchPattern = NormalizeSearchPattern(searchPattern);
    var patterns = MagicMethodToSplitPatternIntoPatterns(searchPattern);
    foreach (var pattern in patterns)
    {
        var success = false;
        var patternLength = pattern.Length;
        var firstChar = pattern[0];
        var secondChar = pattern[1];

        var lengthDifference …
Run Code Online (Sandbox Code Playgroud)

c# full-text-search

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

在Ubuntu 11上使用Apache 2上的virtualenv的多个Django应用程序

我已经virtualenv使用WSGIPythonHome指向我virtualenv位置的指令在Ubuntu和Apache 2上成功设置了一个Django应用程序.现在我需要创建一个单独的Django应用程序,它将在同一个Ubuntu服务器上的不同端口上的Apache上运行.我想知道是否有办法让Apache运行多个WSGIPythonHome实例?目前WSGIPythonHome设置为一个virtualenv根,第二个Django应用程序上的导入存在问题...

apache django mod-wsgi virtualenv

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

在三角网中检测四面体?

假设我有一个网格,其中的线条连接顶点的方式可以将其拆分为四面体.是否有一个算法可以用来检测给定顶点和线条的四面体的存在?(即,如果网格带有连接线,则输出一组具有相同形状和体积的四面体.)

编辑:不允许四面体交叉.

algorithm math 3d geometry mesh

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

用JavaScript加密不会在C#中解密

我正在尝试在JavaScript中使用RSA加密,然后在C#中对其进行解密。在JavaScript中,我正在使用jsencrypt库。在C#中,我使用API​​“充气城堡”。当我用相同的语言进行加密/解密时,一切正常。解密时会得到正确的文本。当我尝试用C#解密用JavaScript加密的内容时,我什么也收不到。我确信两者之间的键是相同的。代码示例如下。任何有关如何解决此问题的帮助将不胜感激。

的JavaScript

//using jsencrypt.min.js

var encrypt = new JSEncrypt();
encrypt.setPublicKey($('#pubkey').val());
var encrypted = encrypt.encrypt($('#input').val());
Run Code Online (Sandbox Code Playgroud)

将我从JavaScript“加密”中获得的值用于C#中的“ encyp”

    AsymmetricCipherKeyPair KeyParameterPrivate;
        byte[] cipheredBytes = Convert.FromBase64String(encyp);


        string privateKeyFileName = @"C:\private.pem";
        using (var fileStream2 = File.OpenText(privateKeyFileName))
        {
            PemReader pemReader2 = new Org.BouncyCastle.OpenSsl.PemReader(fileStream2);
            KeyParameterPrivate = (Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair)pemReader2.ReadObject();
        }
        IAsymmetricBlockCipher cipher2 = new Org.BouncyCastle.Crypto.Engines.RsaEngine();
        RsaKeyParameters privateKey2 = (RsaKeyParameters)KeyParameterPrivate.Private;
        //cipher.Init(false, publicKey4);
        cipher2.Init(false, privateKey2);
        byte[] deciphered = cipher2.ProcessBlock(cipheredBytes, 0, cipheredBytes.Length);
        string decipheredText = utf8enc.GetString(deciphered);
Run Code Online (Sandbox Code Playgroud)

javascript c# encryption cryptography bouncycastle

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

R ggplot2:使用stat_summary(mean)和对数标度

随着时间的推移,我有一堆测量值,我想在R中绘制它们.这是我的数据样本.我为4个时间点分别进行了6次测量:

values <- c (1012.0, 1644.9, 837.0, 1200.9, 1652.0, 981.5, 
    2236.9, 1697.5, 2087.7, 1500.8,
    2789.3, 1502.9, 2051.3, 3070.7, 3105.4, 
    2692.5, 1488.5, 1978.1, 1925.4, 1524.3,
    2772.0, 1355.3, 2632.4, 2600.1)
time <- factor (rep (c(0, 12, 24, 72), c(6, 6, 6, 6)))
Run Code Online (Sandbox Code Playgroud)

这些数据的规模是任意的,实际上我将对其进行标准化,使得t = 0的平均值为1.

norm <- values / mean (values[time == 0])
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.使用ggplot,我绘制了各个点,以及在每个时间点通过平均值的线:

require (ggplot2)
p <- ggplot(data = data.frame(time, norm), mapping = aes (x = time, y = norm)) +
    stat_summary (fun.y = mean, geom="line", mapping = aes …
Run Code Online (Sandbox Code Playgroud)

statistics logarithm r ggplot2

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

对数图

考虑以下 :

daList={{1., 588.956}, {2.15443, 581.347}, {4.64159, 573.648}, 
        {10.,560.676}, {21.5443, 552.881}, {46.4159, 547.851}, 
        {100.,544.908}, {215.443, 543.407}, {464.159, 542.358}, 
        {1000., 541.452}}


ListPlot[daList, PlotStyle -> Directive[Thick, Red]]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何让每个点沿x轴均匀分布.我猜一个对数范围?

plot wolfram-mathematica

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

解决一次查找最大值的算法

问题:我们得到一组2n个整数,其中这个整数数组中的每一对分别代表恐龙的出生年份和死亡年份.我们要考虑的有效年份范围是[-100000到2005].例如,如果输入是:

-80000 -79950 20 70 22 60 58 65 1950 2004
Run Code Online (Sandbox Code Playgroud)

这意味着第一只恐龙的出生年份为-80000,死亡年份为-79950.同样,第二只恐龙的寿命为20至70岁,依此类推.

我们想知道有史以来最多的恐龙活着.在给定上述2n个整数数组的情况下,编写一个计算方法.

谁能建议找出解决方案的方法?

编辑尝试使用this->粗略代码

#include<stdio.h>
#include<stdlib.h>
#include <stddef.h>
static void insertion_sort(int *a, const size_t n) {
    size_t i, j;
    int value;
    for (i = 1; i < n; i++) {
        value = a[i];
        for (j = i; j > 0 && value < a[j - 1]; j--) {
            a[j] = a[j - 1];
        }
        a[j] = value;
    }
}


int  main(){
    int arr[10]={-80000,-79950,20,70,22,60,58,65,1950,2004};
    int strt[5],end[5];
    int bal[5];
     int i,j,k,l,m,length; …
Run Code Online (Sandbox Code Playgroud)

language-agnostic algorithm

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