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.
computer-science
graph
ConditionRacer
fonte
fonte
Respostas:
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.
fonte
A -> B -> C -> A
(por exemplo, um círculo de setas), o incesto apenas forneceA -> B -> C
eA -> D -> C
(por exemplo, um diamante). Um ciclo em uma árvore genealógica precisa de viagens no tempo.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.
fonte
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:
fonte
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 .
fonte