inteligência artificial - 2ª edição · revisão de arquitetura de computadores ... cisc, risc...

29
1 Inteligência Artificial Inteligência Artificial: uma abordagem geral Prof. Erwin Alexander Uhlmann UHLMANN, Erwin Alexander. Inteligência Artificial: uma abordagem geral. Instituto Siegen. Guarulhos, 2018.

Upload: others

Post on 06-Jul-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

1

Inteligência Artificial Inteligência Artificial: uma abordagem geral

Prof. Erwin Alexander Uhlmann

UHLMANN, Erwin Alexander. Inteligência Artificial: uma abordagem geral. Instituto Siegen. Guarulhos, 2018.

Page 2: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

2

Agradecimentos

Agradeço à minha esposa Kátia por entender minha ausência e minha base, meu filho Henrique, por me motivar a para de fazer e ser meu motivo de fazer, meus pais Mirtes e Günter por terem criado meu caminho, aos meus alunos que viabilizaram este trabalho e a todos os autores de livros e bibliotecas que consultei para que pudesse devidamente embasar este.

Page 3: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

3

Sumário Introdução.....................................................................................................................5

Pré-requisitos ............................................................................................................... 6

Fontes de referência ................................................................................................. 6

Introdução à Inteligência Artificial ................................................................................ 7

Inteligência Artificial ................................................................................................ 9

PEAS – Performance, Enviroment, Actuators & Sensors ......................................... 10

Resoluções de problemas por meio de busca .......................................................... 13

Arvores de Busca Primária ................................................................................... 13

Revisão de Arquitetura de Computadores ............................................................... 15

CISC, RISC (ARM). Estudo de caso Raspberry Pi .................................................. 15

Busca cega .......................................................................................................... 15

Resoluções de problemas por meio de busca .......................................................... 18

Busca em extensão .............................................................................................. 18

Revisão de Lógica de Programação ......................................................................... 21

Bubble Sort ......................................................................................................... 21

Selection Sort ..................................................................................................... 22

Insertion Sort....................................................................................................... 23

Quick Sort .......................................................................................................... 24

Busca em Largura ............................................................................................... 24

Busca em Profundidade ......................................................................................25

Aprendizado de Máquina ....................................................................................25

Heurística ............................................................................................................... 26

Busca Competitiva ................................................................................................. 29

Princípios da incerteza ........................................................................................... 29

Machine Learning................................................................................................... 29

Problemas de Satisfação de Restrições .................................................................. 29

Bibliografia................................................................................................................. 29

Índice de Figuras

Figura 1 - Agente Inteligente, seus sensores e atuadores ............................................ 10 Figura 2 - Agente Software: sensor de busca .............................................................. 11 Figura 3 - Agente Software: atuador - resultado da busca ........................................... 11 Figura 4 - Qual o melhor caminho? ............................................................................. 16 Figura 5 - problema dos baldes ................................................................................... 17

Page 4: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

4

Índice de scripts

script 1 - Algoritmo de decisão de melhor caminho..................................................... 18 script 2 - A condição evidenciada busca o menor caminho .......................................... 19 script 3 - busca em profundidade ou extensão ........................................................... 20 script 4 - Algoritmo de ordenação Bubble Sort ........................................................... 21 script 5 - A;goritmo de ordenação Selection Sort ....................................................... 22 script 6 - Algoritmo de ordenação Selection Sort ........................................................ 23 script 7 - Algoritmo de ordenação Quick Sort ............................................................. 24 script 8 - busca em largura ..........................................................................................25 script 9 - busca em profundidade ................................................................................25

Índice de tabelas

Tabela 1 - Professores | Disciplinas | Desempenho ......................................................25 Tabela 2 - Comparativo de compras e produtos associados ....................................... 27 Tabela 3 - Tabela de avaliação de antivirus ................................................................ 28 Tabela 4 - Sudoku ...................................................................................................... 29

Page 5: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

5

Introdução Os estudos sobre Inteligência Artificial são antigos no mundo da computação. Desde a década de 1950, no início da computação, o objetivo de se criar um cérebro eletrônico foi o motivo dos maiores avanços da informática, ao contrário da própria Inteligência Artificial, no entanto, nos últimos 10 anos, os avanços são surpreendentes.

Entender o que é, como funciona e como criar sistemas com inteligência artificial é o objetivo deste trabalho, ainda que de forma simples e introdutória, mas técnica e clara, a fim de permitir que o entusiasta pelo assunto, com conhecimentos sobre Banco de Dados, lógica, programação e fundamentos de Probabilidade e Estatística, possa criar seu próprio sistema.

Como o assunto é avançado na Ciência da Computação, mas introdutório em sua forma, a maioria das pessoas interessadas no assunto poderão ler esta obra de forma simples, no entanto, alguns de seus conceitos podem exigir algum suporte em outras disciplinas.

Divirta-se!

Page 6: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

6

Pré-requisitos De fato, não há pré-requisitos obrigatórios a se cumprirem para a compreensão deste trabalho, no entanto, algumas referencias externas são interessantes recomendas para melhor compreensão.

Lógica de Programação

http://www.institutosiegen.com.br/documentos/euhl.14785400241106.pdf

Arquitetura de Computadores

http://www.institutosiegen.com.br/documentos/euhl.1479843185891.pdf

Banco de Dados e Programação

http://www.institutosiegen.com.br/documentos/euhl.1333992012806.pdf

Fontes de referência NORVIG, P. e RUSSEL, S. Inteligência Artificial. Elsevier. São Paulo, 2013.

