30 de março de 2012

Projeto de Banco de Dados - Aula 2


- Ìndices

* Junção de tabelas com um índice

Um segundo benefício de índices é melhorar a performance ao unir tabelas relacionais. Por exemplo, o seguinte comando SQL recupera os albuns de um determinado artista.
2.1
2.2

* Cardinalidade de índices

Quando utilizamos diferentes índices que podem ser utilizados em uma consulta. O banco de dados tenta identificar o índice mais efetivo para a consulta.

2.3

O otimizador escolhe um índice baseado no custo estimado para fazer o menor esforço possível. Vejamos as cardinalidades que confirmam a razão dessa decisão.

SET @@session.optimizer_switch='index_merge_intersection=off';

2.4

Cardinalidade é maior número de valores únicos.
Selectividade é definido como o número de valores distintos em relação ao número de registros na tabela.
- O ideal é valor igual 1;
- Ruim quando existem poucos valores distintos.

2.5
2.6

Utilizando wildcards para buscas parciais com índices

2.7

O que acontece se você colocar o '%' antes do termo de busca?

* Definindo a Linha como INDEX UNIQUE

Se quisermos garantir que os artistas tenham um nome único, criamos um índice do tipo UNIQUE.

Vantagens:
- Garante uma única ocorrência do valor;
- Informa ao otimizador que existe no máximo um valor para um registro.

2.8
2.9

*Ordenando Resultados

Um índice pode ser utilizado para ordenar os resultados.
Sem um índice o Banco de Dados utiliza um filesort interno para retornar as linhas na ordem pedida.

2.10
 2.11
2.12

* Índice de Multiplas Colunas

Um índice pode ter duas ou mais colunas, conhecidas como índices compostos ou concatenados.

Determinando que tipo de índice utilizar

2.13
2.14
2.15

Efetivamente existe um limite prático na criação de índices. O tamanho da largura do índice deve ser o tão curto quanto possível, para que seja atravessado a quantidade a ser lida o mais rápido possível.

2.16
2.17

* Combinando WHERE e ORDER BY

É possível utilizar um índice de multiplas colunas para otimizar a combinação de WHERE e ORDER BY.

2.18
2.19

* Impactos na utilização de Índices

- Adicionar indices em tabelas afetam a performance de escritas.
- Isto pode ser facilmente verificado na tabela ALBUM, através da definição da mesma.

2.20

Criar uma tabela com a mesma estrutura de ALBUM sem índices e inserir os dados contidos em ALBUM nesta nova tabela. Verificar os tempos de execução.

* Ìndices duplicados

Uma das melhores tecnicas para otimização é remover indices duplicados.
Ocorrências comuns são índices de chaves-primarias ou indices que são subconjuntos de outros indices.
Qualquer indice que está contido dentro da porção mais a esquerda de outro indice é um indice duplicado que não será utilizado.

2.21

* Impactos na utilização de Índices

-Espaço em disco

Verificar o tamanho de tabelas com e sem índices:

2.22

Melhoria na utilização de Ìndices

2.23

Um dos motivos para não utilizar o * nas consultas SQL.

16 de março de 2012

Computação Gráfica - Lista 1


Descreva as seguintes etapas de um sistema de Visão Computacional:

-Aquisição da Imagem
A luz incide sobro o objeto, que por sua vez absorve, transmite e reflete parte dessa luz, que é captada por um dipositivo de imagem, onde o mais utilizado é a câmera CCD, que possui uma matriz de células semicondutoras fotossensíveis, que armazenam a carga elétrica emitida pela luz. Nessa aquisição da imagem podem ser influenciada por diversos fatores, tais como, objeto em movimento, superfície do objeto, iluminação, tamanha e a distância do objeto ao dispositivo de captação da imagem.

-Restauração e Realce
a restauração visa corrigir as distorções sofridas pela imagem, geradas normalmente pela limitação dos sistemas de aquisição de imagem e o realce, visa enfatizar alguma característica de interesse na imagem.


-Segmentação
Tem por objetivo isolar areas da imagems para uma posterior extração, aquisição de atributos e calculos de parâmetros.

-Extração de atributos/características
É um processo que consiste em garimpar informações de uma imagem e como sabemos, uma imagem é formada por modelos matemáticos como matrizes e estas contêm características que podem ser matematicamente identificadas como: textura, cantos, bordas e etc.

-Classificação e reconhecimento
É o ato de distinguir os objetos na imagem agrupando em parâmetros de acordo com sua semelhança para cada região de pixels encontrada. Onde compara as suas características com as dos objetos das classes previamente estabelecidas / classes padrão.

