Quali sono i grafici in termini di laici


18

Cosa sono i grafici, nell'informatica, e a cosa servono? In parole povere preferibilmente.

Ho letto la definizione su Wikipedia :

In informatica, un grafico è un tipo di dati astratto che ha lo scopo di implementare i concetti di grafico e ipergrafo dalla matematica.

Una struttura di dati del grafico è costituita da un insieme finito (e possibilmente mutabile) di coppie ordinate, chiamate spigoli o archi, di alcune entità chiamate nodi o vertici. Come in matematica, si dice che un bordo (x, y) punta o va da x a y. I nodi possono far parte della struttura del grafico o essere entità esterne rappresentate da indici o riferimenti interi.

ma sto cercando una definizione meno formale, più facile da capire.


Intendi graficamente la struttura dei dati?
Sistema

1
Sì scusa. Grafici come descritti qui en.wikipedia.org/wiki/Graph_(abstract_data_type) , solo io sto cercando una definizione meno formale, più facile da capire.
ConditionRacer

@ Justin984 I link di Wikipedia tra parentesi (e ce ne sono così tanti) non funzionano, le parentesi non giocano bene con il formato Markdown per i link. Ora, per riferimento futuro, aggiungi eventuali chiarimenti alla tua domanda nella domanda stessa, non nei commenti, non sono così visibili ed è facile perderli.
Modificherò il

@ Justin984 Si noti inoltre che lo scambio di stack di informatica potrebbe essere un po 'più appropriato per domande come questa rispetto ai programmatori. Non fraintendetemi, la domanda è perfettamente in argomento qui, e ha grandi risposte, ma non farebbe male se si verificasse una comunità un po 'più focalizzata sui concetti di informatica di base di quanto non lo siamo noi (no pubblica la stessa domanda in più siti, tuttavia, se ti capita di pubblicarla nel sito sbagliato, possiamo spostarla automaticamente su quella giusta).
yannis,

Risposte:


26

L'esempio di un perfetto laico potrebbe essere Facebook . La tua rete, i tuoi amici, i loro amici, ecc., Vengono collettivamente definiti come il grafico sociale .

In questo "grafico" le persone sono considerate nodi del grafico e i bordi sono collegamenti di amicizia .

In Facebook l' amico è una relazione bidirezionale (A è l'amico di B => B è l'amico di A) quindi il grafico è un grafico non indirizzato . Una rete come Google+ o Twitter sarebbe considerata un grafico diretto poiché la direzione della relazione ha un significato qui.

Tutti questi grafici sono indicati come grafici ciclici , poiché le relazioni tra i nodi possono formare cicli. Un albero genealogico , d'altra parte, è un tipo speciale di grafico che, tra le altre cose, è aciclico poiché non ci possono essere cicli nella relazione dell'albero genealogico. (È tecnicamente chiamato un grafico aciclico diretto (DAG) poiché è sia diretto che aciclico)

Questo dovrebbe coprire tutto il gergo di base che coinvolge i grafici, quindi ora dovresti essere in grado di seguire il resto del materiale sul campo.


1
Non riesco a credere che non mi sia venuto in mente che si chiama API del grafico di Facebook. Buon esempio!
ConditionRacer

4
Albero genealogico non ciclico? Non dovrebbe essere, ma purtroppo è ...
Marjan Venema,

1
@MarjanVenema, l'albero genealogico è ciclico ? (È un grafico diretto, quindi la direzione è importante nel determinare i cicli e presumibilmente le relazioni di passaggio non contano davvero.)
huon

@dbaupp: non ho alcun desiderio di entrare nei dettagli qui, quindi citerò solo una parola: incesto.
Marjan Venema,

5
@MarjanVenema, ti manca il mio punto. Un ciclo in un grafico diretto è un modello come A -> B -> C -> A(cioè un cerchio di frecce), l'incesto dà solo A -> B -> Ce A -> D -> C(cioè un diamante). Un ciclo in un albero genealogico necessita di un viaggio nel tempo.
huon,

16

