We modify the Pearce-Kelly algorithm that maintains a topological ordering for a directed acyclic graph in order to allow cycles to be tolerated. Cycles make topological orderings moot, of course, however tolerating them is useful in practice. A user may mistakenly introduce a cyclic dependency in their project,, for example, and then subsequently fix their mistake. In these cases it is better to maintain the relevant data structures so that if and when the directed graph becomes acyclic again, a topological ordering can be instantly recovered. It turns out that adding this functionality costs us little, only small modifications and some attention to detail are needed.
翻译:暂无翻译