-Decisão
Tem por objetivo tomar decisões a partir da extração de informações do mundo real (análise das imagens), ou seja, a mineração de dados para a localização de padrões.
Com isso a tomada de decisão pode ser feita a partir de inferências simples a respeito de parâmetros extraídos dos objetos ou de algoritmos mais complexos de Inteligência Computacional.

15 de março de 2012

Computação Ubíqua




Introdução

A Computação ubíqua tem como objetivo tornar a interação pessoa-máquina invisível, ou seja, integrar a  informática com as ações e comportamentos naturais das pessoas sem que estas percebam.
Primeiro passo para conseguir chegar a essa interação mais fácil ou invisível, é a utilização de interfaces naturais e a forma mais primitiva que temos de interagir com algum ser humano é a utilização da fala como também gestos, presença no ambiente ou até mesmo a movimentação dos olhos, deixando dessa forma o teclado e mouse sem nenhuma ou quase nenhuma utilização.
Segundo passo seria a geração de uma computação sensível a contexto, essa tecnologia torna possível que os dispositivos possam capturar o contexto automaticamente. O contexto nesse caso é a presença de uma pessoa ao espaço ou qualquer tipo de movimento corporal, movimentação dos braços, dedos, cabeça, olhos e até movimentos faciais.
A computação ubíqua requer computadores pequenos, baratos e tecnologias de ligação com ou sem fios a computadores de maior dimensão. Por exemplo, uma casa controlada por dispositivos de computação ubíqua deverá ter controle remoto da iluminação da casa, sistema de extinção de incêndios, sistemas de entretenimento integrados, sistemas para monitorizar a saúde dos ocupantes da casa, e um freezer (geladeira) que avise os ocupantes da casa dos produtos estragados ou fora da validade.
A idéia básica da computação ubíqua é que a computação mova-se para fora das estações de trabalho e computadores pessoais (PCs) e torna-se pervasiva1 em nossa vida cotidiana. Marc Weiser, considerado o pai da computação ubíqua, vislumbrou a uma década que, no futuro computadores habitariam os mais triviais objetos: etiquetas de roupas, xícaras de café, interruptores de luz, canetas, etc., de forma invisível para o usuário. Neste mundo de Weiser, devemos aprender a conviver com computadores e não apenas interagir com eles.


Tecnologias Envolvidas

Seja em casa, no trabalho ou na rua. A tecnologia tem sido uma das principais ferramentas de trabalho do homem e por mais que a tecnologia facilite e agilize as nossas atividades diárias, sempre estamos desenvolvendo novas tecnologias para aperfeiçoar o que já possuímos com um mundo, em que a velocidade, agilidade e facilidade vem crescendo, foram criadas ou aperfeiçoadas algumas tecnologias que podem ser usadas tanto individuais quanto em conjunto resultando em mais recursos, tendo em vista algumas principais, como:

Computação Móvel:

Onde o usuário não precisa sempre ir até o computador, e sim que os computadores nos acompanhem para que possam ser facilmente carregados (ou vestidos), enquanto o usuário se movimenta livremente.

Conexões sem Fios:

Uma das tecnologias mais importantes, pois permite que dispositivos se comuniquem a longa distância sem que tenha fios ou cabos realizando a sua comunicação permitindo assim uma fácil locomoção desses aparelhos onde se destaca a rede wireless, uma das mais usadas atualmente.

Ambientes Inteligentes

Outra forma de fazer com que o usuário evite ir até o computador, é fazer os dispositivos operarem a distância, tecnologias tais como o reconhecimento de voz, movimento e outras interfaces, que juntas permitem que o usuário interaja mesmo fisicamente distante dos dispositivos. Com estas tecnologias, os dispositivos podem ser instalados permanentemente numa sala, enquanto a pessoa se move em seu interior e continuamente interage com eles, e que eles também podem ter comportamentos automáticos ativados por determinados acontecimentos, sem nenhuma instrução explícita do usuário. Isso pode ser chamado de "Ambiente Inteligente". Se a única maneira de interagir com o ambiente for através de tais comportamentos automáticos, isso pode ser chamado "Computação Invisível".

Sensores sensíveis a Posição:

Um tipo de tecnologia muito promissora, onde é possível controlar dispositivos apenas com gestos ou simplesmente estar presente em um determinado local para que seja geradas informações que os sensores captem automaticamente ou pré-programado para executar certas tarefas fazendo com que seja amenizado a interação direta com a máquina.

Realidade Aumentada:

Tem sido uma das mais importantes pesquisas tecnológicas, pois vem facilitando muito a forma com que as pessoas vêm interagindo com vários dispositivos ao mesmo tempo, pois uma das suas ambições é unir com outras tecnologias gerando um conceito amplo de “realidade Misturada” (Mistura do real com virtual), Prometendo assim diversas aplicações comerciais, médicas, interatividades e cientifica.
  

