我正在开发一个非常基本的随机布尔网络。
RBN由N个节点组成,可以取零或一的值(布尔值)。每个节点的状态(零个或一个)由来自其他(或相同)节点的K个连接确定。这些连接是随机布线的,但是在网络动态过程中保持固定,即“淬灭”。 节点之间相互影响的方式不仅取决于它们的连接,还取决于逻辑函数,这些函数是随机生成的,只需使用每个节点的查找表即可,这些表将连接节点的状态作为输入,而连接节点的状态节点作为输出。这些在网络动态过程中也保持不变(被抑制)。
我们有一个想法,可以为每个连接编写逻辑功能。为每个节点开发一个二叉树,读取所有连接,并随机选择根节点(NOR,XOR,AND ...等)。
我在编写此代码时遇到问题,因为我看不到如何添加这些节点。我曾想过要数所有de 1并添加到树中。
我已经完成了此矩阵:
Matrix(int vertex_num){
srand(5);
this->vertex_num = vertex_num;
adjMatrix = new int*[vertex_num];
/*QVector<QVector<int>> testMatrix;*/
for (int i = 0; i < vertex_num; i++){
adjMatrix[i] = new int[vertex_num];
for (int j = 0; j < vertex_num; j++){
adjMatrix[i][j] = rand()%2;
}
}
}
以及树的基本结构:
Node* insert(Matrix *m){
root = new Node();
for (int i=0; i< m->v_size(); i++){
for (int j=0; j< m->v_size(); j++){
if (m->adjMatrix[i][j] == 1){
if(root->left == NULL){
root->left = new Node(m->adjMatrix[i][j]);
}
else{
root->right = new Node(m->adjMatrix[i][j]);
}
}
}
我想接收这些连接,定义一个随机函数,并在测试所有连接后返回0或1。