摘要: 1 void first_set_preprocess(void)//这个函数是用来消除强联通图,把强联通图直接短接,最后生成一个压缩图 2 { 3 first_graph_node** rev_first_graph;//这个当作逆转图的入口,因为我们要生成这个逆转图 4 first_graph_node** new_first_graph;//这个当作原来的图的拷贝,因为在拓扑排序时会毁掉原来的图 5 pfirst_graph_node temp_first_node,temp_first_add; 6 pfirst_graph_node te... 阅读全文
posted @ 2013-07-06 20:49 huangnima 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 由于在生成前后缀的时候,我们需要将这个文法符号按照拓扑排序来排列生成顺序,不过当语法里面有环的时候,一般的拓扑排序就无效了,这个时候需要采取将一个强联通区域的点汇聚在一起,也就是生成压缩图。课本上虽说强连通算法是线性时间,但是不写不知道,一写吓一跳,尼玛都快四次复杂度了有木有。这里就贴一下生成强连通的代码 1 void first_set_preprocess(void)//这个函数是用来消除强联通图,把强联通图直接短接,最后生成一个压缩图 2 { 3 first_graph_node** rev_first_graph;//这个当作逆转图的入口,因为我们要生成这个逆转图 4 ... 阅读全文
posted @ 2013-07-06 19:42 huangnima 阅读(340) 评论(0) 推荐(0) 编辑