O que são gráficos em termos de leigos


18

O que são gráficos, em ciência da computação, e para que são usados? Em termos leigos, de preferência.

Eu li a definição na Wikipedia :

Na ciência da computação, um gráfico é um tipo de dados abstrato que visa implementar os conceitos de gráfico e hipergrama da matemática.

Uma estrutura de dados de gráfico consiste em um conjunto finito (e possivelmente mutável) de pares ordenados, chamados arestas ou arcos, de certas entidades chamadas nós ou vértices. Como na matemática, diz-se que uma aresta (x, y) aponta ou passa de x para y. Os nós podem fazer parte da estrutura do gráfico ou podem ser entidades externas representadas por índices ou referências inteiros.

mas estou procurando uma definição menos formal e mais fácil de entender.


Você quer dizer graficamente a estrutura de dados?
System Down

1
Sim, desculpe. Gráficos, como descrito aqui en.wikipedia.org/wiki/Graph_(abstract_data_type) , apenas estou procurando uma definição menos formal e mais fácil de entender.
ConditionRacer

@ Justin984 Os links da Wikipedia com parênteses (e existem muitos) não funcionam, os parênteses não funcionam bem com o formato Markdown para links. Agora, para referência futura, adicione esclarecimentos à sua pergunta na própria pergunta, não nos comentários, eles não são tão visíveis e é fácil perdê-los. Vou editar o seu comentário acima, na questão ...
yannis

@ Justin984 Observe também que o Computer Science Stack Exchange pode ser um pouco mais apropriado para perguntas como essa do que os programadores. Não me entenda mal, a pergunta está perfeitamente sobre o tópico aqui e obteve ótimas respostas, mas não faria mal se você visse uma comunidade que é um pouco mais focada nos principais conceitos de ciência da computação do que nós (não publique a mesma pergunta em vários sites; se você publicá-la no site errado, podemos movê-la para a correta automaticamente).
yannis

Respostas:


26

Um exemplo perfeito de leigo pode ser o Facebook . A rede de vocês, seus amigos e seus amigos, etc., é chamada coletivamente de gráfico social .

Neste "gráfico", as pessoas são consideradas nós do gráfico e as bordas são links de amizade .

No Facebook amigo é uma relação bidirecional (A é amigo do B => B é amigo de A) de modo que o gráfico é um grafo não direcionado . Uma rede como o Google+ ou o Twitter seria considerada um gráfico direcionado, pois a direção do relacionamento tem significado aqui.

Todos esses gráficos são referidos como gráficos cíclicos , pois os relacionamentos entre os nós podem formar ciclos. Uma Árvore Familiar , por outro lado, é um tipo especial de gráfico que, entre outras coisas, é Acíclico, pois não pode haver ciclos no relacionamento com árvores genealógicas. (É tecnicamente chamado de Gráfico Acíclico Dirigido (DAG), pois é direcionado e acíclico)

Isso deve abranger todo o jargão básico que envolve gráficos; portanto, agora você deve poder acompanhar o restante do material no campo.


1
Não posso acreditar que não me ocorreu que ele se chama API do Facebook. Bom exemplo!
ConditionRacer

4
Árvore genealógica não cíclica? Não deveria ser, mas infelizmente ...
Marjan Venema

1
@MarjanVenema, a árvore genealógica é cíclica ? (É um grafo dirigido, de modo a direção é importante na determinação de ciclos e, presumivelmente, relações passo realmente não contam.)
huon

@dbaupp: Não tenho nenhum desejo de entrar em detalhes aqui, então vou mencionar apenas uma palavra: incesto.
Marjan Venema

5
@MarjanVenema, você está perdendo o meu argumento. Um ciclo em um gráfico direcionado é um padrão como A -> B -> C -> A(por exemplo, um círculo de setas), o incesto apenas fornece A -> B -> Ce A -> D -> C(por exemplo, um diamante). Um ciclo em uma árvore genealógica precisa de viagens no tempo.
huon

16

