Pseudocodice per ottenere ordine basato sulla dipendenza

voti
0

Ok, la mia situazione è questa ho un elenco di voci e ho bisogno di ottenere l'ordine di questi elementi in base ai riferimenti che hanno. Per esempio consente di dire che abbiamo questi elementi: A, B, C, D, E, F

C e D hanno dipendenze così il loro ordine può essere 0. B è quella che ha la maggior parte con C, D e A. A ha C e F ha A e B

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

In questo caso C, D = 0 A = 1 B = 2 F = 3

Ho cercato attraverso internet e sembra non sto usando il termine scientifico corretto per questo. Molto probabilmente si tratta di un set o un sacchetto insieme in qualche modo. So che non è un albero come questa situazione ha più di due bordi di ciascun nodo. La risposta può essere in un linguaggio di programmazione, solo cercando di renderlo il più generale possibile.

È pubblicato 10/12/2009 alle 17:12
fonte dall'utente
In altre lingue...                            


2 risposte

voti
2

Un semplice algoritmo è il seguente.

Iterare la raccolta, alla ricerca di elementi che non hanno dipendenze: ricordare questi elementi come "il livello 0 elementi".

Iterare la raccolta di nuovo, alla ricerca di elementi che possono dipendere "Il livello 0 elementi", ma non su altri elementi: ricordare questi elementi come "il livello 1 elementi".

Iterare la raccolta di nuovo, alla ricerca di elementi che possono dipendere "il livello 0 elementi" e / o in "The Level 1 elementi", ma non su altri elementi: ricordare questi elementi come "il livello 2 elementi".

Eccetera.

Fermarsi quando ogni elemento ha un livello assegnato.

Risposto il 10/12/2009 a 17:18
fonte dall'utente

voti
0

È possibile creare un grafico e mantenere i conteggi puntatore, oppure è possibile utilizzare matrice. Ricerca e leggere qualche idea di base del grafico (matematica, non grafico del computer), è possibile trovare è abbastanza facile.

Risposto il 10/12/2009 a 17:18
fonte dall'utente

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