NTA算法讲解

来源:互联网 发布:数控车铣一体机编程 编辑:程序博客网 时间:2024/05/16 18:32

问题描述:
       NTA(Non-deterministic Tree Automata)是一种有多棵树组成的装置。这个装置有一套操作规则。根据这些规则产生一些信号,就形成了一些信号系统。在这个系统里,有一个信号是起始信号,有些信号是合法的,其余的都是辅助信号。若一对信号中两个都是合法的,则有它们组成的一堆信号就是合法的。
      在此只讨论完全二叉树,它的每个非叶子节点都有两棵里,每个节点都有一个信号发射单元。当信号传入节点时,与信号发射单元相遇,激发信号反应,发射单元产生多对信号。然后装置随机选择一组信号发送给子树节点,第一个送给左子树,第二个送给右子树。
NTA的整个操作流程如下:
      装置首先发送起始信号到根节点。由根节点信号发射介质产生多对信号,随即产选择一对信号,将第一个信号发送给左子树,第二个信号发送给右子树,在每个节点都重复这个过程,直到叶子节点。

      若信号达到了一个叶子节点,并且该叶子节点也产生一对合法,则该叶子节点是“可颤动的”.如果搜游叶子节点都是这样,就说这棵树是有效的。若所有的发射信号都是无效,则这棵树是无效的。

                样例数据的信号发射表

        T         

            a             

             b             

                    c  

0

(1,2)

(2,1)

(1,0)

1

(2,2)

(0,2),(1,0)

(3,2)

2

(2,2)

(2,3)

(1,2)

3

(1,2)

(2,1)

(3,2)

 
输入样例:
4 2 3     //4是信号的个数(用0,1,2,3),2是有效信号的个数(即2,3),3是发射单元个数(a,b,c)
1 2
2 1
1 0
2 2
0 2 1 0
3 2
2 2
2 3
1 2
1 2
2 1
3 2                            //发射表按行输入
3          //树的深度(即行数-1)
a
b c
a b c b
b a b a c a * *
 
0 0
原创粉丝点击