Perché i grafici diretti sono importanti?


18

Abbiamo letto degli algoritmi per MST, connettività avanzata, routing, ecc. Nei grafici diretti.

Inoltre, recentemente le persone hanno svolto ricerche per algoritmi dinamici e tolleranti ai guasti per i grafici diretti.

Ma mi chiedevo se ci sono applicazioni pratiche in cui la rete grafica sottolineata è "Diretta". A parte i social network, tutti i problemi che mi vengono in mente come la rete ferroviaria / stradale, la rete Internet, ecc. Riguardano solo i grafici non indirizzati.

Modifica 1: Capisco che questi possono essere utilizzati per modellare alcuni scenari in cui sono diretti i collegamenti, ma mi chiedevo quanto spesso questi scenari si verificano nel mondo reale e quanto sia importante lo studio della tolleranza agli errori per i grafici diretti.


6
Due delle classi più famose di grafici diretti in tutta l'informatica sono l'albero e il DAG (Directed Acyclic Graph). L'albero è usato in molte cose (ad esempio alberi genealogici, gerarchie); Il DAG può fare versioni più sofisticate di quelle. I DAG vengono utilizzati essenzialmente ogni volta che si dispone di un insieme di entità che hanno dipendenze reciproche. Quando il tuo problema ha una componente "tempo" o "passo per passo", la direzione rappresenta quell'inesorabile marcia del progresso. Vedete DAG in cose come diagrammi di diagramma di flusso, software di gestione dei pacchetti e moduli SSA di rappresentazione intermedia dei compilatori.
Iwillnotexist Idonotexist,

2
OK, qual è la tua vera domanda? Vuoi sapere perché i grafici diretti sono importanti o perché la tolleranza ai guasti nei grafici diretti è importante? Queste sono due domande completamente separate.
David Richerby,

2
I tuoi esempi, sebbene fisicamente "non indirizzati" nell'implementazione, hanno ancora frequentemente diretto grafici che operano logicamente su di essi. Ad esempio, i treni non viaggiano in modo bidirezionale: vanno in un modo o nell'altro su un orario. Diciamo che non si pianificano i treni, ma solo i passeggeri. Quindi, quella persona è interessata a un grafico diretto, nonostante il fatto arbitrario che i treni possano teoricamente viaggiare su entrambi i binari.
Darren Ringer,

5
chyle: le reti possono sicuramente beneficiare di essere rappresentate da un grafico diretto. La maggior parte delle connessioni Internet domestiche sono asimmetriche. I collegamenti upstream e downstream possono avere proprietà completamente diverse (larghezza di banda, latenza, perdita di pacchetti, ecc.)
Alexander - Ripristina Monica

1
Non conosco tutti gli altri, ma il mio albero genealogico è un digrafo. Non sono il genitore di mia madre.

Risposte:


36

Ricordando che un grafico diretto è un grafico in cui i bordi hanno una direzione associata ad essi.

Utilizzando un grafico diretto è possibile rappresentare relazioni asimmetriche tra nodi, mentre nel grafico non orientato possiamo rappresentare solo relazioni simmetriche .

In pratica, usando un grafico diretto puoi rappresentare:

  • Reti stradali (usando un grafico diretto puoi rappresentare la direzione delle strade);
  • collegamenti ipertestuali che collegano le pagine Web ;
  • dipendenze nei moduli software ;
  • relazioni prede-predatore ;
  • automa finito deterministico .

Oltre a questi esempi classici, è possibile rappresentare molti altri scenari del mondo reale (commercio finanziario, pianificazione, malattie infettive, citazione, flusso di controllo, ecc.) Che richiedono una relazione ordinata [1] .


4
Bella risposta. Penso che OP stia dimenticando che quando hai una strada, in realtà hai due strade (una per ogni direzione, di solito perfettamente parallele). Essi possono essere rappresentati sotto forma di grafico semplice, ma grafi orientati aggiungere informazioni essenziali per il modello.
ecc.

Mi piace questo e noto che questa risposta è attenta a dire pagine Web collegate con collegamento ipertestuale - che esclude l'uso della funzione Indietro. ;-)
SDsolar

Per mettere il commento di @ ecc in volgare, hai due nodi collegati da due bordi. Ogni bordo è diretto opposto all'altro. È visto spesso nei diagrammi di stato deterministici. Per le strade, si ridurrebbe a un unico limite, sia diretto (unidirezionale) che non orientato.
SDsolar,

4
@ecc anche, da dove vengo (California), abbiamo strade a senso unico
k_g

5

I grafici diretti esistono. Come menzionato nei commenti, i Directed Acyclic Graphs (DAG), in particolare, sono estremamente utili in molte attività computazionali come la compilazione del codice.

Inoltre, vale la pena notare che la maggior parte degli algoritmi di grafi diretti può essere utilizzata nel caso non indirizzato semplicemente sostituendo ogni bordo non orientato con due bordi diretti. Il doppio di questo, cercando di creare un grafico diretto da un grafico non orientato, non può essere fatto per la maggior parte degli algoritmi.


3

Gli inizi dell'ordinamento topologico (un'operazione fondamentale sui grafici aciclici diretti) risiedono in reti di dipendenze nella gestione dei progetti, in particolare il metodo PERT . Kahn e Lasser citano entrambi PERT nei loro articoli e basano i loro esempi su di esso, ad es

Una rete PERT di 30.000 attività può essere ordinata in meno di un'ora di tempo macchina.

La pianificazione dei lavori online viene ancora eseguita con questo tipo di rete; ad esempio un sistema ETL pianifica l'esecuzione dei lavori solo dopo l'esecuzione dei lavori che forniscono i loro dati di input.


2

Risposta: Dal PO deduco che la domanda è effettivamente correlata agli SDG (Signed Directed Graphs). Quindi, ecco la mia risposta che si rivolge ai grafici diretti di base e quindi porta agli SDG.

I grafici diretti sono ampiamente utilizzati nell'analisi dell'albero dei guasti nei sistemi industriali. Mentre elimini le cause di un errore, segui il grafico diretto per esplorare altre possibilità.

I grafici diretti sono utilizzati per prevenire la rivisitazione controproducente dei nodi che sono stati effettivamente eliminati. Nella diagnosi dei guasti, spesso è fondamentale il tempo necessario per ripristinare il servizio. Nei sistemi industriali complessi esiste sempre un albero parallelo basato sul tempo che può portare allo spegnimento totale del sistema se l'errore non viene corretto entro vari limiti di tempo. Andare avanti e indietro avrebbe maggiori probabilità di portare a un fallimento totale, che può causare operazioni di ripristino che richiedono molto più tempo (come svuotare i serbatoi e le tubazioni per riavviare una raffineria).

È come tagliare un ramo di un albero - non è necessario tornare al tronco quando si cerca di trovare un singolo ramoscello.

Gli SDG hanno la proprietà aggiuntiva di fornire indicazioni basate su probabilità o soglie al fine di aiutare a prendere decisioni mentre l'albero viene attraversato.

Ecco un link a un buon libro sull'argomento, chiamato Fault Detection and Diagnosis in Industrial Systems (pagina 224), dove descrive i vantaggi della diagnosi basata su SDG:

https://books.google.com/books?id=KFLlBwAAQBAJ&pg=PA224

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.