É meus caros leitores nem no transito teremos mais privacidade, no caso a inovação da vez vem da seguradora Porto Seguro, como sua nossa aplicação ela tenta atrair os jovens e por consequência criar uma
fidelidade de loga data (só é não bater muito o carro), bom o caso é simples o jovem (18 - 24) que possui um seguro recebe uma aplicação que é instalada no rasteador do carro essa aplicação verifica se esse individuo atingiu uma certa pontuação na qual pode levar ao contratante a receber descontos de 30% na renovação do seguro, bacana né ? então segue o link com a reportagem na integra : http://convergenciadigital.uol.com.br/cgi/cgilua.exe/sys/start.htm?infoid=36846&sid=97#.U8Pyq_ldWAU
- Noções de Algoritmos, Projetos de algoritmos e Estruturas de dados - Introdução à Lógica de Programação - Big Data: Recuperação de Informação via Captura, Armazenamento, Análise, Compartilhamento e Visualização de Dados
quinta-feira, 31 de julho de 2014
sábado, 26 de julho de 2014
Arvore Binaria de Busca
A campeã de uso, pois é em postagens anteriores relacionei arvore a banco de dados e essa estrutura é a mais usada em SGBDs, nesse caso aumentamos a nível de exigência, antes na arvore binaria, o grau era dois mas inserir elementos era feita de maneira live leve e solta, sendo assim agora vamos restringir ainda mais,
essa ED usa o conceito que todos os elementos a esquerda do nó pai é menor que o valor nó pai ( não vou especificar em números pois a chave quem implementa é o programador) e os valores da direita são maiores que o valor do pai então e se for igual ? depende da implementação do programador se vai ou não aceitar chaves repetidas e se aceitar como ria proceder com ela, então segue o material :
Árvores Binárias de Busca
Definição: É uma árvore binária em que todos os valores na subárvore esquerda são menores que o da raiz e todos os valores da subárvore direita são maiores (ou iguais) que o da raiz.
Exemplos de árvores binárias de busca:
Usando o caminhamento central, teríamos:
Seqüência (1° árvore): A, B, C, D, E, F e G.
Seqüência (2° árvore): 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 e 110.
A função EncontrarChave busca na árvore passada a chave informada. Se encontrar, P apontará para o nó que a contém e a função retorna true. Caso não encontre, a função retorna false e P aponta para o nó que seria o seu pai caso existisse.
A função Inserir usa EncontrarChave para verificar se a chave já existe. Caso exista, retorna false. Se não existir, aproveita o apontador P (aponta para o pai correto do nó a ser inserido) e inclui na subárvore esquerda de P se a chave sendo inserida for menor ou na direita se for maior, retornando true.
A remoção de um nó pode ser mais simples ou complexa de acordo com o número de subárvores que possui.
a) Removendo um nó sem subárvore (folha):
Nesse caso, basta apagar o nó e atualizar o apontador para ele no pai para nil.
b) Removendo um nó com uma subávore:
Nesse caso basta desviar o apontador que apontava para o nó a ser removido para a sua única subárvore. Por último, elimina-se o nó.
c) Removendo um nó com duas subávore:
Nesse caso é necessário encontrar o sucessor imediato, copiar o seu conteúdo para o nó a ser removido e remover o nó que continha o sucessor imediato.
Para remover um nó nesse caso teremos que colocar um outro nó no lugar daquele que vai ser removido. Para a escolha desse nó podemos usar duas abordagens:
essa ED usa o conceito que todos os elementos a esquerda do nó pai é menor que o valor nó pai ( não vou especificar em números pois a chave quem implementa é o programador) e os valores da direita são maiores que o valor do pai então e se for igual ? depende da implementação do programador se vai ou não aceitar chaves repetidas e se aceitar como ria proceder com ela, então segue o material :
Árvores Binárias de Busca
Definição: É uma árvore binária em que todos os valores na subárvore esquerda são menores que o da raiz e todos os valores da subárvore direita são maiores (ou iguais) que o da raiz.
Exemplos de árvores binárias de busca:
Usando o caminhamento central, teríamos:
Seqüência (1° árvore): A, B, C, D, E, F e G.
Seqüência (2° árvore): 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 e 110.
Implementação de uma Árvore Binária de Busca
A função EncontrarChave busca na árvore passada a chave informada. Se encontrar, P apontará para o nó que a contém e a função retorna true. Caso não encontre, a função retorna false e P aponta para o nó que seria o seu pai caso existisse.
A função Inserir usa EncontrarChave para verificar se a chave já existe. Caso exista, retorna false. Se não existir, aproveita o apontador P (aponta para o pai correto do nó a ser inserido) e inclui na subárvore esquerda de P se a chave sendo inserida for menor ou na direita se for maior, retornando true.
A remoção de um nó pode ser mais simples ou complexa de acordo com o número de subárvores que possui.
a) Removendo um nó sem subárvore (folha):
Nesse caso, basta apagar o nó e atualizar o apontador para ele no pai para nil.
b) Removendo um nó com uma subávore:
Nesse caso basta desviar o apontador que apontava para o nó a ser removido para a sua única subárvore. Por último, elimina-se o nó.
c) Removendo um nó com duas subávore:
Nesse caso é necessário encontrar o sucessor imediato, copiar o seu conteúdo para o nó a ser removido e remover o nó que continha o sucessor imediato.
Para remover um nó nesse caso teremos que colocar um outro nó no lugar daquele que vai ser removido. Para a escolha desse nó podemos usar duas abordagens:
- Sucessor imediato: utilizamos o nó mais à esquerda da subárvore direita do nó a ser removido.
- Predecessor imediato: utilizamos o nó mais à direita da subávore esquerda do nó a ser removido.
quarta-feira, 23 de julho de 2014
Tire aqui as suas dúvidas sobre a apresentação de hoje (23/07/14)
Olá, você que viu nossa apresentação de hoje (23/07/14) sobre Big Data, estruturas de dados e noções de algoritmos e ficou com alguma dúvida ou alguma observação a fazer, fique à vontade, esse post está dedicado exclusivamente a isso.
Deixe aqui nos comentários sua dúvida ou observação.
Link para o Slide: http://www.slideshare.net/maicsongabriel/fec-37285189
Link para o Slide: http://www.slideshare.net/maicsongabriel/fec-37285189
segunda-feira, 21 de julho de 2014
Arvore Binaria.
Mais uma vez vamos conversar sobre ED, mais então meu caros leitores poque falar tanto sobre ED? nessa altura do campeonato poucos sabem mas, sem Estrutura de Dados, sem Big Data ou talvez até sem computação, esse é o ramo onde estudamos eficiência e eficacia dos nosso códigos, aqui não basta
solucionar tem que ser da melhor maneira otimizando as aplicações facilitando a busca por dados e por consequência complicando a vida de muitos programadores , mas o nosso foco são Arvores Binarias, nesse caso é basicamente a continuação de nossa ultima postagem, arvores são complicadas de se manter, então uma arvore binaria cria uma restrição quanto ao grau, no caso o grau máximo passa a ser 2 e não n grau como foi na nossa ultima postagem, sem mais conversa segue o material :
Árvores Binárias
Definição: São estruturas do tipo árvore com as seguintes características:
A implementação encadeada de árvore binária tem as seguintes características:
A implementação encadeada de árvore binária é mais usada do que a estática porque e mais eficiente em termos de espaço em memória.
O procedimento CriarNo recebe um apontador ArvoreBinaria e o dado que será colocado no nó. Além de alocar uma variável dinâmica para o nó, copia o dado para esta variável e faz com que os apontadores para o pai, para o nó esquerdo e para o nó direito sejam inicializados através do procedimento Inicializar.
A função ExisteNo retorna true se existe um nó na árvore binária passada seguindo pela direção especificada.
O procedimento Deslocar move o apontador do tipo ArvoreBinaria na direção especificada. Se a direção for nó raiz, Deslocar só encerra quando ArvoreBinaria não tiver mais um nó pai.
O procedimento ObterDado coloca em Dado (parâmetro), o valor contido no nó passado.
O procedimento AlterarDado modifica o valor do dado contido no nó passado para o valor passado como parâmetro.
O procedimento AdicionarFilho coloca um novo nó na direção especificada (nó esquerdo ou nó direito) e copia o dado passado para ele.
Fonte : http://200.17.141.213/~alberto/2012-2/ed1/aulas/arvores_binarias.htm
solucionar tem que ser da melhor maneira otimizando as aplicações facilitando a busca por dados e por consequência complicando a vida de muitos programadores , mas o nosso foco são Arvores Binarias, nesse caso é basicamente a continuação de nossa ultima postagem, arvores são complicadas de se manter, então uma arvore binaria cria uma restrição quanto ao grau, no caso o grau máximo passa a ser 2 e não n grau como foi na nossa ultima postagem, sem mais conversa segue o material :
Árvores Binárias
Definição: São estruturas do tipo árvore com as seguintes características:
- A árvore tem grau 2.
- Cada subárvore é identificada como subárvores esquerda e direita.
- Pode haver uma ordenação entre as subárvores.
Implementação Encadeada
A implementação encadeada de árvore binária tem as seguintes características:
- Usa um estrutura dinâmica com apontadores.
- Cada nó contém os dados e os apontadores para as subárvores esquerda e direita.
A implementação encadeada de árvore binária é mais usada do que a estática porque e mais eficiente em termos de espaço em memória.
Definição de uma árvore binária em pascaltype
ArvoreBinaria = ^No;
No = record
Dado: tipo_do_dado;
Esquerdo,
Direito,
Pai : ArvoreBinaria; end;
ArvoreBinaria = ^No;
No = record
Dado: tipo_do_dado;
Esquerdo,
Direito,
Pai : ArvoreBinaria; end;
O procedimento CriarNo recebe um apontador ArvoreBinaria e o dado que será colocado no nó. Além de alocar uma variável dinâmica para o nó, copia o dado para esta variável e faz com que os apontadores para o pai, para o nó esquerdo e para o nó direito sejam inicializados através do procedimento Inicializar.
A função ExisteNo retorna true se existe um nó na árvore binária passada seguindo pela direção especificada.
O procedimento Deslocar move o apontador do tipo ArvoreBinaria na direção especificada. Se a direção for nó raiz, Deslocar só encerra quando ArvoreBinaria não tiver mais um nó pai.
O procedimento ObterDado coloca em Dado (parâmetro), o valor contido no nó passado.
O procedimento AlterarDado modifica o valor do dado contido no nó passado para o valor passado como parâmetro.
O procedimento AdicionarFilho coloca um novo nó na direção especificada (nó esquerdo ou nó direito) e copia o dado passado para ele.
Fonte : http://200.17.141.213/~alberto/2012-2/ed1/aulas/arvores_binarias.htm
sexta-feira, 18 de julho de 2014
Power Systems
Como coletar grande volume da dados ? a IBM sabe, atualmente a IBM deselvolve uma aplicação muito bacana para auxiliar o controle de volume de dados através do fluxo desses, ou seja controlar a saida e
entrada de dados, desse modo é possivel prever o estado do mercado futuro(), senda assim sua empresa sabe como será as coisas amanhã dando uma vantagem sem tamanho sobre todas as outras, então você caro empresario visite a IBM e caro leitor aprenda a usar esse tipo de aplicação, segue o link da IBM :http://www-03.ibm.com/systems/br/power/solutions/bigdata-analytics.html
entrada de dados, desse modo é possivel prever o estado do mercado futuro(), senda assim sua empresa sabe como será as coisas amanhã dando uma vantagem sem tamanho sobre todas as outras, então você caro empresario visite a IBM e caro leitor aprenda a usar esse tipo de aplicação, segue o link da IBM :http://www-03.ibm.com/systems/br/power/solutions/bigdata-analytics.html
quinta-feira, 17 de julho de 2014
Algoritmos de Ordenação - Insection Sort
Insertion sort
O Insertion sort é um algoritmo simples e eficiente quando aplicado em pequenas listas. Neste algoritmo a lista é percorrida da esquerda para a direita, à medida que avança vai deixando os elementos mais à esquerda ordenados.
O algoritmo funciona da mesma forma que as pessoas usam para ordenar cartas em um jogo de baralho como o pôquer.
Esquema de funcionamento do Insertion Sort:
- Neste passo é verificado se o 5 é menor que o 3, como essa condição é falsa, então não há troca.
- É verificado se o quatro é menor que o 5 e o 3, ele só é menor que o 5, então os dois trocam de posição.
- É verificado se o 2 é menor que o 5, 4 e o 3, como ele é menor que 3, então o 5 passa a ocupar a posição do 2, o 4 ocupa a posição do 5 e o 3 ocupa a posição do 4, assim a posição do 3 fica vazia e o 2 passa para essa posição.
O mesmo processo de comparação acontece com o número 1, após esse processo o vetor fica ordenado.
Pseudocódigo
Animações
Fontes: http://pt.wikipedia.org/wiki/Insertion_sort;
Youtube;
Devmedia.
quarta-feira, 16 de julho de 2014
Algoritmos de Ordenação - Bubble Sort
Bubble Sort
Primeiramente um vídeo simples e bem divertido em que é usado "Folk Dance" para explicar como ele funciona:
Bubble sort (ou método da bolha) é o algoritmo mais simples, mas o menos eficientes. Neste algoritmo cada elemento da posição i será comparado com o elemento da posição i + 1, ou seja, um elemento da posição 2 será comparado com o elemento da posição 3. Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para listas muito grandes.
Esquema de funcionamento do Buble Sort:
- É verificado se o 3 é maior que 5, por essa condição ser falsa, não há troca.
- É verificado se o 5 é maior que 1, por essa condição ser verdadeira, há uma troca.
- É verificado se o 5 é maior que 2, por essa condição ser verdadeira, há uma troca.
- É verificado se o 5 é maior que 4, por essa condição ser verdadeira, há uma troca.
- O método retorna ao início do vetor realizando os mesmos processos de comparações, isso é feito até que o vetor esteja ordenado.
Complexidade
Com relação a complexidade do algoritmo, no melhor caso, ele executa operações relevantes, onde n representa o número de elementos do vetor. No pior caso, são feitas operações. A complexidade desse algoritmo é de Ordem quadrática. Por isso, ele não é recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados.
Bubble sort | |
---|---|
classe | Algoritmo de ordenação |
estrutura de dados | Array, Listas ligadas |
complexidade pior caso | |
complexidade caso médio | |
complexidade melhor caso | |
complexidade de espaços pior caso | auxiliar |
Segue abaixo uma animação que demonstra como o processo funciona:
Fontes: http://pt.wikipedia.org/wiki/Bubble_sort;
Youtube
Big Data e o mercado de trabalho
Olá, aqui já foi falado sobre Big Data, sobre seu uso e mais diversos campos de aplicação, também sobre seu crescimento, mas você que leu e se interessou por Big Data se pergunta, "legal, mas como eu posso trabalhar com Big Data ?" pois é, boa pergunta e aqui está a resposta para essa pergunta.
Estava navegando nas nets qualquer dia desse, quando me deparei com esse artigo sobre áreas de trabalho com Big Data e as suas devidas explicações.
Tem muitas áreas, alguns exemplos são: Analista de Mercado, Desenvolvedor de Software, Administradores de Bancos de Dados, entre outras, segue o link com a lista das profissões mais lucrativas:
Estruturas de dados (definição)
Olá, nesse post irei falar um pouco mais sobre estruturas de dados.
No maravilhoso mundo da computação, uma estrutura de dados é um modo particular de armazenar e organizar dados em um computador de modo que possam ser usados com eficiência.
Existem diferentes tipos de estruturas para diferentes tipos de aplicação, enquanto algumas são bem simples, existem outras que são altamente especializadas que se destinam a tarefas específicas. Um exemplo das estruturas especializadas são as B-trees, que são particularmente indicadas para a implementação de bases de dados.
Estruturas de dados e algoritmos são temas fundamentais na computação, sendo utilizados nas mais diversas áreas do conhecimento e com os mais diferentes propósitos de aplicação. Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados de forma coerente, caracterizam uma estrutura de dados. A organização e os métodos para manipular essa estrutura é que lhe conferem singularidade e diminuição do espaço ocupado pela memória RAM, além de tornar o código-fonte do programa mais enxuto e simplificado.
Existem estruturas de dados homogêneas, por exemplo, vetores e matrizes, que são formadas pelo mesmo tipo de dado primitivo, e existem estruturas heterogêneas (registros) que são conjuntos de dados formados por tipos de dados primitivos diferentes em uma mesma estrutura.
As estruturas de dados podem transformar um problema que antes era enorme em um probleminha de fácil resolução.
Essas estruturas estão em constante desenvolvimento, mas, apesar disso, existem estruturas que são clássicas e se comportam como padrões. São elas os vetores e os arrays.
Esse post foi apenas uma leve explanação sobre estruturas de dados, já existem alguns posts mais específicos sobre tipos de dados no Blog.
Aqui estão alguns links sobre estruturas:
Estruturas de Dados e os ponteiros da vida
Array
Lista encadeada
Lista Ordenada
___________________________________________________________
Qualquer dúvida deixe nos comentários que procurarei responder em breve.
___________________________________________________________
Fonte:Estrutura de dados
No maravilhoso mundo da computação, uma estrutura de dados é um modo particular de armazenar e organizar dados em um computador de modo que possam ser usados com eficiência.
Existem diferentes tipos de estruturas para diferentes tipos de aplicação, enquanto algumas são bem simples, existem outras que são altamente especializadas que se destinam a tarefas específicas. Um exemplo das estruturas especializadas são as B-trees, que são particularmente indicadas para a implementação de bases de dados.
Estruturas de dados e algoritmos são temas fundamentais na computação, sendo utilizados nas mais diversas áreas do conhecimento e com os mais diferentes propósitos de aplicação. Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados de forma coerente, caracterizam uma estrutura de dados. A organização e os métodos para manipular essa estrutura é que lhe conferem singularidade e diminuição do espaço ocupado pela memória RAM, além de tornar o código-fonte do programa mais enxuto e simplificado.
Existem estruturas de dados homogêneas, por exemplo, vetores e matrizes, que são formadas pelo mesmo tipo de dado primitivo, e existem estruturas heterogêneas (registros) que são conjuntos de dados formados por tipos de dados primitivos diferentes em uma mesma estrutura.
As estruturas de dados podem transformar um problema que antes era enorme em um probleminha de fácil resolução.
Essas estruturas estão em constante desenvolvimento, mas, apesar disso, existem estruturas que são clássicas e se comportam como padrões. São elas os vetores e os arrays.
Esse post foi apenas uma leve explanação sobre estruturas de dados, já existem alguns posts mais específicos sobre tipos de dados no Blog.
Aqui estão alguns links sobre estruturas:
Estruturas de Dados e os ponteiros da vida
Array
Lista encadeada
Lista Ordenada
___________________________________________________________
Qualquer dúvida deixe nos comentários que procurarei responder em breve.
___________________________________________________________
Fonte:Estrutura de dados
Técnicas de Projetos de algoritmos
Olá, nesse post irei falar um pouco sobre técnicas de projetos de algoritmos.
O que são Técnicas de Projetos de Algoritmos ?
São técnicas que compreendem os métodos de codificação de algoritmos de forma a acentuar sua complexidade, levando em conta a forma que determinado algoritmo chega a solução desejada.
Técnicas comuns são: 'Força Bruta' e a 'Divisão e conquista'.
Força Bruta:
A força bruta (ou busca exaustiva) é um algoritmo de uso geral que consiste em enumerar todos os possíveis candidatos de uma solução e verificar se cada um satisfaz o problema.
Ex.: Um algoritmo para encontrar os divisores de um número natural n é enumerar todos os números naturais de 1 a n e verificar para cada um se ele dividido por n resulta em resto 0;
Esse algoritmo possui uma implementação muito simples, e sempre encontrará uma solução se ela existir. Entretanto, seu custo computacional é proporcional ao número de candidatos a solução, que, em problemas reais, tende a crescer exponencialmente. Portanto, a força bruta é tipicamente usada em problemas cujo tamanho é limitado, ou quando há uma heurística usada para reduzir o conjunto de candidatos para uma espaço aceitável. Também pode ser usado quando a simplicidade da implementação é mais importante que a velocidade de execução, como nos casos de aplicações críticas em que os erros de algoritmo possuem em sérias consequências.
Divisão e conquista:
Esta técnica consiste em dividir um problema maior recursivamente em problemas menores até que o problema possa ser resolvido diretamente. Então a solução do problema inicial é dada através da combinação dos resultados de todos os problemas menores computados.
A técnica soluciona o problema em 3 técnicas: Divisão, conquista e combinação.
Problemas que utilizam esta técnica podem tirar proveito de máquinas com múltiplos processadores pois a fase de divisão em problemas menores proporciona uma divisão natural do trabalho. Cada um dos problemas menores obtidos pode ser calculado separadamente em um processador sem depender dos demais.
A solução por esta técnica também é eficiente no uso da memória cache pois ao final da fase de divisão grande parte dos dados necessários para a fase de combinação já estão disponíveis na cache proporcionando um acesso mais veloz aos dados. Porém o caráter recursivo das soluções acaba gerando um trabalho de processamento maior devido ao uso de chamadas recursivas e o uso da pilha de chamadas.
Bom, espero que tenha entendido, em breve postarei mais sobre o assunto. Qualquer dúvida deixe nos comentário que procurarei responder em breve.
Fonte:Técnicas de Projetos de Algoritmos
O que são Técnicas de Projetos de Algoritmos ?
São técnicas que compreendem os métodos de codificação de algoritmos de forma a acentuar sua complexidade, levando em conta a forma que determinado algoritmo chega a solução desejada.
Técnicas comuns são: 'Força Bruta' e a 'Divisão e conquista'.
Força Bruta:
A força bruta (ou busca exaustiva) é um algoritmo de uso geral que consiste em enumerar todos os possíveis candidatos de uma solução e verificar se cada um satisfaz o problema.
Ex.: Um algoritmo para encontrar os divisores de um número natural n é enumerar todos os números naturais de 1 a n e verificar para cada um se ele dividido por n resulta em resto 0;
Esse algoritmo possui uma implementação muito simples, e sempre encontrará uma solução se ela existir. Entretanto, seu custo computacional é proporcional ao número de candidatos a solução, que, em problemas reais, tende a crescer exponencialmente. Portanto, a força bruta é tipicamente usada em problemas cujo tamanho é limitado, ou quando há uma heurística usada para reduzir o conjunto de candidatos para uma espaço aceitável. Também pode ser usado quando a simplicidade da implementação é mais importante que a velocidade de execução, como nos casos de aplicações críticas em que os erros de algoritmo possuem em sérias consequências.
Divisão e conquista:
Esta técnica consiste em dividir um problema maior recursivamente em problemas menores até que o problema possa ser resolvido diretamente. Então a solução do problema inicial é dada através da combinação dos resultados de todos os problemas menores computados.
A técnica soluciona o problema em 3 técnicas: Divisão, conquista e combinação.
Problemas que utilizam esta técnica podem tirar proveito de máquinas com múltiplos processadores pois a fase de divisão em problemas menores proporciona uma divisão natural do trabalho. Cada um dos problemas menores obtidos pode ser calculado separadamente em um processador sem depender dos demais.
A solução por esta técnica também é eficiente no uso da memória cache pois ao final da fase de divisão grande parte dos dados necessários para a fase de combinação já estão disponíveis na cache proporcionando um acesso mais veloz aos dados. Porém o caráter recursivo das soluções acaba gerando um trabalho de processamento maior devido ao uso de chamadas recursivas e o uso da pilha de chamadas.
Bom, espero que tenha entendido, em breve postarei mais sobre o assunto. Qualquer dúvida deixe nos comentário que procurarei responder em breve.
Fonte:Técnicas de Projetos de Algoritmos
Arvores
Falemos agora sobre Arvores, mas não as que você caro leitor encontra na rua e sim as que vão reprovas muitos calouros de EC, CC e SI. Arvores são estruturas puramente recursivas (pode ser usado o paradigma
intuitivo, porem se torna complexo) recursividade poderia ser um tema bacana , quem sabe mais a frente, uma arvore é uma estrutura de dados vastamente utilizada seu conceito é de utilizar dados não homogêneo e os organizar (lembra os conceitos de Big Data né?) de modo a facilitar o seu armazenamento e por consequência busca de dados, mais a frente veremos que os SGBDs usam muito esse tipo de ED.
Árvores
Definição: É uma estrutura onde a relação entre seus elementos é de um para vários, também denominada estrutura hierárquica.
Uma árvore consiste em um conjunto de nós, tal que:
Árvores podem ser usadas em diversos tipos de aplicações:
Fonte : http://200.17.141.213/~alberto/2012-2/ed1/aulas/arvores.htm
intuitivo, porem se torna complexo) recursividade poderia ser um tema bacana , quem sabe mais a frente, uma arvore é uma estrutura de dados vastamente utilizada seu conceito é de utilizar dados não homogêneo e os organizar (lembra os conceitos de Big Data né?) de modo a facilitar o seu armazenamento e por consequência busca de dados, mais a frente veremos que os SGBDs usam muito esse tipo de ED.
Árvores
Definição: É uma estrutura onde a relação entre seus elementos é de um para vários, também denominada estrutura hierárquica.
Uma árvore consiste em um conjunto de nós, tal que:
- Existe um nó denominado raiz.
- Os demais nós formam m (m >= 0) conjuntos onde cada um deles também é uma árvore.
Aplicações de Árvores
Árvores podem ser usadas em diversos tipos de aplicações:
- Aplicações onde é necessário recuperar informações rapidamente (SGBD)
- Programas onde as informações têm que ser estruturadas de forma hierárquica.
- Aplicações onde é necessário armazenar expressões matemáticas.
Fonte : http://200.17.141.213/~alberto/2012-2/ed1/aulas/arvores.htm
terça-feira, 15 de julho de 2014
Chef Watson with Bon Appetit
Achei uma publicação muito bacana da IBM para variar, bom se trata do usos de Big data na gastronomia, então já pensou chegar em um restaurante e seu pedido já estar na mesa sem você pedir? é isso mesmo "Chef Watson with Bon Appetit" se trata de uma aplicação que utiliza um conjunto de informações para traçar um perfil gastronômico de um cozinheiro para criar novas receitas, ratatouille que se cuide, segue o link : http://info.abril.com.br/noticias/ti/2014/06/app-para-supercomputador-watson-leva-big-data-para-a-gastronomia.shtml
o
o
segunda-feira, 14 de julho de 2014
Fila
Quem nunca se revoltou em passar horas e horas em filas? bom nesse caso fila é algo muito bom, continuando os conceitos de Estrutura de dados, vamos abordar um pouco de uma estrutura muito
importante, no caso fila, se trata de uma estrutura restrita onde os dados são armazenados seguindo a restrição que o primeiro a entrar é o primeiro a sair, ou seja existe concentos FIFO(first in first out), uma fila possui inicio e fim por consequência, sem mais delongas segue um material bacana sobre fila:
Fila
Definição: É uma lista na qual as inserções são feitas em uma extremidade chamada "cauda" ou "fundo", e as remoções são feitas na outra extremidade, chamada "cabeça" ou "frente".
Numa fila, o primeiro a entrar é o primeiro a sair. Esta política de acesso é denominada FIFO ("First In, First Out"). Ilustrando teríamos:
A tabela abaixo descreve as principais operações:
Há basicamente 2 formas de implementar uma fila:
importante, no caso fila, se trata de uma estrutura restrita onde os dados são armazenados seguindo a restrição que o primeiro a entrar é o primeiro a sair, ou seja existe concentos FIFO(first in first out), uma fila possui inicio e fim por consequência, sem mais delongas segue um material bacana sobre fila:
Fila
Definição: É uma lista na qual as inserções são feitas em uma extremidade chamada "cauda" ou "fundo", e as remoções são feitas na outra extremidade, chamada "cabeça" ou "frente".
Numa fila, o primeiro a entrar é o primeiro a sair. Esta política de acesso é denominada FIFO ("First In, First Out"). Ilustrando teríamos:
A tabela abaixo descreve as principais operações:
Operação | Descrição |
Inicializar | Cria uma fila vazia. |
Inserir | Insere um elemento no fundo (cauda) da fila. |
Retirar | Retira um elemento que está na frente (cabeça) da fila. |
Frente | Retorna o elemento que está na frente (cabeça) da fila. |
Vazia | Indica se a fila está vazia. |
- Usando uma lista encadeada:
- O elemento inserido é colocado no fim da lista (cauda).
- A retirada é feita no início (cabeça).
- Usando um array:
- há duas variáveis (Início e Fim) que indicam as extremidades da fila (cabeça e cauda).
- Ao retirar um elemento, isto é feito na posição Início.
- Ao inserir, o novo elemento é colocado na posição Fim + 1.
Fonte : http://200.17.141.213/~alberto/2012-2/ed1/aulas/listas_restritas.htm
sexta-feira, 4 de julho de 2014
Aplicações que usam Big Data
Olá pessoal, estamos ai mais uma vez falando sobre Big Data, naturalmente é uma revolução devido ao grande volume dados cujo a internet ou aplicação cujo efetue uma coleta de grande volume de dados, ou
seja trabalhar com diversos tipos de dados não estruturados, mas falamos muito e mostramos pouco então resolvi buscar algumas aplicações que usam Big Data e acabei encontrando uma publicação bacana do Olhar Digital então segue ai o link aproveitem e botem a cabeça para pensar. link : http://olhardigital.uol.com.br/pro/video/39376/39376
Fonte : http://olhardigital.uol.com.br/
seja trabalhar com diversos tipos de dados não estruturados, mas falamos muito e mostramos pouco então resolvi buscar algumas aplicações que usam Big Data e acabei encontrando uma publicação bacana do Olhar Digital então segue ai o link aproveitem e botem a cabeça para pensar. link : http://olhardigital.uol.com.br/pro/video/39376/39376
Fonte : http://olhardigital.uol.com.br/
quarta-feira, 2 de julho de 2014
Lista Restrita.
Pilha
Definição: Uma pilha é uma lista em que as operações de inserção e remoção são feitas na mesma extremidade da lista, conhecido como topo da pilha.
Esta restrição de acesso (ou disciplina) que caracteriza a pilha é denominada LIFO, abreviação de "Last In First Out", isto é, o último a entrar será o primeiro a sair.
Graficamente temos:
A tabela abaixo descreve as principais operações:
Operação | Descrição |
Inicializar | Executa as ações necessárias para aprontar a pilha. |
Empilhar | Coloca um elemento no topo da pilha. |
Desempilhar | Remove o elemento que está no topo da pilha. |
Topo | Retorna o elemento que está no topo da pilha. |
Vazia | Indica se a pilha está vazia. |
- Usando uma lista encadeada: o elemento inserido é colocado na cabeça da lista.
- Usando um array: o elemento inserido é colocado na posição nº de elementos + 1.
fonte : http://albertocn.sytes.net/2010-2/ed1/aulas/listas_restritas.htm
Assinar:
Postagens (Atom)