Computação Ubíqua para Saúde
(Healthcare)

O uso de novas tecnologias da computação, como a chamada computação Ubíqua, pode auxiliar no acompanhamento e tratamento da saúde de pacientes em seu ambiente domiciliar, pois através de sensores em sua residência, o paciente pode ser monitorado constantemente em qualquer ambiente da casa. Como atividades de caminhar, dormir, comer, pressão arterial, diabetes, entre outros monitoramentos possíveis.
A computação Ubíqua para saúde é de grande importância, pois com essas novas tecnologias, ferramentas e serviços, que ajudam o paciente a ser mais ativo no seu gerenciamento e tratamento de doenças, automonitoramento, esforço preventivo, cooperação entre residência e hospital, consulta e monitoramento remoto, onde o paciente terá um acompanhamento continuo da sua saúde.
Uma grande contribuição da computação Ubíqua na saúde vai ser a troca de informações entre Hospital e residência, facilitando a consulta entre paciente e médico, havendo diminuição de idas a médicos e um melhor acompanhamento de sua saúde.
As informações coletadas são armazenadas em um banco de dados, onde os dados obtidos são analisados e gerado um prontuário médico, onde o paciente vai receber um comunicado informando os cuidados que ele precisa ter, como medicamentos, exercícios físicos, alimentação.
Os dados gerados da analise do paciente e também do ambiente residencial serão processados por uma Central Computacional de Saúde, onde estará localizada na residência do paciente. Alterações na temperatura ambiente e também a sua umidade, podem influenciar na saúde.
Os monitoramentos são executados conforme a prescrição médica para cada paciente, como medição de pressão arterial, frequência cardíaca, dosagem de medicamentos, dietas, exercícios físicos, horários das atividades, horários para tomar os medicamentos e outras condições conforme a necessidade de cada paciente. Podendo haver alteração em qualquer momento do tratamento, sem que haja a necessidade do deslocamento do medico ou paciente.
A Central Computacional de Saúde pode emitir alerta para o celular ou outros equipamentos de mensagens que o paciente possuir, lembrando a ele de tomar algum medicamento prescrito ou outra notificação qualquer. Ocorrendo alguma variação anormal do paciente em sua residência, a Central Computacional de Saúde poderá enviar um alerta ao Hospital, solicitando o envio de uma ambulância até o local. 

Tecnologia Verde

Com a crescente destruição da natureza, várias empresas têm desenvolvido inúmeros produtos que causam, menos ou nenhum impacto ao ambiente. A maioria deles ainda não se encontra no Brasil, mas é uma boa maneira de saber o que vem por ai.
Diversas empresas grandes vêm investindo pesado na preservação do meio ambiente e igualmente na ampliação de produtos eletrônicos que sejam menos danosos ao meio ambiente enquanto são usados, ou descartados. A avaliação do consumo de energia dos mesmos também é um ponto trabalhado. A utilização de material reciclável ou criado a partir de fontes renováveis de energia e produtos reutilizáveis são alguns exemplos.

Lixo Eletrônico

Uma inquietação cada vez maior daqueles que lutam pelo meio ambiente é a respeito do lixo eletrônico. Apesar de cerca de 94% dos matérias contidos em aparelhos eletro-eletrônicos poderem ser reciclados, não é isso que acontece. Nestes produtos são encontradas diversas substâncias que podem causar sérios danos ao meio ambiente à saúde humana.
Um bom exemplo disso são as baterias de celular, pois muitas delas levam a mistura níquel-cádmio, a mais tóxica combinação que pode causar câncer em diversos órgãos do corpo humano, bem como ataques asmáticos e outro problemas de pulmão, fígado e sangue.

Selo Verde

A ONG Green Eletronics Council desenvolveu um padrão para assegurar produtos que ofereçam o consumo mais baixo de energia possível e também diminuição de choque sobre o meio ambiente na sua fabricação. Este selo chama-se Electronic Product Environmental Assessment Tool (ferramenta de avaliação ambiental de produtos) ou Epeat.

Residência Inteligente

