Pseudocod pentru a obține ordine bazată pe Dependență

voturi
0

Ok, situația mea este aceasta am o listă de articole și am nevoie pentru a obține ordinea acestor elemente pe baza referințelor pe care le au. De exemplu, vă permite să spunem că avem aceste elemente: A, B, C, D, E, F

C și D nu au dependențe, astfel ordinea lor poate fi 0. B este cel care are cel mai mult cu C, D și A. A are C și F are A și B

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

În acest caz, C, D = 0 A = 1 B = 2 F = 3

Am fost în căutarea prin internet și se pare că nu am folosit termenul științific corect pentru acest lucru. Cel mai probabil, acesta este un set sau un sac de set într-un fel. Știu că nu este un copac ca această situație are mai mult de două margini pe fiecare nod. Răspunsul poate fi într-un limbaj de programare, doar încercarea de a face cât mai general posibil.

Întrebat 10/12/2009 la 17:12
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
2

Un algoritm simplu este după cum urmează.

Itera de colectare, în căutarea pentru elemente care nu au dependențe: amintiți-vă aceste elemente ca „nivelul 0“ elemente.

Itera de colectare din nou, în căutarea pentru elementele de care poate depinde de „nivelul 0 elemente“, dar nu și pe alte elemente: amintesc aceste elemente ca „nivelul elementelor 1“.

Itera de colectare din nou, în căutarea pentru elementele de care poate depinde de „nivelul 0“ elemente și / sau pe „nivelul elementelor 1“, dar nu și pe alte elemente: amintesc aceste elemente ca „nivelul elementelor 2“.

Etc.

Opriți-vă când fiecare element are un nivel atribuit.

Publicat 10/12/2009 la 17:18
sursa de către utilizator

voturi
0

Puteți crea un grafic și să mențină numărătorile pointer, sau puteți utiliza matrice. Căutați și citiți o idee de bază a graficului (matematică, nu calculator grafic), puteți găsi este destul de ușor.

Publicat 10/12/2009 la 17:18
sursa de către utilizator

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