Pseudocódigo para obtener orden basado en la dependencia

votos
0

Bien, mi situación es esta, tengo una lista de artículos y necesito obtener el orden de estos artículos según las referencias que tienen. Por ejemplo, digamos que tenemos estos elementos: A, B, C, D, E, F

C y D no tienen dependencias, por lo que su orden puede ser 0. B es el que tiene más con C, D y A. A tiene C y F tiene A y B

  C    D    
  | \  /
  A  /
/ | /
| B 
\ |
  F

En este caso C, D = 0 A = 1 B = 2 F = 3

He estado buscando en internet y parece que no estoy usando el término científico correcto para esto. Lo más probable es que se trate de un Set o un Bag set de alguna forma. Sé que no es un árbol ya que esta situación tiene más de dos bordes en cada nodo. La respuesta puede estar en un lenguaje de programación, simplemente tratando de hacerlo lo más general posible.

Publicado el 10/12/2009 a las 17:12
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
2

Un algoritmo simple es el siguiente.

Itera la colección, buscando elementos que no tengan dependencias: recuerda estos elementos como "los elementos de nivel 0".

Vuelva a iterar la colección, buscando elementos que puedan depender de "los elementos de nivel 0" pero no de otros elementos: recuerde estos elementos como "los elementos de nivel 1".

Vuelva a iterar la colección, buscando elementos que puedan depender de "los elementos de nivel 0" y / o de "los elementos de nivel 1", pero no de otros elementos: recuerde estos elementos como "elementos de nivel 2".

Etc.

Deténgase cuando cada elemento tenga un nivel asignado.

Respondida el 10/12/2009 a las 17:18
fuente por usuario

votos
0

Puede crear un gráfico y mantener los conteos del puntero, o puede usar la matriz. Busque y lea alguna idea básica de gráfico (matemática, no gráfico de computadora), puede encontrar que es bastante fácil.

Respondida el 10/12/2009 a las 17:18
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more