小编Man*_*agu的帖子

O(polylog(n))是什么意思?特别是polylog(n)是如何定义的?

简介:
当学术(计算机科学)论文说"O(polylog(n))"时,它们是什么意思?我不会对"Big-Oh"符号感到困惑,我非常熟悉它,而是使用polylog(n)函数.他们不是在谈论我认为的复杂分析函数Li s(Z).或者是他们?也许完全不同的东西?

更多细节:
主要是出于个人兴趣,我最近一直在查看关于压缩后缀阵列的各种论文,例如后向搜索的优点 - 高效的辅助内存和压缩后缀阵列的分布式实现.所述的计算复杂度估计有时涉及polylog(n),这是我不熟悉的函数.

维基百科给出了polylog s(z)的定义,它似乎主要是关于复杂分析和解析数论.我怀疑它与压缩文件中的polylog(n)无关,尽管我更喜欢听到知识渊博的人的其他信息.如果是这种情况,为什么省略下标是否合理?

我唯一的猜测是,O(polylog(n))可能意味着"渐近于log(n)的多项式函数".但这只是一个猜测:我没有证据证明这一点,并且它会滥用记谱法来启动.

在任何情况下,非常感谢指向合理权威定义的链接!

compression algorithm complexity-theory full-text-search

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

如何在Qt中绘制半透​​明矩形?

我试图在图像上绘制一个半透明的矩形作为亮点.不幸的是,我尝试的任何东西似乎都无法执行我想要的透明效果.相反,我只是得到实心填充的矩形,没有透明度.

这就是我现在正在做的事情:

void PageView::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QImage img=...;

    painter.drawImage(0, 0, img);
    ...
    // draw a light blue, transparent rectangle to highlight
    QRect rect=...;
    painter.fillRect(rect, QColor(128, 128, 255, 128));
    ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,对我来说,这会绘制一个蓝色矩形,而不是我期望的半透明矩形,因为它给出了QBrush一个alpha值.

我也试过画中间片QImage或者QPixMap玩弄painter.setCompositionMode(...).到目前为止没有运气.

因此我的问题是:我如何说服Qt为我绘制一个半透明的矩形PageView

编辑:如果它是相关的,我在Windows下的Qt 4.8.1下构建它.

c++ user-interface qt

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

SWIG Python包装器中临时对象的生命周期(?)

2月12日编辑

我最近刚刚使用一些SWIG生成的Python包装器为一些C++类提出了一个奇怪的崩溃.似乎SWIG和Python的结合有点急于清理临时值.事实上,他们非常渴望在他们还在使用的时候进行清理.一个显着浓缩的版本看起来像这样:

/* Example.hpp */
struct Foo {
    int value;
    ~Foo();
};

struct Bar {
    Foo theFoo;
    Bar();
};

/* Example.cpp */
#include "Example.hpp"
Bar::Bar()  {theFoo.value=1;}
Foo::~Foo() {value=0;}

/* Example.i */
%module Example
%{
#include "Example.hpp"
%}
%include "Example.hpp"
Run Code Online (Sandbox Code Playgroud)

我在.i文件上运行SWIG(1.3.37),然后在Python中运行:

Python 2.4.3 (#1, Sept 17 2008, 16:07:08)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-41)] on linux2
Type "help", "copyright", "credits", or "license" for more information.
>>> from Example import Bar
>>> b=Bar()
>>> print b.theFoo.value      # expect '1', since Bar's constructor …
Run Code Online (Sandbox Code Playgroud)

c++ python swig lifetime temporary-objects

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

如何获得返回自身的boost :: function(或其他通用函数包装器)?

我最近迷恋于Erlang基于actor的并发模型的简单性,并且正在尝试用C++实现它的某些部分.沿着这些方向,我也喜欢将有限状态机实现为表示状态的函数集合的想法,其中通过从一个函数到下一个函数的尾调用来进行转换.

我想在C++中尝试类似的东西.但是这种天真的实现可能会遇到这样的事实,即在我的编译器(GCC 4.1 with -O0)中进行尾调用最终会导致堆栈溢出.所以不是,我想要做的就是让每个国家/函数返回一个仿函数(下一个状态进入),并具有潜在的循环刚刚依次调用一个函数对象,然后调用从而返回仿函数,然后调用函子因此返回,等等:

typedef ... context_t;

// A statefunctor is a functor which takes a context_t and 
// returns a statefunctor
//
// FIXME: of course, this typedef won't compile.
typedef boost::function<statefunctor (context_t& )> statefunctor;

// NULL boost::function<> represents the exit condition.
static const statefunctor EXIT_FSM;

// primary loop which runs the FSM
void run_fsm(context_t& ctx, statefunctor initial_state)
{
    while (initial_state)
    {
        initial_state=initial_state(boost::ref(ctx));
    }
}

// states 'foo', 'bar', and 'baz';
statefunctor foo(context_t& ctx);
statefunctor bar(context_t& ctx, …
Run Code Online (Sandbox Code Playgroud)

c++ gcc boost fsm

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