|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
[C] implementare un grafo
Scusate ma se io devo implementare un grafo in c che struttura dati posso usare?
Me lo chiedo da tempo e non riesco proprio a rispondermi, cioè se io ho n nodi ed ogni nodo è connesso tramite un arco ad ogni altro nodo il quale arco ha un suo peso io questo peso dove lo scrivo? E poi se io ho 1 milione di nodi ognuno di questi deve avere 999 mila puntatori? Com'è che vengono implementate solitamente queste strutture? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2000
Città: Amsterdam
Messaggi: 217
|
Matrice di adiacenza?
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1846
|
Quote:
Grazie mille, non so cosa sono ma so che le ho sul libro di algoritmi, mi documenterò. |
|
|
|
|
|
|
#4 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16213
|
Dato un grafo G con insieme dei nodi V e insieme degli archi E, la matrice di adiacenza richiede sempre spazio O(|V|^2), dove |X| è il numero di elementi dell'insieme X; in compenso, la domanda se esista un arco da v a w ottiene sempre risposta in tempo O(1).
In alternativa, puoi usare le liste di adiacenza: ossia, ogni nodo v ha una lista di tutti i nodi w tali che (v,w) è un arco. In questo modo, la rappresentazione richiede spazio O(|E|), che però a priori è ancora O(|V|^2); inoltre, la domanda se esista un arco da v a w richiede in genere tempo O(|V|). Tuttavia, se ogni nodo ha al più k vicini con k<<|V|, allora all'atto pratico la rappresentazione del grafo con liste di adiacenza richiede spazio O(|V|), e alla domanda "esiste un arco da v a w?" si risponde in tempo O(1).
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu Ultima modifica di Ziosilvio : 05-04-2006 alle 10:57. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:33.


















