dependency algorithm
Diez B. Roggisch
deets at nospam.web.de
Wed Nov 14 17:59:42 EST 2007
Tom Jones schrieb:
> Hi,
>
> Consider tuples of the above numbers in the form:
> (a,b)
>
> Suppose this relation means:
> a depends on b
>
> Given a list of tuples, I would like an algorithm to return the proper
> ordering of the elements...and if the ordering has a loop (which in this
> case, prevents a proper ordering), then it should return None.
>
> For example,
>
>
> [(1,2),(2,3),(3,4)]
> should give:
> [4,3,2,1]
>
>
> [(3,2),(1,3),(2,4)]
> should give:
> [4,2,3,1]
>
>
> [(1,4),(4,3),(2,3)]
> should give:
> [3,2,4,1] or [3,4,2,1] (which one doesn't matter)
>
>
> [(1,2), (2,3), (3,2)]
> should give
> None, since it cannot be resolved
>
>
> I'm sure this is a standard problem (mro, resolving inheritance?), but
> this is a simplified case since each element can directly depend on only
> one other element (thus, multiple inheritance is not allowed)...but many
> elements can depend on the same element (no limit on the number of
> classes which subclass another class). A quick hack is simple enough to
> code, but I am wondering if there are 'standard' ways of performing this
> task in this limited scope.
http://en.wikipedia.org/wiki/Topological_sorting
Diez
More information about the Python-list
mailing list