[Algoritmi] Come si implementa di solito un grafo orientato?

absinth
Scusate la banalità di questa domanda ma non ho molto tempo per cercare su internet. C'è qualcuno che magari per esperienza conosce l'implementazione più usata? Io pensavo a una modifica del grafo semplice implementato con lista di adiacenze. Sta volta avrò due liste di adiacenze per ogni vertice: inAdjency e outAdjency.
inAdjency(x) - i nodi adiacenti attraverso rami entranti in x. outAdjency quelli attraverso rami uscenti.
Forse se ne usa solo una di solito? Non mi sembra il massimo

Anche in questi casi si usano ognitanto le matrici delle adiacenze? magari cambiando in base all'ordine in cui vengono scritti i vertici es:
se (x,a) desse 1 allora (a,x) darebbe -1 ... per non adiacenti nel verso voluto = 0 etc... ?

Esiste un metodo più comune per i grafi orientati che si usa di solito?

Risposte
vict85
La struttura scelta dipende dal problema che vuoi risolvere. Insomma, quanto è grande il grafo? Quant'è denso? Come sono distribuiti i rami? È aciclico? È dinamico o costante nel tempo? Rami e nodi contengono dati? Quali sono le operazioni che ci devi fare e con che frequenza? Che tipo di operazioni ci farai e con che frequenza? Che operazioni preliminari ha senso fare sui dati?

Se è per un esame probabilmente l'implementazione con le liste di adiacenza va bene.

absinth
Quindi c'è abbastanza libertà di scelta perché dipende sempre dai casi... Grazie per la risposta :smt023

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.