[Lemon-user] all possible topological sorts of a DAG
Péter Kovács
kpeter at inf.elte.hu
Thu Aug 10 23:44:31 CEST 2017
Hi John,
Thanks for the quick answer. Then I hope the code I sent will help you.
Péter
2017.08.10. 23:40 keltezéssel, John Lagerquist írta:
> I use a DAG to represent a flow language that I am working on. I am
> trying to optimize the node order to minimize resource usage in a
> micro-controller, I am very RAM limited. Fortunately my "programs" are
> quite simple and it won't take long to simulate each ordering's resource
> usage and pick the best choice.
>
>
>
> On Thu, Aug 10, 2017 at 3:30 PM, Péter Kovács <kpeter at inf.elte.hu
> <mailto:kpeter at inf.elte.hu>> wrote:
>
> Hi John,
>
> LEMON does not provide a method for finding all topological
> orderings. However, it is relatively easy to implement it by
> combining any topological ordering method and backtracking.
>
> I wrote a simple implementation that you can try, see the attached
> code. It builds a DAG, finds all topological orderings and prints
> them. The algorithm uses Kahn's well-known topological sorting
> method
> (https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm <https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm>)
> combined with backtracking.
>
> However, please keep in mind that a DAG may have a huge number of
> topological orderings. For example, the attached code builds a graph
> that has 2K+2 nodes and (2K)!/(K!*K!) distinct topological
> orderings. The attached version uses K=3, for which 20 orderings are
> found, but it is 184756 for K=10 and about 10^29 for K=50.
>
> Anyway, why do you need this?
>
> Best regards,
> Péter
>
>
> Is there a method to get all possible topological sorts of a DAG?
>
>
>
> --
> John Lagerquist
> Chief Engineer
> RallyTronics LLC
> 801-866-5981
>
>
>
>
> _______________________________________________
> Lemon-user mailing list
> Lemon-user at lemon.cs.elte.hu <mailto:Lemon-user at lemon.cs.elte.hu>
> http://lemon.cs.elte.hu/mailman/listinfo/lemon-user
> <http://lemon.cs.elte.hu/mailman/listinfo/lemon-user>
>
>
>
>
> --
> John Lagerquist
> Chief Engineer
> RallyTronics LLC
> 801-866-5981
>
>
More information about the Lemon-user
mailing list