Entrar em casa através de portas que destravam diante de sua aproximação, encontrar a sala sempre limpa, as luzes sempre acessa, ou quartos na temperatura ideal, são soluções para muitos problemas do cotidiano que vivemos. Libertando-nos de nossos afazeres dentro de casa, poupamos tempo que podemos usar para relaxar. Um ambiente inteligente nos ajudando a tomar decisões deixando nosso cotidiano mais fácil, eficiente e confortável.
Todos os objetos dentro da nossa residência serão dotados de sua própria capacidade computacional. Dispositivos que pensam e se comunicam entre si. A geladeira que fala com a caixa de leite e diante da proximidade do termino da validade do produto, pode automaticamente solicitar uma reposição ao supermercado. Você não vê nada, não interage, apenas utiliza.
O conceito de ubiquidade se refere a algo onipresente, que esta em todo lugar ao nosso redor. Prevê um mundo em os sistemas computacionais se descentralizaram do desktop tradicional e migraram para dispositivos eletrônicos distribuídos em toda parte. Estendido aos ambientes domésticos, o conceito se tornou ainda mais amplo ao considerarmos que todos os objetos dentro da nossa residência serão dotados de sua própria capacidade computacional.
Através da automação residencial a tecnologia usada para facilitar e tornar algumas tarefas habituais que em uma casa convencional ficaria a cargo de seus moradores. Com sensores de presença, temporizadores ou até um simples toque em um botão para acionar cenas ou tarefas pré-programadas, trazendo maior praticidade, segurança, economia e conforto para o morador. O próprio habitante designa como será beneficiado com essa tecnologia. Pode-se citar como característica de um sistema inteligente: ter memória, noção temporal, fácil interação com os habitantes, capacidade de integrar todos os sistemas do ambiente, atuar em varias condições, facilidade de programação entre outros.

Pode-se imaginar que uma residência inteligente é algo como uma residência com vida própria, portanto os sistemas inteligentes devem integrar com os habitantes da residência, aprendendo dinamicamente com seus comportamentos. Este aprendizado é permanente, pois os habitantes estão sempre mudando.
A automação permite controlar a residência remotamente, poupar tempo com tarefas repetitivas, economizar energia, dinheiro e aumentar o conforto. Em complemento a trecho anterior, é cabível acrescentar que além dos citados o benefício da segurança é o mais sonhado por todos os utilizadores dos recursos da automação das residências. Deixando, certamente, o foco central da maioria dos sistemas domóticos2 no quesito segurança.

Exemplo de uma Casa no Futuro

O despertador tocar. O sistema integrado liga a cafeteira. O morador levanta começa a tocar uma música agitada no alto falante do quarto. O sistema para irrigar o jardim é acionado na hora programada. A piscina está limpa e com água transparente.  O morador toma seu café e sai. No caminho pensa se ligou a segurança da casa. Pelo celular, liga para casa, digita a sua senha, consulta informações e liga o alarme. Durante o dia pela internet olha como está sua residência.
Voltando do trabalho, o morador tecla o número da casa e programa a banheira de hidromassagem para a temperatura desejada. Quando o carro se aproxima da casa, o chip localizado no carro é identificado. O morador coloca o dedo polegar no identificador de digitais, ao lado do portão e ele abre. Os sensores de alarme são desligados. As luzes da entrada da casa ascendem, o portão fecha. Quando o morador entra em casa começa a tocar um CD que ele gosta de ouvir. Coloca uma comida no forno, mas não liga o aparelho. Vai tomar seu banho, a água está na temperatura desejada. Pega o controle da casa e liga o forno micro-ondas.
O morador vai deitar e assistir um filme novo, baixado da internet pela casa que sabe o tipo de filme que ele gosta. É um conceito de sistemas invisíveis trocando informações entre si e assim permitindo que a residência possua autonomias para tomar decisões.

Conclusão

Como podemos ver a computação ubíqua está mudando drasticamente o modo como nós interagimos com os computadores e como estes estão influenciando a nossa vida. E essa interação não se dará somente em sua casa, mas também no hospital, no trabalho, na rua, no supermercado, etc., ou seja, onde for possível ter essa tecnologia.
Toda essa revolução na Tecnologia se dará por meio de vários recursos, tais como: computação móvel, conexões sem fios, ambientes inteligentes, sensores sensíveis a posição, realidade aumentada e muitas outras tecnologias que ainda serão criadas para suprir essa nova demanda de conhecimentos.
E os benefícios serão imensos, como: na saúde, economia, produtividade no trabalho e em casa, relacionamento entre os humanos e máquina, meio ambiente e etc. Mas para que todos esses benefícios sejam concretizados muito ainda precisa ser percorrido, muitas barreiras nas tecnologias atuais precisam ser derrubadas, impostos deixarem de existir ou mesmo diminuir, só assim vivenciaremos plenamente esse nível de interação quase que imperceptível com as máquinas num futuro próximo, como vislumbrou muitos cientistas, como também vemos em muitos filmes de ficção cientifica.
Portanto a computação ubíqua tornará tudo muito simples, muito usual, invisível e transparente. Armazenando, processando, controlando as informações na velocidade da luz.




Referencias Bibliográficas

13 de março de 2012

Inteligência Artificial - Aula 3


