Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA MC3311 - Inteligência Artificial 2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) Lógica 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória 4. CURSO 5. CRÉDITOS BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO T-P-I: 3-1-4 6. QUADRIMESTRE IDEAL 7o 7. NÍVEL Graduação 8. Nº. MÁXIMO DE ALUNOS POR TURMA TEORIA: 60 LABORATÓRIO: 30 9. OBJETIVOS Habilitar a aplicação de conceitos e técnicas de Inteligência Artificial (IA) e enfatizar o projeto e a construção de sistemas de resolução de problemas usando técnicas de IA, aplicados a classes de tarefas que muitas vezes estão fora do alcance de técnicas computacionais tradicionais. 10. COMPETÊNCIAS A disciplina deverá permitir que o aluno seja capaz de: - Compreender o que é Inteligência Artificial; - Definir um agente e, em particular, um agente inteligente; - Conhecer e compreender as diversas sub-áreas da Inteligência Artificial; - Identificar o tipo de problema em que uma técnica de IA deve ser aplicada, ao invés de uma técnica computacional tradicional, e compreender o motivo desta decisão; - Compreender qual técnica de IA é mais adequada para cada tipo de problema; - Implementar técnicas de IA para a resolução de problemas. 11. PROGRAMA RESUMIDO Introdução à Inteligência Artificial. Agentes inteligentes. Resolução de problemas utilizando técnicas de busca. Sistemas Baseados no Conhecimento. Representação do conhecimento. Tratamento de incerteza. Aprendizado. 12. PROGRAMA 1 – Introdução à Inteligência Artificial (IA) 1.1 – Definição de IA 1.2 - IA no dia-a-dia 1.3 – Categorias das definições de IA 1.4 – Histórico de IA 2 - Agentes Inteligentes 2.1 – Agentes racionais 2.2 – Natureza dos ambientes 2.3 – Propriedades dos ambientes 2.4 – Agentes com reflexos simples 2.5 – Agentes baseados em modelo 2.6 – Agentes baseados em objetivo 2.7 - Agentes baseados em utilidade 2.8 – Agentes que aprendem 2.9 – Resolução de exercícios 3 – Técnicas de Busca 3.1 – Etapas da resolução de um problema 3.1.1 – Definir objetivos 3.1.2 – Formular o problema 3.1.3 – Buscar a solução 3.1.4 – Executar a solução 3.2 – Componentes de um problema 3.2.1 – Grafos 3.3 – Como formular um problema 3.4 – Problemas reais 3.5 – Algoritmos 3.6 – Busca por soluções 3.7 – Árvore de busca 3.8 – Desempenho 3.9 – Busca Cega 3.9.1 – Busca em Largura 3.9.2 – Busca de Custo Uniforme 3.9.3 – Busca em Profundidade 3.9.3.1 – Busca em Profundidade Limitada 3.9.3.2 – Busca por Aprofundamento Iterativo 3.9.4 – Busca Bidirecional 3.9.5 – Como evitar estados repetidos 3.10 – Busca Heurística 3.10.1 Busca Gulosa 3.10.2 – Busca A* 3.10.3 – Funções heurísticas 3.10.4 – Busca Local 3.10.4.1 – Busca Subida em Encosta (Hill-climbing) 3.10.4.2 - Recozimento Simulado (Simulated Annealing) 3.10.4.3 – Busca em Feixe Local (Beam Search) 3.10.5 – Algoritmos Genéticos 3.11 – Problemas de satisfação de restrições 3.11.1 – Tipos de variáveis 3.11.2 – Tipos de restrições 3.11.3 – Formulações do problema 3.11.4 – Busca com Retrocesso 3.11.5 – Heurísticas Gerais 3.11.6 – Heurísticas Especiais 3.11.7 – Restrições Especiais 3.11.8 Retrocesso Inteligente 3.12 – Busca Competitiva 3.12.1 – Tipos de jogos 3.12.2 - Formulação do problema 3.12.3 – Decisões ótimas em jogos 3.12.4 – Estratégia MINIMAX 3.12.5 – Poda Alfa-Beta 3.12.6 – Funções de avaliação 3.12.7 – Jogos com acaso 3.12.8 – Programas de última geração 3.13 – Resolução de exercícios 4 – Sistemas Baseados no Conhecimento (SBCs) 4.1 – Natureza do conhecimento humano 4.2 – Sistemas baseados em conhecimento 4.2.1 – Definição 4.2.2 – Capacidades 4.2.3 - Propriedades 4.2.4 – Diferenças entre os sistemas convencionais e os SBCs 4.2.5 - Sistemas Especialistas - Histórico 4.2.6 – Viabilidade de um SBC e quando se deve desenvolvê-lo 4.2.7 – Tipos de aplicações de SBCs 4.2.8 – Estrutura geral de um SBC 4.2.9 – Desenvolvimento de um SBC – fases 4.2.10 – Ferramentas para construção de um SBC 4.2.11 – Verificação e validação de um SBC 4.2.12 – Versões demonstrativas de SBCs na Web 4.3 – Resolução de exercícios 5 – Representação do Conhecimento 5.1 – Características 5.2 - Componentes 5.1 – Regras de Produção 5.1.1 – Encadeamento progressivo (forward chaining) 5.1.2 – Encadeamento regressivo (backward chaining) 5.1.3 – Exemplos 5.1.4 – Vantagens e limitações 5.2 – Redes Semânticas 5.2.1 – Características 5.2.2 – Busca em Redes Semânticas 5.2.3 – Vantagens e limitações 5.3 – Frames 5.3.1 – Características 5.3.2 – Capacidades 5.4 – Scripts 5.4.1 – Características 5.5 – Lógica 5.5.1 – O Mundo de Wumpus 5.5.1.1 – Sintaxe 5.5.1.2 – Semântica 5.5.1.3 – Base de Conhecimento 5.5.1.4 – Inferência 5.6 – Resolução de exercícios 6 - Incerteza 6.1 – Representação de incerteza 6.2 – Modelo probabilista 6.2.1 – Crença x Verdade 6.2.2 – Tipos de probabilidade 6.2.3 – Teoria da Utilidade 6.2.4 – Notação básica de probabilidade 6.2.4.1 – Variável aleatória, conectivos lógicos e eventos atômicos 6.2.5 – Probabilidade a priori 6.2.6 – Probabilidade condicional 6.2.7 – Axiomas da probabilidade 6.2.8 – Inferência probabilística 6.2.9 – Independência 6.3 – Regra de Bayes 6.4 – Redes Bayesianas 6.5 – Lógica Nebulosa (Fuzzy) 6.5.1 – Elementos 6.5.2 – Partição 6.5.3 – Representação: funções de pertinência 6.5.4 – Variáveis lingüísticas 6.5.5 – Operações 6.5.6 – Representação de conjuntos Fuzzy 6.5.7 – Regras Fuzzy 6.5.8 – Etapas do raciocínio Fuzzy 6.6 – Resolução de exercícios 7 – Aprendizado 7.1 – Aprendizado de Máquina 7.1.1 – Objetivos 7.1.2 – Indução 7.1.3 – Modos de aprendizado 7.1.3.1 – Aprendizado supervisionado 7.1.3.2 – Aprendizado não-supervisionado 7.1.3.3 – Aprendizado por reforço 7.1.4 – Paradigmas de aprendizado 7.1.4.1 – Simbólico 7.1.4.2 – Estatístico 7.1.4.3 – Baseado em exemplos 7.1.4.4 – Conexionista 7.1.4.5 – Evolutivo 7.1.5 – Linguagens de descrição do aprendizado 7.1.5.1 – Instâncias ou exemplos 7.1.5.2 – Conceitos aprendidos ou hipóteses 7.1.5.3 – Teoria de domínio ou conhecimento de fundo 7.1.6 – Formas de aprendizado 7.1.6.1 – Incremental 7.1.6.2 – Não-incremental 7.1.7 – Projetando um sistema de aprendizado 7.1.8 – Desempenho de algoritmos 7.1.9 – Árvores de decisão 7.1.9.1 – Características 7.1.9.2 – Construindo uma árvore de decisão 7.1.9.3 – Poda 7.2 – Resolução de exercícios 13. MÉTODOS UTILIZADOS Os conteúdos serão apresentados em aulas expositivas, com uso de recursos audiovisuais (slides) e lousa para a resolução de exercícios. Em seguida, eles serão trabalhados em exercícios e em aulas de laboratório, através da aplicação de cada técnica na resolução de um dado problema. Os alunos desenvolverão ainda um projeto computacional em grupo, que consistirá na implementação de uma das técnicas de IA estudadas para a resolução de um dado problema. Os alunos farão uma apresentação do projeto para o professor e toda a turma. 14. ATIVIDADES DISCENTES Os alunos resolverão listas de exercícios, realizarão implementações das técnicas de IA estudadas nas aulas em laboratório em dupla e desenvolverão em grupo um projeto computacional que consistirá na implementação de uma das técnicas de IA estudadas para a resolução de um dado problema. Os grupos de alunos apresentarão seus projetos ao professor e à turma, em sala de aula. 15. CARGA HORÁRIA AULAS TEÓRICAS: 36 horas AULAS PRÁTICAS: 12 horas TOTAL: 48 horas RECOMENDADO PARA DEDICAÇÃO INDIVIDUAL: 4 horas semanais 16. CRITÉRIOS DE AVALIAÇÃO DE APRENDIZAGEM Os alunos serão avaliados de três formas: i) realização de duas avaliações escritas (peso de 40%); ii) desenvolvimento e apresentação de um projeto computacional (peso de 40%) e iii) resoluções de listas de exercícios (peso de 20%). O aproveitamento do aluno será calculado como a média ponderada destas três formas de avaliação, de acordo com os pesos descritos anteriormente (entre 0% e 100%). 17. NORMAS DE RECUPERAÇÃO (CRITÉRIOS DE APROVAÇÃO E ÉPOCAS DE REALIZAÇÃO DAS PROVAS OU TRABALHOS) As notas serão atribuídas segundo os conceitos estabelecidos pela UFABC. A aprovação se dará mediante obtenção de conceitos A, B, C, ou D. O aluno fará uma avaliação escrita substitutiva caso tenha obtido conceito F no cálculo do valor médio de aproveitamento nas avaliações escritas. O aproveitamento obtido na avaliação substitutiva será inserido no lugar do menor aproveitamento alcançado nas avaliações escritas. 18. BIBLIOGRAFIA RECOMENDADA BIBLIOGRAFIA BÁSICA: 1. RUSSELL, Stuart Jonathan; NORVIG, Peter. Inteligência artificial. 2 ed. Rio de Janeiro: Campus, 2004. 1021 p. Tradução da segunda edição. ISBN 9788535211771. 2. REZENDE, Solange Oliveira. Sistemas inteligentes: fundamentos e aplicações. Barueri: Manole, 2005. xxxiii, 517 p. (RECOPE-IA - Rede cooperativa de pesquisa em inteligência Artificial). ISBN 9788520416839. BIBLIOGRAFIA COMPLEMENTAR: 1. BITTENCOURT, Guilherme. Inteligência artificial: ferramentas e teorias. 3 ed. Florianópolis: Ed. da UFSC, 2006. 371 p. ISBN 9788532801388. 2. BRACHMAN, Ronald J; LEVESQUE, Hector J. Knowledge representation and reasoning. San Francisco, CA: Elsevier, 2003. xxix, 381 p. Includes bibliographical references and index. ISBN 9781558609327. 3. LUGER, George F. Artificial intelligence: structures and strategies for complex problem solving. 6ª. ed. Boston: Pearson Addison-Wesley, c2009. xxiii, 754 p. ISBN 9780321545893. 4. MITCHELL, Tom m. Machine learning. Boston: WCB McGraw-Hill, c1997. 414 p. (McgrawHill series in computer science). ISBN 9780070428072. 5. MORTARI, Cezar A. Introdução à lógica. São Paulo: Editora da Unesp, 2001. 393 p. ISBN 857139337-0. 6. RUSSELL, Stuart; NORVIG, Peter. Artificial intelligence: a modern aproach. 2 ed. New Jersey: Prentice Hall; Pearson Education, 2003. 1081 p. (Prentice Hall series in Artificial Intelligence). ISBN 0137903952. 7. SUTTON, Richard S.; BARTO, Andrew G. Reinforcement learning: an introduction. Cambridge, Mass: MIT Press, c1998. xviii, 322 p. (Adaptive computation and machine learning). Includes bibliographical references and index. ISBN 9780262193986. 8. WOOLDRIDGE, Michael. An introduction to multiagent systems. 2 ed. Torquay: Wiley, 2009. 461 p. ISBN 9780470519462. 19. PLANO SUGERIDO PARA AS AULAS (em semanas letivas – duas aulas por semana) Aula 01: Introdução à Inteligência Artificial (IA) 1.1 – Definição de IA 1.2 - IA no dia-a-dia 1.3 – Categorias das definições de IA 1.4 – Histórico de IA 1.5 – Resolução de exercícios Aula 02: Agentes Inteligentes 2.1 – Agentes racionais 2.2 – Natureza dos ambientes 2.3 – Propriedades dos ambientes 2.4 – Agentes com reflexos simples 2.5 – Agentes baseados em modelo 2.6 – Agentes baseados em objetivo 2.7 - Agentes baseados em utilidade 2.8 – Agentes que aprendem 2.9 – Resolução de exercícios Aula 03: Resolução de Problemas por Busca 3.1 – Etapas da resolução de um problema 3.1.1 – Definir objetivos 3.1.2 – Formular o problema 3.1.3 – Buscar a solução 3.1.4 – Executar a solução 3.2 – Componentes de um problema 3.2.1 – Grafos 3.3 – Como formular um problema 3.4 – Problemas reais 3.5 – Algoritmos 3.6 – Busca por soluções 3.7 – Árvore de busca 3.8 – Desempenho 3.9 – Resolução de exercícios Aula 04: Busca Cega 4.1 – Busca em Largura 4.2 – Busca de Custo Uniforme 4.3 – Busca em Profundidade 4.3.1 – Busca em Profundidade Limitada 4.3.2 – Busca por Aprofundamento Iterativo 4.4 – Busca Bidirecional 4.5 – Como evitar estados repetidos 4.6 – Resolução de exercícios Aula 05: Busca Cega – Prática Aula 06: Busca Heurística 6.1 - Busca Gulosa 6.2 – Busca A* 6.3 – Funções heurísticas 6.4 – Busca Local 6.4.1 – Busca Subida em Encosta (Hill-climbing) 6.4.2 Recozimento Simulado (Simulated Annealing) 6.4.3 – Busca em Feixe Local (Beam Search) 6.5 – Algoritmos Genéticos 6.6 – Resolução de exercícios Aula 07: Busca Heurística – Prática Aula 08: Problemas de satisfação de restrições 8.1 – Tipos de variáveis 8.2 – Tipos de restrições 8.3 – Formulações do problema 8.4 – Busca com Retrocesso 8.5 – Heurísticas Gerais 8.6 – Heurísticas Especiais 8.7 – Restrições Especiais 8.8 - Retrocesso Inteligente 8.9 – Resolução de exercícios Aula 09: Busca Competitiva 9.1 – Tipos de jogos 9.2 - Formulação do problema 9.3 – Decisões ótimas em jogos 9.4 – Estratégia MINIMAX 9.5 – Poda Alfa-Beta 9.6 – Funções de avaliação 9.7 – Jogos com acaso 9.8 – Programas de última geração 9.9 – Resolução de exercícios Aula 10: Busca Competitiva – Aula prática Aula 11: Sistemas Baseados no Conhecimento (SBCs) 11.1 – Natureza do conhecimento humano 11.2 – Sistemas baseados em conhecimento 11.2.1 – Definição 11.2.2 – Capacidades 11.2.3 - Propriedades 11.2.3 – Diferenças entre os sistemas convencionais e os SBCs 11.2.4 - Sistemas Especialistas - Histórico 11.2.5 – Viabilidade de um SBC e quando se deve desenvolvê-lo 11.2.6 – Tipos de aplicações de SBCs 11.2.7 – Estrutura geral de um SBC 11.2.8 – Desenvolvimento de um SBC – fases 11.2.9 – Ferramentas para construção de um SBC 11.2.10 – Verificação e validação de um SBC 11.2.11 – Versões demonstrativas de SBCs na Web 11.3 – Resolução de exercícios Aula 12: Representação do Conhecimento 12.1 – Características 12.2 - Componentes 12.3 – Regras de Produção 12.3.1 – Encadeamento progressivo (forward chaining) 12.3.2 – Encadeamento regressivo (backward chaining) 12.3.3 – Exemplos 12.3.4 – Vantagens e limitações 12.4 – Resolução de exercícios Aula 13: Representação do Conhecimento 13.1 – Redes Semânticas 13.1.1 – Características 13.1.2 – Busca em Redes Semânticas 13.1.3 – Vantagens e limitações 13.2 – Frames 13.2.1 – Características 13.2.2 – Capacidades 13.3 – Scripts 13.3.1 – Características 13.4 – Lógica 13.4.1 – O Mundo de Wumpus 13.4.1.1 – Sintaxe 13.4.1.2 – Semântica 13.4.1.3 – Base de Conhecimento 13.4.1.4 – Inferência 13.5 – Resolução de exercícios Aula 14: Revisão – resolução das listas de exercícios Aula 15: Avaliação escrita 1 Aula 16: Incerteza 16.1 – Representação de incerteza 16.2 – Modelo probabilista 16.2.1 – Crença x Verdade 16.2.2 – Tipos de probabilidade 16.2.3 – Teoria da Utilidade 16.2.4 – Notação básica de probabilidade 16.2.4.1 – Variável aleatória, conectivos lógicos e eventos atômicos 16.2.5 – Probabilidade a priori 16.2.6 – Probabilidade condicional 16.2.7 – Axiomas da probabilidade 16.2.8 – Inferência probabilística 16.2.9 – Independência 16.3 – Resolução de exercícios Aula 17: Incerteza 17.1 – Regra de Bayes 17.2 – Redes Bayesianas 17.3 – Lógica Nebulosa (Fuzzy) 17.3.1 – Elementos 17.3.2 – Partição 17.3.3 – Representação: funções de pertinência 17.3.4 – Variáveis lingüísticas 17.3.5 – Operações 17.3.6 – Representação de conjuntos Fuzzy 17.3.7 – Regras Fuzzy 17.3.8 – Etapas do raciocínio Fuzzy 17.4 – Resolução de exercícios Aula 18: Aprendizado 18.1 – Aprendizado de Máquina 18.1.1 – Objetivos 18.1.2 – Indução 18.1.3 – Modos de aprendizado 18.1.3.1 – Aprendizado supervisionado 18.1.3.2 – Aprendizado não-supervisionado 18.1.3.3 – Aprendizado por reforço 18.1.4 – Paradigmas de aprendizado 18.1.4.1 – Simbólico 18.1.4.2 – Estatístico 18.1.4.3 – Baseado em exemplos 18.1.4.4 – Conexionista 18.1.4.5 – Evolutivo 18.2 – Resolução de exercícios Aula 19: Aprendizado 19.1.– Linguagens de descrição do aprendizado 19.1.1 – Instâncias ou exemplos 19.1.2 – Conceitos aprendidos ou hipóteses 19.1.3 – Teoria de domínio ou conhecimento de fundo 19.2 – Formas de aprendizado 19.2.1 – Incremental 19.2.2 – Não-incremental 19.3 – Projetando um sistema de aprendizado 19.4 – Desempenho de algoritmos 19.5 – Árvores de decisão 19.5.1 – Características 19.5.2 – Construindo uma árvore de decisão 19.5.3 – Poda 19.6 – Resolução de exercícios Aula 20: Apresentação de projetos Aula 21: Apresentação de projetos Aula 22: Avaliação escrita 2 Aula 23: Apresentação e resolução das avaliações escritas 1 e 2 Aula 24: Avaliação substitutiva 20. PROFESSOR(A) RESPONSÁVEL Karla Vittori