|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Napoli prov
Messaggi: 3089
|
[C] Problema sui grafi
Ciao a tutti!
Dovrei svolgere un problema sui grafi che consiste nel trovare tutti i vertici entranti in un certo nodo. Avevo pensato ad usare una visita tipo una BFS, ma non so dove mettere le mani... Come posso riuscire nell'impresa? Grazie
__________________
Thermaltake Armor VA8000SWA**Corsair CMPSU-620HX**Intel Core 2 Quad Q9450 **Asus P5Q Deluxe**Corsair Dominator 2x2GB PC8500 1066Mhz-555 XMS2**Sapphire Vapor-X HD7970 GHz Edition 3GB GDDR5**Samsung SSD 830 256GB**WD Caviar 1TB SATA**Creative X-Fi Elite Pro **Pioneer DVR-215D**Altec Lansing FX6021**Crossover 2720MDP**Logitech diNovo Cordless Desktop**Cooler Master Storm Sentinel Advance on Razer eXactMat |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jan 2001
Città: Rimini
Messaggi: 197
|
il grafo come è rappresentato? come lista di adiacenza o come matrice di adiacenza?
__________________
Linux + xBox360 + iPod. Ognuno al suo posto. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2004
Messaggi: 760
|
rappresenta il grafo come matrice di adiacenze e poi, per ogni colonna, guardi quali celle sono a 1 (oppure per ogni riga, a seconda di come l'hai memorizzato).
questa è una breve spiegazione di cos'è una matrice di adiacenze, nel caso tu non lo sappia
__________________
Gandalf_BD -------------------------------------------- "When you aim at perfection, you discover it's a moving target" |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Napoli prov
Messaggi: 3089
|
Il grafo è rappresentato mediante lista d'adiacenza, questo è il problema... Perciò penso si debba modificare un algoritmo di visita.. Pensavo alla DFS così da non dover costruire routine di gestione di una coda, indispensabili nella BFS
__________________
Thermaltake Armor VA8000SWA**Corsair CMPSU-620HX**Intel Core 2 Quad Q9450 **Asus P5Q Deluxe**Corsair Dominator 2x2GB PC8500 1066Mhz-555 XMS2**Sapphire Vapor-X HD7970 GHz Edition 3GB GDDR5**Samsung SSD 830 256GB**WD Caviar 1TB SATA**Creative X-Fi Elite Pro **Pioneer DVR-215D**Altec Lansing FX6021**Crossover 2720MDP**Logitech diNovo Cordless Desktop**Cooler Master Storm Sentinel Advance on Razer eXactMat |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jan 2001
Città: Rimini
Messaggi: 197
|
non serve tirare in ballo una ricerca tipo bfs o dfs..
se il grafo è non orientato il problema è banale. se il grafo è orientato al momento non mi viene in mente niente di meglio che una ricerca in tutta la lista di adiacenza..
__________________
Linux + xBox360 + iPod. Ognuno al suo posto. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jan 2006
Messaggi: 92
|
la cosa non è difficile.. anzi..!..
Considerando un'implementazione a lista di adiacenza secondo me potresti strutturare un algoritmo in questo modo: Codice:
//il codice è java..
public int[] gradoEntrata(GrafoOrientato G){
int [] vettore = new int[G.n()];
//iterando sul grafo.. cioè scandendo ogni nodo
for(int i = 0; i<G.n(); i++)
{
vettore[i] = 0;
for(int j = 0; j<G.n(); j++)
if(G.esisteArco(j, i))
vettore[i]++;
}
return vettore;
}
/* piccole considerazioni....
G.n() ritorna il numero di nodi presenti nel grafo
G.esisteArco(j,i) controlla se nel grafo esiste un arco che parte da j e
finisce in i
Nel vettore ritornato hai il grado di entrata di ogni nodo...
*/
poi non so... potresti sempre adattarlo!!! Spero però di averti aiutato sul concetto almeno!!!
__________________
L'unico computer sicuro è un computer spento!!! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:13.



















