Dal punto di vista accademico, qual è la differenza essenziale tra la struttura dei dati e il grafico? E la ricerca basata su alberi e la ricerca basata su grafici?
Dal punto di vista accademico, qual è la differenza essenziale tra la struttura dei dati e il grafico? E la ricerca basata su alberi e la ricerca basata su grafici?
Risposte:
Un albero è solo una forma limitata di un grafico.
Gli alberi hanno una direzione (relazioni padre / figlio) e non contengono cicli. Si inseriscono nella categoria dei grafici aciclici diretti (o di un DAG). Quindi gli alberi sono DAG con la limitazione che un bambino può avere un solo genitore.
Una cosa che è importante sottolineare, gli alberi non sono una struttura di dati ricorsiva. Non possono essere implementati come struttura di dati ricorsiva a causa delle restrizioni di cui sopra. Ma è possibile utilizzare anche qualsiasi implementazione DAG, che generalmente non è ricorsiva. La mia implementazione Tree preferita è una rappresentazione della mappa centralizzata e non è ricorsiva.
Generalmente i grafici vengono cercati prima per ampiezza o per profondità. Lo stesso vale per l'albero.
Invece di spiegare preferisco mostrarlo in immagini.
Un albero in tempo reale
Un grafico nell'uso della vita reale
Sì, una mappa può essere visualizzata come una struttura di dati del grafico.
Vederli in questo modo semplifica la vita. Gli alberi vengono utilizzati in luoghi in cui sappiamo che ogni nodo ha un solo genitore. Ma i grafici possono avere più predecessori (il termine parent non viene generalmente utilizzato per i grafici).
Nel mondo reale, puoi rappresentare quasi tutto usando i grafici. Ho usato una mappa, per esempio. Se consideri ogni città come un nodo, può essere raggiunta da più punti. I punti che portano a questo nodo sono chiamati predecessori e i punti a cui questo nodo porterà saranno chiamati successori.
lo schema elettrico, il piano di una casa, una rete di computer o un sistema fluviale sono altri esempi di grafici. Molti esempi del mondo reale possono essere considerati come grafici.
Lo schema tecnico potrebbe essere così
Albero:
Grafico:
Assicurati di fare riferimento ai link seguenti. Questi risponderanno a quasi tutte le tue domande su alberi e grafici.
Riferimenti :
Le altre risposte sono utili, ma mancano le proprietà di ciascuna:
Grafico non diretto, fonte immagine: Wikipedia
Grafico diretto, fonte immagine: Wikipedia
Potrebbe essere diretto o non indirizzato (che si applicherebbe a tutti i bordi nel grafico)
Secondo Wikipedia :
Ad esempio, se i vertici rappresentano le persone a una festa e c'è un vantaggio tra due persone se si stringono la mano, allora questo grafico non viene indirizzato perché qualsiasi persona A può stringere la mano con una persona B solo se B stringe anche la mano con A. Al contrario, se un margine da una persona A a una persona B corrisponde a A che ammira B, allora questo grafico è diretto, perché l'ammirazione non è necessariamente ricambiata.
C'è qualche sovrapposizione nelle proprietà sopra. In particolare, le ultime due proprietà sono implicite dal resto delle proprietà. Ma tutti vale la pena notare comunque.
Nella struttura ad albero, ciascun nodo (eccetto il nodo principale) ha esattamente un nodo precedente e uno o due nodi successivi. Può essere attraversato utilizzando gli attraversamenti In-order, Pre-order, Post-order e Breadth First. L'albero è un tipo speciale di grafico che non ha alcun ciclo, quindi è noto come DAG (Directed Acyclic Graph). L'albero è un modello gerarchico.
Nel grafico, ogni nodo ha uno o più nodi precedenti e nodi successivi. Il grafico viene attraversato utilizzando gli algoritmi Depth First Search (DFS) e Breadth First Search (BFS). Il grafico ha un ciclo, quindi è più complesso dell'albero. Il grafico è un modello di rete. Esistono due tipi di grafico: grafici diretti e grafici non indirizzati.
Gli alberi sono ovvi: sono strutture di dati ricorsive costituite da nodi con figli.
Mappa (aka dizionario) sono coppie chiave / valore. Assegna una chiave a una mappa e restituirà il valore associato.
Le mappe possono essere implementate usando gli alberi, spero che tu non lo trovi confuso.
AGGIORNAMENTO: "grafico" confuso per "mappa" è molto confuso.
I grafici sono più complessi degli alberi. Gli alberi implicano relazioni ricorsive genitore / figlio. Esistono modi naturali per attraversare un albero: profondità in primo luogo, larghezza in primo luogo, ordine di livello, ecc.
I grafici possono avere percorsi unidirezionali o bidirezionali tra nodi, essere ciclici o aciclici, ecc. Considero i grafici più complessi.
Penso che una ricerca rapida in qualsiasi testo di strutture di dati decenti (ad es. "Algorithms Design Manual") darebbe più e migliori informazioni di qualsiasi numero di risposte SO. Consiglierei di non prendere la via passiva e iniziare a fare delle ricerche per te stesso.
L'albero è una forma speciale di grafico, cioè un grafico minimamente connesso e con un solo percorso tra due vertici.
Nel grafico può esserci più di un percorso, ovvero il grafico può avere percorsi unidirezionali o bidirezionali (bordi) tra i nodi
Inoltre puoi vedere maggiori dettagli: http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/
In matematica, un grafico è una rappresentazione di un insieme di oggetti in cui alcune coppie di oggetti sono collegate da collegamenti. Gli oggetti interconnessi sono rappresentati da astrazioni matematiche chiamate vertici e i collegamenti che collegano alcune coppie di vertici sono chiamati spigoli. [1] Tipicamente, un grafico è rappresentato in forma schematica come un insieme di punti per i vertici, uniti da linee o curve per i bordi. I grafici sono uno degli oggetti di studio della matematica discreta.
un nodo radice nell'albero e un solo genitore per un figlio. Tuttavia, non esiste un concetto di nodo radice. Un'altra differenza è che l'albero è un modello gerarchico ma il grafico è un modello di rete.
Un albero è un digrafo tale che:
a) con le direzioni dei bordi rimosse, è collegato e aciclico
- È possibile rimuovere il presupposto che sia aciclico
- Se è finito, puoi in alternativa rimuovere il presupposto che sia collegato
b) ogni vertice tranne uno, la radice, ha indegree 1
c) la radice ha indegree 0
- Se ci sono solo molti nodi finiti, è possibile rimuovere il presupposto che la radice abbia indegree 0 o il presupposto che i nodi diversi dalla radice abbiano grado 1
Riferimento: http://www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf
L'albero è un grafico sostanzialmente non indirizzato che non contiene ciclo, quindi possiamo dire che l'albero è una forma più ristretta di grafico. Tuttavia albero e grafico hanno un'applicazione diversa per implementare vari algoritmi nella programmazione. Ad esempio, il grafico può essere utilizzato per la road map del modello e l'albero può essere utilizzato per implementare qualsiasi struttura gerarchica di dati.