sto cercando di scrivere una routine ricorsiva in perl che scopra
tutti gli "amici" di un "amico" e così via...gli amici vengono
identificati in modo univoco da un numero id e vorrei sapendo il numero
id d un amico espandermi il pi possibile nella "ragnatela"...un esempio
della struttura:
io (000001) = [ (000002), (000004), (000019), (000222) ...etc... ];
il mio amico (000002) a sua volta ha altri amici [ (000004), (009521),
(000023) ...etc... ]; e così all'infinito...
come vedete (000001) e (000002) hanno un amico in comune (000004)
Mi interesserebbe sapere che approccio logico usereste per riunire in
un'unica lista tutti gli amici di tutti e così via...
Grazie
Ecco come inizierei:
codice:
my @ids = _return_ids_from_id(000001) # questo č il mio id e in @ids
vanno tutti i miei "amici"
ora dovrei scandire tutti gli @ids e per ognuno ritornare tutta la lista
di amici e cosě via...
foreach my $id ( @ids )
{
my @ids = _return_ids_from_id($id);
foreach my $id ( @ids )
{
my @ids = _return_ids_from_id($id)
...etc... e cosě via all'infinito
}
}
spero di essere stato pi chiaro...Grazie!
Hai presente i grafi? In pratica stai considerando le conoscenze come se
fossero degli archi e gli amici come se fossero i vertici. Quello che devi
fare č una visita in ampiezza del grafo, su internet troverai algoritmi a
bizzeffe. Certo č che qui siamo leggermente Off Topic secondo me!
Era questo che ti serviva? =)
Sicuramente la parola "infinito" è puramente teorica, ma anche se ci
limitaimo a un calcolo
limitato, non esiste un elboratore che possa andare molto in là con i
livelli di "amicizia"
Pensa che se fossi nel mondo reale , al sesto livello raggiungeresti
l'intera popolazione
terrestre. "teoria dei sei gradi di separazione".
--
______________________
Gaetano
"Nel coltellino svizzero di Chuck Norris c'è McGyver"