通过迭代修剪顶点来计算图的k核是很容易的.但是,对于我的应用程序,我希望能够将顶点添加到起始图并获得更新的核心,而无需从头开始重新计算整个k-core.是否有可靠的算法可以利用先前迭代所做的工作?
对于好奇的人来说,k-core被用作集团发现算法中的预处理阶段.任何大小为5的小团体都保证是图形的4核心的一部分.在我的数据集中,4核比整个图要小得多,所以从那里强制它可能是易处理的.增量添加顶点使算法可以使用尽可能小的数据集.我的顶点集是无限的和有序的(素数),但我只关心编号最小的集团.
编辑:
基于akappa的答案更多地考虑它,检测循环的创建确实很关键.在下图中,在添加F之前,2核是空的.添加F不会改变A的程度,但它仍然将A添加到2核.扩展它很容易看到关闭任何大小的循环会导致所有顶点同时加入2核.
添加顶点会对任意距离之外的顶点的核心性产生影响,但这可能会过多地关注最坏情况的行为.
我的问题如下:
在现有数据库中,我想要在几列中加密数据.列包含不同长度的字符串.
我不想更改列的大小,因此加密需要生成输入文本的等长文本表示.
加密算法的强度是次要的,但我当然希望它能够尽可能强大.否则我不需要加密数据.但最重要的是输出的大小.
这可能吗?如果是这样,我该怎么做?
我有兴趣在.NET中这样做.没有数据库级加密.
我有一个由嵌套STL容器组成的数据结构:
typedef std::map<Solver::EnumValue, double> SmValueProb;
typedef std::map<Solver::VariableReference, Solver::EnumValue> SmGuard;
typedef std::map<SmGuard, SmValueProb> SmTransitions;
typedef std::map<Solver::EnumValue, SmTransitions> SmMachine;
Run Code Online (Sandbox Code Playgroud)
这种形式的数据仅在我的程序中短暂使用,除了简单地存储数据之外,附加到这些类型的行为并不多.但是,编译器(VC++ 2010)抱怨结果名称太长.
将类型重新定义为STL容器的子类而无需进一步详细说明似乎有效:
typedef std::map<Solver::EnumValue, double> SmValueProb;
class SmGuard : public std::map<Solver::VariableReference, Solver::EnumValue> { };
class SmTransitions : public std::map<SmGuard, SmValueProb> { };
class SmMachine : public std::map<Solver::EnumValue, SmTransitions> { };
Run Code Online (Sandbox Code Playgroud)
认识到STL容器不打算用作基类,在这种情况下是否存在任何危险?
考虑一系列不带参数且返回相同类型的函数:
function Puzzle1 return Answer_Type;
function Puzzle2 return Answer_Type;
function PuzzleN return Answer_Type;
Run Code Online (Sandbox Code Playgroud)
我希望能够将这些函数传递给子程序,让子程序调用函数并使用结果.我可以通过定义访问类型将函数传递给子程序:
type Answer_Func_Type is access function return Answer_Type;
Run Code Online (Sandbox Code Playgroud)
但是,似乎没有办法实际调用传入函数来获得结果:
procedure Print_Result(Label : in String;
Func : in not null Answer_Func_Type;
Expected : in Answer_Type) is
Result : Answer_Type;
begin
Result := Func; -- expected type "Answer_Type", found type "Answer_Func_Type"
Result := Func(); -- invalid syntax for calling a function with no parameters
-- ...
end Print_Result;
Run Code Online (Sandbox Code Playgroud)
有没有办法在Ada中执行此操作而不向函数添加伪参数?