Sto sfruttando gli alberi come un modello o sono solo molto comuni?

6

Sto lavorando a un progetto e ho scoperto che ho modellato i due componenti più grandi come alberi.

I miei usi principali finora sono:

  1. Generalmente modella i contenitori fisici (e i sotto contenitori, i sotto-contenitori secondari ecc.)
  2. Modelli di campioni liquidi (e sottocampioni e derivati del campione - e sottotitoli di quelli, ecc.)

Ora ho bisogno di modellare alcuni eventi in base alla spedizione di campioni, ad es. raccolti nella posizione X, quando arrivano al centro di elaborazione, fare Y

Ora sembra naturale modellare gli eventi come un albero per indicare quali eventi seguono dagli altri.

Sto iniziando a chiedermi se sto solo vedendo alberi dappertutto perché lo voglio, o se è un approccio legittimo?

Modifica per rispondere ad alcuni punti sollevati

Tutti sembrano essere d'accordo con gli alberi per i contenitori.

Per i campioni liquidi, anche se ci sono vari tipi - quello che ho davvero bisogno di tenere traccia è parentela in modo che data qualsiasi campione, posso trovare rapidamente tutte le cose che derivano da esso in qualche modo. Mi è stato detto che posso presumere che i campioni non saranno combinati, quindi tutti i sottocampioni (o derivati) avranno solo un genitore.

Per quanto riguarda gli eventi, sì, penso che stavo solo andando per un albero per facilità. Non ha molto senso per me dopo aver letto i commenti e pensato ulteriormente.

Grazie a tutti per l'input.

    
posta Jonno 06.07.2011 - 18:20
fonte

5 risposte

5

È un approccio legittimo quando si dispone di dati che possono essere annidati molto profondamente / in modo ricorsivo, come contenitori fisici o dati gerarchici (come una struttura organizzativa aziendale o un filesystem). Il tuo secondo esempio può o non può adattarsi bene ai modelli ad albero, ma non sono sicuro poiché non so quanto sia diverso un sottocampione da una derivata del campione.

Spedizioni di campioni da località, sembra che ci siano solo tre livelli su questo albero: il campione, la posizione da cui proviene e il centro di elaborazione. Potrebbe avere o meno senso organizzare la gerarchia in questo modo (lo sapresti meglio). Se sei preoccupato per l'uso eccessivo degli alberi, potresti usare le hashmap nidificate o qualcosa del genere. Anche se non si utilizzano gli alberi internamente, sono comunque validi per i display dell'interfaccia utente di questo tipo di dati.

    
risposta data 06.07.2011 - 18:25
fonte
2

Devi fare ciò che funziona per te.

Se pensi di poter capire meglio un progetto e mostrarlo ad altri usando i tuoi metodi, probabilmente ce ne sono di quelli giusti.

    
risposta data 06.07.2011 - 18:36
fonte
2

Generically model physical containers (and sub containers, sub sub containers etc)

Questo sicuramente sembra adattarsi al Pattern Composito e non vedo problemi con un design in stile albero. Nulla da aggiungere davvero che altri non abbiano già indicato:

  • facilmente iterato / attraversato
  • gerarchia osservabile

Model liquid samples (and sub samples, and sample derivatives - and subs of those, etc)

Questo non sembra adattarsi ad un'architettura ad albero o composito, IMO. Questo suona quasi come una buona idea per il Prototype Pattern , cioè, se ho capito bene # 2.

    
risposta data 06.07.2011 - 20:01
fonte
1

@ La risposta di Frustrated è buona. Vorrei solo aggiungere: pensa a cosa stai facendo con le informazioni. Dovresti usare la struttura che ha l'effetto più semplice sul codice che devi scrivere.

Gli alberi sono una buona struttura concettuale utile, ma non devono essere implementati come una tipica struttura ad albero della memoria. Problemi di memoria o di efficienza temporale sono importanti solo se l'albero è grande o se si accede ad alta frequenza. Un esempio di un'altra rappresentazione è un semplice array lineare / elenco di record o strutture, in cui ogni record è contrassegnato con la sua "profondità", come in una distinta materiali o in un piano dei conti.

Una domanda che vorrei porre è: hai relazioni di tipo zio / cugino che raggiungono la gerarchia, come i nomi di variabili in un programma, o collegamenti relativi in una struttura di file? Se è così, devi pensare a come rappresentarli.

    
risposta data 06.07.2011 - 18:45
fonte
1

Gli alberi vanno bene se puoi garantire che ci debba essere solo un percorso per un oggetto, cioè che gli utenti pensino solo a cose come "in" un posto. Una serie di contenitori annidati, certo.

Ma una gerarchia di liquidi - che sembra non essere una buona idea. Potrei immaginare di voler arrivare a un derivato particolare partendo da luoghi diversi. In questo caso potrei usare un grafico aciclico diretto invece di un albero puro.

    
risposta data 06.07.2011 - 20:46
fonte

Leggi altre domande sui tag