Estrutura de dados - Revisão

Vetor = Estrutura de dados estática
homogênea = um tipo de dado (elementar ou estruturada)

1º Array
- unidimensional = vetor
- bidimensional = grade, tabela
- multidimensional = plano

2º Pilhas (Stack) = O primeiro a entrar na pilha é o ultimo a sair)

LIFO

Operações
Push = inserir na pilha
Pop = remover

3º Fila (FIFO) (First in First out)
o primeiro a entrar é o primeiro a sair

Operações
Pusf > fila > Pop

4º Árvore
Estrutura chamada Recursiva

Elementos
- Nós e Ramos

/o = null
|| = nil
() = new

Pró-fixa = ordenada

Amplitude = é a distância entre o maior e o menor valor

Espaço de Estados

Seja alfa um conjunto, chama-se de espaço de estados o conjunto de situações possíveis para uma ação.

Formas de Aprendizado

Supervisionado = Considere uma amostra com N elementos. O aprendizado supervisionado supõe que uma parte dessa amostra seja selecionada e considerada verdadeira. O restante dos dados são utilizados para fazer o treinamento do agente.

Não - supervisionado = nesta modalidade, o agente utiliza métodos estatísticos para selecionar grupos a partir dos dados existentes.
Qualquer dado novo será comparado aos grupos já formados.





Vizinho mais próximo – Algoritmo KNN

Método bastante simples e de fácil implementação e aprendizagem baseada em memória é conhecida como a regra do vizinho mais próximo. Nesta regra a vizinhança local é definida como o exemplo de treinamento que se encontra na vizinhança imediata do vetor de teste xteste. E com isso esse é considerado o exemplo para aprendizagem.
Com isso pode-se concluir que a regra do vizinho mais próximo é um tipo de aprendizado supervisionado.

Inteligência Artificial - Aula 2


Agente = é algo que pode ser visto percebendo seu ambiente através de "sensores" e agindo sobre aquele ambiente através de "atuadores".

Sensores = imput/entrada
atuadores = output/saida

Um agente humano tem olhos, ouvidos e outros orgãos para sensores e mãos e pernas para atuadores.

Um agente robótico pode ser dotado de e motores.

Um agente de software recebe comandos digitados, conteúdos de arquivos e pacotes via rede como entrada e age sobre o ambiente mostrando resultados na tela, escrevendo em arquivos e enviando pacotes pela rede.

Assume-se que todo agente pode perceber as suas ações (mas nem sempre os seus efeitos).

Vocabulário usado em IA.

Percepção = refere-se á percepção dos seus dados de entrada em um dado instante.

Sequência de Percepção =  é o histórico de tudo que o agente percebe.

OBS.: O conjunto de percepção até determinada data orienta a sua 
própria escolha.

Espaços

Discreto e Continuo = jogo de xadrez tem um número finito de estados distintos. Dirigir um táxi.

Deterministico e Estocástico
se o próximo estado do ambiente é completamente determinado pelo estado atual e pela ação executada pelo agente, dizemos que o ambiente é determinístico; caso contrário, ele é estocástico.

Medida de Perfomance = desempenho orientado á determinada ação.

Racionalidade = Um agente é racional se:
1. a medida de performance é o critério de sucesso;
2. o agente tem conhecimento prévio do ambiente;
3. o agente conhece as suas ações;
4. o agente tem sequencia de percepção.

Data warewhouse =  é um sistema de computação utilizado para armazenar informações relativas às atividades de uma organização em bancos de dados, de forma consolidada.

wera =

Interface com o Ambiente = são as aplicações que interagem com o meio exterior.

Banco de Dados = É um depósito de dados, geralmente um ambiente objeto-relacional.

Base de conhecimento = É um Banco de dados de históricos, contendo movimentos de 5 á 10 anos, transformados e adaptados para consulta da alta gerência.

Máquina de inferência = um software contendo recursos rápidos de consulta e grande quantidade de dados (mineração de dados - Data Minning)

Iteração = repetição
Interação = comunicação.

1º Questionário de IA



1. Dê a sua Definição de Inteligência Artificial
R.: Para mim Inteligência Artificial é a área da ciência da computação que estuda diversos métodos e dispositivos que simulam a capacidade do cérebro humano de resolver problemas dos mais simples aos mais complexos.
2. Defina a importância das Aplicações da Inteligência Artificial?
R.: Posso dizer que temos como importância científica, industrial e econômica, bem como o seu impacto social que tem crescido muito nas últimas décadas, mais expressivamente nos últimos anos, e estima-se que cresça muito mais. Principalmente pelo grande potencial de resolver muitos problemas que o ser humano comum não teria capacidade de resolver. Portanto, assim ajudando a nós meros mortais, em muitas ocasiões.
3. Indique 10 Aplicações favoráveis de I. A.
 Planejamento;
 Visão Computacional (Reconhecimento de Imagens);
 Xadrez;
 Reconhecimento de Fala;
 Bolsa de Valores;
 Quinta Geração;
 Sinergias;
 E-commerce (recomendação de produto);
 Sistemas Especialistas;
 Setor de Seguros (prever comportamentos futuros).
