<sectionid="description"><p> Dada una asignación entre elementos y elementos de los que dependen, una <ahref="https://en.wikipedia.org/wiki/Topological sorting"title="wp: clasificación topológica">ordenación topológica</a> ordena elementos para que ningún elemento preceda a un elemento del que depende. </p><p> La compilación de una biblioteca en el lenguaje <ahref="https://en.wikipedia.org/wiki/VHDL"title="wp: VHDL">VHDL</a> tiene la restricción de que una biblioteca debe compilarse después de cualquier biblioteca de la que dependa. </p> Tarea: <p> Escriba una función que devolverá un orden de compilación válido de las bibliotecas VHDL desde sus dependencias. </p> Supongamos que los nombres de las bibliotecas son palabras simples. Los elementos mencionados como solo dependientes no tienen dependientes propios, pero se debe dar su orden de compilación. Cualquier auto dependencia debe ser ignorada. Cualquier dependencia no ordenable debe ser ignorada. <p> Usa los siguientes datos como ejemplo: </p><pre> BIBLIOTECA DEPENDENCIAS DE LA BIBLIOTECA
</pre><p><small>Nota: los datos anteriores no se podrían ordenar si, por ejemplo, se agrega <code>dw04</code> a la lista de dependencias de <code>dw01</code> .</small></p> Cf: <pre><code><a href="http://rosettacode.org/wiki/Topological sort/Extracted top item" title="Topological sort/Extracted top item">Topological sort/Extracted top item</a>.</code></pre><p> Hay dos algoritmos populares para la clasificación topológica: </p><p> El orden topológico de Kahn en 1962 y la búsqueda en profundidad: <ahref="https://en.wikipedia.org/wiki/Topological sorting"title="wp: clasificación topológica">ordenamiento topológico</a></p><p> Jason Sachs: <ahref="http://www.embeddedrelated.com/showarticle/799.php"title="enlace: http://www.embeddedrelated.com/showarticle/799.php">"Diez algoritmos pequeños, parte 4: ordenamiento topológico"</a> . </p></section>