FACELI, Katti et. al. Inteligência Artificial: uma abordagem de aprendizagem de máquina. LTC. Rio de Janeiro, 2011.

NICOLETTI, Maria do C. e HRUSCHKA Jr., Estevam R. Fundamentos da Teoria dos Grafos para Computação. Edufscar. São Carlos, 2013.

Page 7: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

7

Introdução à Inteligência Artificial O primeiro conceito que devemos entender antes de estudar a Inteligência Artificial (IA) é o que é inteligência.

Para Alfred Binet (191?) “Inteligência é julgar bem, compreender bem, raciocinar bem”, assim, julgar é decidir entre valores, sejam eles binários ou complexos a partir de uma pergunta ou objetivo, exemplo:

O que é melhor? (Pergunta, objetivo) Fome ou enfastiamento? (Delimitação do conjunto de dados)

À uma pergunta simples como esta, uma resposta poderia ser direta: enfastiamento. Mas o que é fome? Fome é vontade de comer? Isto é gula! Fome é falta duradoura de alimento, percebida pelo organismo? Desta forma, então, é preciso definir as medidas, as unidades dos parâmetros de análise. Para Teaman “Inteligência é a capacidade de conceituar e de compreender o seu significado”.

Por outro lado, ainda no julgamento, como julgar bem? Para isto é necessário contextualizar. Para Piaget “Inteligência é a adaptação ao ambiente físico e social”. Se você vai para uma corrida, estar enfastiado é bom? Para julgar bem é preciso conhecer o ambiente, integrar os dados para permitir a análise.

Por fim, Helm define que “A atividade inteligente consiste na compreensão do essencial de uma situação e numa resposta reflexa apropriada”, o raciocínio. A resposta errada não é inteligente, a compreensão e a assertividade compõem a inteligência.

Entendemos então que:

1. Entender o essencial, o objetivo; 2. Compreender o ambiente, a situação; 3. Conceituar, codificar, mensurar o objetivo e o ambiente ou situação; 4. Responder assertivamente o estímulo (independe do valor, mas da natureza).

Exemplo 2:

O que é melhor: fome ou enfastiamento?

1. O essencial, comprar fome e enfastiamento para definir o que é melhor, num contexto simples e vazio de parâmetros, logo, simplesmente fome ou enfastiamento.

2. Quando não há definições de ambiente, de situação, assume-se a forma simples do comparativo, independente de estar correndo, deitado ou trabalhando, fome ou enfastiamento?

3. Quanto de fome ou enfastiamento? Como medir a fome? a. Se, teoricamente, devemos comer quatro vezes ao dia - a cada 6 horas

[6h, 12h, 18h e 24h] -, hipoteticamente às 12h existe o momento máximo de fome e de enfastiamento, logo, é péssimo estar enfastiado na hora do almoço, assim como é péssimo estar esfomeado às 12h01. Se criarmos uma escala simples de 0 a 10 (0 - sem fome e 10 - máximo

Page 8: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

8

da fome), as 12h a fome é 0 e as 18h a fome é 10, logo, as 15h a fome é 5. Assim mensuramos.

A pergunta segue, a que horas esta pergunta foi feita? 12h, 15h ou 18h?

4. As 17h, a resposta adequada seria algo como: "O melhor é enfastiado". Pois a fome é 8,33! O inverso também é verdadeiro.

Até o momento, a discussão está, ainda, na inteligência humana, no entanto, diversos autores, e cada vez mais, tem adotado o conceito de inteligência como o de capacidade de sobrevivência, de se adaptar em uma variedade de ambientes para atingir seu objetivo. Nacy Segal, entende de forma ampla e concisa como “Raciocínio, aprendizado, memória, motivação, capacidade de se adaptar e de resolver problemas […]”.

Se pudermos entender que Raciocínio vem da palavra racionalizar, tornar algo racional, ter razão, lógica, podemos então compreender o fato de que o raciocínio é a ação de distribuir elementos em uma sequência lógica de fatos, como um fluxo ou processo. A compreensão deste raciocínio lógico é o aprendizado. Esta compreensão se dá pela identificação das atividades, ou seja, ao observar uma determinada ação ou sequência de ações, o agente aluno é capaz de identificar tais atividades. Uma criança copia, imita, realiza da mesma forma as atitudes dos pais, como ao ver o pai escovando os dentes, a criança identifica as atividades que compõem o processo, como colocar pasta na escova, escovar, etc., e isto permite que a própria criança possa realizar os mesmos atos.

A memorização é a capacidade de retenção, armazenamento de uma quantidade limitada de informações, como atividades ou processos, por um período de tempo. Quanto é possível lembrar por quanto tempo? Você é capaz de repetir uma sequência numérica de 6 dezenas? Por quanto tempo você lembra desta sequência?

As asserções op. cit. são, em geral, armazenadas, lembradas, quando se associam dados, como a senha do e-mail e data de aniversário. Isto é um motivador. Outro tipo de motivador é, por que devo lembrar disto ou daquilo? Como é a fórmula de báskhara? Como, qual motivador de armazenamento? Por que lembrar agora? Por quanto tempo você lembrou?

Exercício. Leia a pergunta e relacione com os conceitos de inteligência.

Você tem dois baldes: um com capacidade para comportar 5 litros, e outro que comporta 3 litros. Você não possui outros recipientes e os baldes não possuem marcações de volume. Você precisa retirar exatamente 7 litros de água de uma bica, com esses baldes. Como fazer isto? Resolver este problema é inteligência! Você ainda não provou ser um gênio...

