Sto cercando di capire quale tipo di struttura di dati utilizzare per modellare un ipotetico utilizzo idealizzato della rete.
Nel mio scenario, un certo numero di utenti che sono ostili tra loro stanno tutti cercando di formare reti di computer in cui sono note tutte le potenziali connessioni. Tuttavia, i computer a cui un utente deve connettersi potrebbero non essere uguali a quelli a cui un altro utente deve connettersi; l'utente 1 potrebbe aver bisogno di connettere i computer A, B e D mentre l'utente 2 potrebbe aver bisogno di connettere i computer B, C ed E.
Immagine generata con l'aiuto di NCTM Graph Creator
Penso che il nucleo di questo sarà un grafico ciclico non indirizzato, con nodi che rappresentano computer e bordi che rappresentano cavi Ethernet. Tuttavia, a causa della natura dello scenario, ci sono alcune caratteristiche non comuni che escludono elenchi di adiacenza e matrici di adiacenza (almeno, senza modifiche non banali):
- i bordi possono diventare ad uso limitato; vale a dire, se un utente acquisisce una determinata connessione di rete, nessun altro utente può utilizzare quella connessione
- nell'esempio, l'utente verde non può connettersi al computer A, ma l'utente rosso ha collegato B a E nonostante non abbia un collegamento diretto tra di loro
- in alcuni casi, una determinata coppia di nodi sarà connessa da più di un bordo
- nell'esempio, ci sono due cavi indipendenti che vanno da D a E, quindi gli utenti verde e blu erano entrambi in grado di collegare direttamente quelle macchine; tuttavia, il rosso non può più effettuare tale connessione
- se due computer sono collegati da più di un cavo, ogni utente non può possedere più di uno di questi cavi
Dovrò fare diverse operazioni su questo grafico, come:
- determinare se una determinata coppia di computer è connessa per un determinato utente
- identificare il percorso ottimale per un determinato utente per connettere i computer di destinazione
- identificare la connessione del computer a latenza più elevata per un determinato utente (ovvero il percorso più lungo senza diramazione)
Il mio primo pensiero è stato semplicemente quello di creare una raccolta di tutti i bordi, ma è terribile per la ricerca. La cosa migliore che posso pensare di fare ora è modificare un elenco di adiacenza in modo che ogni elemento nell'elenco contenga non solo la lunghezza del bordo ma anche il suo costo e l'attuale proprietario. È un approccio sensato? Supponendo che lo spazio non sia un problema, sarebbe ragionevole creare più copie del grafico (una per ciascun utente) anziché un singolo grafico?