Algorithm 拓扑排序中的序列保持
假设我有一个有向图,有一个源和汇,比如a和z。假设图是a->b->c->d->e->z,a->f->g->h->z 我想做的是维护拓扑排序结果中“子组”b->c->d->e和f->g->h的标识 我的想法是首先扫描图形,寻找由多个链接顶点组成的组,所有这些顶点都有一个入口点和一个出口点,然后用标记为“a”的“超级顶点”替换每个顶点,然后是“B”等 所以我会得到a->a->B->z或a->B->a->z的结果。两者都可以接受 当我找到所有的超级顶点后,我会进行拓扑排序,然后用原始排序的顶点替换超级顶点 所以我的最终结果是a->b->c->d->e>f->g->h->z,或者a->f->g->h->b->c->d->e->z 我需要一个算法-伪代码很好-来做这件事。如果可以,我将用perl实现 如果有帮助的话,图形以点文件的形式存在 非常感谢-这是我的第一个问题,所以要温柔Algorithm 拓扑排序中的序列保持,algorithm,sorting,graph,Algorithm,Sorting,Graph,假设我有一个有向图,有一个源和汇,比如a和z。假设图是a->b->c->d->e->z,a->f->g->h->z 我想做的是维护拓扑排序结果中“子组”b->c->d->e和f->g->h的标识 我的想法是首先扫描图形,寻找由多个链接顶点组成的组,所有这些顶点都有一个入口点和一个出口点,然后用标记为“a”的“超级顶点”替换每个顶点,然后是“B”等 所以我会得到a->a->B->z或a->B->a->z的结果。两者都可以接受 当我找到所有的超级顶点后,我会进行拓扑排序,然后用原始排序的顶点替换超级
罗杰首先进行深度优先搜索,并记录遇到节点的顺序 然后,在选择要添加到拓扑顺序的下一个节点时,选择DFS顺序中较早的节点 因此,在您的例子中,DFS顺序将是abcdezfgh,拓扑排序将是abcdefghz