4. Indique 10 aplicações desfavoráveis de I. A.
 Cirurgias complexas;
 Descobrir novos teoremas matemáticos;
 Conversar normalmente com seres humanos;
 Fazer um robô dançar ou andar idêntico com os seres humanos;
5. Faça, com suas palavras, um breve histórico de I. A. com pelo menos de 10 linhas.
R.: A Inteligência Artificial (IA) não é recente. Na filosofia temos uma filosofia da lógica, os métodos de raciocínio apresentam a mente como um sistema físico, mostra fundamentos de aprendizagem. Na Matemática temos a prova da lógica formal, algoritmos, computação, decidibilidade, probabilidade. Temos na Economia a teoria formal de decisões racionais diante de varias situações, ou seja, uma melhor tomada de decisão. Na Neurociência fala que cérebros geram mentes, ou seja, a atividade mental. Na Psicologia “trata do cérebro como um dispositivo” de processamento de informações.
No entanto sua história inicia nos ano 40 e é povoada de diferentes paradigmas que se contrapõem, de teorias que se defendem e abandonam, e que são
consecutivamente retomadas. As pesquisas em I.A. avançaram lado a lado com a evolução dos computadores que no decorrer do tempo computadores começaram a se encarados como máquinas inteligentes assim o conceito de inteligência como única dos homens.
Nos últimos anos tem-se dado atenção a alguns dos setores de pesquisa abandonados no passado, como a representação de redes neuronais e a tradução automática, interesses retomados graças aos enormes progressos a que se tem assistido no domínio das ciências da computação.
6. Procure e Informe 10 sites que aplicam I. A.
R.:
 O 20q.net¹ é um site que através de inteligência artificial consegue descobrir o que vocês está pensando com apenas algumas questões simples como: sim, não, talvez, depende.;
 Goggle – Gmail é o Priority Inbox que escolhe para você quais são as mensagens mais importantes.
 Google – Translate;
 Microsoft – Hotmail utiliza o novo recurso de Flag (Bandeira) que é idêntico com a diferença do gmail que o usuário também pode fazer essa escolha.
 Rock-Paper-Scissors2 -Programa que se baseia em 200 mil jogadas de humanos para jogar com você.
 TBot³, o robô capaz de traduzir as suas conversas feitas através do Windows Live Messenger.
7. Pesquise nomes de ferramentas de aplicação de I. A.
R.:
 InteliChat4, uma aplicação que reproduz o comportamento de decisões de um atendente humano. Criado pela empresa Ixia.
 O InBot5 é um software de Inteligência Artificial para criação de Personagens Virtuais.
 O Expert Sinta6 é uma ferramenta para criação de Sistemas Especialistas que utiliza a técnica de raciocínio baseado em regras.
 Butterfly7 é um programa que utiliza técnicas de Inteligência Artificial que mostra os conceitos de auto-aprendizado.
 Eliza8 é um IRC bot que conversa com o usuário no IRC.
 Drive9 criada pela empresa israelense RankAbove que utiliza inteligência artificial – métodos e dispositivos computacionais que simulam a capacidade humana de resolver problemas – para melhorar o desempenho de sites e blogs.
 Hacks para o Microsoft Kinect10 uma espécie de inteligência artificial para rastrear de atividades do seres humanos e interagir com eles.
 O sistema NELL11 – “Never Ending Language Learning” (aprendizado infinito de idioma) – é um supercomputador criado com um único objetivo: entender nuances e detalhes do idioma inglês.
 QBO12 robô que aprendeu a se reconhecer no espelho, através da inteligência artificial.
 Inmamusys13 - um acrônimo para Intelligent Multiagent Music System - sistema de música de multiagentes inteligentes - que é capaz de criar música em tempo real.

Inteligência Artificial - Aula 1


O que é IA?

- Inteligência Artificial é o estudo de como fazer os computadores realizarem tarefas em que, no momento, as pessoas são melhores;
- Pode-se dizer que Inteligência Artificial é a área da Ciência da Computação que estuda formas de emular, através de algoritmos e técnicas apropriadas, características inerentes ao ser humano, dotando a máquina da capacidade de aprendizado, generalização,
percepção, raciocínio, tratamento de informações qualitativas entre outras.

O que "não são" Inteligência Artificial?

