我写了一个BASH文件,其中包含表单的多个嵌入式循环
for P in {'0.10','0.20', [...] '0.90','1.00'}; do
for Q in {'0.10','0.20', [...] ,'0.90','1.00'}; do
[...]
Run Code Online (Sandbox Code Playgroud)
我将这些变量用作命令行应用程序的参数,并直接在BASH中创建文件名.我想创建重复项,比如$P_REP=0_10
用一个下划线替换点而不为每个case写一个显式的switch语句,或者一些硬编码的等价物.我找到的(非优雅的方式)就是为了
P,Q
到临时文件.sed 's/./_/ -i
.因此,我想知道是否可以直接在变量的内容上运行sed like命令?
编辑:正如@sehe指出的那样,错误位于中介中心性计算之前的某个位置.向前走!
我实现了一个最小的程序来计算的无向图的中介中心,在两个Python
和C++
.令人惊讶的是,networkx
(Python)版本远远超过boost::graph
(C++)实现,即使有人考虑加载开销等等.我做的事情是完全无效的吗?
Python代码的要点很简单
# load graph and start chrono
clist = nx.betweenness_centrality(g)
# output
Run Code Online (Sandbox Code Playgroud)
对于C++,我们有
typedef boost::adjacency_list<boost::vecS,
boost::vecS,
boost::undirectedS> Graph;
typedef boost::property_map< Graph, boost::vertex_index_t>::type VertexIndexMap;
int main() {
Graph g;
// ...
// load graph
// ...
VertexIndexMap v_index = get(boost::vertex_index, g);
std::vector< double > vertex_property_vec(boost::num_vertices(g), 0.0);
boost::iterator_property_map< std::vector< double >::iterator, VertexIndexMap >
vertex_property_map(vertex_property_vec.begin(), v_index);
boost::brandes_betweenness_centrality(g, vertex_property_map);
// Output ...
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,两个库似乎都实现了完全相同的算法(Brandes 2001).