I grafici sono uno dei concetti matematici più importanti utilizzati nell'informatica.

Hai visto grafici molte volte. Immagina di prendere un volo aereo da una città all'altra. Troverai inevitabilmente una bella rivista lucida della compagnia aerea nella tasca del sedile di fronte a te. Sul retro di quella rivista è quasi sempre possibile trovare una mappa che raffigura le città servite da quella compagnia aerea rappresentate come cerchi, con i voli che collegano quelle città rappresentate come linee curve. Questo è un grafico! Le città, rappresentate come cerchi, sono i nodi di questo grafico e i voli, rappresentati come linee curve, sono i bordi. I grafici sono solo cose con nodi e bordi che collegano i nodi.

Puoi abbellire quei semplici grafici in vari modi. Non vuoi vedere solo un mucchio di cerchi e linee quando guardi quella mappa. Quelle città hanno nomi. L'etichettatura di quelle città produce un grafico etichettato. (Puoi anche etichettare i bordi, ad esempio il volo 1234.) L'informatica spesso associa i dati ai nodi, a volte ai bordi, ma questa è solo un'estensione dell'etichetta. È ancora un grafico etichettato. Un altro abbellimento risulta se puoi volare direttamente dalla città A alla città B, ma non dalla città B alla città A. Un modo ovvio per ritrarre questo è mettere una freccia sulla linea che collega le città per rappresentare questa relazione a senso unico. Ora hai un grafico diretto.

Elenchi collegati, alberi, diagrammi di transizione di stato e molte altre strutture di dati di informatica sono tutti esempi di grafici. È un concetto molto potente.


In realtà estenderei questo esempio per notare che tutte le entità descritte nel tuo esempio potrebbero essere rappresentate come vertici in un grafico (città, piano, rivista, mappa, ecc.), La mappa stessa essendo solo un singolo vertice.
Demian Brecht,

14

Una domanda migliore sarebbe "A cosa non servono i grafici?". L'informatica è, per molti aspetti, lo studio dei grafici.

Un grafico, in parole povere, è una raccolta di oggetti astratti arbitrari chiamati "nodi" o "vertici" che rappresentano i punti di connessione. Sono quindi collegati tramite "percorsi" o "bordi". Il tipo di dati astratto "Grafico" è un'implementazione del "Grafico" matematico. Quindi fondamentalmente hai nodi e bordi come campi e varie operazioni che puoi eseguire su di essi. Ad esempio, puoi aggiungere un nuovo nodo alla raccolta del grafico (potrebbe trattarsi di un elenco o di un array o di un'altra struttura a seconda della lingua). È quindi possibile collegare quel nodo a nodi esistenti. Le operazioni includeranno anche l'attraversamento del grafico, il controllo se due nodi condividono un bordo (sono collegati), il recupero di valori da nodi o bordi e l'eliminazione di nodi o bordi dal grafico.

Per quanto riguarda l'utilizzo, i grafici sono utilizzati ovunque. Le reti ne fanno un uso particolarmente pesante, ma si trovano in Intelligenza artificiale, Data mining, Sviluppo di giochi, Geoinformatica e in una moltitudine di altre discipline. Nell'informatica formale, vedono un uso ancora maggiore, vale a dire come un modo di rappresentare lo stato.

In effetti, tutto ciò che è possibile rappresentare come un insieme di connessioni può essere rappresentato come un grafico e implementato tramite tale ADT in qualche forma.

Ecco un esempio grafico che ho realizzato:

Esempio di grafico


3

Un grafico è solo una raccolta di oggetti collegati tra loro da linee chiamate vertici.

Il termine "grafico" è un'astrazione e una generalizzazione di molte strutture di dati utilizzate nello sviluppo del software. Elenchi collegati, alberi binari e AST sono tutti grafici.

Fondamentalmente, qualsiasi raccolta di oggetti che ha puntatori che associano gli oggetti tra loro è un grafico. Una volta che hai un grafico, puoi applicare i principi della teoria dei grafi ad esso, per risolvere alcuni problemi .

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.