- Capacidade/velocidade de processamento
- Métodos numéricos
- Capacidade de armazenamento
- Buscas diretas em bases de dados

O que "são" Inteligência Artificial?

- Reconhecimento de padrões;
- Percepção de similaridades;
- Generalização se soluções a partir de um conjunto finito de informações conhecidas;
- Lidar com informações qualitativas;

Quais as Técnicas de IA?

- Sistemas Especialistas;

Baseados em conhecimento (geralmente em forma de regras) adquirido de um especialista. A partir de conjunto de informações (regras) proporcionadas por um especialista, o sistema é capaz de utilizá-las na solução de problemas dentro de um determinado domínio.
Aplicações: diagnósticos, jogos, etc

- Redes Neurais [Artificiais];

Através da simulação (simplificada) do cérebro humano, obtém-se um modelo capaz de aprender a partir de experiência. Uma RN pode aprender relações de Entrada x Saída ou descobrir grupamentos.
Aplicações: reconhecimento de padrões (ex.: imagens, voz, sinais em geral), identificação de comportamentos e tendências (ex.: simulações de plantas industiais, previsão de tendências)

- Computação Evolucionária;

Através da simulação (simplificada) dos processos de evolução das espécies e seleção natural, obtém-se um modelo capaz de se adaptar, na busca de soluções ótimas para problemas de otimização.
Aplicações: otimização, descoberta de conhecimento em bases de dados, descoberta de regras especializadas, etc

- PSO;

Otimização de swarm de partícula (PSO- Particle swarm optimization - Otimização por nuvem de partículas) é uma técnica de inteligência artificial (AI) que pode ser usada para encontrar soluções aproximadas extremamente difícil ou impossível numérico maximização e minimização de problemas.

- Lógica Nebulosa (Fuzzy Logic);

É uma lógica utilizada para lidar com situações onde a informação é qualitativa.
Aplicações: reconhecimento de padrões, identificação de comportamentos, controle, etc

- Sistemas híbridos;

- Neural-Fuzzy Systems, Fuzzy-Neural Systems;
- Genetic-Fuzzy Systems, Fuzzy-Genetic Systems;
- Neural-Genetic Systems
- etc

Áreas de Aplicações de IA.

- Entretenimento
jogos

- Finanças


- Telecomunicações
Reconhecimento de voz = Rede Neural Lógica Fuzzy

- Medicina
Reconhecimento de Impressões Digitais = Rede Neural Lógica Fuzzy
Diagnósticos Médicos = Rede Neural Lógica Fuzzy

- Meio-Ambiente

- Indústria
Identificação de Placas de Veículos = Rede Neural Lógica Fuzzy

- Comércio

- Robótica
Aprendizado, Adaptação, Reconhecimento de Voz, Reconhecimento de Imagens, Processamento de Linguagem Natural

entrada = imagem, som, informação sobre o ambiente > saida = ação

- Controle: Veículos, Robôs, Plantas Industriais

- Bolsa de Valores: Previsão de Tendências
Histórico dos Indicadores > Rede Neural Lógica Fuzzy > Previsão de Tendências

- Projetos: Eletrônicos, Mecânicos, Nucleares
Computação Evolucionária

- Identificação de Operação Anormal
Rede Neural Lógica Fuzzy Sist.Especialistas > Identificação da
Falha/Defeito

- Planejamento e Logística: Alocação de Professores
Computação Evolucionária

- Áreas de Aplicação em Negócios
Varejo e Bancos
Seguro
Marketing
Banco de Investimentos
Vigilância
Planejamento

- Negócios “Inteligentes”
American Express > Sistemas Especialistas
Fidelity Investments > Redes Neurais
IOC > Algoritmos Genéticos
Yamaichi Securities > Lógica Nebulosa
Eletronuclear > Algoritmos Genéticos
Eletrobrás > Redes Neurais
Embratel > Algoritmos Genéticos
Credicard > Redes Neurais
PUC-Rio > Algoritmos Genéticos
Shell > Redes Neurais

11 de março de 2012

Projeto de Banco de Dados - Aula 1


Projeto de Banco de Dados

Aula 1

Índices
Uma estrutura de dados que melhora o desempenho nas operações de recuperação de dados em uma tabela, com aumento de espaço em disco e o custo na escrita em disco.
Podem ser criados utilizando uma ou mais colunas, fornecendo a base para a busca de registros ordenados e acessos eficientes.
O espaço em disco para o registro dos índices é menor do que os requeridos pelas tabelas (abstração de outros detalhes das tabelas).

