3 messaggi dal 07 marzo 2017
Ciao a tutti,

avrei bisogno di creare una sorta di network multilivello con relazioni che arrivano fino al decimo livello. Nel mio caso sono gli utenti iscritti alla piattaforma che devono essere inseriti nella "rete generale". Ogni utente deve avere la massimo 10 diretti (ovvero utenti nel loro primo livello). Vi pongo un esempio:

http://i.imgur.com/KB6INcE.png

In questo caso è presente una rete parzialmente piena, e io sono arrivato a dare questo. L'unico mio preblema è:

Quando un utente viene eliminato dalla rete questa si deve "riassestare". Ad esempio, se dovesse essere cancellata Valentina dalla rete, gli utenti Francesca, Turaia, Alessandro e Rita non devono rimanere senza padre. La rete "riassestandosi" deve poter permettere a Francesca di diventare padre di Turaia, Alessandro e Rita (Francesca viene scelta in base al criterio della data di registrazione).

Così come nel caso di Amalia, se questa viene eliminata gli utenti sotto di lei non possono essere persi, quindi devono poter essere riassegnati come figli di Francesco.


Avete suggerimenti per l'implementazione della funzione di riassestamento o comunque di riscrivere l'algoritrmo generale(preferibilmente)?

Grazie a tutti.
135 messaggi dal 01 febbraio 2017
Ciao, mi ero scontrato tempo addietro con un problema simile, l'ho risolto dopo vari studi, ricorrendo alla ricorsività su un oggetto TreeNode.
Per semplificare il progetto, ho utilizzato un Datatable di appoggio ed infine per la persistenza ho serializzato il tutto.

Questa la via a grandi linee, da adattare al tuo caso.
Con questo sistema non hai limiti di livello.

Quando viene rimosso un "ramo", devi solo scorrere i "rami" allo stesso livello per andare a cercare quello che ha (fra le varie proprietà) la data di creazione più vecchia.

A questo fine, ti serve un meccanismo per associare una serie di prorietà ad un nodo. Puoi farlo usando una classe base, associandola in varie istanze ad un TAG del nodo ... non so se mi sono spiegato.

Ti rimane solo da scrivere il codice ... eheheh ....

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.