La mia applicazione sta costruendo una struttura gerarchica come questa:
root = {
'id': 'root',
'children': [ {
'name': 'root_foo',
'children': []
}, {
'id': 'root_foo2',
'children': [ {
'id': 'root_foo2_bar',
'children': []
} ]
} ]
}
in altre parole, è un albero di nodi, in cui ogni nodo potrebbe avere elementi figlio e identificatore univoco che chiamo "id". Quando viene aggiunto un nuovo figlio, ho bisogno di generare un identificatore univoco per questo, tuttavia ho due problemi:
- gli identificatori stanno diventando troppo lunghi
- l'aggiunta di molti bambini è più lenta, poiché ho bisogno di trovare il primo ID disponibile
Il mio requisito è:
- nome di un bambino X deve essere determinato solo dallo stato nei loro antenati
- Quando re-generi albero con lo stesso contenuto, gli ID devono essere uguali
o in altre parole, quando abbiamo i nodi A e B, la creazione di child in A, non deve influire sul nome dato ai figli di B.
So che un modo per ottimizzare sarebbe introdurre il contatore in ogni nodo e aggiungerlo ai nomi che risolveranno il mio problema di prestazioni, ma non risolverà il problema con gli "identificatori lunghi".
Potresti suggerirmi l'algoritmo per ottenere rapidamente nuovi ID?