Para finalizar os conceitos de inteligência, vamos estudar as formigas.

Uma formiga operária, ao sair do formigueiro tem único objetivo: encontrar comida. O motivador é a fome, a sustentabilidade da colônia ou porque o chefe mandou mesmo. O tamanho da memória de uma formiga é de 2 segundos(!) e quantidade de Informação que cabe é a distância (elementos do caminho) que ela é capaz de

Page 9: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

9

armazenar neste período. Como ela encontra a comida, avisa as outras, viaja grandes distâncias e retorna?

Proporcionalmente o homem também o faz?

Inteligência Artificial Inteligência Artificial é ação que um computador realiza de forma semelhante a um ser humano. John McCarthy em 1956 é tido como um dos primeiros a citar o termo, ainda que nem ele mesmo tenha certeza de ter sido o primeiro.

A IA é um ramo da ciência que envolve matemática, estatística computacional, lógica de programação (algoritmos), hardware, psicologia e biologia (neurologia).

O propósito geral da IA é fazer com que um dispositivo mecânico, em especial os computadores, encontrem soluções apropriadas à problemas complexos (ainda que complexos apenas para uma máquina) e realizem de forma autônoma, mais rapidamente, segura, entre outras.

Os campos de pesquisa da IA:

• Desenvolvimento de Software; • Mineração de Dados (Data Minning); • Machine Learning (ML) (Aprendizado de Máquina [AM]); • Knowledge Data Discovery (KDD); • Percepção de Visão e Fala (Reconhecimento de placas de veículos, Google, Siri

[Apple], Cortana [Microsoft]); e • O foco de pesquisa deste trabalho, o processamento de linguagem natural,

Semântica.

Como fazer um computador “sentir” algo?

Sentimento é o conjunto de sensações que um ser associa a um determinado estado de consciência, ex.:

A sensação de frio se dá muito mais pelo julgamento de continuidade da temperatura percebida pelo corpo que pelo momento sentido. Se uma pessoa de roupa de banho passar pelo chuveiro frio antes do banho de piscina, sua sensação causada pela perspectiva de relaxamento e diversão não é de frio, apesar da água estar fria. A mesma temperatura, mas sem a perspectiva da piscina, apenas do banho, a sensação é de frio. A perspectiva associada percepção traz a sensação.

A emoção é um componente mais profundo que mexe com o componente orgânico e está associado ao conjunto de sensações, ex.:

O sentimento de medo pode ocorrer pelo conjunto de sensações como frio, escuridão e rejeição ao novo pelo descontrole ou desconhecer as reações. Se o desconhecido ocorrer num ambiente controlado, claro, ameno, entre outras sensações controladas, o medo é diminuído.

Para que o sentimento ou a emoção existam é preciso memória. Seja ela orgânica ou eletrônica?

Page 10: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

10

Um ser humano pode sentir a temperatura, um toque, enxergar, ouvir, etc. , como fazer um computador também sentir e entender, ou seja, processar?

PEAS

PEAS – Performance, Enviroment, Actuators & Sensors Para que a Inteligência Artificial seja colocada em prática é preciso ter um Agente Inteligente. Este agente é um dispositivo que possui sensores que permitem perceber o ambiente e atuadores para reagir a ele. Sem os sensores o agente não tem percepção de seus atos e simplesmente age ao léu, sem os atuadores ele não pode realizar nada.

Analogamente o ser Humano possui sensores como olhos, pele, ouvidos e outros que permitem perceber o ambiente e seus componentes como móveis, temperatura e movimentos.

Um agente robótico possui sensores como câmeras, infravermelho, supersônicos e sensores de pressão, entre outros que permitem perceber o ambiente como reconhecer imagens, distâncias, movimentos, entre outros.

Um Agente Software é o raciocínio que o Agente Robótico possui para perceber com APIs (Application Programing Interface), que são pequenos softwares terceiros que rodam constantemente solicitando ou enviando dados a outros softwares. Um

Agente

Sensor

Atuador

Figura 1 - Agente Inteligente, seus sensores e atuadores

Page 11: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

11

exemplo é o XMLHttpRequest que permite recolher dados em uma página e envia para outra, como a pesquisa sugerida dos buscadores da internet. Como atuadores a impressão de dados, seja na tela ou impressora, mas não o ato de imprimir que é um atuador robótico, mas o ato de “acordar” a impressora e o envio de dados, exibir os dados na tela, não propriamente a tela que outro agente (monitor), mas o envio de dados em um formato apropriado.

Figura 2 - Agente Software: sensor de busca

Figura 3 - Agente Software: atuador - resultado da busca

Page 12: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

12

O navegador possui uma API que a cada caractere digitado envia para o buscador da internet (Google, Bing, Duck Duck Go, etc.) o que está sendo digitado pelo usuário e retorna os principais resultados e a resposta surge após teclar Enter (sensor).

O comportamento de um agente é dado pela função:

𝑓: 𝑃$ → 𝐴

onde:

P: número de percepções;

A: ação.

Desta forma podemos entender que a ação do agente depende diretamente da ou das percepções e delas resultam a ação. Exemplo:

Um robô com um sensor ultrassônico que percebe a presença de um obstáculo e tendo como motivador andar (simplesmente), ao perceber o obstáculo desvia. A ação não estabelece direita, esquerda ou recuar. Se houver um sensor de inclinação, que indica queda para a direita e ele tem como agente de software evitar a queda, ele terá uma ação diferente, indo para a esquerda.