Os gráficos são um dos conceitos matemáticos mais importantes usados ​​na ciência da computação.

Você já viu gráficos várias vezes. Imagine que você está pegando um vôo de avião de uma cidade para outra. Você encontrará inevitavelmente uma bela revista brilhante da companhia aérea no bolso do assento à sua frente. Perto da parte traseira da revista, quase sempre é possível encontrar um mapa que mostra as cidades atendidas por essa companhia aérea representada como círculos, com os voos que conectam essas cidades representadas como linhas curvas. Isso é um gráfico! As cidades, representadas como círculos, são os nós deste gráfico e os vôos, representados como linhas curvas, são as arestas. Os gráficos são apenas coisas com nós e arestas que conectam nós.

Você pode embelezar esses gráficos simples de várias maneiras. Você não deseja ver apenas um monte de círculos e linhas quando estiver olhando para o mapa. Essas cidades têm nomes. Rotular essas cidades resulta em um gráfico rotulado. (Você também pode rotular as bordas, por exemplo, o vôo 1234.) A ciência da computação geralmente associa dados aos nós, às vezes às bordas, mas isso é apenas uma extensão do rótulo. Ainda é um gráfico rotulado. Outro embelezamento resulta se você puder voar diretamente da cidade A para a cidade B, mas não da cidade B para a cidade A. Uma maneira óbvia de retratar isso é colocar uma seta na linha que conecta as cidades para representar esse relacionamento de mão única. Agora você tem um gráfico direcionado.

Listas vinculadas, árvores, diagramas de transição de estados e muitas outras estruturas de dados de ciência da computação são exemplos de gráficos. É um conceito muito poderoso.


Na verdade, eu estenderia esse exemplo para observar que todas as entidades descritas no seu exemplo poderiam ser representadas como vértices em um gráfico (cidade, avião, revista, mapa etc.), o próprio mapa sendo apenas um vértice.
Demian Brecht

14

Uma pergunta melhor seria "Para que os gráficos não são usados?". A Ciência da Computação é, em muitos aspectos, o estudo de Gráficos.

Um gráfico, em termos leigos, é uma coleção de objetos abstratos arbitrários chamados "nós" ou "vértices" que representam pontos de conexão. Eles são conectados através de "caminhos" ou "arestas". O tipo de dado abstrato "Graph" é uma implementação do "Graph" matemático. Então, basicamente, você tem nós e arestas como campos e várias operações que você pode executar neles. Você pode, por exemplo, adicionar um novo nó à coleção do gráfico (pode ser uma lista ou uma matriz ou alguma outra estrutura, dependendo do idioma). Em seguida, você pode vincular esse nó aos nós existentes. As operações também incluiriam percorrer o gráfico, verificar se dois nós compartilham uma aresta (estão conectados), recuperar valores de nós ou arestas e a exclusão de nós ou arestas do gráfico.

No que diz respeito à utilização, os gráficos são usados ​​em todo o lugar. As redes fazem um uso particularmente pesado delas, mas elas são encontradas em Inteligência Artificial, Mineração de Dados, Desenvolvimento de Jogos, Geoinformática e várias outras disciplinas. Na Ciência da Computação formal, eles veem ainda mais uso, nomeadamente como uma maneira de representar o estado.

Efetivamente, qualquer coisa que você possa representar como um conjunto de conexões pode ser representada como um gráfico e implementada através desse ADT de alguma forma.

Aqui está um exemplo de gráfico que eu criei:

Exemplo de gráfico


3

Um gráfico é apenas uma coleção de objetos conectados por linhas chamadas vértices.

O termo "gráfico" é uma abstração e generalização de muitas estruturas de dados usadas no desenvolvimento de software. Listas vinculadas, árvores binárias e ASTs são todos gráficos.

Basicamente, qualquer coleção de objetos que possui ponteiros que associam os objetos um ao outro é um gráfico. Depois de ter um gráfico, você pode aplicar os princípios da teoria dos grafos para resolver certos problemas .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.