Em um banco de dados relacional, um índice é a cópia de uma parte da tabela.
Alguns bancos de dados estendem o poder de indexação, permitindo que índices sejam criados em funções ou expressões.
Um índice pode ser criado como upper(nome), que guardaria somente nomes com “caixa alta” no índice.
Outra opção são índices “filtrados”, onde as entradas são criadas somente para os registros que satisfazem uma expressão condicional.

Funções:
- Manter a integridade dos dados;
- Otimizar o acesso a dados;
- Melhorar a junção das tabelas;
- Classificar resultados;
- Agregar dados;

Manter a integridade dos dados;

O uso de chaves únicas e primárias para reforçar o nível de unicidade de seu repositório/deposíto de dados por tabela.

Diferenças entre chaves únicas e primárias

Primary Key

- Só uma chave primária pode existir por tabela;
- Não pode conter valor NULL;
- Fornece um meio de recuperar qualquer linha específica em uma tabela;
- Se uma coluna de AUTO INCREMENTO for definida, ela deve ser parte da chave primária.

Unique Key

É possível possuir mais de uma chave única por tabela;
É permitido valor NULL, onde cada valor NULL é único, ou seja (NULL !=NULL).

Manter a integridade dos dados;

Alguns bancos de dados suportam chaves estrangeiras para garantir a integridade dos dados, o que não é visto como índice, e sim, como constraints.

Um requisito comum de certas implementações é que um índice exista tanto na tabela destino quanto na tabela de origem, para permitir o gerenciamento das chaves estrangeiras.

OTIMIZAR O ACESSO A DADOS;

Índices permitem que o otimizador elimine a necessidade de examinar todos os dados da tabela durante a consulta. Restringindo o número de linhas acessadas, o desempenho da consulta pode ser significantemente melhorado.
Isto é o uso mais comum de índices.

MELHORAR A JUNÇÃO DAS TABELAS;

  Além de restringir dados em uma determinada tabela, outra proposta no uso de índices é a junção de tabelas de forma eficiente.
  O uso de ínidices em uma coluna de junção, fornece um benefício imediato de performance.
  O domínio na criação de índices para a junção de tabelas de forma correta é fundamental para a performance em qualquer banco relacional.

CLASSIFICAR RESULTADOS;

  Índices guardam os dados de forma ordenada. Isto torna o uso de índices bastante comum na seleção de registros de modo ordenado.
  É possível ordenar registros utilizando o operador ORDER BY. Porém sem o uso de índices o banco de dados executa um filesort internamente nas linhas da tabela recuperadas.
  O uso de índices de forma predefinida fornece um significante aumento de performance em sistemas de alta concorrência onde são requisitadas centenas ou milhares de consultas por segundo, já que os resultados são préordenados.

AGREGAR DADOS;

  Índices podem ser utilizados como meio de calcular resultados agregados mais facilmente.
  Exemplo: A soma do total de todos os pedidos em um determinado período pode ser mais eficientemente executado com um índice na data e na quantidade de pedidos.

TERMINOLOGIA

Técnicas

  Teoria por trás de como as estruturas de dados permitem várias abordagens para acesso as informações. Essa técnicas incluem B-tree, B+tree, R-tree e Hash. Cada técnica utiliza conceitos diferentes dependendo de cada objetivo.

Implementações

  Como os bancos de dados implementam as várias técnicas de estrutura de dados. Por exemplo o MyISAM implementa B-tree diferente do InnoDB.

Tipos de índices suportados pelo MySQL

- Chave prímária
- Chave única
- Secundários não únicos

Suportados pela maioria dos bancos de dados relacionais.

- Suporte a full-text e índices espaciais, dependendo do storage engine.

Outras implementações de índices são possíveis:

- InfiniDB (http://infinidb.org/)

Teoria das estruturas de dados


  Suporta inserção de dados, manipulação e seleção através do gerenciamento de um conjunto de nós em uma estrutura como a raiz de uma árvore.

Existem dois tipos de nós:

Nós de índice – organizam e direcionam em um sentido ordenado para os dados guardados nas folhas.

Diferente de Árvore Binária.




Teoria das estruturas de dados

B+tree



Teoria das estruturas de dados

  É um algoritmo aplicado a um determinado valor para retornar um ponteiro único ou posição dentro de um repositório de dados.
  O benefício na utilização de uma tabela Hash, está no tempo de recuperação de uma determinada linha.




Teoria das estruturas de dados
R-Tree


  Suporta gerenciamento geométrico baseado em tipos de dados. Permite a indexação multidimensional como coordenadas geográficas, retângulos e polígonos.


Árvore para retângulos 2D:


Índices de uma coluna

  Não existe uma limitação prática na criação de índices.

Criando um índice:

ALTER TABLE <NOME DA TABELA> ADD INDEX [NOME_DO_INDICE] (NOME_DA_COLUNA)