Voltando às fantásticas formigas. O motivador é a fome. O objetivo é encontrar comida. O método é caminhar e “farejar” traços químicos da comida, como açúcar. Mas e se o traço químico estiver pouco à esquerda da sua trajetória?

Para ampliar significativamente as chances de encontrar tais traços químicos, as formigas caminham em zig-zag, hora para direita, hora para esquerda, cerca de 30º para cada lado. Com isto a caminhada continua e a abertura é ampliada.

Eventualmente a formiga se perde na caminhada, sua memória a recobra e a faz retornar. Como outras formigas “farejam” os traços químicos da primeira formiga, a seguem e no retorno dela, reforçam o caminho, ainda que não seja o caminho certo ou o melhor, mas a descoberta dele.

Com isto podemos entender o conceito de sucesso: sucesso é a medida objetiva de desempenho da ação desejada.

Exemplo: Se o objetivo é encontrar comida, a medida de sucesso é (tempo + distância)/quantidade de comida retornada;

𝑆 = (𝑡 + 𝑑)𝑐

𝑆 = (15" + 17𝑚)

1𝑘𝑔

𝑆 = (32)1

𝑆 = 32

Page 13: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

13

Se considerarmos que S=32 como sucesso, qualquer número abaixo disto é fracasso?

Quanto é fracasso? Nada? E para S = 16? Por tanto é preciso estabelecer as medidas entre sucesso e fracasso, pois isto pode permitir a reação, ou seja, a ação novamente. Se S>=24 (75% de sucesso), nada a fazer, se S>=16 (50% de sucesso), reagir na metade do tempo de busca, se não, reagir imediatamente.

Um agente racional, por tanto, deve tomar medidas de modo a maximizar seu desempenho, ou seja, S=32 (?), diferentemente da perfeição de desempenho.

Racionalizar é maximizar o desempenho esperado ao se considerar as percepções e perfeição é atingir o maior número de sucesso. Para ser racional é preciso considerar as percepções, como quantidade de energia empreendida para o resultado esperado.

Ex.: Para S=32 é preciso gastar 80% de energia (bateria), no entanto para S=28, apenas 50%. O que é mais racional? 30% de bateria para um desempenho 12,5% melhor?

Com estes dados, o Agente deve coletar os dados ambientais, armazena-los e aprender para as próximas ações.

Para projetar um agente é preciso:

Performance: Medida objetiva de desempenho;

Ambiente: Dados obtidos pelos sensores sobre o ambiente, como medidas, obstáculos, pontos-chave, etc.;

Atuadores: Motores, lâmpadas, braços, freios, etc.;

Sensores: Infra-vermelho, ultrassonico, acelerômetro, sinal wi-fi, temperatura, etc.

Exercício: projeto, ainda que empírica e provisoriamente, um robô que irá percorrer um circuito com quatro trajetórias possíveis (mais rápida[maior velocidade e mais longa], mais curta[com subidas e descidas], mais segura [sem entroncamentos] e mais barata[baixo gasto energético]). Este circuito deverá ter proteções laterais para que o robô persista nele. O objetivo é realizar 10 voltas da forma mais rápida possível.

Resoluções de problemas por meio de busca Realizar buscas pode ser um exercício complexo, pois temos a tendência de seguir em uma fila, o que pode levar o tempo de processamento ao limite do máximo de números (se tivermos 1000 registros, poderemos ter 1000 chances de errar e uma de acertar e isto leva ao possibilidade do tempo de busca até 1000!), em pilhas, o que multiplica o tempo pelo grau da pilha (altura de elementos numa pilha) ou ainda podemos procurar de forma aleatória, a pior dela, pois os elementos podem ser pulados e nunca encontrarmos o resultado.

Para isto, a organização da busca em uma árvore binária é primordial.

Arvores de Busca Primária Uma árvore binária podemos realizar buscas de diversas formas, como:

Page 14: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

14

Em-ordem Infixa – atravessamento em-ordem:

1 – Folha Esquerda;

2 – Raiz;

3 – Folha Direita.

1 – Danila | 2 – Beatriz | 3 – Erwin | 4 – Abner | 5 – Fernanda| 6 – Carlos | 7 – Gustavo

Pré-Fixa – atravessamento pré-ordem 1 – Raiz;

2 – Folha Direita;

3 – Folha Esquerda.

1 – Abner | 2 – Beatriz | 3 – Danila | 4 – Erwin | 5 – Carlos | 6 – Fernanda | 7 – Gustavo

Pós-fixa – atravessamento pós-ordem 1 – Folha Esquerda;

2 – Folha Direita;

3 – Raiz.

Abner

(raiz)

Beatriz

Danila (folha) Erwin

Carlos

Fernanda Gustavo

Abner

(raiz)

Beatriz

Danila (folha) Erwin

Carlos

Fernanda Gustavo

Page 15: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

15

1 – Danila | 2 – Erwin | 3 – Beatriz | 4 – Fernanda | 5 – Gustavo | 6 – Carlos | 7 – Abner

Atravessamento em nível 1 – Raiz;

2 – Folha Esquerda;

Folha Direita.

1 – Abner | 2- Beatriz | 3 – Carlos | 4 – Danila | 5 – Erwin | 6 – Fernanda | 7 – Gustavo

Exercício:

Desenvolva um algoritmo que encontre o prof. Erwin na faculdade!

Para resolver escreva o que é preciso no PEAS e elabore o algoritmo que realize com maior eficiência.

Revisão de Arquitetura de Computadores http://www.institutosiegen.com.br/is_professor_materia01.php?user_mat01=UnG%20-%20Ci%EAncia%20da%20Computa%E7%E3o%20-%20Arquitetura%20de%20Computadores

CISC, RISC (ARM). Estudo de caso Raspberry Pi https://www.raspberrypi.org/documentation/

Busca cega Se um barco afundar, devemos procurar no oceano inteiro?

Abner

(raiz)

Beatriz

Danila (folha) Erwin

Carlos

Fernanda Gustavo

Abner

(raiz)

Beatriz

Danila (folha) Erwin

Carlos

Fernanda Gustavo

Page 16: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

16

Quando o número de variáveis é maior que a possibilidade de compreensão (alocar as variáveis no contexto [no total de variáveis a ser trabalhada]), os agentes inteligentes podem não funcionar adequadamente.

Para tanto, é preciso estabelecer um objetivo.

Vamos ao exemplo simplificado:

Você está em casa e precisa decidir qual o melhor caminho para a faculdade.

1 – O que é melhor? (índice de sucesso): Mais rápido, mais curto ou mais fácil?

2 – De onde para onde?

3 – Quais são as alternativas? (rotas possíveis).

Figura 4 - Qual o melhor caminho?

G={{v1, v5},{v5, v7},{v7, v9},{v9, v10}} – o mais rápido: Grau 4. 7+5+1+1 = 14km

G={{v1, v3},{v3, v4},{v4, v6},{v6, v8},{v8, v9},{v9, v10}} – o mais curto. Grau 6. 5+1+5+1+1 = 14km.

G={{v1 ,v2},{v2, v7},{v7, v9},{v9, v10}} – o mais fácil. Grau 4. 3+15+1+1 = 20km

As tarefas surgem pela comparação entre Graus e distâncias. Quantos graus cada possibilidade pode ter?

Nas três hipóteses levantadas (devemos levantar todas!) temos, na ordem, grau 4, 6 e 4. Comecemos pelo primeiro grau 4 (o mais rápido), depois pelo grau 4 em segundo lugar (o mais fácil) e por último o grau 6 (o mais curto).

V1, v2 > v1, v3? Logo v1, v2;

V2, v3 > v2, v7? Logo, v2, v3;

Ao analisar o grafo da Figura 4, o algoritmo de solução deve examinar todos os estados possíveis. Todos os vértices ou nós dele chama-se então de Espaço de Estados.

Em um Espaço de Estados de um Grafo representando todos os pontos de análise, os vértices ou nós são os Estados e as arestas são as ações.

A sequencia resultante das ações num determinado Espaço de Estados é chamado de caminho, seja ele único ou com Vértices repetidos, neste caso, Trilha. Se um ou mais vértices ou arestas se repetirem, passa a se chamar de Passeio.

Page 17: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

17

O resultado do caminho, trilha ou passeio é chamado de Trajeto.

Voltando ao problema dos Baldes:

Você tem dois baldes: um com capacidade para comportar 4 litros, e outro que comporta 3 litros. Você não possui outros recipientes e os baldes não possuem marcações de volume. Você precisa retirar exatamente 2 litros de água de uma bica, com esses baldes. Como fazer isto?

1. Desenvolver programas, não com os passos de solução de um problema, mas que produzam estes passos;

2. Construir um espaço de estados para encontrar uma sequência de ações cuja aplicação resolve um problema;

3. Recebe um problema e retorna uma solução.

Figura 5 - problema dos baldes

Agora, desenvolva um algoritmo de Busca Cega para solucionar o grafo da Figura 4.

programa { funcao caminhador() { inteiro a1, a2, a3, no, nos, v1v2=0, v1v3=0, v2v3=0 , total=0, trajeto=04 escreva("Quantos nós tem o caminho?\n") leia(nos) para(no=1;no<nos;no++){ escreva("escreva o valor da aresta A1: ") leia(a1) escreva("escreva o valor da aresta A2: ") leia(a2) escreva("escreva o valor da aresta A3: ")

Page 18: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

18

leia(a3) se(a2<=a3){ se(a1<=a2){ escreva ("Melhor trajeto: V"+ no+1 +" => V"+ no+2 +"!\n") trajeto = a1 }senao{ escreva ("Melhor trajeto: V"+ no+1 +" => V"+ no+3 +"!\n") trajeto = a2 } }senao{ escreva ("Melhor trajeto: V"+ no+2 +" => V"+ no+3 +"!\n") trajeto = a3 } total = total + trajeto escreva("O trajeto tem "+ total +" km!\n") } } } script 1 - Algoritmo de decisão de melhor caminho

Resposta:

Quantos nós tem o caminho? 3 escreva o valor da aresta A1: 1 escreva o valor da aresta A2: 2 escreva o valor da aresta A3: 3 =============================================== Melhor trajeto: V11 => V12! =============================================== O trajeto tem 1 km! escreva o valor da aresta A1: 4 escreva o valor da aresta A2: 5 escreva o valor da aresta A3: 6 =============================================== Melhor trajeto: V21 => V22! =============================================== O trajeto tem 5 km! Fim.

Resoluções de problemas por meio de busca

Busca em extensão Como pudemos observar a Busca Cega examina todas as possibilidades da Árvore de decisões e escolhe a melhor opção. Na Busca por Extensão, a análise ocorre em todos os nós sucessores, assim:

Page 19: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

19

G = {{v1, v2}, {v1, v3}, {v1, v5}, {v2, v3}, {v2, v7}, {v3, v4}, {v4, v5}, {v4, v6}, {v5, v7}, {v6, v8}, {v8, v9}, {v8, v10}, {v7, v9}, {v9, v10}}

Na busca em extensão, como as possibilidades não são analisadas imediatamente, mas em suas raízes, caminhos complexos podem ter resultados diferentes, pois demandam análises completas. Ex.: É certo que da prefeitura de Guarulhos para a prefeitura de São Paulo, pela Dutra / Marginal é melhor que pelo centro de Guarulhos, Vila Galvão, Jaçanã, Tucuruvi, etc.?

Não há possibilidade de troca no meio do trajeto, pois implicaria na conformação de outro trajeto. Nestes casos, a Busca por Extensão é a mais indicada.

No algoritmo apresentado no script 1, é possível observar que a comparação é direta:

... para(no=1;no<nos;no++){ escreva("escreva o valor da aresta A1: ") leia(a1) escreva("escreva o valor da aresta A2: ") leia(a2) escreva("escreva o valor da aresta A3: ") leia(a3) se(a2<=a3){ se(a1<=a2){ ... script 2 - A condição evidenciada busca o menor caminho

Para a Busca por Extensão, seria o total do caminho, ou seja, a somatória das distâncias do total de vértices da Busca Cega.

Ao encontrar uma ligação possível, exemplo V1 – V3, a condição deve continuar deste último, V3 – V4, e seguir por V4—v5. Note que a opção V1—V2 foi rejeitada por momento.

Observe que para o caminho V1 –V7, existem 4 trajetos possíveis. A Busca por extensão deve analisar todos. Vamos analisar somente 2. Por v2 e por v5:

• G={{v1, v2}} = 3; • G={{v1, v5}} = 7;

Na Busca Cega, a escolha seria v1—v2.

• G={{v1, v2}, {v2, v7} = 18; • G={{v1, v5}, {v5, v7}} = 12.

Na Busca por extensão o caminho {{v1, v5}, {v5, v7}} é 33% menor!

O algoritmo seria não por comparativo, mas por continuidade e acúmulo:

Desenvolva!

programa { funcao inicio()

Page 20: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

20

{ inteiro v, a, i, j, k, n, d[9], i2, k2, t, total=0 escreva("Quantos vértices tem este grafo? ") leia(v) para(i=1;i<=v;i++){ escreva("\nVértice "+i+"\n") escreva("Quantas arestas tem este vértice? ") leia(a) para(j=1;j<=a;j++){ escreva("\nQual a distância da aresta "+j+"?") leia(d[j]) } para(n=1;n<=a;n++){ se(d[1]>=d[n]){ i2 = i+1 escreva("V"+i+" - V"+i2+" é menor.\n") t = d[n] } } total = total + t } escreva("O trajeto total tem "+ total + " km") } } script 3 - busca em profundidade ou extensão

Quantos vértices tem este grafo? 6 Vértice 1 Quantas arestas tem este vértice? 3 Qual a distância da aresta 1?5 Qual a distância da aresta 2?7 Qual a distância da aresta 3?3 V1 - V2 é menor. V1 - V2 é menor. Vértice 2 Quantas arestas tem este vértice? 2 Qual a distância da aresta 1?5 Qual a distância da aresta 2?15 V2 - V3 é menor. Vértice 3 Quantas arestas tem este vértice? 1 Qual a distância da aresta 1?1 V3 - V4 é menor. Vértice 4 Quantas arestas tem este vértice? 2 Qual a distância da aresta 1?5

Page 21: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

21

Qual a distância da aresta 2?2 V4 - V5 é menor. V4 - V5 é menor. Vértice 5 Quantas arestas tem este vértice? 1 Qual a distância da aresta 1?5 V5 - V6 é menor. Vértice 6 Quantas arestas tem este vértice? 1 Qual a distância da aresta 1?1 V6 - V7 é menor. O trajeto total tem 17 km Programa finalizado. Tempo de execução: 128144 milissegundos

Revisão de Lógica de Programação

Bubble Sort Bubble Sort é um algoritmo de ordenação simples e fácil de implementar, porém é de processamento lento. Para grande volumes de dados a serem ordenados, não é recomendado.

programa { funcao inicio() { inteiro vetor[] = {9,1,7,3,5} inteiro i, j, lint, lext, aux lint = 0 lext = 0 para(i=0;i<=4;i++){ para(j=0;j<4-i;j++){ se(vetor[j]>vetor[j+1]){ aux = vetor[j] vetor[j] = vetor[j+1] vetor[j+1] = aux } } } para(i=0;i<=4;i++){ escreva(vetor[i]," | ") } } } script 4 - Algoritmo de ordenação Bubble Sort

1 | 3 | 5 | 7 | 9 | Programa finalizado. Tempo de execução: 145 milissegundos

Page 22: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

22

Selection Sort Assim como o Bubble Sort, o Selection sort é simples de implementar, de processamento lento , porém ligeiramente mais rápido.

programa { funcao inicio() { inteiro vetor[] = {9,1,7,3,5} inteiro i, j, lint, lext, aux lint=0 lext=0 para(i=0;i<5;i++){ para(j=i+1;j<5;j++){ se(vetor[j]<vetor[i]){ aux = vetor[j] vetor[j] = vetor[i] vetor[i] = aux } } escreva(vetor[i]," | ") } } } script 5 - A;goritmo de ordenação Selection Sort

1 | 3 | 5 | 7 | 9 | Programa finalizado. Tempo de execução: 129 milissegundos

Page 23: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

23

Insertion Sort O Insertion é um sistema pouco mais complexo, porém mais rápido que os aanteriores. Ele funciona como ordenar um baralho de cartas. Armazena-se a carta em memória até que sua posição seja encontrada e assim em diante.

programa { funcao inicio() { inteiro aux, i, j inteiro vetor[] = {9,1,7,3,5} para(i=1; i<5; i++){ aux = vetor[i] j = i - 1 enquanto(j>=0 e aux<vetor[j]){ vetor[j] = vetor[j+1] j++ } vetor[j+1] = aux escreva(vetor[j+1],"|") } } } script 6 - Algoritmo de ordenação Selection Sort

Page 24: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

24

Quick Sort O mais rápido e mais complexo algoritmo. O Quick Sort ordena dividindo em subgrupos tendo como divisor um valor médio (somatória de todos e divisão pelo total de elementos).

programa { funcao QuickSort(x[9], IniVet, FimVet) { inteiro i=0, j=0, pivo, aux, x[], IniVet, FimVet pivo = x[(IniVet + FimVet)/2] enquanto(i<j){ enquanto(x[i]<=pivo){ i=i+1 } enquanto(x[j]>pivo){ j=j-1 } se(i<j){ aux = x[i] x[i] = x[j] x[j] = aux } i=i+1 } se(j>IniVet){ QuickSort(x, IniVet, j) } se(i<FimVet){ QuickSort(x, j+1, FimVet) } } } script 7 - Algoritmo de ordenação Quick Sort

Busca em Largura A Busca em Largura pressupõe que o objetivo é desconhecido, logo todos os vertices precisam ser procurados.

programa { funcao inicio() { inteiro v, a, i, j, k, n, d[9], i2, k2, t, total=0 escreva("Quantos vértices tem este grafo? ") leia(v) para(i=1;i<=v;i++){ escreva("\nVértice "+i+"\n") escreva("Quantas arestas tem este vértice? ") leia(a) para(j=1;j<=a;j++){ escreva("\nQual a distância da aresta "+j+"?") leia(d[j]) } para(n=1;n<=a;n++){

Page 25: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

25

se(d[1]>=d[n]){ i2 = i+1 escreva("V"+i+" - V"+i2+" é menor.\n") t = d[n] } } total = total + t } escreva("O trajeto total tem "+ total + " km") } } script 8 - busca em largura

Busca em Profundidade A Busca em Profundidade, diferente da Busca em Largura, conhece o objetivo da busca e retorna qual o melhor caminho, como o mais curto, mais rápido, mais econômico, etc.

programa { funcao inicio() { inteiro v, a, i, j, k, n, d[9], i2, k2, t, total=0 escreva("Quantos vértices tem este grafo? ") leia(v) para(i=1;i<=v;i++){ escreva("\nVértice "+i+"\n") escreva("Quantas arestas tem este vértice? ") leia(a) para(j=1;j<=a;j++){ escreva("\nQual a distância da aresta "+j+"?") leia(d[j]) } total = total + t } escreva("O trajeto total tem "+ total + " km") } } script 9 - busca em profundidade

Aprendizado de Máquina Aprendizado de Máquina (AM) é o campo da Ciência da Computação que estuda o reconhecimento de padrões que dá aos computadores a habilidade de aprender sem serem programados de forma inflexível, ou seja, algoritmos flexíveis que permitem aprender com seus erros ao construir um modelo a partir de dados amostrais e permitir realizar previsões ou tomar decisões a partir de técnicas de probabilidade e estatística, chamado de raciocínio indutivo.

Vamos analisar a seguinte pesquisa:

Tabela 1 - Professores | Disciplinas | Desempenho

Professor Disciplina Nota Abner Probabilidade e Estatística 5

Page 26: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

26

Beatriz IA 5 Carlos Estrutura de Dados 9 Danila Programação 8 Abner IA 6 Beatriz Estrutura de Dados 7 Carlos Programação 5 Danila Probabilidade e Estatística 8 Abner Estrutura de Dados 6 Beatriz Programação 6 Carlos IA

Danila Estrutura de Dados 7 Abner Programação

Beatriz Probabilidade e Estatística

Carlos Probabilidade e Estatística 9 Danila IA 6 Quais são as notas do Abner, da Beatriz e do Carlos?

Qual o melhor professor para IA?

Qual não colocar em IA?

AM, essencialmente, é então a coletânea de dados associados a um algoritmo flexível que permite a tomada de decisão conforme os dados são inseridos.

Vamos imaginar a seguinte situação: um robô de procurar comida numa sala. Para se alimentar ele deve estar com fome. A fome é o motivador. A programação estabelece que se deve comer 4 vezes ao dia, ou seja, uma refeição a casa 6 horas. A primeira deve ser as 6h, depois as 12h, 18h e a ultima a 0h.

Na primeira refeição, o robô demorou 3h para encontrar a comida. O Aprendizado de Máquina (AM) armazena os dados no Banco de Dados do Software: procurar comida demora 3h. Se a próxima refeição será as 12, o robô deve começar a procurar às 9h(!). No entanto ele aprendeu onde está a comida. A segunda refeição demorou 0min para ser encontrada. A terceira refeição deverá começar 1h30 antes, a media, o robô partirá as 16h30. Como ele aprendeu onde fica a comida e o percurso demora 1min, ele partirá somente.... 16h30 ou 17h59?

Heurística A heurística é o processo de encontrar a solução. Como modelo cognitivo é baseado na experiência e no planejamento do caso, diferentemente da busca cega que procura incessantemente todas as possibilidades e demanda alto poder computacional e baixa eficiência algorítmica. A Heurística, portanto, é uma forma de tornar a busca cega mais eficiente por meio da experiência, como pensam as pessoas.

Ela é muito utilizada em sistemas computacionais que procuram em grande quantidade de dados (Big Data) comportamentos desconhecidos, por meio de conhecimentos específicos, exemplo: Qual o próximo produto a ser consumido pelos estudantes universitários?

Page 27: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

27

Ao longo de anos de indexação de dados dos estudantes detectou-se que ao entrar na faculdade um estudante típico consome 1 lata de refrigerante e um salgado no intervalo e que ao final do curso ele consome um maço de cigarros e um refrigerante.

Qual o próximo produto a ser consumido pelos estudantes universitários?

O comportamento muda, mas a busca não é cega e sim a partir de um conhecimento específico. Ao consumir cigarros, o aluno tenderá consumir café, pois fumantes consomem café.

A heurística, com base em conhecimentos específicos, que podem vir de bases específicas externas, procura no mar de opções a opção mais provável de escolha, ainda que por tentativa e erro.

Ao detectar o comportamento de consumo dos alunos (refrigerante + salgado) pede-se uma nova busca com idade + 4 (anos) e a resposta é refrigerante + cigarros.

A base de dados da cantina oferece por resultado o cruzamento de produtos:

1. Refrigerante è salgado; 2. Refrigerante è cigarros; 3. Refrigerante è balas;

Ao se introduzir a palavra cigarros:

1. Cigarros è refrigerante; 2. Cigarros è café; 3. Cigarros è balas;

Ao se introduzir café:

1. Caféè cigarros; 2. Café è balas; 3. Café è pão de queijo;

Tabela 2 - Comparativo de compras e produtos associados

Produto associado

Produto principal

Refrigerante Cigarros Café Salgado Balas Pão de

queijo Refrigerante x x x

Cigarros x x x Café x x x

Por indução ou tentativa e erro, a heurística responde que o próximo produto para o comportamento refrigerante + cigarros, será café. Note que ao se solicitar a palavra café, como resposta ao próximo produto, a palavra refrigerante não aparece, mas a palavra balas aparece em todas as pesquisas.

1. Balas è café;

Page 28: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

28

2. Balas è cigarros; 3. Balas è salgados; 4. Balas è refrigerante;

Bala está associada a todos os produtos da cantina e cigarro só não está associado à salgado.

Desta analise, então, obtém-se que a heurística é uma busca cega extremamente eficiente, pois não precisa “varrer” todos os produtos da cantina para descobrir o produto a ser escolhido pelo aluno.

A heurística, ainda, não é um processo absolutista e de futurologia, mas probabilístico, desta forma, indica-se um comportamento, mas não todas as respostas.

Os antivírus também utilizam a heurística como forma de detecção de vírus, ele possui um comportamento típico como procurar o arquivo .docx, instalar um arquivo .scr e modificar os arquivos procurados para permitir a infecção de outros dispositivos. Com base neste comportamento, a heurística dos principais antivírus do mercado possuem um aplicativo de busca heurística que “prevê” um vírus.

Tabela 3 - Tabela de avaliação de antivirus

Processo Eficiência Phishing FALSE Detecção Heuristica Performance Desconhecidos Resultado

Peso 1,5 0,5 0,5 2,5 1 3 1 10 Para implantação de um algoritmo de heurística é preciso:

1. Criar a função de avaliação, exemplo: 1.1. relacione os produtos vendidos; 1.2. categorize-os; 1.3. some por categoria; 1.4. divida o total por categoria pelo total de produtos; 1.5. se o total por categoria for maior que 25% do total de produtos vendidos,

retorne. 2. Compare todas as categorias pelo total e retorne a mais adequada; 3. Se nenhuma categoria atender, mude para produto de acompanhamento

(vendidos juntos);

Desta forma pode-se teorizar que:

1. Crie uma função de avaliação por nó (decisão); 2. Expande ou aprofunda no nó que tiver avaliação melhor (mais próximo, menor,

maior, etc.); ignore os outros. 3. Condicione o resultado à uma nova função; 4. A(s) nova(s) função(ões) devem ser prescritas e chamadas quando necessário.

Page 29: Inteligência Artificial - 2ª edição · Revisão de Arquitetura de Computadores ... CISC, RISC (ARM). Estudo de caso Raspberry Pi.....15 Busca cega .....15 Resoluções de problemas

29

Busca Competitiva

Princípios da incerteza

Machine Learning

Problemas de Satisfação de Restrições Sudoku

Neste jogo, você começa com um tabuleiro de dimensões m x m parcialmente preenchido. Um exemplo de um tabuleiro 4 x 4 é mostrado abaixo:

Tabela 4 - Sudoku

3 2

1 4 1 2 4

2 1

A cada passo do jogo você pode preencher as posições vazias com um número entre 1 e m. A solução para o jogo é um tabuleiro completamente preenchido no qual cada número de 1 a m apareça exatamente uma vez em cada linha, coluna e bloco.

Bibliografia SOBRENOME, Nome. Título. Editora. Local, ano.