布尔逻辑网络的逻辑函数

时间:2019-04-01 12:00:08

标签: networking random tree neural-network boolean

我正在开发一个非常基本的随机布尔网络。

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。

0 个答案:

没有答案