|
CGraph
|
#include <GTrimOptimizer.h>


Static Private Member Functions | |
| static CSize | trim (GSortedGElementPtrSet &elements) |
Friends | |
| class | GElementManager |
| class | GRegion |
Additional Inherited Members | |
Public Member Functions inherited from CObject | |
| CObject ()=default | |
| virtual CStatus | init () |
| virtual CStatus | run ()=0 |
| virtual CStatus | destroy () |
| virtual | ~CObject ()=default |
Static Protected Member Functions inherited from GOptimizer | |
| static CVoid | collect (GElementPtr element, std::vector< GElementPtr > &curPath, std::vector< std::vector< GElementPtr >> &paths) |
| static std::vector< std::vector< GElementPtr > > | collectPaths (const GSortedGElementPtrSet &elements) |
| static std::vector< std::vector< int > > | buildGraph (const GSortedGElementPtrSet &elements, const std::vector< std::vector< GElementPtr >> &paths, int father, int son, int unlink) |
|
inlinestaticprivate |
针对图结构,做剪裁;具体算法为: (1) collectPaths:以入度为0的结点开始,通过递归,收集整个elements集合中的路径paths (2) buildGraph:对paths进行分析,构建一个[s, s]的矩阵graph,s为elements所有元素的个数,其中 graph[x][y]表示elements中index为x的元素是否可以达到index为y的元素 (3) 剪枝: 遍历elements,如果发现elements的前序结点x/y存在可达关系x->y,类似于x -> y 那么可以把x->cur的依赖关系删除 ↘ ↙ cur (4) 如果elements存在某个元素是REGION,那么继续调用REGION自己的trim (本质上就是上述算法) (5) 记录总共被剪枝的元素个数
| elements |

|
friend |
|
friend |