CGraph
Static Private Member Functions | Friends | List of all members
GTrimOptimizer Class Reference

#include <GTrimOptimizer.h>

Inheritance diagram for GTrimOptimizer:
Inheritance graph
[legend]
Collaboration diagram for GTrimOptimizer:
Collaboration graph
[legend]

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)
 

Member Function Documentation

◆ trim()

static CSize GTrimOptimizer::trim ( GSortedGElementPtrSet elements)
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) 记录总共被剪枝的元素个数

Parameters
elements
Returns
Here is the call graph for this function:

Friends And Related Function Documentation

◆ GElementManager

friend class GElementManager
friend

◆ GRegion

friend class GRegion
friend

The documentation for this class was generated from the following file: