Está en la página 1de 360

ARTIFICIAL ARTIFICIAL

INTELLIGENCE INTELIGENCIA
A Systems Approach Un enfoque de sistemas

M. TIM JONES M. TIM JONES

INFINITY SCIENCE PRESS LLC INFINITY SCIENCE PRESS LLC


Hingham, Massachusetts Hingham

New Delhi Nueva Delhi


Copyright 2008 by INFINITY SCIENCE PRESS LLC Copyright 2008 por INFINITY SCIENCE PRESS LLC

All rights reserved. Todos los derechos reservados.

This publication, portions of it, or any accompanying software may not be reproduced in any way, stored in a retrieval system of any type, or transmitted by any
means or media, electronic or mechanical, including, but not limited to, photocopy, recording, Internet postings or scanning, without prior permission in writing from
the publisher. Esta publicacin, porciones de la misma o cualquier software adjunto no puede ser reproducido de ninguna manera, almacenado en un sistema de
recuperacin de ningn tipo, o transmitido por cualquier medio o medio, electrnico o mecnico, incluyendo, pero no limitado a, fotocopia, grabacin , Publicar en
Internet o escanear, sin permiso previo por escrito del editor.

Publisher: DAVID PALLAI Editor: DAVID PALLAI

INFINITY SCIENCE PRESS LLC INFINITY SCIENCE PRESS LLC

11 Leavitt Street 11 Leavitt Street

Hingham, MA 02043 Hingham, MA 02043

Tel. Tel. 877-266-5796 (toll free) Fax 781-740-1677


info@infinitysciencepress.com www.infinitysciencepress.com 877-266-
5796 (llamada gratuita) Fax 781-740-1677
info@infinitysciencepress.com www.infinitysciencepress.com

This book is printed on acid-free paper. Este libro est impreso en papel sin cido.

M. Tim Jones. M. Tim Jones. Artificial Intelligence: A Systems Approach Inteligencia Artificial: Un Enfoque de Sistemas

ISBN: 978-0-9778582-3-1 ISBN: 978-0-9778582-3-1

The publisher recognizes and respects all marks used by companies, manufacturers, and developers as a means to distinguish their products.
El editor reconoce y respeta todas las marcas utilizadas por empresas, fabricantes y desarrolladores como un medio para distinguir sus
productos. All brand names and product names mentioned in this book are trademarks or service marks of their respective companies. Todos
los nombres de marcas y productos mencionados en este libro son marcas comerciales o marcas de servicio de sus respectivas compaas.
Any omission or misuse (of any kind) of service marks or trademarks, etc. is not an attempt to infringe on the property of others. Cualquier
omisin o mal uso (de cualquier tipo) de marcas de servicio o marcas, etc. no es un intento de infringir los bienes de terceros.

Library of Congress Cataloging-in-Publication Data Catalogacin en la publicacin de la Biblioteca del Congreso

JONES, M. TIM. JONES, M. TIM.

Artificial intelligence : a systems approach / M. Tim Jones. Inteligencia Artificial: un


enfoque sistmico / M. Tim Jones. p. pag. cm. cm.

Includes index. Incluye ndice.

ISBN-13: 978-0-9778582-3-1 (hardcover with cd-rom : alk. paper) ISBN-13: 978-0-9778582-3-1 (tapa dura con cd-rom: papel
alcalino)

1. Artificial intelligence--Data processing. 1. Inteligencia Artificial - Procesamiento de datos. 2. Artificial intelligence--


Mathematical models. 2. Inteligencia Artificial - Modelos Matemticos. I. Title. I. Ttulo. Q336.J68 2008 Q336.J68 2008

006.3--dc22 006.3 - dc22

2007045869 2007045869.

7890432178904321

Our titles are available for adoption, license or bulk purchase by institutions, corporations, etc. For additional information, please
contact the Customer Service Dept. at 877-266-5796 (toll free). Nuestros ttulos estn disponibles para adopcin, licencia o compra a
granel por instituciones, corporaciones, etc. Para obtener informacin adicional, comunquese con el Departamento de Servicio al
Cliente al 877-266-5796 (sin cargo).

Requests for replacement of a defective CD-ROM must be accompanied by the original disc, your mailing address, telephone number, date of
purchase and purchase price. Las solicitudes de reemplazo de un CD-ROM defectuoso deben ir acompaadas del disco original, su direccin
postal, nmero de telfono, fecha de compra y precio de compra. Please state the nature of the problem, and send the information to I NFINITY S
CIENCE P RESS , 11 Leavitt Street, Hingham, MA 02043. Por favor, indique la naturaleza del problema, y enviar la informacin a la que Nfinity S
IENCIAS O prima, 11 Leavitt Street, Hingham, MA 02043.

The sole obligation of I NFINITY S CIENCE P RESS to the purchaser is to replace the disc, based on defective materials or faulty workmanship, but
not based on the operation or functionality of the product. La nica obligacin de I Nfinity S IENCIA P RESS al comprador es reemplazar el disco, a
base de materiales defectuosos o mano de obra defectuosa, pero no se basa en la operacin o la funcionalidad del producto.
D EDICATION D edication

This book is dedicated to my wonderful wife, Jill, without whom this book would not be possible. Este libro est
dedicado a mi maravillosa esposa, Jill, sin la cual este libro no sera posible. I 'm also indebted to my parents
Maury and Celeta, who instilled in me a desire to learn and wonder. Tambin estoy en deuda con mis padres y
Maury Celeta, que me infundi el deseo de aprender y la maravilla.
A CKNOWLEDGMENTS Un
CKNOWLEDGMENTS

At the time of this writing, AI is celebrating its 50 th anniversary. En el momento de escribir estas lneas, la IA est
celebrando su 50 aniversario. It was August of 1956 when researchers met at the Dartmouth Summer Research Project
on Artificial Intelligence with the agenda of creating intelligent machines. Era agosto de 1956 cuando los investigadores
se reunieron en el Proyecto de Investigacin de Verano de Dartmouth sobre Inteligencia Artificial con la agenda de crear
mquinas inteligentes. In the 50 years that followed, AI has become a genuine field of study, but the road has not been
without its bumps. En los 50 aos que siguieron, AI se ha convertido en un verdadero campo de estudio, pero el camino
no ha estado sin sus baches.

Acknowledging all those who 've contributed to AI would fill a book much larger than this. Reconociendo todos
aquellos que han contribuido a la gripe aviar podra llenar un libro mucho ms grande que esto. But I 'd like to
personally recognize John McCarthy for introducing AI in 1955 (at the Dartmouth Summer Project) and for having
created the wonderful Lisp programming language. Pero me gustara reconocer personalmente John McCarthy
para la introduccin de la IA en 1955 (en el Proyecto de Dartmouth de Verano) y por haber creado el maravilloso
lenguaje de programacin Lisp.
T ABLE OF C ONTENTS T ABLA DE C
ONTENIDO
Chapter 1 The History of AI Captulo 1 La Historia de la IA 1-19 1-19
What is Intelligence? Qu es la Inteligencia? 11
The Search for Mechanical Intelligence La bsqueda de la inteligencia mecnica 22
The Very Early Days (the early 1950 's) Los das muy temprano (principios de los aos 1950) 33
Alan Turing Alan Turing 33
AI, Problem Solving and Games AI, Solucin de problemas y juegos 44
Artificial Intelligence Emerges as a Field La inteligencia artificial surge como un campo 55
The Dartmouth AI Summer Research Project El Proyecto de Investigacin de Verano
55
Dartmouth AI
Building Tools for AI Herramientas de construccin para la IA 66
The Focus on Strong AI El enfoque en la IA fuerte 66
Constrained Applications Aplicaciones restringidas 77
Bottom-Up Approaches Emerge Los enfoques ascendentes emergen 77
AI 's Winter AI 's de invierno 88
Results-Oriented Applications Aplicaciones Orientadas a los Resultados 88
Additional AI Tools Emerge Otras herramientas de AI emergen 99
Neat vs. Scruffy Approaches Enfoques puros y desaliados 99
AI Remerges AI Remerges 10 10
The Silent Return La vuelta silenciosa 10 10
Messy and Scruffy Approaches Take Hold Los enfoques desordenados y desaliados se
10 10
mantienen
Agent Systems Sistemas de agentes 12 12
AI Inter-disciplinary R&D IA I + D Interdisciplinario 12 12
Systems Approach Enfoque de sistemas 13 13
Overview of this Book Visin general de este libro 15 15
Uninformed Search Bsqueda desinformada 15 15
Informed Search Bsqueda informada 15 15
AI and Games AI y juegos 15 15
Knowledge Representation Representacin del conocimiento 16 diecisi
Machine Learning Aprendizaje automtico 16 diec
Evolutionary Computation Computacin Evolutiva 16 diec
Neural Networks Part 1 Red neuronal Parte 1 16 diec
Neural Networks Part 2 Red neuronal Parte 2 17 17
Intelligent Agents Agentes Inteligentes 17 17
Biologically Inspired and Hybrid Models Modelos Biolgicamente Inspirados e Hbridos 17 17
Languages of AI Idiomas de AI 17 17
Chapter Summary Resumen del captulo 18 18
References Referencias 18 18
Resources Recursos 18 18
Exercises Ceremonias 19 19
Chapter 2 Uninformed Search Captulo 2 Bsqueda desinformada 21-48 2
Search and AI Bsqueda y AI 21 21
Classes of Search Clases de bsqueda 22 22
General State Space Search Bsqueda general de espacios de estado 22 22
Search in a Physical Space Buscar en un espacio fsico 22 22
Search in a Puzzle Space Buscar en un espacio de rompecabezas 23 23
Search in an Adversarial Game Space Buscar en un espacio de juego Adversarial 25 25
Trees, Graphs and Representation rboles, Grficos y Representacin 27 27
Uninformed Search Bsqueda desinformada 29 29
Helper APIs API de ayuda 30 30
General Search Paradigms Paradigmas de bsqueda general 31 31
Depth-First Search Depth-First Search 31 31
Depth-Limited Search Bsqueda por profundidad limitada 34 34
Iterative Deepening Search Iterative Deepening Bsqueda 36 36
Breadth-First Search Breadth-Primera bsqueda 39 39
Bidirectional Search Bsqueda bidireccional 42 42
Uniform-Cost Search Bsqueda de Uniform-Cost 42 42
Improvements Mejoras 45 45
Algorithm Advantages Ventajas del algoritmo 46 46.
Chapter Summary Resumen del captulo 46 46.
Algorithms Summary Resumen de algoritmos 46 46.
References Referencias 47 47
Exercises Ceremonias 47 47
Chapter 3 Informed Search Captulo 3 Bsqueda informada 49-88 4
Search and AI Bsqueda y AI 49 49
Best-First Search Best-First Search 50 50
Best-First Search and the N-Queens Problem Mejor primera bsqueda y el problema de N-Queens 50 50
Best-First Search Implementation Mejor implementacin de la primera bsqueda 52 52
Variants of Best-First Search Variantes de Best-First Search 56 56
A * Search A * Buscar 57 57
A * Search and the Eight Puzzle A * Bsqueda y los ocho Puzzle 59 59
Eight Puzzle Representation Representacin de ocho rompecabezas 59 59
A * Search Implementation A * Buscar Implementacin 61 61
Eight Puzzle Demonstration with A * Ocho rompecabezas demostracin con A * 64 64
A * Variants A * Variantes 65 ses
Applications of A * Search Las solicitudes de bsqueda A * 65 ses
Hill Climbing Search Hill Climbing Bsqueda 65 ses
Simulated Annealing Recocido simulado 66 66
The Traveling Salesman Problem (TSP) El Problema del Vendedor Viajero (TSP) 68 68
TSP Tour Representation Representacin del Tour de TSP 68 68
Simulated Annealing Implementation Simulated Annealing Implementacin 70 70
Simulated Annealing Demonstration Demostracin simulada de recocido 73 73
Tabu Search Tabu Buscar 75 75
Tabu Search Implementation Implementacin de la bsqueda Tabu 77 77
Tabu Search Demonstration Demostracin de bsqueda Tabu 79 79
Tabu Search Variants Tabu Bsqueda Variantes 80 80
Constraint Satisfaction Restriccin de satisfaccin 81 81
Graph Coloring as a CSP Grfica para colorear como CSP 81 81
Scheduling as CSP Programacin como CSP 83 83
Constraint Satisfaction Problems Problemas de satisfaccin de restricciones 84 84
Generate and Test Generar y probar 84 84
Backtracking Retroceso 84 84
Forward Checking and Look Ahead Revisin hacia adelante y mira hacia adelante 84 84
Min-Conflicts Search Min-Conflicts Bsqueda 86 86
Chapter Summary Resumen del captulo 86 86
Algorithms Summary Resumen de algoritmos 86 86
References Referencias 86 86
Resources Recursos 87 87
Exercises Ceremonias 87 87
Chapter 4 AI and Games Captulo 4 AI y juegos 89-142
Two Player Games Juegos de dos jugadores 89 89
The Minimax Algorithm El Algoritmo de Minimax 92 92
Minimax and Tic-Tac-Toe Minimax y Tic-Tac-Toe 95 95
Minimax Implementation for Tic-Tac-Toe Implementacin de Minimax para Tic-Tac-Toe 98 98
Minimax with Alpha-Beta Pruning Minimax con poda Alpha-Beta 101 10
Classical Game AI Juego Clsico AI 106 10
Checkers juego de damas 10
Checker Board Representation Representacin de Checker Board 10
Techniques used in Checkers Programs Tcnicas utilizadas en los programas de Checkers 10
Opening Books Abriendo libros 10
Static Evaluation Function Funcin de evaluacin esttica 10
Search Algorithm Algoritmo de bsqueda 10
Move History Mover historial 10
Endgame Database Base de datos Endgame 10
Chess Ajedrez 10
Chess Board Representation Representacin de la Junta de Ajedrez 11
Techniques used in Chess Programs Tcnicas utilizadas en los programas de ajedrez 11
Opening Book Database Base de datos de apertura de libros 11
Minimax Search with Alpha Beta Pruning Minimax Bsqueda con Alpha Beta Poda 11
Static Board Evaluation Evaluacin de la Junta esttica 11
Othello Othello 11
Techniques used in Othello Programs Tcnicas utilizadas en los programas Othello 11
Opening Knowledge Apertura del Conocimiento 11
Static Evaluation Function Funcin de evaluacin esttica 11
Search Algorithm Algoritmo de bsqueda 11
Endgames Finales 11
Other Algorithms Otros Algoritmos 11
Go Ir 11
Go Board Representation Go Representacin de la Junta 11
Techniques used in Go Programs Tcnicas utilizadas en Go Programs 11
Opening Moves Movimientos de Apertura 11
Move Generation Generacin de movimiento 11
Evaluation Evaluacin 11
Endgame Fin de juego 11
Backgammon Chaquete 11
Techniques used in Backgammon Programs Tcnicas utilizadas en los programas de backgammon 11
Neurogammon Neurogamon 11
TD-Gammon TD-Gammon 11
Poker Pker 11
Loki A learning Poker Player Loki - Un aprendizaje del jugador de pker 11
Scrabble Escarbar 12
Video Game AI Videojuego AI 12
Applications of AI Algorithms in Video Games Aplicaciones de algoritmos AI en videojuegos 12
Movement and Pathfinding Movimiento y localizacin 12
Table Lookup with Offensive and Defensive Strategy Bsqueda de tablas con estrategia ofensiva y
12
defensiva
NPC Behavior Comportamiento NPC 12
Static State Machines Mquinas estticas del estado 130 13
Layered Behavior Architectures Arquitecturas de comportamiento en capas 131 13
Other Action-Selection Mechanisms Otros Mecanismos de Seleccin de Acciones 132 13
Team AI Equipo AI 132 13
Goals and Plans Metas y planes 134 13
Real-Time Strategy AI Estrategia en Tiempo Real AI 136 13
Rules-Based Programming Programacin basada en reglas 136 13
Chapter Summary Resumen del captulo 139 13
References Referencias 139 13
Resources Recursos 140 14
Exercises Ceremonias 141 14
Chapter 5 Knowledge Representation Captulo 5 Representacin del conocimiento 143-17
Introduction Introduccin 143 14
Types of Knowledge Tipos de conocimiento 144 14
The Role of Knowledge El Rol del Conocimiento 144 14
Semantic Nets Redes Semnticas 145 14
Frames Cuadros 146 14
Proposi tional Logic Lgica proposicional 149 14
Deductive Reasoning with Propositional Logic Razonamiento Deductivo con Lgica Proposicional 151 15
Limitations of Propositional Logic Limitaciones de la Lgica Proposicional 152 15
First Order Logic (Predicate Logic) Lgica de primer orden (lgica predictiva) 152 15
Atomic Sentences Sentencias Atmicas 153 15
Compound Sentences Oraciones compuestas 154 15
Variables Variables 154 15
Quantifiers Cuantificadores 155 15
First-Order Logic and Prolog Lgica de primer orden y Prolog 155 15
Simple Example Ejemplo simple 155 15
Information Retrieval and KR Recuperacin de informacin y KR 157 15
Representing and Reasoning about an Environment Representar y Razonar sobre un
159 15
Ambiente
Semantic Web Web semntica 163 16
Computational Knowledge Discovery Descubrimiento del conocimiento computacional 165 16
The BACON System El sistema BACON 165 16
Automatic Mathematician Matemtico automtico 166 16
Ontology Ontologa 167 16
Communication of Knowledge Comunicacin del Conocimiento 167 16
Common Sense Sentido comn 168 16
Summary Resumen 169 16
References Referencias 169 16
Resources Recursos 169 16
Exercises Ceremonias 170 17
Chapter 6 Machine Learning Captulo 6 Aprendizaje automtico 171-19
Machine Learning Algorithms Algoritmos de Aprendizaje Automtico 171 17
Supervised Learning Aprendizaje supervisado 172 17
Learning with Decision Trees Aprendiendo con rboles de decisin 172 17
Creating a Decision Tree Creacin de un rbol de decisin 174 17
Characteristics of Decision Tree Learning Caractersticas del Aprendizaje del rbol de Decisin 176 17
Unsupervised Learning Aprendizaje sin supervisin 176 17
Markov Models Modelos de Markov 177 17
Word Learning with Markov Chains Aprendizaje de palabras con cadenas de Markov 177 17
Word Generation with Markov Chains Generacin de palabras con cadenas de Markov 179 17
Markov Chain Implementation Implementacin de la cadena de Markov 180 18
Other Applications of Markov Chains Otras aplicaciones de cadenas de Markov 184 18
Nearest Neighbor Classification Clasificacin de vecinos ms cercana 185 18
1NN Example 1NN Ejemplo 186 18
k-NN Example K-NN Ejemplo 188 18
Summary Resumen 192 19
Resources Recursos 192 19
Exercises Ceremonias 192 19
Chapter 7 Evolutionary Computation Captulo 7 Clculo Evolutivo 195-24
Short History of Evolutionary Computation Breve historia de la computacin evolutiva 195 19
Evolutionary Strategies Estrategias Evolutivas 196 19
Evolutionary Programming Programacin Evolutiva 197 19
Genetic Algorithms Algoritmos genticos 197 19
Genetic Programming Programacin Gentica 198 19
Biological Motivation Motivacin Biolgica 199 19
Genetic Algorithms Algoritmos genticos 200 20
Genetic Algorithm Overview Descripcin general del Algoritmo Gentico 200 20
Genetic Algorithm Implementation Implementacin del Algoritmo Gentico 204 20
Genetic Programming Programacin Gentica 212 21
Genetic Programming Algorithm Algoritmo de programacin gentica 212 21
Genetic Programming Implementation Implementacin de la programacin gentica 215 21
Evolutionary Strategies Estrategias Evolutivas 220 22
Evolutionary Strategies Algorithm Algoritmo de Estrategias Evolutivas 221 22
Evolutionary Strategies Implementation Implementacin de Estrategias Evolutivas 223 22
Differential Evolution Evolucin diferencial 227 22
Differential Evolution Algorithm Algoritmo de evolucin diferencial 228 22
Differential Evolution Implementation Implementacin de la Evolucin Diferencial 230 23
Particle Swarm Optimization Optimizacin de Enjambre de partculas
Particle Swarm Algorithm Algoritmo de Enjambre de Partculas
Particle Swarm Implementation Implementacin de Enjambre de Partculas
Evolvable Hardware Hardware Evoluble
Summary Resumen
References Referencias
Resources Recursos
Exercises Ceremonias
Chapter 8 Neural Networks I Captulo 8 Redes Neuronales I
Short History of Neural Networks Breve historia de las redes neuronales
Biological Motiviation Motivacin Biolgica
Fundamentals of Neural Networks Fundamentos de las Redes Neuronales
Single Layer Perceptrons Perceptrones de una sola capa
Multi-Layer Perceptrons Perceptrones de mltiples capas
Supervised vs. Unsupervised Learning Algorithms Algoritmos de aprendizaje supervisados vs. no
supervisados
Binary vs. Continuous Inputs and Outputs Entradas y salidas binarias vs. continuas
The Perceptron El Perceptron
Perceptron Learning Algorithm Algoritmo de Aprendizaje Perceptron
Perceptron Implementation Implementacin de Perceptron
Least-Mean-Square (LMS) Learning Aprendizaje de la Mnima Media-Cuadrada (LMS)
LMS Learning Algorithm Algoritmo de Aprendizaje LMS
LMS Implementation Implementacin LMS
Learning with Backpropagation Aprendiendo con Backpropagation
Backpropagation Algorithm Algoritmo de Backpropagation
Backpropagation Implementation Implementacin de Backpropagation
Tuning Backpropagation Sintonizacin de Backpropagation
Training Variants Variantes de entrenamiento
Weight Adjustment Variants Variantes de ajuste de peso
Probabilistic Neural Networks Redes neuronales probabilsticas
PNN Algorithm Algoritmo PNN
PNN Implementation Implementacin de PNN
Other Neural Network Architectures Otras arquitecturas de redes neuronales
Time Series Processing Architecture Arquitectura de procesamiento de series de tiempo
Recurrent Neural Network Red neuronal recurrente
Tips for Building Neural Networks Consejos para construir redes neuronales
Defining the Inputs Definicin de las entradas
Defining the Outputs Definicin de las salidas
Choice of Activation Functions Eleccin de las funciones de activacin
Number of Hidden Layers Nmero de capas ocultas
Chapter Summary Resumen del captulo 285 28
References Referencias 285 28
Exercises Ceremonias 285 28
Chapter 9 Neural Networks II Captulo 9 Redes neuronales II 289-32
Unsupervised Learning Aprendizaje sin supervisin 289 28
Hebbian Learning Aprendizaje Hebbiano 290 29
Hebb 's Rule Regla de Hebb 's 291 29
Hebb Rule Implementation Implementacin de la regla Hebb 292 29
Simple Competitive Learning Aprendizaje competitivo simple 296 29
Vector Quantization Cuantizacin vectorial 297 29
Vector Quantization Implementation Implantacin de cuantizacin vectorial 298 29
k-Means Clustering K-Medios de agrupacin 304 30
k-Means Algorithm Algoritmo de k-Medias 305 30
k-Means Implementation Implementacin de k-medios 307 30
Adaptive Resonance Theory Teora de Resonancia Adaptativa 313 31
ART-1 Algorithm Algoritmo de ART-1 314 31
ART-1 Implementation Implementacin de ART-1 316 31
Hopfield Auto-Associative Model Modelo auto-asociativo de Hopfield 322 32
Hopfield Auto-Associator Algorithm Hopfield Auto-Asociador Algoritmo 323 32
Hopfield Implementation Implementacin de Hopfield 324 32
Summary Resumen 327 32
References Referencias 328 32
Exercises Ceremonias 328 32
Chapter 10 Robotics and AI Captulo 10 Robtica y AI 329-34
Introduction to Robotics Introduccin a la Robtica 329 32
What is a Robot? Qu es un Robot? 330 33
A Sampling from the Spectrum of Robotics Un muestreo del espectro de la robtica 331 33
Taxonomy of Robotics Taxonoma de la robtica 332 33
Fixed Fijo 333 33
Legged Con piernas 333 33
Wheeled Rodado 333 33
Underwater Submarino 333 33
Aerial Areo 333 33
Other Types of Robots Otros tipos de robots 334 33
Hard vs. Soft Robotics Robtica dura y suave 334 33
Braitenburg Vehicles Braitenburg Vehculos 334 33
Natural Sensing and Control Deteccin y control naturales 336 33
Perception with Sensors Percepcin con Sensores 337 33
Actuation with Effectors Actuacin con Effectors 338 33
Robotic Control Systems Sistemas de control robticos 338 33
Simple Control Architectures Simple Control Architectures 339 33
Reactive Control Control Reactivo 340 34
Subsumption Subsuncin 340 34
Other Control Systems Otros sistemas de control 342 34
Movement Planning Planificacin del movimiento 342 34
Complexities of Motion Planning Complejidades de la planificacin del movimiento 342 34
Cell Decomposition Descomposicin celular 343 34
Potential Fields Campos potenciales 344 34
Group or Distributed Robotics Robtica de Grupo o Distribuida 345 34
Robot Programming Languages Lenguajes de programacin de robots 346 34
Robot Simulators Simuladores de Robots 346 34
Summary Resumen 346 34
References Referencias 346 34
Resources Recursos 347 34
Exercises Ceremonias 347 34
Chapter 11 Intelligent Agents Captulo 11 Agentes inteligentes 349-39
Anatomy of an Agent Anatoma de un agente 350 35
Agent Properties and AI Propiedades del agente y AI 351 35
Rationale Razn fundamental 352 35
Autonomous Autnomo 352 35
Persistent Persistente 352 35
Communicative Comunicativo 352 35
Cooperative Cooperativa 353 35
Mobile Mvil 353 35
Adaptive Adaptado 353 35
Agent Environments Entornos de agente 353 35
Agent Taxonomies Taxonomas de agentes 356 35
Interface Agents Agentes de interfaz 356 35
Virtual Character Agents Agentes Personales Virtuales 357 35
Entertainment Agents Agentes de entretenimiento 358 35
Game Agents Agentes de juego 358 35
ChatterBots ChatterBots 360 36
Eliza and Parry Eliza y Parry 360 36
AIML AIML 361 36
Mobile Agents Agentes Mviles 362 36
User Assistance Agent Agente de Asistencia al Usuario 364 36
Email Filtering Filtrado de correo electrnico 364 36
Information Gathering and Filtering Recopilacin y filtrado de informacin
Other User-Assistance Applications Otras aplicaciones de asistencia del usuario
Hybrid Agent Agente hbrido
Agent Architectures Arquitecturas de agentes
What is Architecture? Qu es Arquitectura?
Types of Architectures Tipos de Arquitecturas
Reactive Architectures Arquitecturas Reactivas
Deliberative Architectures Arquitecturas Deliberativas
Blackboard Architectures Arquitecturas de pizarra
BDI Architecture Arquitectura de BDI
Hybrid Architectures Arquitecturas Hbridas
Mobile Architectures Arquitecturas mviles
Architecture Description Descripcin de la arquitectura
Subsumption Architecture (Reactive) Arquitectura de Suspensin (Reactiva)
Behavior Networks (Reactive) Redes de Comportamiento (Reactivo)
ATLANTIS (Deliberative) ATLANTIS (Deliberativo)
Homer (Deliberative) Homero (Deliberativo)
BB1 (Blackboard) BB1 (Pizarra)
Open Agent Architecture (Blackboard) Arquitectura de agente abierta (pizarra)
Procedural Reasoning System (BDI) Sistema de razonamiento procesal (BDI)
Aglets (Mobile) Aglets (Mvil)
Messengers (Mobile) Mensajeros (Mvil)
SOAR (Hybrid) SOAR (hbrido)
Agent Languages Idiomas del agente
Telescript Telescript
Aglets Aglets
Obliq Obliquo
Agent TCL Agente TCL
Traditional Languages Idiomas tradicionales
Agent Communication Comunicacin del Agente
Knowledge Query and Manipulation Language (KQML) Lenguaje de consulta y manipulacin de conocim
(KQML)
FIPA Agent Communication Language Idioma de Comunicacin del Agente FIPA
Extensible Markup Language (XML) Extensible Markup Language (XML)
Summary Resumen
Resources Recursos
References Referencias
Exercises Ceremonias
Chapter 12 Biologically Inspired and Hybrid Models Captulo 12 Modelos Biolgicamente Inspirados e H
Cellular Automata Autmata celular
One Dimensional CA CA de una dimensin 394 39
Two Dimensional CA CA de dos dimensiones 395 39
Conway Application Aplicacin Conway 396 39
Turing Completeness Complecin de Turing 398 39
Emergence and Organization Emergencia y Organizacin 398 39
Artificial Immune Systems Sistemas inmunes artificiales 398 39
Self-Management Capabilities Capacidades de autogestin 399 39
Touchpoints Puntos de contacto 400 40
Touchpoint Autonomic Managers Gestores Autnomos Touchpoint 400 40
Orchestrating Autonomic Managers Orquestar a los gerentes autonmicos 401 40
Integrated Management Console Consola de gestin integrada 401 40
Autonomic Summary Resumen Autonmico 402 40
Artificial Life Vida artificial 402 40
Echo Eco 403 40
Tierra Tierra 403 40
Simulated Evolution Evolucin simulada 403 40
Environment Ambiente 403 40
The Bug (or Agent) El error (o agente) 404 40
Variations of Artificial Life Variaciones de la Vida Artificial 408 40
Lindenmayer Systems Sistemas Lindenmayer 408 40
Fuzzy Logic Lgica difusa 410 41
Introduction to Fuzzy Logic Introduccin a la lgica difusa 410 41
Fuzzy Logic Mapping Mapeo lgico difuso 411 41
Fuzzy Logic Operators Operadores de lgica difusa 414 41
Fuzzy Control Control difuso 415 41
Evolutionary Neural Networks Redes neuronales evolutivas 416 41
Genetically Evolved Neural Networks Redes Neuronales Genticamente Evolucionadas 416 41
Simulation Evolution Example Ejemplo de evolucin de la simulacin 419 41
Ant Colony Optimization Optimizacin de colonias de hormigas 423 42
Traveling Salesman Problem Problema del vendedor ambulante 423 42
Path Selection Seleccin de ruta 425 42
Pheromone Intensification Intensificacin de feromonas 425 42
Pheromone Evaporation Evaporacin de feromonas 426 42
New Tour Nueva visita 426 42
Sample Usage Uso de la muestra 426 42
ACO Parameters Parmetros ACO 430 43
Affective Computing Computacin afectiva 430 43
Characterizing Human Emotion Caracterizando la emocin humana 430 43
Synthesizing Emotion Sintetizando emociones 431 43
Resources Recursos 432 43
Chapter 13 The Languages of AI Captulo 13 Los lenguajes de la IA 433-48
Language Taxonomy Taxonoma del lenguaje 433 43
Functional Programming Programacin Funcional 434 43
Imperative Programming Programacin imperativa 437 43
Object Oriented Programming Programacin orientada a objetos 438 43
Logic Programming Programacin lgica 441 44
Languages of AI Idiomas de AI 442 44
The LISP Language El lenguaje LISP 443 44
The History of the LISP Language La Historia del Lenguaje LISP 443 44
Overview of the LISP Language Visin general del lenguaje LISP 444 44
Data Representation Representacin de datos 444 44
Simple Expressions Simple Expressions 444 44
Predicates Predicados 445 44
Variables Variables 445 44
List Processing Procesamiento de listas 445 44
Programs as Data Programas como datos 447 44
Conditions Condiciones 447 44
Functions in LISP Funciones en LISP 448 44
LISP Summary Resumen de LISP 451 45
The Scheme Language El lenguaje del esquema 451 45
History of Scheme Historia del esquema 452 45
Overview of the Scheme Language Visin general del lenguaje del esquema 452 45
Data Representation Representacin de datos 452 45
Simple Expressions Simple Expressions 452 45
Predicates Predicados 453 45
Variables Variables 453 45
List Processing Procesamiento de listas 454 45
Conditions Condiciones 455 45
Iteration and Maps Iteracin y Mapas 456 45
Procedures in Scheme Procedimientos del esquema 457 45
Scheme Summary Esquema Resumen 460 46
The POP-11 Language El lenguaje POP-11 460 46
History of POP-11 Historia de POP-11 460 46
Overview of the POP-11 Language Descripcin general del lenguaje POP-11 460 46
Data Representation Representacin de datos 460 46
Predicates Predicados 461 46
Simple Expressions Simple Expressions 461 46
Variables Variables 462 46
List Processing Procesamiento de listas 462 46
Conditions Condiciones 463 46
Iteration and Maps Iteracin y Mapas 464 46
Pattern Matching La coincidencia de patrones 465 46
Procedures in POP-11 Procedimientos en POP-11 465 46
POP-11 Summary POP-11 Resumen 468 46
Prolog Prlogo 468 46
History of Prolog Historia del Prolog 469 46
Overview of the Prolog Language Visin general del lenguaje Prolog 469 46
Data Representation Representacin de datos 469 46
List Processing Procesamiento de listas 470 47
Facts, Rules, and Evaluation Hechos, reglas y evaluacin 471 47
Arithmetic Expressions Expresiones aritmticas 478 47
Prolog Summary Resumen del Prolog 480 48
Other Languages Otros idiomas 480 48
Chapter Summary Resumen del captulo 481 48
References Referencias 481 48
Resources Recursos 482 48
Exercises Ceremonias 482 48
About the CD-ROM Acerca del CD-ROM 485 48
Index ndice 487-49
C hapter Captulo 1T 1T HE HE H ISTORY OF H

ISTORIA DE AI AI

T L
he history of AI is interesting all by itself. a historia de la IA es interesante por s mismo. It 'sa
modern-day drama, Es un drama de hoy en da, filled with excitement and anticipation, discovery, and
disappointment. Lleno de entusiasmo y anticipacin, descubrimiento y decepcin. From over-promises
of early (and later) AI research, to fears of the De sobre-promesas de la investigacin temprana (y
posterior) de la IA, a los temores de la

unknown from the general public, AI 's history is worthy of study by itself. desconocido del pblico
en general, la historia AI 's es digno de estudio por s mismo. In this chapter, we 'll explore AI 's
tumultuous history and also provide a summary introduction to each of the chapters of this book.
En este captulo, vamos a explorar AI 's historia tumultuosa y tambin proporcionar una
introduccin resumen para cada uno de los captulos de este libro.

WHAT IS INTELLIGENCE? QU ES LA INTELIGENCIA?


To build software that is deemed intelligent, it 's helpful to begin with a definition of intelligence.
Para construir un software que se considera inteligente, que 's til comenzar con una definicin
de inteligencia. Intelligence can be simply defined as a set of properties of the mind. La
inteligencia puede definirse simplemente como un conjunto de propiedades de la mente. These
properties include the ability to plan, solve problems, and in general, reason. Estas propiedades
incluyen la capacidad de planificar, resolver problemas y, en general, la razn. A simpler
definition could be that intelligence is the ability to make the right decision given a set of inputs
and a variety of possible actions. Una definicin ms simple podra ser que la inteligencia es la
capacidad de tomar la decisin correcta dada una serie de insumos y una variedad de acciones
posibles.

Using this simple definition of intelligence (making the right decision), we can apply this not only to
humans, but also to animals that exhibit rational behavior. Utilizando esta simple definicin de inteligencia
(tomando la decisin correcta), podemos aplicar esto no slo a los seres humanos, sino tambin a los
animales que exhiben un comportamiento racional. But the intelligence that is exhibited by human beings
is much more complex than that of animals. Pero la inteligencia que exhiben los seres humanos es mucho
ms compleja que la de los animales. For example, humans have the ability Por ejemplo, los seres
humanos tienen la capacidad
22 Artificial
to com
comun
animale
solve p
problem
differen
then is
to Ento
de la in
commu
typicall
donde
embod
much U
genera
lower
We can
Podem
inform
examp
game o
juego d
Chess,
how to
Damas
make a
applica
datos p
but can
un ento
perspe
comple
one Co
desde
perspe
in the P
que se
least
Famed
famoso
NOTE NOTA
con

aptitud
army, h
encima
But wh
Pero lo
eran
develop
por otro
that if O
the tes
have L
la repa
scored
develop
en
core of
indicate
necesa
a lack o
Una fal
intelige

THE SEARCH FOR MECHANICAL INTELLIGENCE LA BUSQUEDA DE LA


INTELIGENCIA MECNICA
History is filled with stories of the creation of intelligent machines. La historia est llena de historias de la
creacin de mquinas inteligentes. In the 800s BC, the Iliad described the winged Talos, a bronze
automaton forged by Hephaestus to protect Crete. En los 800s BC, el Iliad describi Talos alado, un
autmata de bronce forjado por Hephaestus para proteger Crete. The inner workings of Talos weren 't
described, except that he was bronze, and filled with ichor (or a Greek god 's blood). El funcionamiento
interno de Talos no estabas describen, excepto que era de bronce, y llenos de licor (o un dios griego
'sangre s). A more recent example is Mary Shelley 's Frankenstein, in which the scientist recreates life from
old. Un ejemplo ms reciente es el de Mary Shelley Frankenstein s, en el que el cientfico recrea la vida de
los antiguos. In 1921, Karel Capek 's play Rossum 's Universal En 1921, 'juego s Rossum 'Karel Capek s
universal

Robots introduced the concept of cheap labor through robotics. Robotsintrodujeron el


concepto de mano de obra barata a travs de la robtica.

But one of the most interesting applications of artificial intelligence, in a non -robitic form, was that of
the HAL 9000 introduced by Arthur C. Clark in his his novel 2001: A Space Odyssey. Pero una de las
aplicaciones ms interesantes de la inteligencia artificial, en una forma no -robitic, fue el de la HAL 9000
presentado por Arthur C. Clark en su novela 2001: A Space Odyssey. HAL was a sentient artificial
intelligence that occupied the Discovery spaceship (en route to Jupiter). "HAL era una inteligencia artificial
sensible que ocupaba la nave espacial Discovery (en ruta a Jpiter). HAL had no physical form, but instead
managed the spaceship 's systems, visually watched the human occupants through a network of cameras,
and HAL no tena forma fsica, sino que es administrado sistemas de la nave espacial 's, observaron
visualmente los ocupantes humanos a travs de una red de cmaras, y
The History of AI La Historia de la IA 33

communicated with them in a normal human voice. Comunicado con ellos en una voz humana
normal. The moral behind the story of HAL was one of modern-day programming. La moral
detrs de la historia de HAL era una de la programacin moderna. Software does exactly what
one tells it to do, and can make incorrect decisions trying to focus on a single important goal.
Software hace exactamente lo que se le dice que hacer, y puede tomar decisiones incorrectas
tratando de centrarse en una sola meta importante. HAL obviously was not created with Isaac
Asimov 's three laws of robotics in mind. HAL, obviamente, no fue creado con Isaac Asimov 's
tres leyes de la robtica en mente.

THE VERY EARLY DAYS (THE EARLY 1950s) LOS DAS MUY PRIMEROS (los
primeros aos 50)
While the term artificial intelligence had not yet been conceived, the 1950s were the very early days of AI.
Aunque el trmino inteligencia artificial todava no se haba concebido, los aos cincuenta fueron los
primeros das de la IA. Early computer systems were being built, and the ideas of building intelligent
machines were beginning to form. Los primeros sistemas informticos se estaban construyendo, y las
ideas de construir mquinas inteligentes comenzaban a formarse.

Alan Turing Alan Turing

In 1950 it was Alan Turing who asked whether a machine could think. En 1950 fue Alan Turing quien
pregunt si una mquina poda pensar. Turing not long before had introduced the concept of his
universal abstract machine (called the Turing Machine ) that was simple and could solve any
mathematical problem (albiet with some complexity). Turing no mucho antes haba introducido el
concepto de la mquina universal abstracto (llamada la Mquina de Turing) que era simple y podra
resolver cualquier problema matemtico (aunque situado con cierta complejidad). Building on this
idea, Turing wondered that if a computer 's response were indistinguishable from a human, then the
computer could be considered a thinking machine. Partiendo de esta idea, Turing se pregunt que si
un equipo 's respuesta eran indistinguibles de un ser humano, entonces la computadora podra ser
considerado una mquina de pensar. The result of this experiment is called the Turing Test . El
resultado de este experimento se llama la prueba de Turing.

In the Turing test, if the machine could fool a human into thinking that it was also human, then it passed
the intelligence test. En la prueba de Turing, si la mquina poda engaar a un ser humano para que
pensara que tambin era humano, entonces pas la prueba de inteligencia. One way to think of the Turing
test is by communicating to the other agent through a keyboard. Una manera de pensar en la prueba de
Turing es comunicndose con el otro agente a travs de un teclado. Questions are asked of the peer
through written text, and responses are provided through the terminal. Se hacen preguntas a los pares a
travs de un texto escrito, y las respuestas se proporcionan a travs de la terminal. This test provides a
way to determine if intelligence was created. Esta prueba proporciona una manera de determinar si se
cre inteligencia. Considering the task at hand, not only must the intelligent peer contain the necessary
knowledge to have an intelligent conversation, it must be able to parse and understand natural language
and generate natural language responses. Teniendo en cuenta la tarea a la mano, no slo debe el
compaero inteligente contener los conocimientos necesarios para tener una conversacin inteligente,
debe ser capaz de analizar y comprender el lenguaje natural y generar respuestas de lenguaje natural.
The questions may involve reasoning skills (such as problem solving), so mimicking humans would be a
feat! Las preguntas pueden implicar habilidades de razonamiento (como la resolucin de problemas), por
lo que imitar a los seres humanos sera una hazaa!

An important realization of Turing during this period was the need to start small and grow intelligence,
rather than expecting it to materialize. Una importante toma de conciencia de Turing durante este perodo
fue la necesidad de comenzar pequeos y crecer inteligencia, en lugar de esperar que se materialicen.
Turing proposed what he called the Child Machine in which a lesser intelligent agent would be created and
then subjected to a course of education. Turing propuso lo que llam la Mquina infantil en el que se
creara un agente inteligente menor y despus se someti a un curso de educacin. Rather than assume
that we could build an adult intelligence, we would build a child intelligence first and then inject it with
knowledge. En lugar de suponer que podramos construir una inteligencia adulta, primero construiramos
una inteligencia infantil y luego la inyectaramos con conocimiento. This idea of starting small and at lower
levels corresponds with later ideas of so-called scruffy thinkers. Esta idea de empezar poco a poco y en
los niveles inferiores se corresponde con las ideas posteriores de los llamados pensadores desaliado.
The human brain is complex and not fully El cerebro humano es complejo y no totalmente
44 Artificial Intelligence Inteligencia artificial

understood, instead of striving to imitate this, why not start smaller at the child (or even smaller
organism) and work our way up? Entendido, en lugar de esforzarse por imitar esto, por qu no
empezar ms pequeo en el nio (o incluso organismo ms pequeo) y trabajar nuestro camino
hacia arriba? Turing called this the blank sheets argument. Turing llam a este argumento de las
hojas en blanco. A child is like a notebook that 's full of blank sheets, Un nio es como un
cuaderno que 's lleno de hojas en blanco, but is a mechanism by which knowledge is stored. Sino
que es un mecanismo por el cual se almacena el conocimiento.

Alan Turing 's life ended at a young age, but he 's considered the founder of the field of AI
(even though the moniker would not be applied for another six years). Alan Turing 's vida termin
en una edad joven, pero l' s considera el fundador del campo de la IA (a pesar de que el apodo
no se aplicara por otros seis aos).

AI, Problem Solving, and Games AI, Solucin de problemas y Juegos

Some of the earliest applications of AI focused on games and general problem solving. Algunas
de las primeras aplicaciones de IA se centraron en los juegos y en la resolucin general de
problemas. At this time, creating an intelligent machine was based on the belief that the machine
would be intelligent if it could do something that people do (and perhaps find difficult). En este
momento, la creacin de una mquina inteligente se basaba en la creencia de que la mquina
sera inteligente si pudiera hacer algo que la gente hace (y quizs encuentre difcil).

In 1950, Claude Shannon proposed that the game of Chess was En 1950, Claude Shannon propuso que
NOTE NOTA

fundamentaly a search problem. Fundamentalmente un problema de bsqueda. In fact, he was correct, b


search isn 't truly practical for the search space that exists with Chess. Bsqueda ISN 't verdaderamente
ajedrez.
Search, heuristics, and a catalog of opening and ending moves provides La bsqueda, la heurstica y un
a faster and more efficient way to play Chess. Una forma ms rpida y eficiente de jugar ajedrez. Shann
on computer Chess produced what is called the Shannon number, or En la computadora El ajedrez prod
10^120, which represents the lower bound of the game tree complexity 10 ^ 120, que representa el lmite
of Chess. De Ajedrez. [Shannon 1950] [Shannon 1950]
The first AI program written for a computer was called The Logic El primer programa de IA por escrito pa
Theorist. Terico. It was developed in 1956 by Allen Newell, Herbert Simon, and J. "Fue desarrollado e
C. Shaw to find proofs for equations. C. Shaw para encontrar pruebas de ecuaciones. [Newell 1956] Wh
about this program is that it found a better proof than had existed before for Sobre este programa es que
anteriormente para
a given equation. Una ecuacin dada. In 1957, Simon and Newell built on this work to develop En 1957,
desarrollar
the General Problem Solver (GPS). El Solver general de problemas (GPS). The GPS used means-end a
solve problems, but in general was restricted to toy problems. Resolver problemas, pero en general se
Like complex math, early AI researchers believed that if a computer Al igual que las matemticas comple
ordenador
could solve problems that they thought were complex, then they could build Podran resolver problemas
intelligent machines. Mquinas inteligentes. Similarly, games provided an interesting testbed for the Del m
development of algorithms and techniques for intelligent decision making. Desarrollo de algoritmos y t
In the UK at Oxford University in the early 1950s, researchers developed En el Reino Unido, en la Univer
game-playing programs for two complex games. Juegos para dos juegos complejos. Christopher Strache
developed a Checkers playing program on the Ferranti Mark I. By 1952, his Desarroll un programa de ju
program could play a reasonable game of Checkers. Programa podra jugar un juego razonable de Dam
a program, again for the Ferranti Mark I, that could play Chess (mate-in-two Un programa, de nuevo para
variety). variedad). His program could search a thousand possible moves, but on this Su programa podr
The History of AI La Historia de la IA 55

early computer, it required significant time and played very slowly. Temprano de la computadora,
requiri tiempo significativo y jug muy lentamente.

In 1952, Arthur Samuel raised the bar for AI programs. En 1952, Arthur Samuel elev el listn
para los programas de IA. His Checkers playing program, which ran on the IBM 701, included
learning and generalization. Su programa de juego de Damas, que funcionaba en la IBM 701, inclua
aprendizaje y generalizacin. What Samuel did with his learning Checkers program was unique in that
he allowed two copies of his program to play one another, and therefore learn from each other. Lo que
hizo Samuel con su programa de Aprendizaje de Damas fue nico en que permiti que dos copias de
su programa jugaran entre s, y por lo tanto aprendan unos de otros. The result was a program that
could defeat its creator. El resultado fue un programa que podra derrotar a su creador. By 1962,
Samuel 's Checkers program defeated the former Connecticut Checkers champion. En 1962, el
programa de Damas Samuel 's venci al ex campen de Connecticut Damas.

Samuel 's program, and his approach of playing copies against one Samuel programa 's, y su enfoqu
NOTE NOTA

another, is one of the first examples of computing survival of the fittest Otro, es uno de los primeros e
apto
and the field which came to be called evolutionary computation. Y el campo que lleg a llamarse com

ARTIFICIAL INTELLIGENCE EMERGES AS A FIELD LA INTELIGENCIA


ARTIFICIAL EMERGEN COMO CAMPO
By the mid 1950s, AI began to solidify as a field of study. A mediados de los aos cincuenta, AI
comenz a consolidarse como un campo de estudio. At this point in AI 's life, much of the focus was
on what is called Strong AI Strong AI is focused on building AI that mimics the mind. En este momento
de la vida AI 's, gran parte de la atencin se centr en lo que se llama IA fuerte IA fuerte se centra en
la construccin de AI que imita la mente. The result is a sapient entity with human-like intelligence,
self-awareness, and consciousness. El resultado es una entidad sapiente con inteligencia humana,
autoconsciencia y conciencia.

The Dartmouth AI Summer Research Project El Proyecto de Investigacin de


Verano Dartmouth AI
In 1956, the Dartmouth AI Conference brought about those involved in research in AI: John McCarthy
(Dartmouth), Marvin Minsky (Harvard), Nathaniel Rochester (IBM), and Claude Shannon (Bell Telephone
Laboratories) brought together researchers in computers, natural language processing, and neuron nets to
Dartmouth College for a month-long session of AI discussions and research. En 1956, la Conferencia de AI
de Dartmouth trajo consigo a los investigadores de AI: John McCarthy (Dartmouth), Marvin Minsky
(Harvard), Nathaniel Rochester (IBM) y Claude Shannon (Bell Telephone Laboratories) Procesamiento y
redes neuronales a Dartmouth College para una sesin de un mes de discusiones e investigaciones sobre
la IA. The Summer research project on AI began: El proyecto de investigacin de verano sobre AI
comenz:

We propose that a 2 month, 10 man study of artificial intelligence be carried out during the summer
of 1956 at Dartmouth College in Hanover, New Hampshire. Proponemos que se lleve a cabo un
estudio de inteligencia artificial de 2 meses, 10 hombres durante el verano de 1956 en el Dartmouth
College de Hanover, New Hampshire. The study is to proceed on the basis of the conjecture that
every aspect of learning or any other feature of intelligence can in principle be so precisely
described that a machine can be made to simulate it. El estudio debe basarse en la conjetura de
que todo aspecto del aprendizaje o cualquier otra caracterstica de la inteligencia puede, en
principio, describirse tan precisamente que se pueda hacer que una mquina la simule. An attempt
will be made to find how to make machines use language, form abstractions and concepts, solve
kinds of problems now reserved for humans, and improve themselves. Se intentar encontrar cmo
hacer que las mquinas usen el lenguaje, formen abstracciones y conceptos, resuelvan tipos de
problemas ahora reservados para los seres humanos y mejoren ellos mismos. We think that a
significant advance can be made in one or more of these problems if a carefully selected group of
scientists work on it together for a summer. Creemos que se puede hacer un avance significativo en
uno o ms de estos problemas si un grupo cuidadosamente seleccionado de cientficos trabajan
juntos en l durante un verano.
66 Artificial Intelligence Inteligencia artificial

Since then, many AI conferences have been held around the world, and on a variety of
disciplines studied under the AI moniker. Desde entonces, muchas conferencias de AI se han
celebrado en todo el mundo, y en una variedad de disciplinas estudiadas bajo el apodo de AI. In
2006, Dartmouth held the Dartmouth Artificial Intelligence Conference: The Next Fifty Years
(informally known as AI@50) . En 2006, Dartmouth realiz la Conferencia de Dartmouth Artificial
Inteligencia: los prximos cincuenta aos (informalmente conocido como AI @ 50). The
conference was well attended (even from a few that attended the first conference 50 years prior),
and analyzed AI 's progress and how its challenges relate to those of other fields of study. La
conferencia cont con la asistencia (incluso de unos pocos que asistieron a la primera
conferencia 50 aos antes), y se analiz el progreso AI 's y cmo sus retos estn relacionados
con los de otros campos de estudio.

Building Tools for AI Herramientas de construccin para la IA

In addition to coining the term artificial intelligence, and bringing together major researchers in AI
in his 1956 Dartmouth conference, John McCarthy designed the first AI programming language.
Adems de acuar el trmino inteligencia artificial, y reunir a investigadores importantes en IA en
su conferencia de Dartmouth de 1956, John McCarthy dise el primer lenguaje de
programacin de IA. LISP was first described by McCarthy in his paper titled Recursive
Functions of Symbolic Expressions and their Computation by Machine, Part I. The first LISP
compiler was also implemented in LISP, by Tim Hart and Mike Levin at MIT in 1962 for the IBM
704. LISP fue descrito por primera vez por McCarthy en su artculo titulado funciones recursivas
de expresiones simblicas y su cmputo por mquina, Parte I. La primera compilador LISP
tambin se implement en LISP, por Tim Hart y Mike Levin en el MIT en 1962 para el IBM 704 .

This compiler introduced many advanced features, such as incremental compilation. Este compilador
introdujo muchas caractersticas avanzadas, como la compilacin incremental. [LISP 2007] McCarthy 's
LISP also pioneered many advanced concepts now familiar in computer science, such as trees (data
structures), dynamic typing, object-oriented programming, and compiler self-hosting. [LISP 2007] McCarthy
's LISP tambin fue pionera en muchos conceptos avanzados ya familiares en ciencias de la computacin,
tales como rboles (estructuras de datos), tipado dinmico, programacin orientada a objetos, y
compilador autoalojamiento.

LISP was used in a number of early AI systems, demonstrating its usefulness as an AI language.
LISP se utiliz en una serie de principios de los sistemas de AI, lo que demuestra su utilidad como un
lenguaje AI. One such program, called SHRDLU, provides a natural language interface to a table-top
world of objects. Uno de estos programas, llamado SHRDLU, proporciona una interfaz de lenguaje
natural a un mundo de objetos de mesa. The program can understand queries about the table-top
world, reason about the state of things in the world, plan actions, and perform some rudimentary
learning. El programa puede comprender las preguntas sobre el tablero de mesa mundo, razn por
el estado de cosas en el mundo, planificar acciones, y llevar a cabo un aprendizaje rudimentario.
SHRDLU was designed and implemented by Terry Winograd at the MIT AI Lab on a PDP-6 computer.
SHRDLU fue diseado e implementado por Terry Winograd en el MIT AI Lab en una computadora
PDP-6.

LISP, and the many dialects that evolved from it, are still in wide use today. LISP, y los
muchos dialectos que evolucionaron de l, todava estn en uso amplio hoy. Chapter 13 provides
an introduction to the languages of AI, including LISP. El captulo 13 proporciona una introduccin
a los lenguajes de IA, incluyendo LISP.

The Focus on Strong AI El enfoque en la IA fuerte

Recall that the focus of early AI was in Strong AI. Recordemos que el foco de IA temprana fue en
AI Fuerte. Solving math or logic problems, or engaging in dialogue, was viewed as intelligent,
while activities such as walking freely in unstable environments (which we do every day) were
not. Resolver problemas matemticos o lgicos, o participar en el dilogo, fue visto como
inteligente, mientras que actividades como caminar libremente en entornos inestables (lo que
hacemos todos los das) no lo eran.

In 1966, Joseph Weizenbaum of MIT developed a program that parodied a psychologist and could hold
an interesting dialogue with a patient . En 1966, Joseph Weizenbaum del MIT ha desarrollado un programa
que parodiaba un psiclogo y podra mantener un dilogo interesante con un paciente. The design of Eliza
would be considered simple by today 's standards, but its El diseo de Eliza sera considerado sencilla
para los estndares de hoy en da s, pero su
The History of AI La Historia de la IA 77

pattern-matching abilities, which provided reasonable responses to patient statements was real
to many people. Las habilidades de concordancia de patrones, que proporcionaban respuestas
razonables a las declaraciones de los pacientes, eran reales para muchas personas. This quality
of the program was troubling to Weizenbaum who later became a critic of AI because of its lack
of compassion. Esta calidad del programa fue preocupante para Weizenbaum, quien ms tarde
se convirti en un crtico de la IA debido a su falta de compasin.

Constrained Applications Aplicaciones restringidas


While much of early AI was Strong-focused, there were numerous applications that focused on solving practical
problems. Mientras que gran parte de la IA temprana se centr en Strong, hubo numerosas aplicaciones que se
centraron en resolver problemas prcticos. One such application was called the Dendral Project, emerging in
1965 at Stanford University. Una de estas aplicaciones se llama el Proyecto Dendral, que emerge en 1965 en
la Universidad de Stanford. Dendral was developed to help organic chemists understand the organization of
unknown organic molecules. Dendral fue desarrollado para ayudar a los qumicos orgnicos a entender la
organizacin de molculas orgnicas desconocidas. It used as its inputs mass spectrometry graphs and a
knowledge base of chemistry, making it the first known expert system. Utiliz como sus entradas grficos de
espectrometra de masas y una base de conocimiento de la qumica, por lo que es el primer sistema experto
conocido.

Other constrained applications in this era include Macsyma, a computer algebra system
developed at MIT by Carl Engelman, William Martin, and Joel Moses. Otras aplicaciones
restringidas en esta era incluyen Macsyma, un sistema de lgebra computarizado desarrollado
en MIT por Carl Engelman, William Martin y Joel Moses. Macsyma was written in MacLisp, a
dialect of LISP developed at MIT. Macsyma fue escrito en MacLisp, un dialecto de LISP
desarrollado en MIT. This early mathematical expert system demonstrated solving integration
problems with symbolic reasoning. Este primer sistema matemtico experto demostr resolver
problemas de integracin con el razonamiento simblico. The ideas demonstrated in Macsyma
eventually made their way into commercial math applications. Las ideas demostradas en
Macsyma eventualmente llegaron a aplicaciones de matemticas comerciales.

Bottom-Up Approaches Emerge Los enfoques ascendentes emergen


Early AI focused on a top-down approach to AI, attempting to simulate or mimic the higher level concepts of
the brain (planning, reasoning, language understanding, etc.). La IA temprana se centr en un enfoque
descendente de la IA, intentando simular o imitar los conceptos de nivel superior del cerebro (planificacin,
razonamiento, comprensin del lenguaje, etc.). But bottom-up approaches began to gain favor in the
1960s, primarily modeling lower-level concepts, such as neurons and learning at a much lower level. Pero
los enfoques de abajo hacia arriba comenzaron a ganar el favor en los aos 60, modelando sobre todo
conceptos de nivel inferior, tales como neuronas y aprendiendo en un nivel mucho ms bajo. In 1949,
Donald Hebb introduced his rule that describes how neurons can associate with one another if they are
repeatedly active at the same time. En 1949, Donald Hebb introdujo su regla que describe cmo las
neuronas pueden asociarse unas con otras si estn activas repetidamente al mismo tiempo. The
contribution of one cell 's firing to enable another will increase over time with persistent firing, leading to a
strong relationship between the two (a causal relationship). La contribucin de un disparo de las clulas 's
para permitir que otro se incrementar con el tiempo con el despido persistente, lo que lleva a una fuerte
relacin entre los dos (una relacin causal).

But in 1957, the perceptron was created by Frank Rosenblatt at the Cornell Aeronautical
Laboratory. Pero en 1957, el perceptron fue creado por Frank Rosenblatt en el Laboratorio
Aeronutico de Cornell. The perceptron is a simple linear classifier that can classify data into two
classes using an unsupervised learning algorithm. El perceptron es un simple clasificador lineal
que puede clasificar los datos en dos clases utilizando un algoritmo de aprendizaje sin
supervisin. The perceptron created considerable interest in neural network architectures, but
change was not far away. El perceptron cre considerable inters en las arquitecturas de redes
neuronales, pero el cambio no estaba muy lejos.
NOTE NOTA

Hebbian learning, perceptrons, and more advanced neural network architectures and learning
algorithms are covered in the neural network Chapters 8 and 9. El aprendizaje hebbiano, las
perceptrones y las arquitecturas de redes neuronales ms avanzadas y los algoritmos de aprendizaje
estn cubiertos en los captulos 8 y 9 de la red neuronal.
88 Artificial Intelligence Inteligencia artificial

AI 'S WINTER AI 'S WINTER


Prior to the 1970s, AI had generated considerable interest, and also considerable hype from the research
community. Antes de los aos setenta, AI haba generado un inters considerable, y tambin un hype
considerable de la comunidad investigadora. Many interesting systems had been developed, but these fell quite
short of the predictions made by some in the community. Muchos sistemas interesantes haban sido
desarrollados, pero stos cayeron muy por debajo de las predicciones hechas por algunos en la comunidad. But
new techniques such as neural networks breathed new life into this evolving field, providing additional ways for
classification and learning. Pero nuevas tcnicas como las redes neuronales dieron nueva vida a este campo en
evolucin, proporcionando formas adicionales de clasificacin y aprendizaje. But the excitement of neural
networks came to an end in 1969 with the publication of the mongraph titled Perceptrons. Pero la emocin de
las redes neuronales lleg a su fin en 1969 con la publicacin de la mongraph titulado perceptrones. This
monograph was written by Marvin Minsky and Seymour Papert, strong advocates of Strong (or top-down) AI.
"Esta monografa fue escrita por Marvin Minsky y Seymour Papert, fuertes defensores de la IA fuerte (o
descendente). The authors rightly demonstrated that single-layer perceptrons were limited, particularly when
confronted with problems that are not linearly separable (such as the XOR problem). Los autores demostraron
con razn que los perceptrones de una sola capa eran limitados, particularmente cuando se enfrentaban a
problemas que no eran linealmente separables (como el problema XOR). The result was a steep decline of
funding into neural network research, and in general, research in AI as a field. El resultado fue una fuerte
disminucin de la financiacin en la investigacin de redes neuronales, y en general, la investigacin en la IA
como un campo. Subsequent research would find that the multi-layer networks solved the linear separation
problem, but too late for the damage done to AI. Investigaciones posteriores encontraran que las redes
multicapa resolvieron el problema de separacin lineal, pero demasiado tarde para el dao hecho a la IA.

Hardware built for AI, such as the LISP machines, also suffered a loss of interest. Hardware
construido para la IA, como las mquinas LISP, tambin sufri una prdida de inters. While the
machines gave way to more general systems (not necessarily programmed in LISP), the
functional languages like LISP continued to attract attention. Mientras que las mquinas dieron
paso a sistemas ms generales (no necesariamente programados en LISP), los lenguajes
funcionales como LISP continuaron atrayendo la atencin. Popular editors such as EMACS
(developed during this period) still support a large user community with a scripting shell based on
LISP. Los editores populares como EMACS (desarrollado durante este perodo) todava apoyan
a una gran comunidad de usuarios con un shell de scripts basado en LISP.

Results-Oriented Applications Aplicaciones Orientadas a los Resultados

While there was a reduction in focus and spending in AI research in the 1970s, AI development
continued but in a more focused arena. Si bien hubo una reduccin en el enfoque y el gasto en la
investigacin de AI en la dcada de 1970, el desarrollo de IA continu, pero en un escenario ms
enfocado. Applications that showed promise, such as expert systems, rose as one of the key
developments in this era. Aplicaciones que mostraron promesa, como sistemas expertos, se
levantaron como uno de los acontecimientos claves en esta era.

One of the first expert systems to demonstrate the power of rules-based architectures was called MYCIN,
and was developed by Ted Shortliffe following his dissertation on the subject while at Stanford (1974). Uno de los
primeros sistemas expertos para demostrar el poder de las arquitecturas basadas en reglas fue llamado MYCIN,
y fue desarrollado por Ted Shortliffe despus de su disertacin sobre el tema, mientras que en Stanford (1974).
MYCIN operated in the field of medical diagnosis, and demonstrated knowledge representation and inference.
MYCIN oper en el campo del diagnstico mdico, y demostr la representacin del conocimiento y la
inferencia. Later in this decade, another dissertation at Stanford by Bill VanMelles built on the MYCIN
architecture and serves as a model for the expert system shell (still in use today). Ms adelante en esta dcada,
otra disertacin en Stanford por Bill VanMelles construy en la arquitectura de MYCIN y sirve como modelo para
el shell experto del sistema (todava en uso hoy). In Chapter 5 we 'll provide an introduction to the representation
of knowledge and inference with logic. En el captulo 5 Vamos a proporcionar una introduccin a la
representacin del conocimiento y la inferencia con la lgica.
Other results-oriented applications included those focused on natural language understanding.
Otras aplicaciones orientadas a resultados incluyeron aquellas enfocadas en la comprensin del
lenguaje natural. The goal of systems in this era was in the development of intelligent question
answering systems. El objetivo de los sistemas en esta era era en el desarrollo de sistemas
inteligentes de respuesta a preguntas. To understand a question stated in natural language, the
question must first be parsed into Para entender una pregunta planteada en lenguaje natural, la
pregunta debe ser analizada primero en
The History of AI La Historia de la IA 99

its fundamental parts. Sus partes fundamentales. Bill Woods introduced the idea of the Augmented
Transition Network (or ATN) that represents formal languages as augmented graphs. Bill Woods
introdujo la idea de la red aumentada de la transicin (o ATN) que representa idiomas formales como
grficos aumentados. From Eliza in the 1960s to ATNs in the 1970s, Natural Language Processing
(NLP) and Natural Language Understanding (NLU) continues today in the form of chatterbots. De
Eliza en los aos 60 a ATNs en los aos 70, el proceso natural del lenguaje (NLP) y el entendimiento
natural del lenguaje (NLU) continan hoy en la forma de chatterbots.

Additional AI Tools Emerge Otras herramientas de AI emergen


John McCarthy introduced the idea of AI-focused tools in the 1950s with the development of the LISP language.
John McCarthy introdujo la idea de las herramientas centradas en la IA en la dcada de 1950 con el desarrollo
del lenguaje LISP. Expert systems and their shells continued the trend with tools for AI, but another interesting
development that in a way combined the two ideas resulted from the Prolog language. Los sistemas expertos y
sus conchas continuaron la tendencia con herramientas para la IA, pero otro desarrollo interesante que de
alguna manera combin las dos ideas resultantes del lenguaje Prolog. Prolog was a language built for AI, and
was also a shell (for which expert systems could be developed). Prolog era un lenguaje construido para la IA, y
tambin era un shell (para el cual se podran desarrollar sistemas expertos). Prolog fue creado en 1972 por
Alain Colmeraur y Phillipe Roussel basado en la idea de clusulas de Horn. Prolog es un lenguaje de alto nivel
declarativo basado en la lgica formal. Los programas escritos en Prolog se componen de hechos y reglas que
la razn sobre esos hechos. Puede encontrar ms informacin sobre Prolog en el captulo 5 Representacin del
Conocimiento y el Captulo 13, Los lenguajes de AI.

Neat vs Enfoques Desaliado


Una fraccin de AI, su enfoque y enfoques bsicos tambin se observ durante este perodo. Tradicional,
o de arriba hacia abajo AI (tambin llamado de buena pasada de moda por la IA, o la BAIA para abreviar)
continuaron durante este perodo, pero los nuevos enfoques comenzaron a emerger que miraba desde la
AI de abajo hacia arriba. Estos enfoques tambin fueron etiquetados aseado y desaliado se acerca a
ellos segregar en sus campos representativos. Los que estn en el campo limpio favorecido enfoques
formales a AI que eran pura y comprobable. Pero aquellos en el campo de los mtodos utilizados
desaliado menos comprobable pero an dando resultados tiles y significativas. Una serie de enfoques
desaliado a AI que se hicieron populares durante este perodo incluye algoritmos genticos (que modelan
la seleccin natural para la optimizacin) y las redes neuronales del cerebro (comportamiento de
modelado de la neurona hacia arriba).

Los algoritmos genticos se populariz en la dcada de 1970 debido a la obra de John Holland y
sus estudiantes en la Universidad de Michigan. Holanda libro 's sobre el tema sigue siendo un
recurso til. Las redes neuronales, mientras estancada por un tiempo despus de la publicacin de
perceptrones, fueron revividos con Paul John Werbos creacin del algoritmo de propagacin hacia
atrs '. Este algoritmo sigue siendo el algoritmo de aprendizaje supervisado ms ampliamente
utilizado para el entrenamiento de redes neuronales feedforward. Usted puede aprender ms acerca
de los algoritmos genticos y computacin evolutiva en el captulo 3 y las redes neuronales en los
captulos 8 y 9.
10 10 Artificial Intelligence Inteligencia artificial

AI vuelve a emerger
Al igual que la primavera siempre sigue el invierno, AI invierno 's finalmente terminar y traer una
nueva vida en el campo (a partir de mediados a finales de 1980). La reaparicin de la gripe aviar
haba diferencias significativas desde los primeros das. En primer lugar, las predicciones
salvajes de crear mquinas inteligentes eran en su mayor parte sobre. En su lugar, los
investigadores y profesionales de IA se centraron en objetivos especficos, principalmente en las
dbiles aspectos de la IA (a diferencia de fuerte AI). IA dbil enfocada en resolver problemas
especficos, en comparacin con IA fuerte, cuyo objetivo era emular la gama completa de
capacidades cognitivas humanas. En segundo lugar, el campo de la AI ampli para incluir
muchos nuevos tipos de enfoques, por ejemplo, los enfoques de inspiracin biolgica, tales
como la optimizacin de Colonia de Hormigas (ACO).

El silencioso regreso

Un aspecto interesante de la IA de retorno 's fue que se produjo en silencio. En lugar de las
reivindicaciones tpicos de la IA fuerte, algoritmos dbiles encuentran uso en una variedad de
entornos. La lgica difusa y sistemas de control difuso se utilizan en una serie de entornos,
incluyendo cmara de enfoque automtico, sistemas de frenado antibloqueo, as como jugar un papel
en el diagnstico mdico. Algoritmos de filtrado colaborativo encontraron su camino en la
recomendacin de productos en una librera en lnea popular, y los motores de bsqueda de Internet
populares utilizan algoritmos de inteligencia artificial para agrupar los resultados de bsqueda para
ayudar a que encontrar lo que necesita ms fcil.

El regreso en silencio sigue a lo que Rodney Brooks llama el efecto de la IA. AI algoritmos y
mtodos transicin de ser AI para algoritmos y mtodos estndar una vez que estn prcticamente til.
Los mtodos descritos anteriormente son un ejemplo, otro es el reconocimiento de voz. Los algoritmos
detrs de reconocer los sonidos del habla y su traduccin en smbolos una vez que se describieron en los
confines de AI. Ahora bien, estos algoritmos son comunes, y desde hace mucho tiempo el sobrenombre de
AI ha pasado. Por lo tanto, el efecto de la IA tiene una manera de disminuir la investigacin en IA, como
patrimonio de la investigacin en IA se pierde en la aplicacin prctica de los mtodos.

Sucio y desaliado Enfoques Hold Take


Con AI resurgimiento 's lleg diferentes puntos de vista y enfoques de la IA y la resolucin de problemas con los
algoritmos de IA. En particular, los enfoques desaliado se hizo ms generalizado y los algoritmos se hicieron
ms aplicable a los problemas del mundo real. Las redes neuronales continuaron siendo investigado y aplicado,
y nuevos algoritmos y arquitecturas resultado. Las redes neuronales y algoritmos genticos
La historia de la IA 11 11

combinado para proporcionar nuevas maneras de crear arquitecturas de redes neuronales que no slo
resuelven los problemas, sino que lo hizo de la manera ms eficiente. Esto se debe a que la supervivencia
de los ms aptos caractersticas del algoritmo gentico condujo arquitecturas de redes neuronales para
reducir al mnimo para la red ms pequea para resolver el problema dado que nos ocupa. El uso de
algoritmos genticos tambin creci en un nmero de otras reas, incluyendo la optimizacin (simblica y
numrica), programacin, modelado y muchos otros. Los algoritmos genticos y redes neuronales
(supervisado y no supervisado) estn cubiertos en los captulos 7, 8, y 9.

Otro de abajo hacia arriba y enfoques inspirados en la biologa seguidos en la dcada de 1990 y
ms all. A principios de 1992, por ejemplo, Marco Dorigo introdujo la idea de usar estigmergia
(comunicacin indirecta en un entorno, en este caso, feromonas). Dorigo uso 's de estigmergia se
aplic a una variedad de problemas. Optimizacin de Colonia de Hormigas (ACO) se demuestra con
el problema del viajante de comercio en el captulo 12.

Tambin emerge de los enfoques desordenados a la IA era un campo nuevo llamado Vida
Artificial. investigacin de la vida artificial estudia los procesos de vida y sistemas relacionados con la
vida a travs de una variedad de simulaciones y modelos. Adems de modelar la vida singular, ALife
tambin simula las poblaciones de las formas de vida para ayudar a entender no slo la evolucin,
sino tambin la evolucin de las caractersticas tales como el lenguaje. La inteligencia de enjambre
es otro aspecto de esta investigacin que surgi de la vida artificial. ALife es interesante en el
contexto de AI, ya que puede utilizar un nmero de mtodos de IA tales como redes neuronales
(como la neuro-controlador de los individuos de la poblacin) as como el algoritmo gentico para
proporcionar la base para la evolucin. Este libro ofrece una serie de manifestaciones de Vida
Artificial, tanto en el contexto de los algoritmos genticos y redes neuronales.

Uno de los primeros entornos de simulacin que demostraron artificial


NOTE NOTA

la vida fue el juego de la vida , creado por John Conway. Este fue un ejemplo
de un autmata celular, y se explora ms adelante.
Otro enfoque de abajo hacia arriba que se desarroll durante el sexo anal resurgimiento 's utilizado
el sistema inmunitario humano como inspiracin. Artificial inmune Sistemas (o AIS)
utilizar los principios del sistema inmune y las caractersticas que presenta
para la resolucin de problemas en los mbitos de la optimizacin, el reconocimiento de patrones, y
minera de datos. A muy novedosa aplicacin de AIS es en seguridad computacional.
El cuerpo humano reacciona a la presencia de infecciones a travs de la liberacin de
anticuerpos que destruyen las sustancias infecciosas. Redes de ordenadores
puede realizar la misma funcin, por ejemplo, en el dominio de red
security. seguridad. Si se encuentra un virus software en un ordenador dentro de una red dada,
12 12 Artificial Intelligence Inteligencia artificial

otros anticuerpo programas pueden ser enviados a contener y destruir los virus. Biologa sigue
siendo una fuente importante de inspiracin para soluciones a muchos tipos de problemas.

sistemas de agentes
Los agentes, que tambin se conocen como agentes o agentes de software inteligentes, son un elemento muy
importante de la actual AI. En muchos sentidos, los agentes no son un aspecto independiente de un vehculo,
sino para aplicaciones de IA. Los agentes son aplicaciones que exhiben caractersticas de comportamiento
inteligente (como el aprendizaje o la clasificacin), pero no son en s mismas tcnicas de IA. Existe tambin
otros mtodos basados en agentes tales como sistemas de computacin y multi-agente orientado por agente.
Estos aplican la metfora agente para resolver una variedad de problemas.

Una de las formas ms populares de agentes inteligentes es Agencia de aplicaciones. La agencia de


palabra se usa debido a que el agente representa a un usuario por alguna tarea que se realiza para el
usuario. Un ejemplo incluye una aplicacin de programacin. Los agentes que representan a los usuarios
de forma inteligente negocian entre s para las actividades del cronograma dado un conjunto de
restricciones para cada usuario.

El concepto de agentes, incluso se ha aplicado a la operacin de una nave espacial el espacio profundo. En
1999 la NASA integra lo que se llama el Remote Agent en la nave espacial Deep Space 1. Deep Space 1 gol
's era poner a prueba una serie de tecnologas de alto riesgo, uno de los cuales era un agente que se utiliza
para proporcionar autonoma a la nave espacial por perodos limitados de tiempo. El agente remoto emplea
tcnicas de planificacin para programar autnomamente experimentos basados en los objetivos definidos por
los operadores de tierra. En condiciones restringidas, el agente remoto tuvo xito en probar que un agente
inteligente podra ser utilizado para gestionar de forma autnoma una sonda complicado y cumplir unos
objetivos definidos.

Hoy en da se encontrar agentes en una serie de reas, incluyendo los sistemas distribuidos. Los agentes
mviles son agentes independientes que incluyen la autonoma y la capacidad de viajar entre los nodos de una
red con el fin de realizar su procesamiento. En lugar de que el agente se comunica con otro agente de forma
remota, el agente mvil puede viajar al otro agente de ubicacin 's y comunicarse con l directamente. En
situaciones de red desconectado, esto puede ser muy beneficioso. Usted puede aprender ms acerca de
agentes inteligentes (incluyendo agentes mviles) en el Captulo 11.

AI INTERDISCIPLINARIA I + D

En muchos casos, la investigacin en IA tiende a ser la investigacin franja, sobre todo cuando 'se centr en
IA fuerte. Pero lo que 's notable de la investigacin en IA es que los algoritmos tienden a encontrar usos en
muchas otras disciplinas ms all de la de
La historia de la IA 13 13

AI. la investigacin en IA es de ninguna manera la investigacin pura, pero sus aplicaciones crecer mucho
ms all de la intencin original de la investigacin. Las redes neuronales, minera de datos, lgica difusa,
y la vida artificial (por ejemplo) han encontrado usos en muchos otros campos. La vida artificial es un
ejemplo interesante porque los algoritmos y tcnicas que han resultado de la investigacin y el desarrollo
han encontrado su camino en la industria del entretenimiento (por el uso de un enjambre en el cine de
animacin al uso de la IA en los juegos de video).

Rodney Brook 's ha llamado a esto el efecto de la IA, lo que sugiere que otra definicin para la IA es
casi implementado. Esto se debe a que una vez que un algoritmo de AI encuentra un uso ms comn,
ya no es visto como un algoritmo de AI sino simplemente un algoritmo que 's til en un dominio
determinado problema.

ENFOQUE DE SISTEMAS
En este libro, la mayora de los algoritmos y tcnicas son estudiados desde la perspectiva del
enfoque de sistemas. Esto simplemente significa que el algoritmo se analiza en el contexto de las
entradas y salidas. No algoritmo es til en el aislamiento, pero en su lugar desde la perspectiva de la
forma en que interacta con su entorno (muestreo de datos, filtrado, y reduccin) y tambin cmo se
manipula o altera su entorno. Por lo tanto, el algoritmo depende de la comprensin del medio
ambiente y tambin una manera de manipular el ambiente. Este enfoque de sistemas ilustra el lado
prctico de algoritmos de inteligencia artificial y tcnicas e identifica cmo fundamentar el mtodo en
el mundo real (vase la Figura 1.1).

A modo de ejemplo, uno de los usos ms interesantes de la IA hoy en da se pueden encontrar en los
sistemas de juego. Los juegos de estrategia, por ejemplo, comnmente ocupan un mapa con dos o ms
oponentes. Cada oponente compite por los recursos en el medio ambiente con el fin de ganar la ventaja sobre
el otro. Mientras que la recogida de recursos, cada oponente puede programar el desarrollo de los activos a
utilizar para derrotar al otro. Cuando existen mltiples activos de un oponente (como una unidad militar), que se
pueden aplicar al unsono, o por separado para poner sitio a otro oponente.

Donde los juegos de estrategia dependen de una vista de alto nivel del medio ambiente (como se ve
desde un general), en primera persona juegos de accin (FPS) tienen una visin de nivel inferior (de la de
un soldado). Un agente en un FPS a menudo depende de su visin del campo de batalla. El agente FPS
vista 's del medio ambiente est en un nivel mucho ms bajo, la comprensin de la cubierta, los objetivos y
las posiciones enemigas locales. El entorno es manipulado por el agente FPS a travs de su propio
movimiento, atacar o defender de los enemigos (a travs de la bsqueda de la cubierta), y posiblemente la
comunicacin con otros agentes.
14 14 Artificial Intelligence Inteligencia artificial

FIGURE 1.1 FIGURA 1.1 El enfoque de sistemas de inteligencia artificial.

Un ejemplo evidente del enfoque de sistemas se encuentra en el campo de la robtica. Los


robots mviles, por ejemplo, utilizan una serie de sensores y efectos que componen el robot
fsico. En el ncleo del robot es uno o ms algoritmos que producen comportamiento racional.
La historia de la IA 15 15

En cada caso, el algoritmo de AI que que est elegido es el ncleo de un agente 'sensores s
(entradas) y los efectores (salidas). Por esta razn, el algoritmo puede 't ser realmente til o
entenderse a menos que ' s considera desde su lugar en el medio ambiente.

RESUMEN DE ESTE LIBRO


Este libro cubre una amplia gama de tcnicas de IA, cada uno segmentado adecuadamente en
su gnero en particular. Los siguientes resmenes de los captulos presentan las ideas y los
mtodos que se exploran.

desinformados Buscar

En los primeros das de la IA, IA era una bsqueda, si la bsqueda implic la bsqueda de un
plan, o por medio de los diversos movimientos que son posibles (y posteriores) se mueve en un
juego de damas. En este captulo sobre desinformados (o ciegos) bsqueda, se introduce el
concepto de bsqueda en varios espacios, la representacin de espacios para la bsqueda, y
luego se exploran los diversos algoritmos populares utilizados en la bsqueda a ciegas. Esto
incluye primero en profundidad, primero en amplitud, uniforme costo-bsqueda, y otros.

Buscar informado

Bsqueda informado es una evolucin de bsqueda que se aplica la heurstica para el algoritmo
de bsqueda, teniendo en cuenta el espacio del problema, para que el algoritmo ms eficiente.
En este captulo se cubre primero el mejor, una estrella, la escalada, el recocido simulado,
bsqueda tabu, y la satisfaccin de restricciones.

AI y juegos
Uno de los primeros usos de la bsqueda ciega y fue informado en la aplicacin de juegos. Juegos como
el ajedrez y Damas se cree que es una actividad inteligente, y si un ordenador podra estar dotado de la
capacidad de jugar un juego y ganar contra un oponente humano, que podran considerarse inteligente.
Samuel programa de damas 's demostr un programa que podra derrotar a su creador, y al mismo tiempo
una hazaa, este experimento no produjo un equipo inteligente, excepto en el dominio de damas. En este
captulo se explora dos jugadores juegos y el ncleo de muchos sistemas de juego de roles, el algoritmo
minimax. A continuacin, se discuten una variedad de juegos, desde los juegos clsicos como Ajedrez,
Damas, e Ir a los videojuegos AI, la exploracin de movimiento, el comportamiento, el equipo y la
estrategia en tiempo real AI.
16 diecisis Artificial Intelligence Inteligencia artificial

Representacin del conocimiento

Representacin del conocimiento tiene una larga historia en la IA, particularmente en la investigacin
IA fuerte. El objetivo detrs de la representacin del conocimiento es encontrar abstracciones de los
conocimientos que resultan en una base de conocimiento que 's til para una aplicacin dada. Por
ejemplo, el conocimiento debe ser representado de una manera que hace que sea fcil para un
equipo de razonar con ella y comprender las relaciones entre los elementos de la base de
conocimientos. En este captulo se har una introduccin a una serie de tcnicas fundamentales de
representacin del conocimiento, as como introducir las ideas detrs de predicados y la lgica de
primer orden a la razn con el conocimiento.

Machine Learning Aprendizaje automtico

El aprendizaje automtico se describe mejor como aprender del ejemplo. aprendizaje de la mquina
incorpora una variedad de mtodos tales como el aprendizaje supervisado y no supervisado. En el
aprendizaje supervisado, un maestro est disponible para definir respuestas correctas o incorrectas.
aprendizaje no supervisado se diferencia en que ningn maestro est presente. (En cambio, el
aprendizaje no supervisado aprende de los propios datos mediante la identificacin de sus
relaciones). En este captulo se proporciona una introduccin al aprendizaje de la mquina y, a
continuacin, explora una serie de algoritmos de aprendizaje automtico, tales como rboles de
decisin y el aprendizaje del vecino ms cercano.

Computacin evolutiva

La computacin evolutiva introdujo la idea de enfoques desaliado a AI. En lugar de centrarse en el


alto nivel, tratando de imitar el comportamiento del cerebro humano, los enfoques desaliado
comienzan en un nivel inferior tratando de recrear los conceptos ms fundamentales de la vida y la
inteligencia utilizando metforas biolgicas. Este captulo trata de una serie de los mtodos
evolutivos, incluyendo algoritmos genticos, programacin gentica, estrategias evolutivas, evolucin
diferencial, y la optimizacin de enjambre de partculas.

Redes Neuronales I

Mientras que las redes neuronales son una de las primeras (y ms controvertidos) tcnicas, siguen
siendo uno de los ms tiles. El ataque a las redes neuronales afectado severamente la financiacin
AI y la investigacin, pero las redes neuronales re-emergi de AI invierno 's como una norma para la
clasificacin y el aprendizaje. Este captulo presenta los conceptos bsicos de redes neuronales, y
luego explora los algoritmos de redes neuronales supervisadas (Least Squares-significados,
retropropagacin, redes neuronales probabilsticas, y otros). El captulo
La historia de la IA 17 17

termina con una discusin de las caractersticas de redes neuronales y las formas de sintonizar
les ha dado el dominio del problema.

Redes Neuronales II

Cuando el captulo anterior explor algoritmos de redes neuronales supervisadas, este captulo
proporciona una introduccin a las variantes sin supervisin. Algoritmos no supervisados utilizan
los datos en s de aprender sin la necesidad de un maestro. Este captulo explora los
algoritmos de aprendizaje no supervisado, incluyendo el aprendizaje de Hebb, aprendizaje
competitivo simple, k-means clustering, Teora de Resonancia Adaptativa, y el modelo de auto-
asociativa de Hopfield.

Agentes inteligentes

Agentes inteligentes (o software) son una de las nuevas tcnicas en el arsenal de AI. En una gran
definicin, los agentes son aplicaciones que incluyen el concepto de agencia. Esto significa que
estas aplicaciones representan un usuario y satisfacen los objetivos de la tarea de forma autnoma
sin ms direccin del usuario. Este captulo en agentes inteligentes introducir los conceptos
principales detrs de agentes inteligentes, sus arquitecturas y aplicaciones.

Los modelos de inspiracin biolgica y Hbridos

AI est llena de ejemplos de la utilizacin de metforas biolgicas, desde los primeros trabajos
en redes neuronales para el trabajo de hoy en da en los sistemas inmunolgicos artificiales. La
naturaleza ha demostrado ser un maestro muy digno para la resolucin de problemas complejos.
Este captulo presenta una serie de tcnicas que son tanto de inspiracin biolgica, as como
hbrido (o mixta) modelos de AI. Los mtodos como los sistemas inmunes artificiales, evolucin
simulada, sistemas Lindenmayer, lgica difusa, redes neuronales evolucionado genticamente, y
la optimizacin de colonias de hormigas se exploran, por nombrar algunos.

Idiomas de la gripe aviar

Mientras que la mayora de la gente piensa en LISP al considerar las lenguas de AI, ha habido un
gran nmero de idiomas desarrollados especficamente para el desarrollo de aplicaciones de AI. En
este captulo, una taxonoma de los lenguajes de programacin se presenta seguido por ejemplos
cortos (y ventajas) de cada uno. A continuacin, se investig una serie de idiomas AI-especficas,
explorando su historia y el uso a travs de ejemplos. Idiomas exploradas incluyen LISP, Esquema,
POP-11, y Prolog.
18 18 Artificial Intelligence Inteligencia artificial

RESUMEN DEL CAPTULO


La historia de la IA es un drama de hoy en da. Es 's lleno de personajes interesantes, la
cooperacin, la competencia, e incluso el engao. Pero fuera del drama, ha habido una
investigacin excepcional y en la historia reciente de una aplicacin de AI Ideas 's en una serie
de situaciones diferentes. AI fin ha salido de la percepcin de la investigacin flecos y entr en el
campo de la investigacin y el desarrollo prctico aceptado.

REFERENCES REFERENCIAS
[LISP 2007] Wikipedia Lisp (lenguaje de programacin) , 2007.

Disponible en lnea en idioma http://en.wikipedia.org/wiki/Lisp_%28programming_% 29

[Newell 1956] Newell, A., Shaw, JC, Simon, HA Emprico adentrndonos Exploraciones de la lgica de la
teora de la mquina: Un estudio de caso en la heurstica, en Actas de la Conferencia de ordenador
Conjunto de Occidente, 1956.

[Shannon 1950] Shannon, Claude, Programacin de un ordenador para jugar al ajedrez, filosfico
y Revista 41, 1950.

RESOURCES RECURSOS
Rayman, Marc D., et al Los resultados del Espacio Profundo 1 Tecnologa Misin de Validacin,
50 Congreso Internacional de Astronoma, msterdam, Pases Bajos, 1999.

de castr, Leandro N., Timmis, Jonathan sistemas inmunolgicos artificiales: un nuevo enfoque de
Inteligencia Computacional Springer, 2002.

Holland, John Adaptacin en Sistemas Naturales y Artificiales. University of Michigan Press, Ann
Arbor, 1975.

McCarthy, John funciones recursivas de expresiones simblicas y su clculo a travs de la mquina


(Parte I), Communications of the ACM, abril de 1960.

Shortliffe, EH sistemas basados en reglas de laboratorio: Los experimentos Mycin del Proyecto de
Programacin de Stanford heurstico, Addison-Wesley, 1984.

Winograd, Terry Procedimientos como una representacin de datos en un programa de ordenador


para la comprensin del lenguaje natural, Informe Tcnico de IA del MIT 235 de febrero de
1971.

Woods, William A. transicin de la red Gramticas para el anlisis del lenguaje natural,
Communications of the ACM 13:10, 1970.
La historia de la IA 19 19

EXERCISES CEREMONIAS
1. En sus propias palabras, definir la inteligencia y por qu las pruebas de inteligencia pueden
ocultar la verdadera medida de la inteligencia.
2. Cul fue la prueba de Turing, y lo que era su intencin de lograr?

3. Por qu eran juegos principios del banco de pruebas para los mtodos de IA? Cmo cree
que la IA y los juegos son vistos hoy?
4. Cmo se establece Arthur Samuel la barra para los programas de aprendizaje en la dcada de 1950?

5. Cul fue el primer idioma desarrollado especficamente para la IA? Idioma seguido en la
dcada de 1970, desarrollado tambin por la IA?
6. Definir IA fuerte.

7. Qu evento se atribuye ms comnmente conduce a la IA de invierno 's?

8. Lo que se entiende por desaliado y enfoques Neat a la IA?

9. Despus de AI 's de invierno, lo que era ms singular de AI ' s reaparicin?

10. Este libro explora la IA desde el enfoque de sistemas. Definir el enfoque de sistemas y cmo
se utiliza esta perspectiva para explorar AI.
T
C aptulo 2 NINFORMED
S earch

T bsqueda ninformed, tambin llamada bsqueda a ciegas y la bsqueda ingenua, es una clase de algoritmos
de bsqueda generales finalidad que operan de un modo de fuerza bruta. Estos algoritmos se pueden
aplicar a una variedad de bsqueda

problemas, pero desde que don 't toma en cuenta el problema de destino, son ineficientes. Por el
contrario, los mtodos de bsqueda informados (que se analizan en el captulo 3) utilizan una
heurstica para guiar la bsqueda para el problema en cuestin y por lo tanto son mucho ms
eficientes. En este captulo, el espacio de bsqueda se explora el estado general y luego se discutir
una variedad de algoritmos de bsqueda no informadas y se compar el uso de un conjunto de
indicadores comunes.

BSQUEDA Y AI
La bsqueda es un aspecto importante de AI porque en muchos sentidos, la solucin de problemas en la
IA es fundamentalmente una bsqueda. Buscar se puede definir como una tcnica de resolucin de
problemas que enumera un espacio problema desde una posicin inicial en busca de una posicin meta (o
solucin). La manera en la que se busca en el espacio del problema est definido por el algoritmo de
bsqueda o estrategia. Como estrategias de bsqueda ofrecen diferentes maneras de enumerar el
espacio de bsqueda, lo bien que una estrategia funciona se basa en el problema en cuestin.
Idealmente, el algoritmo de bsqueda seleccionado es uno cuyas caractersticas coincida con el del
problema en cuestin.
22 22 Artificial Intelligence Inteligencia artificial

CLASES DE BSQUEDA
Cuatro clases de bsqueda se explorarn aqu. En este captulo, nombre contiene revisar
bsqueda desinformados, y en el captulo 3, la bsqueda informados sern discutidos. Captulo
3 tambin revisar satisfaccin de restricciones, que trata de encontrar un conjunto de valores
para un conjunto de variables. Por ltimo, en el captulo 4, que Discutiremos la bsqueda de
confrontacin, que se utiliza en los juegos de encontrar estrategias efectivas para jugar y ganar
juegos de dos jugadores.

ESTADO GENERAL DE BSQUEDA DE ESPACIO


Vamos 's comenzar nuestra discusin de la bsqueda por entender primero lo que se entiende
por un espacio de bsqueda. Cuando la solucin de un problema, se 's conveniente pensar en el
espacio de soluciones en trminos de un nmero de acciones que podemos tomar, y el nuevo
estado del medio ambiente mientras llevamos a cabo estas acciones. Al tomar una de varias
acciones posibles (cada uno tiene su propio costo), los cambios en el entorno y abre alternativas
para nuevas acciones. Como es el caso con muchos tipos de resolucin de problemas, algunos
caminos conducen a callejones sin salida donde otros conducen a soluciones. Y tambin puede
haber mltiples soluciones, algunos mejores que otros. El problema de la bsqueda es encontrar
una secuencia de operadores que la transicin desde el principio hasta el estado final. Esa
secuencia de operadores es la solucin.

Cmo podemos evitar callejones sin salida y luego seleccionar la mejor solucin disponible
es un producto de nuestra estrategia de bsqueda en particular. Vamos que est ahora a ver las
representaciones de espacio de estado para los tres dominios del problema.

Buscar en un espacio fsico


Vamos 's consideran un simple problema de bsqueda en el espacio fsico (Figura 2.1). Nuestra posicin
inicial es 'A ' de la que hay tres acciones posibles que conducen a la posicin 'B, ' 'C, ' o 'D. Lugares ', o
estados, estn marcados por las letras. En cada lugar, hay 's una oportunidad para una decisin o accin.
La accin (tambin llamado un operador) no es ms que un movimiento legal entre un lugar y otro.
Implcito en este ejercicio es un estado meta, o un lugar fsico que ests buscando.

Este espacio de bsqueda (que se muestra en la Figura 2.1) se puede reducir a una estructura de
rbol, como se ilustra en la Figura 2.2. El espacio de bsqueda se ha minimizado aqu a los lugares
necesarios en el plano fsico (estados) y las transiciones que son posibles entre los estados (aplicacin de
los operadores). Cada nodo del rbol es un lugar fsico y los arcos entre nodos son los movimientos
legales. La profundidad del rbol es la distancia desde la posicin inicial.
desinformados Buscar 23 23

Figura 2.1 : Un problema de bsqueda representado como un espacio fsico.

Figura 2.2 : En representacin de la problema de espacio fsico en la figura 2.1 como un rbol.

Buscar en un espacio Puzzle


El Torres de Hanoi rompecabezas es un ejemplo interesante de un espacio de estados para resolver un
problema de puzzle. El objeto de este rompecabezas es mover una serie de discos de un PEG a otro (uno
a la vez), con una serie de limitaciones que se deben cumplir. Cada disco es de un tamao nico y que no
es legal para un disco ms grande para sentarse en la parte superior de un disco ms pequeo. El estado
inicial del rompecabezas es tal que todos los discos comienzan en una clavija en orden creciente de
tamao (vase la Figura 2.2). Nuestro objetivo (la solucin) es mover todos los discos a la ltima clavija.

Al igual que en muchos espacios de estados, hay transiciones posibles que no son legales. Por
ejemplo, slo se puede mover una clavija que no tiene ningn objeto encima de ella. Adems, podemos 't
mover un disco grande en un disco ms pequeo (aunque podemos pasar cualquier disco
24 24 Artificial Intelligence Inteligencia artificial

a una clavija de vaco). Por lo tanto, el espacio de posibles operadores se ve limitada nicamente a
movimientos legales. El espacio de estado tambin puede estar limitada a los movimientos que an
no han sido llevadas a cabo por un subrbol dado. Por ejemplo, si nos movemos un pequeo disco
de Peg A a Peg C, moviendo el mismo disco de nuevo a Peg A se podra definir como una transicin
no vlido. No hacerlo resultara en bucles y un rbol infinitamente profunda.

Considere nuestra posicin inicial de la figura 2.3. El nico disco que puede mover es el
pequeo disco en la parte superior de la clavija A. Para este disco, son slo dos movimientos
legales posibles, desde la A a Peg Peg B o C. A partir de este estado, hay tres posibles
movimientos:

1. Mover el pequeo disco de Peg Peg C a B.

2. Mover el pequeo disco de Peg Peg C a A.

3. Mover el disco medio de Peg Peg A a B.

El primer movimiento (pequeo disco de Peg Peg C a B), mientras que no es vlido un movimiento potencial, ya
que acabamos de mudar este disco a Peg C (una clavija vaco). Mover una segunda vez no sirve para nada (ya
que esta medida podra haberse hecho durante la transicin antes), por lo que hay 's ningn valor al hacer esto
ahora (una heurstica). El segundo movimiento tambin no es til (otro heurstico), porque 'es el reverso de la

Figura 2.3 : Un espacio de bsqueda para la Torre de Hanoi rompecabezas.


desinformados Buscar 25 25

PROPINA

jugada anterior. Esto deja un movimiento vlido, el disco medio de Peg Peg A a B. Los movimientos posibles de este
estado vuelto ms complicada, debido a movimientos vlidos son posibles que nos mueven ms lejos de la solucin.

Una heurstica es una regla simple y eficiente para resolver un problema dado o tomar una decisin.

Cuando nuestra secuencia de movimientos nos lleva desde la posicin inicial hasta la meta, tenemos
una solucin. El estado objetivo en s mismo no es interesante, pero en su lugar lo que es interesante es
la secuencia de movimientos que nos han llevado al estado meta. La coleccin de movimientos (o
solucin), hecho en el orden correcto, es en esencia, un plan de para alcanzar la meta. El plan para esta
configuracin del rompecabezas puede ser identificado por partiendo de la posicin meta y dar marcha
atrs a la posicin inicial.

Buscar en un espacio de juego Acusatorio

Un uso interesante de espacios de bsqueda es en los juegos. Tambin conocido como rboles
de juego, estas estructuras enumeran los posibles movimientos de cada jugador que permite al
algoritmo de bsqueda para encontrar una estrategia eficaz para jugar y ganar el juego.

NOTE NOTA
El tema de la bsqueda de confrontacin en rboles de juego se explora en el captulo 4.
Considere un rbol de juego para el juego del ajedrez. Se proporciona cada movimiento
posible
para cada configuracin posible (colocacin de piezas) del tablero de ajedrez.
Pero ya que hay 10 120 configuraciones posibles de un tablero de ajedrez, un juego
rbol para documentar el espacio de bsqueda no sera factible. bsqueda heurstica,
que debe aplicarse aqu, ser discutido en el captulo 3.
Let 's ahora un vistazo a un juego mucho ms simple que puede ser ms fcil
representado en un rbol de juego. El juego de Nim es un juego de dos jugadores, donde
cada jugador toma turnan para retirar objetos de una o ms pilas. El jugador
requerida para dar el ltimo objeto pierde el juego.
Nim se ha estudiado matemticamente y resuelto en muchos diferentes
variaciones. Por esta razn, el jugador que va a ganar puede calcularse en base
en el nmero de objetos, pilas, y que juega por primera vez en una forma ptima
juego que se juega.
El juego de Nim se dice que se origin en China, pero se puede remontar
NOTE NOTA

a Alemania como la palabra nimm puede ser traducido como toma. A complete Una
completa
La teora matemtica de Nim fue creado por Charles Bouton en 1901.
[Bouton 1901]
26 26 Artificial Intelligence Inteligencia artificial

Vamos 's caminar a travs de un ejemplo para ver cmo se juega Nim. Nos nombre contiene
comenzar con un solo pequeo montn de limitar el nmero de movimientos que se requieren.
Figura 2.4 ilustra un juego corto con una pila de seis objetos. Cada jugador puede tener una, dos
o tres objetos de la pila. En este ejemplo, el jugador-1 se inicia el juego, pero el juego termina
con (est obligado a tomar el ltimo objeto que se traduce en una prdida en forma misre del
juego) una prdida. Jugador 1-3 haba tomado en su segundo movimiento, el jugador-2 habra
quedado con uno que resulta en una victoria para el jugador-1.

Un rbol de juego hace que esta informacin visible, como se ilustra en la Figura 2.5. Tenga
en cuenta que en el rbol de jugador-1 debe quitar una de la pila para continuar el juego. Si
Reproductor- 1 quita dos o tres de la pila, el jugador-2 puede ganar si se juega de manera
ptima. Los nodos sombreados en el rbol ilustran la prdida de posiciones para el jugador que
debe elegir al lado (y en todos los casos, la nica opcin que queda es tomar el objeto slo
restante).

Tenga en cuenta que la profundidad del rbol determina la duracin del juego (nmero de
movimientos). Es 's implicado en el rbol que el nodo sombreada es la decisin final que debe
hacerse, y el jugador que hace que este movimiento pierde el juego. Tambin tenga en cuenta el
tamao del rbol. En este ejemplo, el uso de seis objetos, se requiere un total de 28 nodos. Si
aumentamos nuestro rbol para ilustrar una pila de siete objetos, el rbol aumenta hasta 42 nodos.
Con ocho objetos, tres globos a 100 nodos. Afortunadamente, el rbol puede ser optimizado
mediante la eliminacin de sub-estructuras duplicadas, lo que resulta en un rbol mucho ms
pequeo.

Figura 2.4 : Un ejemplo de juego de Nim con una pila de seis objetos.
desinformados Buscar 27 27

RBOLES, GRFICOS, Y REPRESENTACIN


Un breve recorrido por los rboles y los grficos y su terminologa est en orden antes de
explorar los distintos mtodos de bsqueda no informadas.

Un grfico es un conjunto finito de vrtices (o nodos ) que estn conectados por los bordes (o
arcos ). Un bucle (o ciclo ) pueden existir en un grfico, donde un arco (o borde) pueden conducir de
nuevo al nodo original. Los grficos pueden ser no dirigidos donde arcos no implican una direccin, o
pueden ser dirigidos (llamado un dgrafo ) donde una direccin est implcita en el arco. Un arco
tambin puede llevar un peso, donde un coste puede ser asociado con una ruta.

Cada uno de estos grficos tambin demuestra la propiedad de la conectividad. Ambos grficos estn
conectados porque cada par de nodos est conectado por un camino. Si cada nodo est conectado a cada
nodo por un arco, la grfica es completa . Una especial conectado grfica se llama un rbol , pero no debe
contener ciclos .

La construccin de una representacin de un grfico que es simple y una de las representaciones


ms comunes es la matriz de adyacencia . Esta estructura es simplemente

Figura 2.5 : Un rbol completo juego de Nim durante seis objetos en una pila.

Figura 2.6 : Un ejemplo de un no dirigido grfico que contiene seis nodos y ocho arcos.
Figura 2.7 : Un ejemplo de un dirigida grfico que contiene seis bordes y nueve arcos.
28 28 Artificial Intelligence Inteligencia artificial

Figura 2.8 : Una grfica conectado sin ciclos (tambin conocido como un rbol).

una matriz N por N (donde N es el nmero de nodos en el grfico). Cada elemento de la matriz define
una conectividad (o adyacencia) entre el nodo de referencia como la fila y el nodo de referencia como
la columna.

Recordemos el grafo no dirigido en la Figura 2.6. Esta grfica contiene seis nodos y ocho arcos. La matriz
de adyacencia para este grafo no dirigido se muestra en la Figura 2.9. Las dos dimensiones de la grfica
identificar la fuente (fila) y nodos de destino (columna) de la grfica. De la figura 2.6, sabemos que el nodo A es
adyacente a los nodos B, C y D. Esto se indica en la matriz de adyacencia con un valor de uno en cada uno de
la B, las columnas C y D para la fila A. Dado que este es un grafo no dirigido, que tenga en cuenta la simetra en
la matriz de adyacencia. El nodo A se conecta al nodo B (como se identifica en la fila A), sino tambin el nodo B
se conecta al nodo A (como se muestra en la fila B).

Para un grfico dirigido (como se muestra en la Figura 2.7), la matriz de adyacencia asociada
se ilustra en la Figura 2.10. Como la grfica se dirige, hay simetra puede ser encontrado. En
lugar de ello, la direccin de los arcos se observa en la matriz. Por ejemplo, el nodo B se
conecta al nodo A, pero el nodo A no tiene ninguna conexin asociado al nodo B.

Una propiedad interesante de la matriz de adyacencia se puede encontrar mediante la revisin de las filas y
columnas de forma aislada. Por ejemplo, si se revisa una sola fila, podemos identificar los nodos a los que se
conecta. Por ejemplo, la fila C muestra slo una conexin al nodo F (como se indica por el que est en esa
celda). Pero si se revisa la columna para el nodo C, encontramos los nodos que tienen arcos de conexin al
nodo C. En este caso, vemos nodos A, D, y E (como se ilustra grficamente en la Figura 2.7). Tambin podemos
encontrar si un grafo es completo. Si toda la matriz no es cero, entonces la grfica es completa. Es Tambin es
sencillo encontrar una grfica desconectado (un nodo cuya fila y columna contener valores cero). Loops en un
grfico tambin se pueden algortmicamente descubiertos por la enumeracin de la matriz (recursivamente
desinformados Buscar 29 29

Figura 2.9 : matriz de adyacencia para el grafo no dirigido se muestra en la Figura 2.6.

Figura 2.10 : matriz de adyacencia para el grfico dirigido (dgrafo) que se muestra en la Figura 2.7.

siguiendo todos los caminos que buscan el nodo inicial).

En el caso simple, los valores de la matriz de adyacencia simplemente definen la


conectividad de los nodos en el grfico. En los grficos ponderados, donde los arcos no pueden
ser todos iguales, el valor de una celda puede identificar el peso (costo, o distancia). Nos
Exploraremos ejemplos de esta tcnica en la revisin de la construccin de la red neuronal
(Captulo 11).

listas de adyacencia son tambin una estructura popular donde cada nodo contiene una lista
de los nodos a los que se conecta. Si el grfico es escasa, esta representacin puede requerir
menos espacio.

BUSCAR desinformados
Los mtodos de bsqueda no informadas ofrecen una variedad de tcnicas para la bsqueda grfica,
cada una con sus propias ventajas y desventajas. Estos mtodos se exploran aqu con la discusin de sus
caractersticas y complejidades.

Notacin O grande se utiliza para comparar los algoritmos. Esta notacin define el asinttica
lmite superior del algoritmo dado la profundidad ( d ) del rbol y el factor de ramificacin, o el nmero
medio de ramificaciones ( b ) de cada nodo. Hay una serie de complejidades comunes que existen
para los algoritmos de bsqueda. Estos se muestran en la Tabla 2.1.

Tabla 2.1: rdenes comunes de las funciones de bsqueda.

Notacin O Orden

O (1) constante (independientemente del nmero de nodos)


30 30

Linea
En)
nodo
O (log n) logar
O (n 2 ) Quad
O (c n ) Geom
En!) Com

Notacin de orden O proporciona una medida del peor caso de la complejidad de un algoritmo de
bsqueda y es una herramienta comn para la comparacin de algoritmos. Nos nombre contiene
comparar los algoritmos de bsqueda utilizando la complejidad del espacio (medida de la memoria
requerida durante la bsqueda) y la complejidad del tiempo (tiempo del peor caso necesario para
encontrar una solucin). Nos nombre contiene tambin revisar el algoritmo de integridad (el algoritmo
puede encontrar una ruta a un nodo objetivo si se 's presentes en la grfica) y la optimalidad
(encuentra la solucin ms econmica disponible).

API helper

Una serie de APIs de ayuda se utilizar en el cdigo fuente utilizado para demostrar las funciones de
bsqueda. Estos se muestran a continuacin en el Listado 2.1.

LISTADO 2.1: API ayudante para las funciones de bsqueda.

/ * * Graph API /

graph_t * createGraph (nodos INT);

anular destroyGraph (graph_t * g_p);

anular addEdge (graph_t * g_p, int desde, int a, int value);


int Int getEdge (graph_t * g_p, int desde, int a);

/ * * Pila API /

stack_t * createStack (int profundidad);

anular destroyStack (stack_t * s_p);

anular pushStack (stack_t * s_p, int value);

int Int popStack (stack_t * s_p);

int Int isEmptyStack (stack_t * s_p);

/ * API de cola * /

queue_t * createQueue (profundidad int);

anular destroyQueue (queue_t * q_p);

anular Enqueue (queue_t * q_p, int value);

int Int Quitar de la cola (queue_t * q_p);

int Int isEmptyQueue (queue_t * q_p);

/ * * Cola de prioridad API /

pqueue_t * createPQueue (int profundidad);


desinformados Buscar 31 31

NO

T T

H MARIDO E mi

C do D re

anular destroyPQueue (pqueue_t * q_p);

anular enPQueue (pqueue_t * q_p, valor int, int costo); vaco dePQueue (pqueue_t *
q_p, int * valor, el costo int *); int isEmptyPQueue (pqueue_t * q_p);

int Int isFullPQueue (pqueue_t * q_p);

Las funciones auxiliares se pueden encontrar en el CD-ROM en ./software/ comn.

Los paradigmas generales de la bsqueda

Antes de discutir algunos de los mtodos de bsqueda desinformados, deje 's ver dos mtodos
de bsqueda desinformados generales simples.

El primero se llama " generar y probar . 'En este mtodo, generamos una solucin potencial y
luego compararla con la solucin. Si nos han encontrado la solucin, que termine, de lo contrario,
repetimos probando con otro posible solucin. Esto se llama ' generar y probar ' porque generamos
una posible solucin, y luego probarlo. Sin una solucin adecuada, intentamos de nuevo. Ntese aqu
que nosotros no 't un seguimiento de lo que han intentado antes; acabamos de arar adelante con
soluciones potenciales, lo cual es una verdadera bsqueda a ciegas.

Otra opcin se llama ' aleatoria Buscar ', que selecciona al azar un nuevo estado de la situacin
actual (mediante la seleccin de un operador vlido dado y aplicarlo). Si se llega al estado de la
meta, entonces ests hecho. De lo contrario, se selecciona al azar otro operador (que conduce a un
nuevo estado) y continuar.

La bsqueda al azar y ' generar y probar el mtodo' son verdaderamente ciegos mtodos de
bsqueda. Pueden perderse, quedan atrapados en bucles, y, potencialmente, nunca encuentran una
solucin a pesar de que existe dentro del espacio de bsqueda.

Vamos 's ahora un vistazo a algunos mtodos de bsqueda que, si bien ciego, puede
encontrar una solucin (si existe) incluso si se lleva un largo periodo de tiempo.

Profundidad-First Search (DFS)

El (DFS) algoritmo de bsqueda primero en profundidad es una tcnica para buscar un grfico que
comienza en el nodo raz, y exhaustivamente busca en cada rama a su mayor profundidad antes de
dar marcha atrs a las sucursales han sido explorados anteriormente (Figura 2.11 ilustra este orden
de bsqueda). Nodos encontrado pero an para ser revisados se almacenan en una cola LIFO
(tambin conocido como una pila ).

NOTE NOTA

Una pila es un contenedor LIFO (Last-In-First-Out) de los objetos. De manera similar a una pila de
papel, el ltimo elemento colocado en la parte superior es el primer elemento a eliminar.
32 32 Artificial Intelligence Inteligencia artificial

NO
T T
H MARIDO E mi

C do D re
FIGURA 2.11 : Orden de bsqueda del algoritmo DFS sobre un pequeo rbol.

La complejidad espacio para DFS es O (bd) cuando la complejidad del tiempo es geomtrico (O (b d )). Esto
puede ser muy problemtico en las grficas de ramificacin de profundidad, como el algoritmo continuar a
la profundidad mxima de la grfica. Si bucles estn presentes en la grfica, a continuacin, DFS seguir
estos ciclos indefinidamente. Por esta razn, el algoritmo DFS no es completa, ya que los ciclos pueden
prohibir el algoritmo de bsqueda de la meta. Si los ciclos no estn presentes en la grfica, entonces el
algoritmo est completo (encontrar siempre el nodo objetivo). El algoritmo DFS tampoco es ptimo, pero
puede hacerse ptimo utilizando la ruta de control (para asegurar el camino ms corto a la meta se
encuentra).

La implementacin de DFS se puede encontrar en el CD-ROM en ./software/ CH2 / dfs.c.

algoritmos de grafos pueden ser implementadas ya sea de forma recursiva o el uso de una pila para
mantener la lista de nodos que deben ser enumerados. En el Listado 2.2, el algoritmo DFS se
implementa utilizando una pila LIFO.

Listing 2.2: El algoritmo de bsqueda en profundidad.

#include <stdio.h> #include graph.h # include stack.h


Un #define 0 0
#define B 1 1
desinformados Buscar 33 33
#define C 22
#define D 33
#define E 44
#define F 55
#define G 66
#define H 77

int init_graph (graph_t * g_p)

{{

addEdge (g_p, A, B, 1); addEdge (g_p, A, C, 1);


addEdge (g_p, B, D, 1); addEdge (g_p, C, E, 1);
addEdge (g_p, C, F, 1); addEdge (g_p, D, G, 1);
addEdge (g_p, D, H, 1); return 0; Return 0;

}}

DFS void (* graph_t g_p, raz, int meta)

{{

nodo int; Int a; stack_t * s_p;

s_p = createStack (10); pushStack (s_p, raz);

while (isEmptyStack (s_p)!) {nodo = popStack (s_p); printf


( % d \ n , el nodo);
si (nodo == meta) break;

para (a = g_p-> nodos-1; a> 0; a--) {if ( getEdge (g_p, nodo, a))
{ pushStack (s_p, a);

}}

}}

}}

destroyStack (s_p); regreso;


}}

int main ()

{{

graph_t * g_p;
34 34 Artificial Intelligence Inteligencia artificial

PROPINA

g_p = createGraph (8); init_graph (g_p);

dfs (g_p, 0, 5); destroyGraph (g_p); return 0; Return 0;

}}

Un algoritmo de bsqueda se caracteriza como exhaustiva cuando puede buscar en cada nodo en
el grfico en busca de la meta. Si el objetivo no est presente en el grfico, el algoritmo termina,
pero buscar todos y cada nodo de una manera sistemtica.

Profundidad-Limited Buscar (DLS)

NO

T T
H MARIDO E mi

C do D re

Profundidad-Limited Buscar (DLS) es una modificacin de bsqueda en profundidad que minimiza la profundidad que el
algoritmo de bsqueda puede ir. Adems de iniciar con un nodo raz y el objetivo, se proporciona una profundidad que el
algoritmo no descender por debajo (ver el Listado 2.3). Cualquier nodos por debajo de esa profundidad se omiten de la
bsqueda. Esta modificacin mantiene el algoritmo de forma indefinida en bicicleta por la detencin de la bsqueda
despus de la profundidad pre-impuesta. Figura 2.12 ilustra esta bsqueda con una profundidad de dos (no hay nodos
ms profundos que el nivel dos se buscan).

La aplicacin DLS se puede encontrar en el CD-ROM en ./software/ CH2 / dls.c.

Listing 2.3: El algoritmo de bsqueda en profundidad limitada.

#include <stdio.h> #include graph.h # include stack.h


Un #define 0 0
#define B 1 1
#define C 2 2
#define D 3 3
#define E 4 4
#define F 5 5
#define G 6 6
#define H 7 7

int init_graph (graph_t * g_p)

{{
desinformados Buscar 35 35

addEdge (g_p, A, B, 1); addEdge (g_p, A, C, 1);


addEdge (g_p, B, D, 1); addEdge (g_p, C, E, 1);
addEdge (g_p, C, F, 1); addEdge (g_p, D, G, 1);
addEdge (g_p, D, H, 1); return 0; Return 0;

}}

dls void (* graph_t g_p, raz int, meta int, int limite)

{{

nodo int, profundidad, a; stack_t * s_p, * sd_p; s_p =


createStack (10); sd_p = createStack (10); pushStack
(s_p, raz); pushStack (sd_p, 0);

while (! isEmptyStack (s_p)) {nodo = popStack (s_p);


profundidad = popStack (sd_p);

printf ( % d (profundidad% d) \ n , el nodo, profundidad); si


(nodo == meta) break;

si (profundidad <lmite) {

para (a = g_p-> nodos-1; a> 0; a--) {if ( getEdge (g_p, nodo, a))
{ pushStack (s_p, a);

pushStack (sd_p, profundidad + 1);

}}

}}

}}

}}

destroyStack (s_p); destroyStack (sd_p); regreso;

}}

int main ()

{{

graph_t * g_p;

g_p = createGraph (8); init_graph (g_p);


36 36 Artificial Intelligence Inteligencia artificial

dls (g_p, 0, 5, 2); destroyGraph (g_p); return 0;


Return 0;

}}

Mientras que el algoritmo hace eliminar la posibilidad de un bucle infinito en el grfico, sino que tambin reduce
el alcance de la bsqueda. Si el nodo objetivo haba sido uno de los nodos marcados 'X ', no habra sido
encontrado, por lo que el algoritmo de bsqueda incompleta. El algoritmo puede ser completa si la profundidad
de bsqueda es la del rbol en s (en este caso, d es de tres). La tcnica tampoco es ptima, ya que la primera
va se podr considerar que el objetivo en lugar de la ruta ms corta.

La complejidad tiempo y el espacio de bsqueda en profundidad limitada es similar a la DFS,


del que se deriva este algoritmo. Complejidad espacial es O (bd) y complejidad de tiempo es O
(b d ), pero d en este caso es la profundidad impuesta de la bsqueda y no la profundidad
mxima de la grfica.

Profundizacin iterativa Bsqueda (IDS)


Buscar Profundizacin iterativa (IDS) es un derivado de DLS y combina las caractersticas de bsqueda en
profundidad con la de bsqueda en anchura. IDS opera mediante la realizacin de bsquedas DLS con
mayores profundidades hasta encontrar el objetivo.

Figura 2.12 : orden de bsqueda de un rbol mediante la bsqueda de profundidad limitada (profundidad = dos).

Figura 2.13 : Iteracin aument bsquedas de profundidad con IDS.


desinformados Buscar 37 37

La profundidad comienza en uno, y aumenta hasta que el objetivo se encuentra, o no hay ms


nodos se puede enumerar (ver Figura 2.13).

Como se muestra en la figura 2.13, IDS combina bsqueda en profundidad con la bsqueda en
amplitud. Al minimizar la profundidad de la bsqueda, forzamos el algoritmo para buscar tambin la
amplitud de la grfica. Si no se encuentra el objetivo, la profundidad que se permite que el algoritmo para
buscar aumenta y el algoritmo se inicia de nuevo. El algoritmo, que se muestra en el Listado 2.4, comienza
con una profundidad de uno.

LISTADO 2.4: El algoritmo iterativo profundizacin bsqueda.

#include <stdio.h> #include graph.h #


include stack.h
Un #define 0 0
#define B 1 1
#define C 2 2
#define D 3 3
#define E 4 4
#define F 5 5
#define G 6 6
#define H 7 7

int init_graph (graph_t * g_p)

{{

addEdge (g_p, A, B, 1); addEdge (g_p, A, C, 1);


addEdge (g_p, B, D, 1); addEdge (g_p, C, E, 1);
addEdge (g_p, C, F, 1); addEdge (g_p, D, G, 1);
addEdge (g_p, D, H, 1); return 0; Return 0;

}}

dls int (* graph_t g_p, raz int, meta int, int limite)

{{

nodo int, la profundidad; Int a;

stack_t * s_p, * sd_p; s_p = createStack (10); sd_p =


createStack (10); pushStack (s_p, raz);
38 38 Artificial Intelligence Inteligencia artificial

NO
T T
H MARIDO E mi
C do D re

pushStack (sd_p, 0);

while (! isEmptyStack (s_p)) {nodo = popStack (s_p);


profundidad = popStack (sd_p);

printf ( % d (profundidad% d) \ n , el nodo, profundidad); si (nodo ==


meta) return 1;

si (profundidad <lmite) {

para (a = g_p-> nodos-1; a> 0; a--) {if ( getEdge (g_p, nodo, a)) {
pushStack (s_p, a);

pushStack (sd_p, profundidad + 1);

}}

}}

}}

}}

destroyStack (s_p); destroyStack (sd_p); return 0; Return 0;

}}

int main ()

{{
graph_t * g_p;

int status, la profundidad; g_p = createGraph (8);


init_graph (g_p); profundidad = 1;

while (1) {

= Estado dls (g_p, 0, 5, profundidad); si (== estado 1) break;


ms profundidad ++;

}}

destroyGraph (g_p); return 0; Return 0;


}}

La implementacin de IDS se puede encontrar en el CD-ROM en ./software/ CH2 / ids.c.

IDS es ventajoso porque no es susceptible a los ciclos (una caracterstica de DLS, sobre la que Est basado).
Tambin encuentra el objetivo ms cercano al nodo raz,
desinformados Buscar 39 39

FIGURA 2.14 : Solicitud de bsqueda del algoritmo de bsqueda primero en amplitud.

como lo hace el algoritmo BFS (que se detalla a continuacin). Por esta razn, 'Sa algoritmo
preferido cuando la profundidad de la solucin no se conoce.

La complejidad de tiempo para IDS es idntica a la de DFS y DLS, O (b d ). Espacio


complejidad de IDS es O (bd).

A diferencia de DFS y DLS, IDS es siempre encontrar la mejor solucin y, por lo tanto, es
tanto ms completa y ptima.

Bsqueda primero en amplitud (BFS)

En primero en amplitud Bsqueda (BFS), buscamos el grfico desde el nodo raz con el fin de la
distancia desde la raz. Debido a que el orden de bsqueda es ms cercano a la raz, BFS est
garantizado para encontrar la mejor solucin posible (menos profundo) en un grafo no ponderado, y
por lo tanto tambin es completa. En lugar de cavar profundamente en el grfico, progresando ms y
ms de la raz (como es el caso con DFS), BFS comprueba cada nodo ms cercano de la raz antes
de descender al siguiente nivel (vase la figura 2.14).

La implementacin de BFS utiliza una FIFO (primero en entrar, primero en salir) de cola, que
difiere de la implementacin pila (LIFO) para la DFS. A medida que se encuentran nuevos nodos
que se debe buscar, estos nodos se comparan con el objetivo, y si no se encuentra el objetivo,
los nuevos nodos se aaden a la cola. Para continuar la bsqueda, se quita de la cola del nodo
ms antigua (orden FIFO). Usando orden FIFO para nueva bsqueda nodo, siempre
comprobamos los nodos ms antiguos primero, lo que resulta en la revisin primero en amplitud
(ver el Listado 2.5).

LISTADO 2.5: El algoritmo de bsqueda primero en amplitud.

#include <stdio.h> #include graph.h #


include queue.h
Un #define 0 0
40 40 Artificial
#define B 11
#define C 22
#define D 33
#define E 44
#define F 55
#define G 66
#define H 77

int init_graph (graph_t * g_p)

{{

addEdge (g_p, A, B, 1); addEdge (g_p, A, C, 1);


addEdge (g_p, B, D, 1); addEdge (g_p, C, E, 1);
addEdge (g_p, C, F, 1); addEdge (g_p, D, G, 1);
addEdge (g_p, D, H, 1); return 0; Return 0;

}}

BFS void (* graph_t g_p, raz, int meta)

{{

nodo int; Int a;


queue_t * q_p;

q_p = createQueue (10); poner en cola (q_p, raz);

while (! isEmptyQueue (q_p)) {nodo = Quitar de la cola


(q_p); printf ( % d \ n , el nodo);
si (nodo == meta) break;

para (a = g_p-> nodos-1; a> 0; a--) {if ( getEdge (g_p, nodo, a))
{ enqueue (q_p, a);

}}

}}

}}

destroyQueue (q_p); regreso;


}}

int main ()

{{
desinformados Buscar 41 41

THE
N norte CD

O O

PROPINA

graph_t * g_p;

g_p = createGraph (8); init_graph (g_p);

BFS (g_p, 0, 7); destroyGraph (g_p); return 0; Return 0;

}}

La aplicacin BFS se puede encontrar en el CD-ROM en ./software/ CH2 / bfs.c.

La desventaja de BFS es que se requiere que cada nodo que se busca para ser almacenado (complejidad
espacio es O (b d )). Toda la profundidad del rbol no tiene que ser buscado, por lo que d en este contexto es la
profundidad de la solucin, y no a la profundidad mxima del rbol. Complejidad tiempo tambin es O (b d ).

En implementaciones prcticas de BFS, y otros algoritmos de bsqueda, una lista cerrada se


mantiene que contiene los nodos en el grfico que se han visitado. Esto permite que el algoritmo
para buscar de manera eficiente el grfico sin volver a visitar los nodos. En implementaciones donde
se pondera la grfica, manteniendo una lista cerrada no es posible.
FIGURA 2.15 : bidireccional reunin bsqueda en el medio en el nodo H.
42 42 Artificial Intelligence Inteligencia artificial

bidireccional de bsqueda

El algoritmo de bsqueda bidireccional es un derivado de BFS que opera mediante la realizacin de


dos bsquedas en amplitud simultneamente, una comienzo desde el nodo raz y el otro desde el
nodo objetivo. Cuando las dos bsquedas encuentran en el medio, un camino puede ser reconstruida
desde la raz hasta la meta. La reunin bsquedas se determina cuando se encuentra un nodo
comn (un nodo visitado por ambas bsquedas, vase la figura 2.15). Esto se logra manteniendo una
lista cerrada de los nodos visitados.

Bsqueda bidireccional es una idea interesante, pero requiere que conocemos el objetivo
que ests buscando en el grfico. Esto no es 't siempre es prctico, lo que limita la aplicacin del
algoritmo. Cuando se puede determinar, el algoritmo tiene caractersticas tiles. La complejidad
del tiempo y el espacio para la bsqueda bidireccional es O (bd / 2), ya que estamos obligados a
buscar solamente la mitad de la profundidad del rbol. Ya que se basa en BFS, bsqueda
bidireccional sea completa y ptima.

Uniforme-Costo de bsqueda (UCS)

Una ventaja de BFS es que siempre encuentra la solucin ms superficial. Pero considerar el
borde que tiene un costo asociado con l. La solucin ms superficial puede no ser el mejor, y
una solucin ms profunda con un coste de la ruta reducida sera mejor (por ejemplo, vase la
Figura 2.16). Uniforme -Costo Bsqueda (UCS) se puede aplicar a encontrar la ruta de menor
costo a travs de un grfico mediante el mantenimiento de una lista ordenada de nodos en orden
descendente de costo. Esto nos permite evaluar la ruta de menor costo primero

Figura 2.16 : Un grfico de ejemplo en el que la eleccin de la ruta de coste ms bajo para el primer nodo (A-> C) puede no resultar
en el mejor camino general a travs de la grfica (A-> B-> E).
desinformados Buscar 43 43

PROPINA

Bsqueda uniforme costo es un mtodo de bsqueda desinformados porque ninguna heurstica se


utiliza realmente. El algoritmo mide el coste real de la trayectoria sin intentar estimarlo.

El algoritmo para UCS utiliza el coste de la ruta acumulada y una cola de prioridad para determinar la ruta de
evaluar (ver el Listado 2.6). La cola de prioridad (ordenados de menor coste para mayor) contiene los nodos
para ser evaluados. A medida que se evalan los nios nodo, aadimos su coste para el nodo con la suma
total de la ruta actual. Se aade este nodo entonces a la cola, y cuando se han evaluado todos los nios, la
cola se ordena en orden de coste ascendente. Cuando el primer elemento de la cola de prioridad es el nodo
objetivo, entonces la mejor solucin ha sido encontrada.

LISTADO 2.6: El algoritmo de bsqueda uniforme costo.

#include <stdio.h> #include graph.h # include pqueue.h

Un #define 00
#define B 11
#define C 22
#define D 33
#define E 44

int init_graph (graph_t * g_p)

{{

addEdge (g_p, A, B, 5); addEdge (g_p, A, C, 1); addEdge (g_p, A, D, 2); addEdge
(g_p, B, E, 1); addEdge (g_p, C, E, 7); addEdge (g_p, D, E, 5); return 0; Return 0;

}}

UCS void (* graph_t g_p, raz, int meta)

{{

nodo int, costo, child_cost; Int a;

pqueue_t * q_p;

q_p = createPQueue (7); enPQueue (q_p, raz, 0);

while (! isEmptyPQueue (q_p)) {


44 44 Artificial Intelligence Inteligencia artificial

dePQueue (q_p, y nodo, y el costo); si (nodo == meta) {

printf ( costo% d \ n , el costo); regreso;

}}

para (a = g_p-> nodos-1; a> 0; a--) {child_cost = getEdge (g_p,


nodo, a); si (child_cost) {

enPQueue (q_p, a, (child_cost + coste));

}}

}}

}}

destroyPQueue (q_p); regreso;


}}

int main ()

{{

graph_t * g_p;

g_p = createGraph (6); init_graph (g_p);

UCS (g_p, A, E); destroyGraph (g_p); return 0;


Return 0;

}}

FIGURA 2.17 : evaluaciones nodo y el estado de la cola de prioridad.


Figura 2.18 : Ilustrando el coste de la ruta a travs del grfico.
desinformados Buscar 45 45

NO

T T

H MARIDO E mi

C do D re

La aplicacin UCS se puede encontrar en el CD-ROM en ./software/ CH2 / ucs.c.

El algoritmo UCS se demuestra fcilmente usando nuestro grfico de ejemplo en la Figura 2.16. Figura
2.17 muestra el estado de la cola de prioridad medida que se evalan los nodos. En la etapa uno, el
nodo inicial ha sido aadido a la cola de prioridad, con un coste de cero. En la etapa dos, cada uno de
los tres nodos conectados son evaluados y se aadi a la cola de prioridad. Cuando hay ms nios
estn disponibles para evaluar, se ordena a colocarlos en orden ascendente costo de la cola de
prioridad.

En la etapa tres, se evalan los hijos del nodo C. En este caso, nos encontramos con el objetivo deseado
(E), pero desde su coste de la ruta acumulada es de ocho, que termina al final de la cola. Para el cuarto
paso, se evala el nodo D y de nuevo encontramos el nodo objetivo. El camino cuesta resultados de cada
siete, que sigue siendo mayor que nuestro nodo B en la cola. Finalmente, en la etapa cinco, se evala el
nodo B. El nodo objetivo se encuentra de nuevo, con un coste trayectoria resultante de seis. La cola de
prioridad contiene ahora el nodo objetivo en la parte superior, lo que significa en la siguiente iteracin del
bucle, el algoritmo terminar con un camino de A-> B-> E (trabajando hacia atrs desde el nodo objetivo al
nodo inicial).

Para limitar el tamao de la cola de prioridad, se 's posible para podar las entradas que son redundantes. Por
ejemplo, en el paso 4 en la Figura 2.17, la entrada para E (8) podra haber sido retirado de forma segura, como existe
otro camino que tiene un costo reducido (E (7)).

La bsqueda de la grfica se muestra en la figura 2.18, que identifica el coste de la ruta en cada
borde de la grfica. El coste de la ruta se muestra ms arriba el nodo objetivo (E) hace que sea fcil ver
la ruta de menor coste a travs de la grfica, incluso cuando no es evidente desde el nodo inicial.

UCS es ptima y puede ser completa, pero slo si los costos de borde son no negativo (el coste de
la ruta resumi siempre aumenta). El tiempo y la complejidad espacio son los mismos que BFS, O (b d )
para cada uno, ya que 'es posible para todo el rbol a ser evaluado.

MEJORAS
Uno de los problemas bsicos con tradicional DFS y BFS es que carecen de una lista de
visitados (una lista de nodos que ya han sido evaluados). Esta modificacin hace que los
algoritmos completa, haciendo caso omiso de los ciclos y slo siguiendo caminos que an no se
han seguido. Para BFS, manteniendo una lista de visitados puede reducir el tiempo de
bsqueda, pero para DFS, el algoritmo puede ser hecha completa.
46 46. Artificial Intelligence Inteligencia artificial

VENTAJAS ALGORITMO
Cada uno de los algoritmos tiene ventajas y desventajas basadas en el grfico para ser
buscados. Por ejemplo, si el factor de ramificacin de la grfica es pequeo, entonces BFS es la
mejor opcin. Si el rbol es profunda, pero una solucin es conocida por ser poco profunda en el
grfico, a continuacin, IDS es una buena opcin. Si se pondera la grfica, entonces UCS se
debe utilizar, ya que siempre va a encontrar la mejor solucin en la que DFS y BFS no lo har.

RESUMEN DEL CAPTULO


Desinformados algoritmos de bsqueda son una clase de algoritmos de bsqueda grfica que
exhaustivamente la bsqueda para un nodo sin el uso de una heurstica para guiar la bsqueda. Los
algoritmos de bsqueda son de inters en la IA ya que muchos problemas pueden reducirse a simples
problemas de bsqueda en un espacio de estados. El espacio de estado consta de estados (nodos) y
operadores (bordes), permitiendo que el espacio de estado que se representa como un grfico. Los
ejemplos van desde grficos de espacios fsicos a los rboles masivos del juego tales como son posibles
con el juego de ajedrez.

El primer algoritmo de bsqueda profundidad- opera mediante la evaluacin de las ramas a


su profundidad mxima, y luego dar marcha atrs para seguir ramas no visitados. Profundidad-
bsqueda limitada (DLS) se basa en la SSE, pero limita la profundidad de la bsqueda.
bsqueda ms profunda iterativa (IDS) utiliza DLS, pero aumenta continuamente la profundidad
de la bsqueda hasta que se encuentre la solucin.

El algoritmo de bsqueda primero en amplitud de bsqueda (BFS) con aumento de la


profundidad de la raz (Bsquedas todos los nodos con profundidad uno, entonces todos los
nodos con profundidad dos, etc.). Un algoritmo especial derivado de BFS, bsqueda
bidireccional (BIDI), lleva a cabo dos bsquedas simultneas. Comenzando en el nodo raz y el
nodo objetivo, BIDI lleva a cabo dos bsquedas BFS en busca de la media. Una vez que un
nodo comn se encuentra en el medio, existe una ruta entre los nodos raz y el objetivo.

La bsqueda uniforme costo (UCS) algoritmo es ideal para las grficas de peso (grficos cuyos
bordes tienen costos asociados con ellos). UCS evala un grfico usando una cola de prioridad que
se ordena en coste de la ruta al nodo particular. Se Est basado en el algoritmo BFS y es a la vez
completa y ptima.

ALGORITMOS RESUMEN
Tabla 2.2: Resumen de los algoritmos desinformados y sus caractersticas.
desinformados Buscar
Time
Algorithm Algoritmo
Hora
O (b m
DFS DFS
)
DLS O (b l
IDS O (b d
BFS O (b d
O (b d
BIDI
2)
UCS UCS O (b d
b , factor de ramificacin

d , la profundidad del rbol de la solucin de m , la


profundidad del rbol

l , lmite de profundidad de bsqueda

REFERENCES REFERENCIAS
[Bouton 1901] Nim, un juego con una teora matemtica completa, Ann, Matemticas, Princeton
3, 35-39, 1901-1902.

EXERCISES CEREMONIAS
1. Lo que no est informado (o ciegos) buscar y cmo se diferencia de la informacin (o
heurstica) bsqueda?
2. La estructura grfica es ideal para la representacin de espacio de estado general. Explicar
por qu y definir los componentes individuales.
3. Definir las estructuras de gestin de colas utilizadas en DFS y BFS y explicar por qu cada
uno utiliza su particular estilo.
4. Cul es la definicin de la profundidad del rbol?

5. Cul es la definicin del factor de ramificacin?

6. Cules son el tiempo y el espacio complejidad y por qu son tiles como indicadores para la
bsqueda grfica?
7. Si un algoritmo siempre encuentra una solucin en un grfico, lo que se llama esta propiedad? Si
se encuentra siempre la mejor solucin, lo que es esta caracterstica?
8. Teniendo en cuenta DFS y BFS, el algoritmo siempre encontrar la mejor solucin para un
grafo no ponderado?
9. Utilizar los algoritmos de DFS y BFS para resolver un problema de las Torres de Hanoi. Qu
funciona mejor y por qu?
10. Proporcionar el orden de bsqueda para los nodos mostrados en la Figura 2.19 para DFS, BFS, DLS (d =
2), IDS (Profundidad de inicio = 1), y BIDI (iniciar el nodo A, el objetivo nodo I).
48 48 Artificial Intelligence Inteligencia artificial

11. En general, IDS es mejor que la DFS. Dibuje una grfica donde este no es el caso.
12. En general, IDS no est completa. Why? Por qu?

13. Identificar un mayor desventaja de bsqueda bidireccional.

14. Usando el algoritmo UCS, encontrar el camino ms corto de la A a F en la figura 2.20.

Figura 2.19 : Ejemplo grfico. FIGURA 2.20 : Example Ejemplo

grafo ponderado.
C aptulo 3I NFORMED S Earch

Me n Captulo 2, se explor la desinformados mtodos de bsqueda como primero en


profundidad y en amplitud bsqueda. Estos mtodos operan de un modo de fuerza bruta y son
posteriormente ineficiente. Por el contrario, este captulo se presentarn los mtodos de bsqueda
informados. Estos mtodos incorporan un heurstico, que se utiliza para determinar la calidad de cualquier
estado en el espacio de bsqueda. En una bsqueda grfica, esto resulta en una estrategia para la
expansin nodo (el nodo que debe ser evaluado siguiente). Una variedad de mtodos de bsqueda
informados ser investigado y, como con mtodos no informados, en comparacin utilizando una comn

un conjunto de mtricas.

Una heurstica es una regla de oro que pueden ayudar a resolver un problema
NOTE NOTA dado.

Heurstica toman en consideracin los conocimientos problema para ayudar a


guiar la
buscar dentro del dominio.

BUSCAR INFORMADO
En este captulo, se Exploraremos una serie de mtodos de bsqueda informado, incluso mejor primera
bsqueda, la bsqueda de una estrella, algoritmos iterativos de mejora tales como la escalada y el
recocido simulado, y, finalmente, la satisfaccin de restricciones. Nos nombre contiene demostrar cada
uno con un problema de muestra e ilustrar las heursticas utilizadas.
50 50 Artificial Intelligence Inteligencia artificial

MEJOR bsqueda primero (BEST-FS)

NOTE NOTA

PROPINA

En primero el mejor de bsqueda, el espacio de bsqueda se evala de acuerdo a una funcin


heurstica. Los nodos an no se ha evaluado se mantienen en una lista abierta y los que ya han sido
evaluadas se almacenan en una lista cerrada. La lista abierta se representa como una cola de prioridad,
de manera que los nodos no visitados pueden ser quitados de ella con el fin de su funcin de evaluacin
(recordar la cola de prioridad del Captulo 2 para el Uniforme-Costo de bsqueda).

La funcin de evaluacin f (n) se compone de dos partes. Estos son los funcin heurstica ( h (n) ) y el
costo estimado ( g (n) ), donde (ver la ecuacin 3.1):

(Ecuacin
f(n)=g(n)+h(n)
3.1)

Podemos pensar en el costo estimado como un valor medible de nuestro espacio de bsqueda, y la funcin
heurstica como una conjetura. La lista OPEN A continuacin, se construy con el fin de f (n) . Esto hace que la mejor
primera bsqueda fundamentalmente codiciosos , ya que siempre elige la mejor oportunidad local en la bsqueda de
frontera .
La frontera de bsqueda se define como el conjunto de oportunidades de nodos que se pueden
buscar siguiente. En primero el mejor bsqueda, la frontera es una cola de prioridad ordenados en f
(n) orden. Dado el orden estricto de f (n), la seleccin del nodo de evaluar desde la cola de prioridad
es codicioso.

La complejidad de la mejor-primero es O (b m ), tanto para el tiempo y el espacio (todos los nodos se


guardan en la memoria). Mediante el mantenimiento de una lista cerrada (para evitar volver a visitar
nodos y por lo tanto evitar bucles) la mejor-primera bsqueda es completa, pero no es ptima, como
una solucin se puede encontrar en una trayectoria ms larga (ms altas h (n) con un menor g (n ) valor.

Best-First bsqueda es una combinacin de funciones de evaluacin, h (n) y g (n). Tenga en cuenta
que en amplitud de bsqueda es un caso especial de Best-First bsqueda donde f (n) = h (n), y
bsqueda Uniforme-Cost es un caso especial de Best-First bsqueda donde f (n) = g (n) .

Best-First Search y la N-Queens Problema


Let 's ahora a discutir el mejor primer algoritmo de bsqueda en el contexto de un gran espacio de
bsqueda. La N- reinas problema es un problema de bsqueda en el que el resultado deseado es una N
por la junta N con N reinas de tal manera que ninguna reina amenace a otra (vase la figura 3.1). Para
esta placa, en cada una de las filas horizontales, verticales y diagonales, ninguna reina es capaz de
capturar otra.
Buscar informado 51 51

Figura 3.1 : Ejemplo de tabla de N-Queens (donde N = 4).

Figura 3.2 : Representacin en Consejo para el problema N-Queens (donde N = 4).

Un aspecto importante de la solucin de problemas y la bsqueda es la representacin. Para este


ejemplo, te elegimos una representacin sencilla que se ajuste al espacio de soluciones y as hace que
sea sencillo para enumerar. Cada posicin en el tablero est representado por un solo bit y si el bit es
cero, entonces la posicin est vacante, de lo contrario, est ocupada por una reina. Nos nombre contiene
simplificar el problema mediante la asignacin de una reina a cada fila en el tablero. Enumerando el
espacio de bsqueda se define entonces como mirar a los posibles movimientos de reinas
horizontalmente. Por ejemplo, la reina en la parte superior de la figura 3.1 se puede mover hacia la
izquierda o la derecha, pero la reina en la segunda fila slo puede moverse a la derecha (vase la figura
3.1). Figura 3.2 muestra tambin la representacin del tablero como un valor de 16 bits (unsigned short, en
el caso de C).

Dado un estado (la configuracin de la tarjeta), podemos identificar los estados nio de este tablero
mediante la creacin de una nueva junta para cada uno de los posibles reina
52 52 Artificial Intelligence Inteligencia artificial

cambios de posicin, dada nico movimiento horizontal. Para la Figura 3.2, esta configuracin de
la placa puede resultar en seis nuevos estados nio (una sola posicin de cambio de reina en
cada uno). Tenga en cuenta que, dado que mantenemos una lista cerrada, configuracin de la
tarjeta que ya han sido evaluados no se generan, lo que resulta en un pequeo rbol y bsqueda
ms eficiente.

Para el heurstico, que te utilizar el nodo "profundidad s en el rbol de h (n) , y el nmero de


conflictos (nmero de reinas que podra capturar otra) para g (n) .

Best-First Search Implementacin

Vamos que est ahora un vistazo a una sencilla implementacin de primero el mejor de
bsqueda en el lenguaje C. Nos nombre contiene presentar las dos funciones principales que
componen este algoritmo de bsqueda; el primero es best_fs, que es el bucle principal del
algoritmo. La segunda funcin, generateChildNodes, construye los estados posibles
(configuraciones de mesa), dado el estado actual.

Nuestra funcin principal (best_ FS) es el probador lista empadronador y solucin abierta.
Antes de llamar a esta funcin, se han creado nuestra lista abierta (cola de prioridad) y la lista
cerrada. El nodo raz, nuestra configuracin inicial del tablero, se ha colocado en la lista abierta.
La funcin best_fs (ver Listado 3.1), entonces Retiros de cola al siguiente nodo de la lista abierta
(mejor f (n)) si este nodo tiene ag (n) (nmero de conflictos) de cero, a continuacin, una
solucin se ha encontrado, y salir .

LISTADO 3.1: The Best-Bsqueda primera funcin principal.

void best_fs (pqueue_t * open_pq_p, queue_t closed_q_p *)

{{

node_t * node_p; costo int;

/ * Enumerar la lista Abrir * /

(! mientras isEmptyPQueue (open_pq_p)) { dePQueue (open_pq_p, (int *)


y node_p, y el costo); / * Solucin encontrado? * /

si (node_p-> g == 0) {

printf ( Encontrado Solution (profundidad% d): \ n , node_p-> h);


emitBoard (node_p);

break; descanso;

}}

generateChildNodes (open_pq_p, closed_q_p, node_p);


Buscar informado 53 53

}}

regreso;

}}

NO

T T

H MARIDO E mi

C do D re

Nota en el Listado 3.1 que mientras que el coste es el f (n) , comprobamos g (n) para determinar si se
encuentra una solucin. Esto es porque f (n) puede ser no cero, ya que incluye la profundidad de la
solucin ( h (n) ).

La aplicacin BestFS se puede encontrar en el CD-ROM en ./software/ CH3 / bestfs.c.

La siguiente funcin, generateChildNodes, toma la configuracin de la tarjeta actual y enumera todas las posibles
configuraciones nio por potencialmente mover cada reina una posicin. La matriz mueve define los movimientos
posibles para cada posicin en el tablero (- 1 significa que slo la derecha, 2 significa tanto izquierda y derecha, y
1 significa solamente la izquierda). El tablero es entonces enumer, y cada vez que se encuentra una reina, la
matriz se mueve est marcada por los movimientos legales, y los nuevos nodos secundarios se crean y se carga
en la lista abierta.

Tenga en cuenta que comprobamos la lista cerrada para evitar la creacin de una configuracin de
tablero que nos hemos visto antes. Una vez que se han comprobado todas las posiciones en el tablero
actual y nuevos nodos secundarios se crean, la funcin devuelve a best_fs.

Cuando se encuentra una nueva configuracin de la tarjeta, la funcin CreateNode se llama para
asignar una nueva estructura de nodos y coloca este nuevo nodo en la lista abierta (y la lista de
CERRADO). Tenga en cuenta aqu que el uno ms la profundidad (h (n)) se pasa a identificar el nivel de
la solucin en el rbol.

LISTADO 3.2: Los generateChildNodes funcionan para enumerar los nodos secundarios.

void generateChildNodes (pqueue_t * pq_p,


queue_t * closed_q_p, node_t * node_p)

{{

int i;

cboard1 corto sin signo, cboard2; const int mueve [16] = {-1, 2, 2,
1,

-1, 2, 2, 1, -1, 2, 2, 1, -1, 2, 2, 1};

/ * Generar los nodos hijos del nodo actual por * barajar las piezas en el
tablero.
54 54 Artificial Intelligence Inteligencia artificial

*/

for (i = 0; i <16; i ++) {

/ * Hay una reina en este puesto? * / If ( checkPiece (node_p->


tablero, i)) {
/ * Retire actual reina del tablero * /

cboard1 = cboard2 = (node_p-> planchar y ~ (1 << (15-i))); si (se mueve [i] == -1)
{

/ * Slo se puede mover hacia la derecha * / cboard1 | = (1


<< (15- (i + 1)));
if (! searchQueue (closed_q_p, cboard1)) {

(void) CreateNode (pq_p, closed_q_p, cboard1, node_p-> h + 1);

}}

} Else if (se mueve [i] == 2) {

/ * Se puede mover hacia la izquierda o hacia la derecha


* / cboard1 | = (1 << (15- (i + 1)));
if (! searchQueue (closed_q_p, cboard1)) {

(void) CreateNode (pq_p, closed_q_p, cboard1, node_p-> h + 1);

}}

cboard2 | = (1 << (15- (i-1)));

if (! searchQueue (closed_q_p, cboard2)) {

(void) CreateNode (pq_p, closed_q_p, cboard2, node_p-> h + 1);

}}

} Else if (se mueve [i] == 1) {/ * Slo se puede mover


hacia la izquierda * /
cboard2 | = (1 << (15- (i-1)));

if (! searchQueue (closed_q_p, cboard2)) {

(void) CreateNode (pq_p, closed_q_p, cboard2, node_p-> h + 1);

}}

}}

}}

}}

regreso;

}}
Deje que 's ahora miran el algoritmo en accin. Una vez invocado, un nodo raz es encolado al
azar y luego se enumeran las posibles configuraciones del nio y se carga en la lista abierta
(vase el Listado 3.3). La demostracin aqu muestra un rbol superficial de tres configuraciones
marcada, el nodo raz, uno en el nivel uno, y la solucin se encuentra a una profundidad de dos.
Una versin condensada de esta ejecucin se muestra en la Figura 3.3.
Buscar informado 55 55

Figura 3.3 : Vista grfica (condensada) del rbol de bsqueda en el listado 3.3.

LISTADO 3.3: primero el mejor buscar el problema N-Queens (N = 4).

New nodo: evaluateBoard 4824 = (h 0, g 3) Junta inicial:

tablero es 0x4824 0 1 0 0 1 0 0 0
56 56 Artificial Intelligence Inteligencia artificial

0010

0100

Comprobacin de 0x4824 tabla (h 0 g 3)

New nodo: evaluateBoard 2824 = (h 1, g 2) New nodo: evaluateBoard


8824 = (h 1, g 3) New nodo: evaluateBoard 4424 = (h 1, g 4) New nodo:
evaluateBoard 4814 = (h 1, g 3) New nodo: evaluateBoard 4844 = (h 1, g
4) New nodo: evaluateBoard 4822 = (h 1, g 3) New nodo: evaluateBoard
4828 = (h 1, g 2)

Comprobacin de 0x2824 tabla (h 1 g 2)

New nodo: evaluateBoard 1824 = (h 2, g 1) New nodo: evaluateBoard


2424 = (h 2, g 5) New nodo: evaluateBoard 2814 = (h 2, g 0) New nodo:
evaluateBoard 2844 = (h 2, g 2) New nodo: evaluateBoard 2822 = (h 2, g
3) New nodo: evaluateBoard 2828 = (h 2, g 2)

Comprobacin de 0x2814 tabla (h 2 g 0) Encontrado


Solution (h 2 g 0):

tablero es 0x2814 0 0 1 0 1 0 0 0 0 0 0 1
0100

Las variantes de Best-First Search

Una variante interesante de la mejor primera bsqueda se llama codiciosos mejor reservacin
-primero . En esta variante, f (n) = h (n) , y la lista abierta es ordenados en f orden. Desde h es el
nico factor utilizado para determinar qu nodo para seleccionar el siguiente (identificado como la
proximidad al objetivo), es que est definida como codicioso. Debido a esto, codicioso primero el
mejor no es completa como la heurstica no es admisible (porque puede sobreestimar el camino
hacia la meta). Nos Discutiremos la admisibilidad con ms detalle en la discusin de la bsqueda A-
estrella.

Otra variante de mejor- primera bsqueda es haz de bsqueda , como codicioso mejor
primera bsqueda, utiliza la heurstica f (n) = h (n) . La diferencia con el haz de bsqueda es que
mantiene slo un conjunto de las mejores nodos candidatos para la expansin y simplemente
lanza la forma en reposo. Esto hace haz de bsqueda mucho ms eficiente que la memoria
codiciosos mejor primera bsqueda, pero sufre en que los nodos se puede descartar que podra
resultar en el camino ptimo. Por esta razn, el haz de bsqueda no es ni ptimo o completa.
Buscar informado 57 57

UNA BSQUEDA
Una bsqueda *, como mejor primera bsqueda, evala un espacio de bsqueda utilizando una funcin
heurstica. Pero A * utiliza tanto el costo de llegar desde el estado inicial al estado actual ( g (n) ), as como un
costo estimado (heurstico) de la ruta desde el nodo actual a la meta ( h (n) ). Estos se suman para la funcin de
coste f (n) (Vase la ecuacin 3.1). La bsqueda A *, a diferencia del primer mejor, es a la vez una ptima y
completa.

Las listas abiertas y cerradas son utilizados de nuevo para identificar la frontera para la bsqueda
(lista abierta) y los nodos evaluados hasta el momento (cerrado). La lista OPEN se implementa como
una cola de prioridad ms bajo ordenado en f (n) orden. Lo que hace que A * interesante es que se
re-evala la funcin de costos para los nodos, ya que les reencuentra continuamente. Esto permite
que un * para encontrar de manera eficiente el camino mnimo desde el estado inicial al estado final.

Vamos 's ahora mirar a un * en un alto nivel y luego te cavar ms y aplicarlo a un problema bien
conocido. Listing 3.4 proporciona el flujo de alto nivel para A *.

LISTADO 3.4: flujo de alto nivel para la A * algoritmo de bsqueda.

Inicializar lista abierta (cola de prioridad) inicializar lista


cerrada

Lugar nodo de inicio en la lista de bucle abierto, mientras que la lista


no est vaca ABIERTO

Obtener mejor nodo (padre) de la lista OPEN (menos f ( n )) si el padre es


el nodo objetivo, hecho

Lugar de los padres en la lista cerrada

Ampliar padre para todos los nodos adyacentes (adj_node) si adj_node est en la
lista cerrada

deseche adj_node y continuar ms si adj_node est en la


lista ABIERTO

si adj_node 's g valor es mejor que el OPEN.adj_node ' s g valor


OPEN.cur_node descarte

calcular adj_node sg', h y los valores f establecer predecesor


adj_node a los padres aadir a la lista de adj_node ABRIR
continue continuar

end fin

else ms

calcular adj_node sg', h y los valores f establecer adj_node


predecesor de los padres
58 58 Artificial

end fin
end fin
bucle

lis

lis

me

y con

nod

el nu

cu

espa
A med

la p

cara

para
O (b
La
NOTE NOTA

ruta de
Esta
requier
nunca
monot
s

mont

e
3.4 : El Ocho Puzzle y una demostracin de pasar de una configuracin inicial a la configuracin meta (no incluye todos los pasos).
Buscar informado 59 59

A * Bsqueda y los ocho Puzzle

Mientras que A * se ha aplicado con xito a dominios de problemas tales como la ruta de los
hechos, que nombre contiene aplica aqu a lo que 's llamado el rompecabezas Ocho (tambin
conocido como el N de M, o n 2 -1 rompecabezas de baldosas). Esta variacin particular del
rompecabezas se compone de ocho azulejos en un 3 por 3 cuadrcula. Una ubicacin no
contiene azulejo, que puede ser utilizado para mover otros azulejos para migrar de una
configuracin a otra (vase la figura 3.4).

Nota en la Figura 3.4 que hay dos movimientos legales que son posibles. El '1 ' del azulejo
puede mover hacia la izquierda, y el '6 ' del azulejo se puede mover hacia abajo. La
configuracin meta final se muestra a la derecha. Tenga en cuenta que esta es una variacin de
la meta, y la que nos 'll usamos aqu.

El Ocho Puzzle es interesante porque est un problema difcil de resolver, pero que 's sido estudiado
extensamente y se lo tanto muy bien entendido. [Archer 1999] Por ejemplo, el nmero de posibles
configuraciones de la junta de la Ocho Puzzle es (n * n) !, pero slo la mitad de estos son configuraciones
legales.

PROPINA

Durante la dcada de 1870, la (variante 4 por 4 de la N por rompecabezas M) Quince Puzzle


convirti en una mana rompecabezas mucho como el Rubik cubo de la dcada de 1970 y 1980 's.

En promedio, se requieren 22 movimientos para resolver el 3 por 3 variante del rompecabezas. Pero considerando 22
como la profundidad media del rbol, con un factor de ramificacin promedio de 2,67, 2,4 billones configuraciones de
baldosas no nicos se puede evaluar.

Representacin de ocho Puzzle

Nos te usamos una representacin comn para los ocho Puzzle, un vector lineal que contiene la
colocacin de baldosas de izquierda a derecha, de arriba abajo (vase la figura 3.5). Esta figura en
particular muestra los movimientos posibles de la configuracin inicial de puzzle a profundidad dos de
este rbol de espacio de estado particular.

Figura 3.5 : Ocho configuracin Puzzle utilizando un vector simple.


60 60 Artificial
Pa

el no

azulejo
(excluy
coste d

ms

pe

de este

esta

Hay
NOTE NOTA

el obje
Figura 3.6: Ocho Puzzle rbol termina en profundidad dos, que ilustra las funciones de coste.
Buscar informado 61 61

PROPINA

azulejos que resume la distancia de cada baldosa fuera de lugar baldosas a su ubicacin correcta. Para
esta aplicacin, que nombre contiene demostrar la heurstica simple, pero eficaz, azulejos-fuera-de-
lugar.

Si bien hay (3 * 3)! configuracin de la tarjeta posibles, slo hay (3 * 3)! / 2 configuraciones vlidas. La
otra mitad de las configuraciones son irresolubles. Nos 'll no detenerse en esto aqu, sino en la
implementacin de cdigo se ver en la prueba initPuzzle utilizando el concepto de inversiones para
validar la configuracin de la tarjeta. Este concepto puede ser analizada ms en [KGong 2005].

A * Buscar Implementacin

El ncleo de la de A-estrella algoritmo se implementa en el Astar funcin (). Esta funcin


implementa A-estrella como se muestra en el listado 3.4. Nos 'll tambin presentar la funcin de
evaluacin, que implementa el 'o los azulejos fuera de lugar ' mtrica. La lista de funciones de
apoyo y otra no se presentan aqu, pero estn disponibles en el CD-ROM para su revisin.

La A * aplicacin se puede encontrar en el CD-ROM en


NOTE NOTA ./software/ch3/

astar.c.

Vamos 's empezar con la funcin de evaluacin, que calcula el costo estimado a partir del nodo actual al
objetivo (como el nmero de baldosas fuera de lugar), vea el listado 3.6. La funcin simplemente enumera
la placa 3 por 3 como un vector unidimensional, incrementar un valor de puntuacin siempre que sea una
baldosa est presente en una posicin que no debe estar en. Esta puntuacin se devuelve entonces a la
persona que llama.

LISTADO 3.6: El Ocho rompecabezas h (n) Coste estimado mtrica.

doble evaluateBoard (board_t * board_p)

{{

int i;

const prueba int [MAX_BOARD-1] = {1, 2, 3, 4, 5, 6, 7, 8}; int puntuacin = 0;

for (i = 0; i <MAX_BOARD-1; i ++) {score + = (board_p-> array [i] =


prueba [i]!);
}}

volver puntuacin (doble);

}}
62 62 Artificial Intelligence Inteligencia artificial

La funcin Astar se muestra en el listado 3.7. Antes de llamar a esta funcin, se han seleccionado
una configuracin de la tarjeta al azar y lo coloc en la lista abierta. Luego, trabajamos a travs de la
lista abierta, recuperando el mejor nodo (con el menor valor f usando getListBest) e inmediatamente
colocarlo en la lista cerrada. Verificamos si este nodo es la solucin, y si es as, emitimos el camino
desde el nodo inicial para el objetivo (que ilustra los movimientos que se hicieron). Para minimizar
buscar demasiado profundamente en el rbol, nos detenemos nodos que enumeran ms all de una
profundidad dada (que ellos no busques ms).

El siguiente paso es enumerar los posibles movimientos de este estado, lo que ser un
mximo de cuatro. La funcin getChildBoard se utiliza para devolver un nodo adyacente
(utilizando el ndice aprobada en determinar qu movimiento posible para hacer). Si un
movimiento ISN 't posible, entonces se devuelve un valor NULL y ' s ignorada.

Con un nuevo nodo secundario, buscamos en primer lugar para ver si 'ya ha estado
evaluado (si se ' s en la lista cerrada). Si es as, entonces Estamos para destruir este nodo y
continuar (para obtener el nodo secundario para la configuracin actual de la mesa). Si nos 'No
he visto esta configuracin particular del tablero antes, calculamos la heurstica para el nodo. En
primer lugar, inicializar el nodo 's de profundidad en el rbol como el padre ' s profundidad ms
uno. Despus, llamamos a evaluateBoard para obtener el o los azulejos fuera de la lugar
mtrica, que actuar como nuestro valor h (coste desde el nodo raz a este nodo). El valor de g
se establece en la profundidad actual, y el valor de f se inicializa con la ecuacin 3.1.

(Ecuacin 3.1)

Se incluye un alfa y beta parmetro aqu para dar diferentes pesos a los g y h valores. En esta
implementacin, alfa es 1,0 y beta es 2,0. Esto significa que se le da ms peso al valor h, y,
posteriormente, cuanto ms cerca de un nodo es el objetivo se pesa ms alta que su profundidad en el
rbol de espacio de estado.

Con la f valor calculado, comprobamos para ver si el nodo est en la lista abierta. Si lo es, se
comparan sus f valores. Si el nodo de la lista abierta tiene un peor f valor, el nodo de la lista
abierta se desecha y el nuevo nodo secundario toma su lugar (establecimiento del enlace
predecesor de los padres, as que sabemos cmo hemos llegado a este nodo). Si el nodo de la
lista abierta tiene una mejor f valor, entonces el nodo en la lista abierta permanece en la lista
abierta y el nuevo nio est descartado.

Por ltimo, si existe el nuevo nodo secundario en la lista ni cerrado o abierto, que est un
nuevo nodo que 'todava hemos de ver. Es 's simplemente aade a la lista abierta, y el proceso
contina.

Este algoritmo contina hasta que uno de los dos eventos se producen. Si la lista abierta se
vaca, entonces no hay solucin se encontr y el algoritmo
Buscar informado 63 63

salidas. Si se encuentra la solucin, entonces showSolution se llama, y los nodos unidos entre s
a travs de los enlaces predecesor se enumeran para mostrar la solucin desde el nodo inicial al
nodo objetivo.

LISTADO 3.7: El algoritmo A *.

vaco Astar (void)

{{

board_t * cur_board_p, child_p *, * temp; int i;

/ * Si bien los artculos estn en la lista abierta * / while (


ListCount (y openList_p)) {

/ * Obtener el actual mejor tabla en la lista abierta * / cur_board_p =


getListBest (y openList_p); putList (y closedList_p, cur_board_p);
/ * Tenemos una solucin? * /

si (cur_board_p-> h == (doble) 0.0) { showSolution


(cur_board_p); regreso;

} Else {

/ * Heurstica - nmero medio de pasos es 22 para un 3x3, por lo * don 't ir


demasiado profundo.

*/

si (cur_board_p-> profundidad> MAX_DEPTH) continuar; / * Enumerar


estados adyacentes * /

for (i = 0; i <4; i ++) {

child_p = getChildBoard (cur_board_p, i); si (child_p! = (board_t *)


0) {

si ( onList (y closedList_p, child_p-> array, NULL)) { nodeFree (child_p);


continuar;

}}

child_p-> profundidad = cur_board_p-> profundidad + 1; child_p-> h =


evaluateBoard (child_p); child_p-> g = (doble) child_p-> profundidad;

child_p-> f = (child_p-> g * ALPHA) + (child_p-> h * BETA); / * Nueva junta hijo en


la lista abierta? * /

si ( onList (y openList_p, child_p-> array, NULL)) {temp = getList (y


openList_p, child_p-> array);
si (TEMP-> g <child_p-> g) {
64 64 Artificial Intelligence Inteligencia artificial

nodeFree (child_p); putList (y openList_p, temp);


continuar;

}}

nodeFree (temp); } Else {


/ * Foro hijo sea doesn 't existe, o es mejor que una

* * anterior junta. Engancharlo a los padres y el lugar en el

* * lista abierta.

*/

child_p-> pred = cur_board_p; putList (y openList_p, child_p);


}}

}}

}}

}}

}}

regreso;

}}

Ocho rompecabezas demostracin con A *

En la implementacin, las baldosas estn etiquetados AH con un espacio utilizado para denotar
el azulejo en blanco. Tras la ejecucin, una vez que se encuentra la solucin, el camino tomado
de la placa inicial al objetivo se enumera. Esto se muestra a continuacin en el Listado 3.8,
minimizado por el espacio.

LISTADO 3.8: Una muestra de la ejecucin del programa de A * para resolver el rompecabezas Ocho.

$. / Astar

GBD

FCH

EA EA

BGD

FCH

EA EA

BGD

FCH
EA EA

GBD

FC FC
Buscar informado 65 ses

EAH

... ...

ABC A B C

DF Df

GEH GEH

ABC A B C

DF Df

GEH GEH

ABC A B C

DEF DEF

GH

ABC A B C

DEF DEF

GH

A * Variantes
La popularidad de A * ha dado lugar a una serie de variantes que ofrecen diferentes caractersticas. El
-Profundizacin iterativa A * algoritmo da marcha atrs a otros nodos cuando el coste de la rama actual
supera un umbral. Para reducir al mnimo los requisitos de memoria de A *, el simplificado de memoria
limitados en A * fue creado algoritmo (SMA *). SMA * utiliza la memoria puesta a su disposicin, y cuando
se agota la memoria, el algoritmo cae el nodo menos prometedora para hacer espacio para nuevos nodos
de bsqueda de la frontera.

Las solicitudes de bsqueda A *

Una bsqueda * es una tcnica popular y ha visto su uso como un algoritmo de ruta de
investigacin para los juegos de estrategia de equipo. Para un mejor rendimiento, muchos
juegos emplean mtodos ms simples de acceso directo a la trayectoria de investigacin, al
limitar el espacio de su movimiento (usando una grfica mucho ms dispersa sobre el paisaje), o
por rutas pre-clculo para su uso en el juego.

Bajadas BUSCAR
Sube de la colina es un algoritmo iterativo de mejora que es similar al codicioso mejor primera bsqueda,
excepto que no se permite dar marcha atrs. En cada paso en la bsqueda, un solo nodo se elige a
seguir. El criterio para el nodo a seguir es que es el mejor estado para el estado actual. Desde la frontera
de la bsqueda es un solo nodo, el algoritmo tambin es similar a la bsqueda del haz usando un ancho
de haz de un (nuestra lista abierta puede contener exactamente un nodo).
66 66 Artificial Intelligence Inteligencia artificial

Figura 3.7: Espacio de estados que ilustra el problema con la subida de pendientes.

El problema con la subida de pendientes es que el mejor nodo para enumerar a nivel local
puede no ser el mejor nodo a nivel mundial. Por esta razn, la escalada puede llevar a ptimos
locales, pero no necesariamente el ptimo global (la mejor solucin disponible). Considere la
funcin en la Figura 3.7. Existe un ptimo local y un ptimo global. El objetivo debe ser
maximizar la funcin, pero si nos ponemos en el extremo izquierdo y trabajamos nuestro camino
hacia el ptimo global, nos quedamos atascados en el ptimo local.

Recocido simulado (SA)


El recocido simulado (SA) es otro algoritmo de mejoramiento iterativo en el que se incorpora la
aleatoriedad para expandir el espacio de bsqueda y evitar ser atrapado en mnimo local. Como
su nombre lo indica, el algoritmo simula el proceso de recocido.

El recocido es una tcnica en la de fundicin de metal, donde el metal fundido se calienta y luego se enfra
de una manera gradual para distribuir uniformemente las molculas en una estructura cristalina. Si el metal se
enfra demasiado rpido, una estructura cristalina no da como resultado, y el metal slido es dbil y quebradizo
(habiendo sido llena de burbujas y grietas). Si se enfra de una manera gradual y controlada, a formas
cristalinas de la estructura a nivel molecular resulta en una gran integridad estructural.

El algoritmo bsico para el recocido simulado se muestra en el listado 3.9. Empezamos con un
candidato solucin inicial y el bucle mientras que la temperatura es mayor que cero. En este bucle,
creamos una solucin candidato adyacente al perturbar nuestra solucin actual. Esto cambia la solucin a
una solucin vecina, pero al azar. A continuacin, calcular la energa delta entre la nueva solucin (al
lado), y nuestra solucin actual. Si esta energa es menos delta
Buscar informado 67 67

que cero, entonces nuestra nueva solucin es mejor que el anterior, y aceptamos que (nos
movemos la nueva solucin adyacente a nuestra solucin actual).

LISTADO 3.9: Simulacin de algoritmo de recocido.

simulated_annealing ()

{{

cur_solution = random () compute (cur_solution),


mientras que (Temperatura> 0)

adj_solution = perturb_solution (cur_solution) compute (adj_solution)

delta E = adj_solution.energy - cur_solution.energy / * es la nueva solucin mejor,


luego llevarlo * /
si (delta E <0)

cur_solution = adj_solution dems

p = exp (-deltaE / temperatura)

/ * Azar aceptar peor solucin * / if (p> Al azar (0..1)) =


cur_solution adj_solution

de extremo a extremo

reducir extremo Temperatura

simulated_annealing final

Si nuestra nueva solucin no era mejor que el anterior, entonces lo aceptamos con una
probabilidad proporcional a la temperatura actual y la energa delta. Cuanto menor sea la
temperatura, menor es la probabilidad que te aceptar una solucin peor. Pero la mejor la energa
del delta, es ms probable que te acepten. Esta probabilidad se calcula como se muestra en la
ecuacin 3.2.

(Eq 3.2)

Desde nuestra temperatura disminuye con el tiempo, Es menos probable que una solucin peor ser
aceptada. Al principio, cuando la temperatura es alta, peores soluciones se pueden aceptar lo que permite
la bsqueda de alejarse de mximo local en busca del mximo global. A medida que la temperatura
disminuye, se hace ms difcil aceptar una solucin que es peor, lo que significa que el algoritmo se
asienta en una solucin y simplemente afina (si es posible).
68 68 Artificial Intelligence Inteligencia artificial

Figura 3.8: Una gira TSP muestra a travs de un pequeo grfico.

El algoritmo de recocido simulado clsica tambin incluye monte carlo ciclos donde se
realizan una serie de ensayos antes de disminuir la temperatura.

El problema del viajante (TSP)

Para demostrar el algoritmo de recocido simulado, que te utilizamos el problema del viajante
clsico (o TSP). En el TSP, nos estamos Dado un conjunto de ciudades y un costo relativo para
viajar entre cada ciudad a la otra. El objetivo es encontrar un camino a travs de todas las
ciudades en las que se visitan todas las ciudades una vez, y encontrar el recorrido ms corto en
general. Nosotros empezaremos en una ciudad, se visitan la ciudad, y luego terminar en la
ciudad inicial.

Considere el grfico mostrado en la Figura 3.8. Muchas ciudades estn conectadas entre s, sino
un camino ptimo que existe recorridos cada ciudad slo una vez.

El TSP es a la vez interesante e importante porque tiene implicaciones prcticas. Considere


los problemas de transporte que se requieren entregas y combustible y el tiempo han de ser
minimizado. Otra aplicacin interesante es el de perforar agujeros en una placa de circuito. Un
nmero de agujeros debe ser perforado de forma rpida en una sola placa, y con el fin de hacer
esto, se necesita un camino ptimo para reducir al mnimo el movimiento de la broca (que ser
lento). Por lo tanto, las soluciones a la TSP puede ser muy til.

TSP tour Representacin

Para representar un conjunto de ciudades y la gira entre ellos, que te utilizamos un implcito lista
de adyacencia . Cada ciudad se encuentra en la lista, y las ciudades que estn al lado el uno al
otro estn implicados como conectado en la gira. Recordemos nuestra TSP muestra en la Figura
3.8, donde siete ciudades componen el mundo. Esto se representa como se muestra en la
Figura 3.9.
Buscar informado 69 69

Figura 3.9: lista de adyacencia para el tour TSP muestra en la Figura 3.8.

FIGURA 3.10: Demostracin de la fila de intercambio de perturbar el recorrido.


70 70 Artificial Intelligence Inteligencia artificial

Tenga en cuenta que la lista que se muestra en la Figura 3.9 es una lista nica con el fin gira.
Cuando se llega al final de la lista, nos envuelva al primer elemento, completando el recorrido.
Para perturbar el recorrido tomamos dos filas al azar de la lista y de intercambio. Esto se
demuestra en la Figura 3.10. Ntese cmo simplemente cambiando dos elementos, el recorrido
est muy perturbado y resulta en una longitud de recorrido peor.

Implementacin de recocido simulado

La implementacin de recocido simulado es en realidad bastante simple en el lenguaje C. Nos


nombre contiene revisin de tres de las funciones que componen la puesta en prctica de
recocido simulado, el principal algoritmo de recocido simulado, perturbando una gira, y
calculando la duracin de la excursin. El resto de funciones estn disponibles en el CD-ROM.

LISTADO 3.10: Estructuras para la solucin de TSP.

typedef struct {int x, y;

City_t}; typedef struct {


ciudades city_t [MAX_CITIES]; doble tour_length;
Solution_t};

La distancia euclidiana de la gira se calcula con compute_tour. Esta funcin gua a travs de la
gira, la acumulacin de los segmentos entre cada ciudad (ver Listado 3.11). Se termina
envolviendo alrededor de la lista, y aadiendo en la distancia desde la ltima ciudad de nuevo a
la primera.

LISTADO 3.11: Clculo del recorrido euclidiana con compute_tour .

vaco compute_tour (solution_t * Sol)

{{

int i;

doble tour_length = (doble) 0,0; for (i = 0; i <MAX_CITIES-1;


i ++) {tour_length + =

euclidean_distance (

Sol-> ciudades [i] .x, Sol-> ciudades [i] .y, Sol-> ciudades [i +
1] .x, Sol-> ciudades [i + 1] .y);
Buscar informado 71 71

}}

tour_length + = euclidean_distance (

Sol-> ciudades [MAX_CITIES-1] .x, Sol-> ciudades


[MAX_CITIES-1] .y, Sol-> ciudades [0] .x, Sol-> ciudades [0]
.y);

Sol-> tour_length = tour_length; regreso;

}}

Dada una solucin, podemos crear una solucin adyacente usando el perturb_tour funcin. En esta
funcin, seleccionamos aleatoriamente dos ciudades de la gira, e intercambiarlos. Existe un bucle para
asegurar que han seleccionado dos puntos aleatorios nicos (de modo que nosotros no 't cambiar una
sola ciudad con s mismo). Una vez seleccionadas, las coordenadas X e Y son intercambiados y la funcin
se ha completado.

LISTADO 3.12: Perturbar la gira mediante la creacin de una solucin adyacente.

vaco perturb_tour (solution_t * Sol)

{{

int p1, p2, x, y; do {

p1 = RANDMAX (MAX_CITIES);

p2 = RANDMAX (MAX_CITIES); } While (p1 == p2);

x = Sol-> ciudades [p1] .x; y = Sol-> ciudades


[p1] .y;

Sol-> ciudades [p1] .x => Sol- ciudades [p2] .x; Sol->


ciudades [p1] .y => Sol- ciudades [p2] .y; Sol-> ciudades
[p2] .X = x; Sol-> ciudades [p2] .y = y;

regreso;

}}

Finalmente, la funcin simulated_annealing implementa el ncleo del algoritmo de recocido


simulado. El algoritmo se enrolla alrededor de la temperatura, reduciendo constantemente hasta
que alcanza un valor cercano a cero. La solucin inicial se ha inicializado antes de esta funcin.
Tomamos la solucin actual y que perturbemos (alter azar ella) para una serie de
72 72 Artificial Intelligence Inteligencia artificial

iteraciones (la etapa de Monte Carlo). Si la nueva solucin es mejor, lo aceptamos copindolo en
la solucin actual. Si la nueva solucin es peor, a continuacin, lo aceptamos con una
probabilidad definida por la ecuacin 3.2. La peor es la nueva solucin y la ms baja es la
temperatura, menos probable es que para aceptar la nueva solucin. Cuando la etapa de Monte
Carlo es completa, la temperatura se reduce y el proceso contina. Cuando el algoritmo se
completa, emitimos el recorrido por la ciudad.

LISTADO 3.13: El recocido simulado implementacin de la funcin principal.

int simulated_annealing (void)

{{

doble temperatura = INITIAL_TEMP, delta_e; solution_t tempSolution;

int iteracin;

mientras que (temperatura> 0,0001) {

/ * Copiar la solucin actual a una temp * / memcpy ((char *) y


tempSolution,

(Char *) y curSolution, sizeof (solution_t)); / * Monte Carlo iteraciones


*/
para (iteracin = 0;

iteracin <NUM_ITERATIONS; iteracin ++) { perturb_tour (y


tempSolution); compute_tour (y tempSolution);

delta_e = tempSolution.tour_length - curSolution.tour_length;

/ * Es la nueva solucin mejor que la anterior? * / If (delta_e <0,0) {

/ * Aceptar la nueva, mejor, la solucin * / memcpy ((char *) y


curSolution,

(Char *) y tempSolution, sizeof (solution_t)); } Else {

/ * Probabilsticamente aceptar una solucin peor * /

si (exp ((-delta_e / temperatura))> Al azar ()) {memcpy ((char *) y


curSolution,

(Char *) y tempSolution, sizeof (solution_t));

}}

}}

}}

/ * Disminuir la temperatura * /
Buscar informado 73 73

temperatura * = ALPHA;

}}

return 0; Return 0;

}}

El recocido simulado permite un paseo aleatorio a travs de un espacio de estados, con avidez
siguiendo el mejor camino. Pero recocido simulado tambin probabilsticamente permite seguir
caminos peores en un esfuerzo por escapar de mximos locales en busca del mximo global.
Esto hace que el recocido simulado una bsqueda al azar, pero heursticamente impulsada. A
pesar de sus ventajas, recocido simulado es incompleta y subptima.

Demostracin de recocido simulado

Vamos que est ahora a ver el algoritmo de recocido simulado en accin. Nos nombre contiene
vistazo al algoritmo de una variedad de perspectivas, de la programacin de la temperatura, a
una solucin de la muestra a TSP por 25 ciudades.

Figura 3.11: La curva de decaimiento de la temperatura utilizando la ecuacin 3.3.


74 74 Artificial Intelligence Inteligencia artificial

El programa de temperatura es un factor en la probabilidad de aceptar una solucin peor. En


esta implementacin, que te utilizamos una descomposicin geomtrica de la temperatura, como
se muestra en la ecuacin 3.3.

(Ecuaci
T = aT
n 3.3)

En este caso, utilizamos un alfa de 0.999. La decadencia temperatura usando esta ecuacin
se muestra en la Figura 3.11.

La aptitud relativa de la solucin a travs de una ejecucin se muestra en la Figura 3.12. Este
grfico muestra la duracin de la excursin durante el descenso de la temperatura. Tenga en cuenta
en el lado izquierdo de la grfica que la aptitud relativa es muy irregular. Esto es debido a la alta
temperatura de aceptar un nmero de soluciones ms pobres. Como la temperatura disminuye (se
desplazan a la derecha de la grfica), las soluciones ms pobres no se aceptan como fcilmente. En
el lado izquierdo de la grfica, el algoritmo permite la exploracin del espacio de estado, donde en el
lado derecho de la grfica, se sintoniza fina la solucin.

Un recorrido de la muestra TSP se muestra finalmente en la figura 3.13. Esta solucin


particular era para una gira de 25 ciudad.

Figura 3.12: La aptitud relativa.


Buscar informado 75 75

Figura 3.13: Muestra gira TSP optimizado por recocido simulado.

Bsqueda TABU
Bsqueda Tabu es un muy simple algoritmo de bsqueda que es fcil de implementar y puede ser
muy eficaz. La idea bsica detrs de la bsqueda Tabu es bsqueda local con un Tabu lista de nodos
que se compone de nodos previamente evaluados. Por lo tanto, la bsqueda puede deteriorarse,
pero esto permite que el algoritmo para ampliar la bsqueda para evitar que se atasque en mximos
locales. Durante cada iteracin del algoritmo, el actual candidato de bsqueda se compara con la
mejor solucin encontrada hasta el momento para que el mejor nodo se guarda para ms adelante.
Despus de algunos criterios de bsqueda se ha cumplido (una solucin encontrada, o un nmero
mximo de iteraciones) las salidas de algoritmo.

La lista Tabu puede ser de tamao finito de manera que los nodos ms antiguos pueden ser
dejados haciendo espacio para nuevos nodos Tabu. Los nodos de la lista Tabu tambin pueden
ser programados, de tal manera que un nodo slo puede ser Tabu durante algn perodo de
tiempo. Cualquiera de los casos permite que el algoritmo de reutilizar la lista Tabu y reducir al
mnimo la cantidad de memoria necesaria.
76 76 Artificial Intelligence Inteligencia artificial

Figura 3.14: El problema 4-Queens resuelto por la bsqueda Tabu.

Monitoreo de bsqueda Tabu a travs del espacio de estado del problema 4-Queens se muestra en la
Figura 3.14. La posicin inicial es la raz, que tiene un rcord de tres (tres conflictos). El objetivo es reducir al
mnimo la puntuacin, donde cero es una solucin (nodo objetivo). En la primera iteracin, los nodos vecinos
son evaluados, y la mejor seleccionados. Tenga en cuenta tambin aqu que nuestro nodo inicial se ha colocado
en la lista Tabu. En la iteracin dos, los vecinos se evalan para el nodo actual y la mejor se elige para seguir
adelante. La lista Tabu ahora contiene los ltimos dos mejores nodos. En esta iteracin, que he encontrado un
nodo con una puntuacin de cero, lo que indica un nodo meta y el algoritmo termina.

El flujo bsico para la bsqueda Tabu se muestra en el listado 3.14. Dada una posicin inicial (que se
muestra aqu como una posicin aleatoria inicial), el espacio de bsqueda se enumera tomando el mejor
nodo vecino que no es Tabu. Si es mejor que nuestro mejor solucin guardada, se convierte en la mejor
solucin. El proceso contina con la ltima solucin hasta que se cumpla un criterio de terminacin.
Buscar informado 77 77

LISTADO 3.14: El flujo bsico del algoritmo de bsqueda Tabu.

tabu_search ()

{{

cur_solution = random () evaluate_position (cur_solution) mejor


= cur_solution
tabu (cur_solution)

while (! termination_critera) {

/ * Obtener el mejor vecino, no en la lista tabu * / cur_solution =


best_non_tabu_neighbor (cur_solution) evaluate_position (cur_solution)

tabu (cur_solution)

si (cur_solution.f <best.f) {mejor = cur_solution

}}

}}

volver mejor

}}

Para ilustrar el algoritmo de bsqueda Tabu, que te utilizamos el problema N-Queens como se
ha demostrado con el primero el mejor algoritmo de bsqueda. (Ver Figura 3.1 para un resumen
del problema y la solucin deseada.) Despus de discutir la implementacin bsica de bsqueda
Tabu, que Exploraremos algunas de las variantes que mejoran el algoritmo.

Bsqueda Tabu Implementacin

NO

T T

H MARIDO E mi
C do D re

El algoritmo de bsqueda Tabu es muy simple y se puede ilustrar en una sola funcin (ver Listado de
3,15, funcin tabu_s ). Esta funcin es el ncleo del algoritmo de bsqueda Tabu. Las funciones de
apoyo no se muestran aqu, pero estn disponibles en el CD-ROM.

La implementacin del lenguaje C fuente de bsqueda Tabu se puede encontrar en el CD-ROM


en ./software/ch3/tabus.c.

La aplicacin se inicia con una siembra de la funcin aleatoria (RANDINIT), seguido de la creacin de la cola del
tab. Esta cola representa nuestra lista Tabu, o aquellos elementos que no ser objeto de evaluacin
78 78 Artificial Intelligence Inteligencia artificial

PROPINA

Si redescubierto. Se crea la solucin inicial a continuacin, y se copia en la mejor solucin (a travs de


initBoard para crear la solucin, y evaluateBoard para evaluar el valor de la solucin). La solucin actual
se carga entonces en la lista Tabu de modo que no es evaluado de nuevo.

El bucle comienza entonces, para lo que te operar siempre, o hasta que se encuentre una solucin. Por
este simple problema, siempre encontrar una solucin en algn nmero de iteraciones. La llamada a
reviewChildNodes evala las soluciones vecinas, y recoge el mejor uno que no est en la lista Tabu. Esta
solucin se devuelve (por referencia) y luego se carg en la lista Tabu. Ntese aqu que buscamos en primer
lugar para ver si 'es ya en la lista Tabu. Si no es as, se comprueba el estado de la lista Tabu. Si est lleno,
necesitamos el elemento ms antiguo para dejar espacio para el nuevo nodo y, a continuacin, aadir a la
cola.

Recordemos que las colas FIFO son en la naturaleza. Por lo tanto, la eliminacin de un nodo de la cola
elimina automticamente el nodo ms antigua, la satisfaccin de la poltica para el algoritmo (eliminar el nodo
ms antigua primero, si la lista Tabu est lleno).

Por ltimo, comprobar el valor de la solucin, y si es cero, tenemos el nodo objetivo. Esto ahora se
puede emitir mediante la funcin emitBoard.

LISTADO 3.15: Tabu Implementacin bsica algoritmo de bsqueda en C.

tabu_s void ()

{{

best_sol corto sin signo, cur_sol; int best_f, cur_f;

RANDINIT ();

tabu_q = createQueue (max_elements); / * Obtener inicial del tablero * /

cur_sol = best_sol = initBoard ();

cur_f = best_f = evaluateBoard (best_sol); poner en cola (tabu_q, best_sol);


while (1) {

printf ( Iteration para% x \ n , cur_sol);

/ * Retorno (por referencia) el mejor vecino que no sea tabu * / reviewChildNodes (y


cur_sol, y cur_f);

/ * Aadir la mejor solucin actual a la lista tabu (* eliminar los ms antiguos si es necesario).

*/

if (! searchQueue (tabu_q, cur_sol)) {if ( isFullQueue (tabu_q)) {


Buscar informado 79 79

(void) Quitar de la cola (tabu_q);

}}

poner en cola (tabu_q, cur_sol);

}}

/ * Guardar la mejor solucin hasta el momento * / if (cur_f


<= best_f) {

best_sol = cur_sol; best_f = cur_f;


}}

/ * Solucin encontrado? * / If (best_f == 0) {


emitBoard (best_sol); break; descanso;
}}

}}

destroyQueue (tabu_q); regreso;


}}

Bsqueda Tabu Demostracin


La aplicacin de bsqueda Tabu encuentra de manera eficiente la solucin a este problema (un espacio de
estados de 256 nodos nicos). La primera evaluateBoard es el nodo inicial (ver el Listado 3,16), seguido
de cuatro iteraciones del algoritmo. Tenga en cuenta que mientras que el nodo inicial tuvo un costo de dos,
nodos siguientes evaluados fueron peores, pero finalmente llev a la meta. Bsqueda Tabu permite la
evaluacin de distancia de mnimo local para encontrar el mnimo global, como se ha demostrado aqu.

LISTADO 3.16: ejecucin de la muestra de Bsqueda Tabu para el problema 4-Queens.

evaluateBoard 1281 = (f 2) Iteration para 1281


evaluateBoard 2281 = (f 2) evaluateBoard 2181 = (f 3)
evaluateBoard 2481 = (f 3) evaluateBoard 2241 = (f 2)
evaluateBoard 2221 = (f 3) evaluateBoard 2281 = (f 2)
evaluateBoard 2282 = (f 3) Iteration para 2281
evaluateBoard 4281 = (f 1)
80 80 Artificial Intelligence Inteligencia artificial

evaluateBoard 4181 = (f 1) evaluateBoard 4481 = (f 3)


evaluateBoard 4281 = (f 1) evaluateBoard 4241 = (f 3)
evaluateBoard 4282 = (f 2) Iteration para 4281
evaluateBoard 8281 = (f 2) evaluateBoard 8181 = (f 3)
evaluateBoard 8481 = (f 4) evaluateBoard 8241 = (f 2)
evaluateBoard 8221 = (f 3) evaluateBoard 8281 = (f 2)
evaluateBoard 8282 = (f 2) Iteration para 8282
evaluateBoard 4282 = (f 2) evaluateBoard 2282 = (f 3)
evaluateBoard 4182 = (f 0) evaluateBoard 4482 = (f 2)
evaluateBoard 4282 = (f 2) evaluateBoard 4142 = (f 2)
evaluateBoard 4181 = (f 1) evaluateBoard 4184 = (f 3)
solucin es 0x4182

0100

00010001

1000

0010

Bsqueda Tabu Variantes


Con el fin de hacer ms eficaz la bsqueda Tabu para los difciles problemas de bsqueda, existe una
serie de modificaciones. El primero de ellos es el llamado intensificacin y, esencialmente, se intensifica la
bsqueda en torno a un punto dado (como la mejor solucin conocida). La idea es que tomamos un nodo
prometedora, e intensificar la bsqueda alrededor de este punto. Esto se implementa utilizando una
memoria intermedia, que contiene los nodos vecinos para cavar en ms.

Una cuestin que surge en algoritmos de bsqueda local es que pueden quedar atrapados
en ptimos locales. Bsqueda Tabu introduce el concepto de diversificacin para permitir que el
algoritmo de nodos que han sido previamente inexplorados para ampliar el espacio de bsqueda
de bsqueda.
Buscar informado 81 81

Cuando seguimos las mejores soluciones, que es muy posible conseguir atrapado en
ptimos locales para problemas difciles. Otra variante interesante se llama relajacin restriccin
, que relaja el algoritmo de seleccin de barrio para aceptar los nodos de menor calidad en el
espacio de bsqueda. Esto permite que el algoritmo para ampliar su bsqueda a descender en
soluciones de menor calidad en la bsqueda de soluciones de mayor calidad. [Gendreau 2002]

PROBLEMAS satisfaccin de restricciones (CSP)


En muchos problemas de bsqueda, que est interesado no slo en la meta, pero cmo hemos llegado
desde el estado inicial al estado final (Tomemos, por ejemplo, los ocho rompecabezas). A medida que
aprender ms tarde, los sistemas de planificacin se basan en este aspecto de la bsqueda como un
plan no es ms que una secuencia de pasos para llegar de un estado dado a un estado objetivo. Para
algunos problemas, No estamos interesados en el camino a la meta, pero en cambio slo el estado
objetivo (por ejemplo, el problema N-Queens). Los problemas de este tipo se llaman problema de
satisfaccin de restricciones (CSP).

Formalmente, podemos pensar en CSP en trminos de un conjunto de variables que con un


dominio de valores posibles, y un conjunto de restricciones que especifican las permisibles
combinaciones de valores de las variables. Considere el siguiente ejemplo sencillo. Deseamos
encontrar valores para el conjunto de variables x e y que tienen cada una un dominio de {1-9}, tales
que la ecuacin 3.4 (la restriccin) es satisfecha.

(Eq
x+y=x*y
3.4)

Sin mucho trabajo, sabemos que la asignacin del valor de los dos para ambos x y Y
satisface la restriccin definida por la ecuacin.

Grfico colorear como un CSP

Uno de los CSP ms popular se llama Graph para colorear. Dada una grfica, y un conjunto de
colores, el problema es colorear los nodos de tal manera que un borde no se conecta directamente a
un nodo del mismo color. Considere el mapa mostrado en la Figura 3.15. Podemos ver un conjunto
de objetos que son adyacentes entre s. Objeto A es adyacente a los objetos B y C, mientras objeto D
es adyacente slo para oponerse B. La parte grfica de la figura 3.14 ilustra la grfica del mapa. De
este grfico, podemos ver bordes que definen la adyacencia de los objetos (nodos) de la grfica.

Consideremos ahora el problema de colorear el mapa dadas las limitaciones que cada objeto puede ser un
color y no hay objetos de color debe ser adyacentes entre s. El grfico puede ser de color usando tres colores
(rojo, verde y azul)?
82 82 Artificial Intelligence Inteligencia artificial

Figura 3.15: La clsica CSP colorante grfico.

El uso de ensayo y error, podemos color muy fcilmente este sencillo grfico por iteracin a
travs de los nodos de la grfica y la asignacin de un color para que nuestra limitacin queda
satisfecho. Vamos 's empezar con el nodo A, el color, y entonces el paso a cada nodo restante,
coloreando a medida que avanzamos. En el listado 3.17, vemos el proceso de coloracin. Cada
nodo es seguido por una restriccin, con el color finalmente elegido entre parntesis.

El nodo A - escoja cualquier color (rojo)

Nodo B - Elija un color que no sea rojo (azul)

El nodo C - Elija un color que no sea rojo y azul (verde) El nodo D - Elija un
color que no sea azul (rojo)

El nodo E - Elija un color que no sea verde (rojo)

El nodo F - Elija un color que no sea verde o rojo (azul) Nodo G - Elija un color
distinto del color rojo o azul (verde)

LISTADO 3.17: Grfico colorear a travs de ensayo y error.

A travs de un simple proceso de eliminacin, que han estado capaz de colorear el grfico
utilizando las limitaciones de los nodos previamente coloreadas para determinar el color a pintar
nodos adyacentes (resultado final se muestra en la Figura 3.17).
Buscar informado 83 83

PROPINA
FIGURA 3.16: Resultado de Grfico para colorear del listado 3.17.

El famoso teorema de cuatro colores (para demostrar que slo se requieren cuatro colores para colorear
cualquier mapa plano) se remonta a mediados de la dcada de 1800. Hubo numerosos intentos fallidos para
demostrar el teorema y se mantuvo la conjetura hasta 1976, cuando Appel y Haken crearon una prueba
formal.

La programacin como CSP


Una de las aplicaciones ms prcticas de satisfaccin de restricciones es el problema de la programacin.
Existen numerosos tipos de problemas de programacin, desde horarios de vuelos a la planificacin de los
procesos de fabricacin. El problema de programacin se reduce a la asignacin de recursos a las actividades
en el tiempo conservando un conjunto de restricciones. Por ejemplo, en un problema de fabricacin, un recurso
puede ser procesado a travs de una variedad de actividades que requieren cada uno una cantidad especfica
de tiempo. Adems, las actividades tienen prioridad que debe ser mantenida (un recurso debe ser procesada
por Actividad A antes de la actividad B). El objetivo de la CSP en este problema es identificar un calendario
ptimo de los recursos a travs de las actividades de tal manera que el producto final se puede producir de
manera ptima.
84 84 Artificial Intelligence Inteligencia artificial

Algoritmos de satisfaccin de restricciones


Existe un gran nmero de algoritmos para resolver CSPs de la sencilla Generar y prueba de
algoritmo para restriccin-propagacin y consistencia. Nos Exploraremos algunos de los algoritmos
disponibles que se pueden utilizar. Tenga en cuenta que algunos de los algoritmos que han discutido
hasta ahora (como bsqueda en profundidad investigada en el captulo 2, y el recocido simulado y
bsqueda Tabu del captulo 3) se puede utilizar con eficacia para resolver los CSP.

Generar y probar
Generar y probar es el ms simple de los algoritmos para identificar una solucin para un CSP. En este
algoritmo, cada una de las posibles soluciones se intenta (cada valor enumerado para cada variable) y
despus se prueba para la solucin. Desde las pruebas de cada combinacin de variables dentro del
dominio de cada valor puede ser extremadamente lento e ineficiente, heursticas pueden ser aplicadas
para evitar aquellas combinaciones que estn fuera del espacio de soluciones.

backtracking

PROPINA

El backtracking algoritmo opera con un simple algoritmo de bsqueda desinformados, como bsqueda en
profundidad. En cada nodo, una variable se crea una instancia con un valor y se comprueban las violacines
de restriccin. Si los valores son legales, se permite continuar la bsqueda, de lo contrario, se abandona la
rama actual y se evala la siguiente nodo de la lista abierta.

Para aumentar la eficiencia del algoritmo de retroceso, la mayor parte variable de constreida se
instancia en primer lugar. Tomemos, por ejemplo, el nodo C de la figura 3.14. En este caso, el nodo
tiene cuatro vecinos (la mayora de cualquier nodo en el grfico).

Tanto generar y probar y dar marcha atrs sistemticas son algoritmos de bsqueda comunes, ya que
sistemticamente asignar valores a las variables en busca de una solucin. Generar y probar es altamente
ineficiente, mientras que dar marcha atrs adolece de destrozar o el repetido fracaso en encontrar una solucin para
el mismo motivo (por ejemplo, una nica variable restante constante).

Comprobacin y hacia adelante Look Ahead


Comprobacin Forward es similar a la marcha atrs, excepto que cuando un particular, se evala el nodo
de la variable de corriente (llamado consistencia de arco), slo se consideran aquellos nodos vlidos para
la lista abierta para evaluar en el futuro. Los nodos que pueden ser detectados como no vlidos se ignoran
inmediatamente, dando como resultado slo en el
Buscar informado 85 85

PROPINA

la mayora de las ramas prometedores para la bsqueda. Esto puede minimizar el nmero de nodos
generados para la bsqueda, sino que tiende a implicar ms trabajo cuando se evala un solo nodo (para la
comprobacin de avance de las restricciones).

Una variante de la comprobacin hacia adelante se llama mirada hacia el futuro . En este algoritmo,
las variables en lugar de la simple evaluacin nodos secundarios basados en el valor actualmente
instancia, todos los posteriores a crear instancias se crean instancias dados los valores actualmente
instanciados. Esto se traduce en muy planas rboles de bsqueda. (Vase la figura 3.17 para una vista
grfica de marcha atrs, la comprobacin hacia adelante, y mirar hacia adelante.)

comprobacin Forward es comnmente ms eficaz que dar marcha atrs como el nmero de nodos
a ser evaluados se reduce.
mparacin de la marcha atrs, la comprobacin hacia adelante y mirar hacia adelante constreimiento algoritmos de propagacin.
86 86 Artificial Intelligence Inteligencia artificial

Min conflictos Buscar

Un interesante reparacin heurstica algoritmo es la heurstica min-conflictos. Este algoritmo


comienza por la eleccin de la variable que viole el menor nmero de limitaciones y luego mejora
sistemticamente la solucin mediante el uso de un algoritmo tal como la escalada o A * con la
funcin heurstica h (n) se define como el nmero total de restricciones violadas.

RESUMEN DEL CAPTULO


mtodos de bsqueda informados, a diferencia de los mtodos desinformados (o ciegos), utilizan una
heurstica para determinar la calidad de cualquier estado en el espacio de bsqueda. Esto permite que el
algoritmo para guiar la bsqueda y selecciona la siguiente estacin para ampliar. En este captulo, se explor
una serie de mtodos de bsqueda informado, incluso mejor primera bsqueda, una bsqueda *, bsqueda de
escalada, recocido simulado, bsqueda Tabu, y finalmente algoritmos para la satisfaccin de restricciones. La
comprensin de los mtodos informados de bsqueda es importante porque gran parte de la solucin de un
problema en la IA puede ser refinado para buscar mtodos. La clave es elegir el algoritmo que se adapta mejor
al problema particular que nos ocupa.

ALGORITMOS RESUMEN

Tabla 3.1: Resumen de los algoritmos desinformados y sus caractersticas.

Space Optimal
Algorithm Algoritmo Time Hora Complete Completar Derivative De
Espacio ptimo
Best-First Search O (bm) O (bm) No No Yes S BFS / UCS
Una bsqueda O (2 N ) O (b d ) Yes S Yes S BestFS
IDA * O (2 N ) Sobredosis) Yes S Yes S UN*
SMA *
SimAnneal -- -- No No No No
Tab -- -- No No No No
b , factor de ramificacin

d , la profundidad del rbol de la solucin de m , la


profundidad del rbol

REFERENCES REFERENCIAS

[Archer 1999] Archer, AF Un tratamiento moderno de los 15 Puzzle, Americana de Matemticas . Mensual
106, 793-799, 1999.
Buscar informado 87 87

[KGong 2005] Gong, Kevin. Un anlisis matemtico del rompecabezas diecisis. ltima
actualizacin 12/2005.

Disponible en lnea en http://www.kevingong.com/Math/SixteenPuzzle.html [Gendreau 2002]


Gendreau, Michel. Una introduccin a la Bsqueda Tabu,

Universit de Montral. De julio de 2002. Disponible en lnea en http: //www.ifi.uio. no /


infheur / Bakgrunn / Intro_to_TS_Gendreau.htm

RESOURCES RECURSOS
[Glover 1990] Glover, Fred. Bsqueda Tabu: un tutorial, Interfaces, 20 (4): 74-94, 1990.

EXERCISES CEREMONIAS
1. Primero el mejor de bsqueda utiliza una heurstica combinado para elegir el mejor camino a seguir en
el espacio de estados. Definir las dos heursticas utilizadas (h (n) y g (n)).
2. Lo mejor primera bsqueda utiliza tanto una lista abierta y una lista cerrada. Describir el
propsito de cada uno para el primero el mejor algoritmo.
3. Describir las diferencias entre primero el mejor bsqueda y codiciosos mejor primera
bsqueda.
4. Describir las diferencias entre primero el mejor bsqueda y de bsqueda en haz.

5. Cules son las ventajas de bsqueda en haz sobre la mejor primera bsqueda?

6. Una bsqueda * utiliza un heurstic combinado para seleccionar el mejor camino a seguir a
travs del espacio de estado hacia la meta. Definir las dos heursticas utilizadas (h (n) y g (n)).

7. Brevemente describa bsqueda A * y los problemas a los que se puede aplicar.


8. Lo que se entiende por una heurstica admisible?

9. Cmo hacer el alfa y beta parmetros sintonizar la heurstica de bsqueda A *?


10. Brevemente explique la diferencia entre una bsqueda * * y SMA. Qu ventaja tiene sobre
SMA A *?
11. Sube de la colina es un algoritmo de mejora iterativa estndar similar a codiciosos mejor
primera bsqueda. Cules son los principales problemas con la escalada?

12. Describir El recocido simulado y si se combina con el mejoramiento iterativo de bsqueda


estocstica.
13. Describir el algoritmo y cmo se diferencia de bsqueda aleatoria.
88 88 Artificial Intelligence Inteligencia artificial

14. Cul es el propsito del paso de Monte Carlo en el algoritmo de recocido simulado?
15. Describe brevemente el algoritmo de bsqueda Tabu.

16. La lista Tabu puede ser dimensionado para el problema en cuestin. Qu efecto tiene cambiar
el tamao de la lista Tabu tiene en el algoritmo de bsqueda?
17. Describir las modificaciones de intensificacin y diversificacin de la bsqueda Tabu.
18. Describir la esencia de un problema de satisfaccin de restricciones.

19. Cules son algunas de las principales aplicaciones de bsqueda de satisfaccin de


restricciones?
20. Comparar y contrastar los algoritmos de CSP de marcha atrs, la comprobacin hacia
adelante, y mirar hacia adelante.
C aptulo 4A IY G AMES

Un I tiene una larga historia en el gnero de los juegos. Desde el primer inteligente jugador de los inspectores, al
equipo de AI desarrollado para los primeros tiradores de -person-, AI est en el ncleo. En este captulo se
cubrir aspectos de la IA del juego de

juego tradicional juego de damas, ajedrez, Otelo, y Ir a los videojuegos ms recientes,


incluyendo la primera persona tiradores, juegos de estrategia, y otros. Nos nombre contiene
introducir el algoritmo minimax y alfa-beta de poda, que son fundamentales para los juegos
tradicionales de dos jugadores. Nosotros te luego explorar otros algoritmos que se pueden
encontrar en los sistemas de juegos modernos.

DOS JUGADORES JUEGOS


juegos de dos jugadores son juegos en los que dos jugadores compiten entre s. Estos son tambin
conocidos como juegos de suma cero. El objetivo entonces en jugar un juego de dos jugadores es la
eleccin de un movimiento que maximiza la puntuacin del jugador y / o minimiza la puntuacin del
jugador compite.

NOTE NOTA

Un juego de suma cero es aquella en la que la ganancia de un jugador es exactamente equilibrada por la prdida de
otro jugador. Juegos de suma cero han sido ampliamente estudiados por John von Neumann y Oskar Morgenstern y
luego
90 90 Artificial Intelligence Inteligencia artificial

ms tarde por John Nash. El ajedrez es un ejemplo de un juego de suma cero. Por el contrario, los juegos
no suma cero son aquellos en los que dos jugadores intentan obtener recompensas de un banquero,
cooperando o traicionar a otro jugador. El prisionero dilema 's es un ejemplo clsico de un juego no suma
cero. Ambos cero y no de suma cero juegos son tipos de juegos en el campo de la teora de juegos. La
teora de juegos tiene una serie de usos de los juegos de saln como el Poker, al estudio de los fenmenos
econmicos de las subastas a las redes sociales.

Considere el juego de dos jugadores Tic-Tac-Toe. Jugadores alternas se mueve, y como se hace
cada movimiento, los posibles movimientos estn limitados (ver el rbol parcial Toe juego Tic-tac- en
la Figura 4.1). En este sencillo juego, un movimiento puede ser seleccionado basndose en el
movimiento que conduce a una victoria por la que atraviesa todos los movimientos que se ven
limitados por este movimiento. Adems, por la que atraviesa el rbol para un movimiento dado,
podemos elegir el movimiento que conduce a la victoria en la profundidad mnima (nmero mnimo de
movimientos).

Tic-Tac-Toe es un caso interesante porque el nmero mximo de movimientos es muy pequea en


comparacin con los juegos ms complejos, como las damas o

Figura 4.1: rbol de juego parcial para el juego de dos jugadores de Tic-Tac-Toe.
AI y juegos 91 91

Ajedrez. Tic-Tac-Toe tambin est abierto a numerosas optimizaciones. Consideremos, por ejemplo,
el primer movimiento X en la Figura 4.1. Si se gira el tablero, slo tres movimientos nicos son
realmente posible. Sin optimizacin, existen 362,880 nodos dentro del rbol de juego completo.

juegos de dos jugadores son tiles como un banco de pruebas para va


NOTE NOTA

algorithms. Algoritmos Tambin son de inters los juegos de un solo jugador (tambin conocidos como r
Ejemplos de juegos de tiles de un solo jugador incluyen las Torres N
rompecabezas y la N-Puzzle (ver los captulos 2 y 3).
En cada nodo en el rbol (un posible traspaso) un valor que d
del movimiento hacia el jugador que gana el juego puede ser proporcionada.
nodo dado, los nodos secundarios (posibles mueve desde este est
cada uno tiene un atributo que define la bondad relativa del movim
tarea fcil entonces para elegir el mejor movimiento en el estado actual. Sin
la naturaleza alternante de juegos de dos jugadores, el siguiente jugador hace
que beneficia a s mismo (y en juegos de suma cero, se traduce en u
El jugador suplente).
Una funcin de evaluacin esttica (que miden la bondad de un
utilizado para determinar el valor de un movimiento determinado a partir de un estado de juego dado. Th
funcin de evaluacin identifica el valor relativo de una medid
lista de posibles movimientos como una medida de la calidad del movimiento
juego. Considere el rbol de juego parcial en la Figura 4.2.
La funcin de evaluacin esttica se define como el nmero de p
posiciones no bloqueadas por el oponente menos el nmero de p
posiciones (fila, columna y diagonal) para el oponente no bl
jugador actual:

Figura 4.2: rbol de juego Tic-Tac-Toe con la funcin de evaluacin esttica.


92 92
f ( n ) = win_positions-lose_positions (E

Usando esta funcin de evaluacin, identificamos la bondad de la configuracin de la placa dado


un movimiento para X en la Figura 4.2. Cuanto mayor sea el resultado de la funcin de evaluacin
esttica, cuanto ms cerca el movimiento trae al jugador hacia una victoria. Tres movimientos
resultan en la funcin de evaluacin que equivale a tres, pero slo un movimiento puede conducir a
una victoria para X como los otros dos conducen a una victoria posterior de O. Por lo tanto, mientras
que la funcin de evaluacin esttica es til, otra heurstica es necesario escoger el mover con la
ms alta evaluacin esttica mientras que la proteccin contra una prdida en el siguiente
movimiento.

Let 's ahora un vistazo a un algoritmo que proporciona un medio para seleccionar un
movimiento que trae el jugador ms cerca de la victoria mientras se mueve el oponente ms
lejos de una victoria.

ALGORITMO MINIMAX
En los juegos simples, existen algoritmos que pueden buscar en los rboles de juego para
determinar el mejor movimiento para hacer del estado actual. El ms conocido es el llamado
algoritmo Minimax. El algoritmo Minimax es un mtodo til para simples juegos de dos
jugadores. Es un mtodo para seleccionar el mejor movimiento dado un juego de alternancia en
el cada jugador se opone a la otra trabajando hacia una meta mutuamente excluyentes. Cada
jugador sabe los movimientos que son posibles dado un estado actual del juego, por lo que para
cada movimiento, todos los movimientos posteriores puede ser descubierto.

En cada nodo en el rbol (movimiento posible) un valor que define la bondad del movimiento hacia el
jugador que gana el juego puede ser proporcionada. As que en un determinado nodo, los nodos secundarios
(posibles movimientos de este estado en el juego) tienen cada uno un atributo que define la bondad relativa del
movimiento. Es 'es una tarea fcil, entonces elegir el mejor movimiento en el estado actual. Sin embargo, dada
la naturaleza alternante de juegos de dos jugadores, el siguiente jugador hace un movimiento que les beneficia
(y en juegos de suma cero, se traduce en un dficit para el jugador suplente).

La capa de un nodo se define como el nmero de movimientos necesarios para alcanzar el


NOTE NOTA

estado actual (configuracin del juego). La tela de un rbol de juego es entonces la


mximo de las capas de todos los nodos.
Minimax puede utilizar uno de dos estrategias bsicas. En el primero, el juego entero
rbol se busca a los nodos hoja (al final de juegos), y en el segundo, el rbol es
buscado solamente a una profundidad predefinida y luego evaluado. Vamos que est ahora a
explorar
el algoritmo minimax en mayor detalle.
AI y juegos
Cuand
NOTE NOTA bsque

nmero
el aspe
por del
horizon
Cuand
hacer u
que se
medida
este su
Minima
una m
un valor mximo para el sucesor nodos en cada nodo que tiene nios. Al llegar a un nodo hoja (o la
profundidad mxima soportada), el valor del nodo se calcula utilizando una funcin de evaluacin (o
utilidad). Al calcular un nodo de utilidad 's, propagamos estos valores hasta el nodo padre basado en cuyo
movimiento es a tener lugar. Para nuestro movimiento, que Utilizaremos el valor mximo como nuestro
determinante para el mejor movimiento para hacer. Para nuestro oponente, se utiliza el valor mnimo. En
cada capa del rbol, el rea de nodos secundarios es escaneado y en funcin de cuyo traslado est por
venir, se mantiene el valor mximo (en el caso de nuestro movimiento), o se mantiene el valor mnimo (en
el caso de que el oponente ' s movimiento). Puesto que estos valores se propagan en forma alterna,
maximizamos el mnimo, o minimizar al mximo. En otras palabras, se supone que cada jugador hace el
movimiento siguiente que les beneficia ms. El algoritmo bsico para Minimax se muestra en el listado 4.1.

LISTADO 4.1: algoritmo bsico para la bsqueda minimax rbol de juego.

Minimax (jugador, tablero)

Si game_won (jugador, tablero) vuelven a ganar por cada junta


sucesor

si (== jugador X) de retorno mximo de consejos sucesores si (reproductor == O)


de retorno del sucesor tableros
end fin

end fin

Para demostrar este enfoque, la figura 4.3 muestra el juego final para una configuracin de tablero de Tic-
Tac-Toe particular. Tanto X y O han jugado tres vueltas, y ahora 's X a su vez' s. Atravesamos este rbol con el
fin de primero en profundidad, y al llegar ya sea un ganar / perder o dibujar posicin, hemos creado la banda
sonora de la junta. Nos Utilizaremos una representacin simple aqu, -1 representa una prdida, 0 para un
empate, y 1 para una victoria. Las tablas con lneas gruesas definen las ganancias / prdidas dibujar tablas / los
que se evalan en el marcador. Cuando se han evaluado todos los nodos hoja, los valores de los nodos se
pueden propagar hasta basado en el jugador actual.
94 94 Artificial Intelligence Inteligencia artificial

Figura 4.3: rbol de fin de juego para un juego de Tic-Tac-Toe.

En la capa 2 en el rbol de juego, 'S O ' s su vez, por lo que minimizamos los nios y la
puntuacin de los padres con el valor ms pequeo. En la parte izquierda de la rbol de juego,
los valores 0 y 1 estn presentes, por lo que se mantiene 0 (mnimo) y se almacenan en la
matriz. En la capa 1 en el rbol, nos estamos mirando al mximo, por lo que las puntuaciones de
nodo 0, - 1 y -1, mantenemos 0 y almacenar esta en la matriz (el nodo raz de nuestro rbol de
juego).

Con las puntuaciones de haber sido propagadas a la raz, ahora podemos hacer el mejor
movimiento posible. Ya que es nuestro movimiento, nos 're maximizar, por lo que buscamos el
nodo con la puntuacin ms grande (el nodo ms a la izquierda con un valor de 0), y tomamos
esta posicin. Nuestro oponente (que es reducir al mnimo) a continuacin, elige el valor del
nodo mnimo (ms a la izquierda nodo en profundidad del rbol 2). Esto nos deja con nuestro
movimiento final, lo que resulta en un empate.

Tenga en cuenta que en un juego en el que la informacin perfecta est disponible para cada
jugador, y no se hacen errores, el resultado final siempre ser un empate. Nos Construiremos un
programa para jugar Tic-Tac-Toe para ilustrar cmo este algoritmo se puede construir. Al igual
que cualquier algoritmo de rbol, se puede construir de forma sencilla y eficiente utilizando la
recursividad.

PROPINA

Una alternativa a la construccin de todo el rbol de bsqueda es reducir la profundidad de la bsqueda, lo que
implica que no podamos encontrar nodos hoja. This Esta
AI y juegos 95 95

Tambin se conoce como un juego de informacin imperfecta y puede dar lugar a estrategias ptimas
de juego. La ventaja de reducir el rbol de bsqueda es que el juego puede ocurrir mucho ms
rpidamente y Minimax se puede utilizar para los juegos de mayor complejidad (como ajedrez o
damas).

Buscando recursivamente un rbol de juego puede ser un tiempo (y espacio) proceso que consume.
Esto significa que Minimax se puede utilizar en juegos simples como Tic-tac- dedo del pie, pero juegos
como el ajedrez son demasiado complejas para construir un rbol de bsqueda. El nmero de
configuraciones de mesa para Tic-Tac-Toe es de alrededor de 24.683. El ajedrez se estima que tienen del
orden de 10 100 configuracin de la tarjeta - un nmero verdaderamente masiva.

Minimax y Tic-Tac-Toe

Vamos que est ahora a ver una implementacin del algoritmo Minimax que utiliza recursin
entre dos funciones. Nosotros te primero explorar la representacin del problema, que puede ser
muy importante ser capaz de almacenar un gran nmero de configuraciones de mesa para la
bsqueda de rbol de juego.

La Tabla de zcalo Tic-tac- requiere nueve posiciones en las que cada posicin puede tomar uno
de tres valores (a 'X, ' 'O, ' o vacos). Bit a bit, podemos representar nuestros valores de dos bits, lo
que nos da cuatro identifica nicas. Con nueve posiciones en el tablero Tic-Tac-Toe, que requieren
dos bits cada uno, podemos utilizar un valor de 32 bits para representar toda la junta con numerosos
trozos sobrantes (vase la figura 4.4 para la representacin del tablero Tic-Tac-Toe).

Figura 4.4: Representacin de un tablero de Tic-Tac-Toe en un valor de 32 bits de relleno.


96 96 Artificial Intelligence Inteligencia artificial

PROPINA

A partir de la figura 4.4, podemos ver que la junta de Tic-Tac-Toe encaja fcilmente dentro de un tipo
de 32 bits, incluyendo espacio de sobra. El uso de un valor de 32 bits tambin es importante para la
eficiencia como la mayora de los sistemas informticos modernos utilizan este tipo de memoria
interna para almacenamiento de registro de acceso atmica.

El algoritmo minimax es fcil de implementar como un algoritmo recursivo. Para esta aplicacin, que Utilizaremos dos
funciones que se llaman entre s de forma recursiva. Cada funcin juega el juego en el contexto de un jugador especfico
(vase el Listado 4.2).

LISTADO 4.2: algoritmo recursivo para la bsqueda minimax rbol de juego.

play_O (bordo)

si end_game (bordo) eval retorno (tablero) para cada ranura de vaco en


el tablero
new_board = bordo

celda vaca marca con O en valor new_board = play_X (new_board)

si el valor <min value = min

valor de retorno final


end fin

play_X (bordo)

si end_game (bordo) eval retorno (tablero) para cada ranura de vaco en


el tablero
new_board = bordo

celda vaca marca con X en el valor new_board = play_O


(new_board)

si el valor> = valor mximo mx


end fin

end fin

valor de retorno

end fin

Una llamada a play_X comienza la construccin del rbol de juego con una tabla especfica. Cada funcin
comienza con una llamada para poner fin a -Game, que determina si el juego ha terminado (no hay clulas
disponibles para colocar una pieza, o el juego ha sido ganado). Si el juego final se ha detectado, el tablero
se evala y una puntuacin
AI y juegos 97 97

returned. Devuelto Nos Utilizaremos un mtodo de puntuacin muy simple para la junta -TAC-
dedo del pie de Tic. Si el juego ha sido ganado por el jugador X, un '1 se devuelve'. Si el juego
ha sido ganado por el jugador O, un '-1 ' se devuelve. Por ltimo, si un resultados del sorteo, el
valor 0 se devuelve.

Si no se ha producido el final del juego, la actual junta se repite, en busca de lugares vacos. Para
cada ubicacin vaca, la funcin coloca su valor (en una nueva placa, para evitar la corrupcin de la actual
junta directiva que ser utilizado varias veces). La nueva junta se pasa a la funcin alternativa para
continuar

Figura 4.5: Demostracin de las dos funciones recursivas en un rbol de juego parcial.
98 98 Artificial Intelligence Inteligencia artificial

la construccin del rbol de juego para el jugador contrario. Como la funcin play_ devuelve su valor,
'S en comparacin con el min actual o valor mximo dependiendo de la funcin actual del reproductor
(X es maximizar, O es minimizar).

Podramos haber implementado esta utilizando una funcin, sino dos funciones hace que sea un poco
ms fcil de entender como sabemos cuando ests en play_X, que 're maximizar y cuando ests en play_
Y, nos ' re minimizar. Las relaciones de las dos funciones y sus roles se muestran en la Figura 4.5.

Minimax Implementacin de Tic-Tac-Toe

NO

T T

H MARIDO E mi

C do D re

Como se muestra en el listado 4.3, que te utilizamos dos funciones para implementar el juego de bsqueda de
rbol recursivo. Nos Discutiremos estas dos funciones, en particular, pero no toda la aplicacin, que se puede
encontrar en el CD-ROM.

El cdigo fuente para el jugador del juego Tic-Tac-Toe Minimax se puede encontrar en el CD-ROM
en ./software/ch4/minimax.c.

Una vez que el jugador humano 's movimiento ha sido aceptado y se coloca en el tablero, se realiza una
llamada a evaluateComputerMove (con el nuevo tablero de juego, y una profundidad de 0, ya que Estamos
en la raz del rbol). Nos Discutiremos la aplicacin para ambas funciones ahora, ya que bsicamente son
los mismos, excepto para el mnimo y mximo de cheques.

A la entrada a la funcin, comprobamos de inmediato por una victoria por el jugador contrario (ya que
esta llamada se realiza cuando el jugador contrario ha hecho un movimiento). Si el jugador antes de ejecutar
una obra que gan el juego, la puntuacin se devuelve (MIN_INFINITY para evaluateComputerMove,
MAX_INFINITY para evaluateHumanMove). Esto puede parecer contrario, pero nos 're maximizar para el
jugador de la computadora, y comprobar esto en la funcin opuesta, evaluateHumanMove. Luego
caminamos a travs de todas las posiciones de la junta abiertos disponibles, colocamos nuestra ficha en el
espacio, y luego llamar a la funcin de oposicin para su evaluacin. A su regreso, almacenamos la mnimos
y mximos, dependiendo de la funcin de papel 's (mx para el jugador de equipo que se maximiza, min para
el jugador humano que se minimiza). Si no se encuentran vacos, de forma predeterminada el juego es un
empate y volvemos esta partitura.

Un punto importante a destacar es que en evaluateComputerMove como almacenamos un nuevo


valor mximo, que identifica el actual mejor movimiento, comprobamos la profundidad de esta
configuracin de la tarjeta en particular. Como computer_move es un mundial (la identificacin de la
mejor jugada hasta el momento), slo queremos almacenar esta para la configuracin de la placa que
contiene nuestra posible prximo movimiento, no todas las juntas en el rbol hasta el fondo de la
solucin definitiva. Esto puede ser identificada como la profundidad del rbol, que ser 0.
AI y juegos 99 99

LISTADO 4.3: Implementacin algoritmo recursivo para la bsqueda minimax rbol de juego.

corto evaluateHumanMove (unsigned int bordo, int profundidad)

{{

int i, el valor;

unsigned int new_board; corto min = MAX_INFINITY + 1;


corto evaluateComputerMove (unsigned int, int);

/ * El ordenador (max) acaba de hacer un movimiento, por lo que evaluar que se mueven aqu
*/

si ( checkPlayerWin (O_PLAYER, tabla)) MAX_INFINITY retorno; for (i = 0; i


<MAX_CHILD_NODES; i ++) {

si (getCell (i, bordo) == vaco) {new_board = bordo;


PutCell (X_PLAYER, i, y new_board);

value = evaluateComputerMove (new_board, profundidad + 1); si (valor <=


min) {
min = valor;

}}

}}

}}

/ * No movimiento es posible - sorteo * / if (min ==


MAX_INFINITY + 1) {return DRENAJE;

}}

min retorno;

}}

int computer_move;

corto evaluateComputerMove (unsigned int bordo, int profundidad)

{{

int i, el valor;

unsigned int new_board; corto max = MIN_INFINITY-1;

/ * El ser humano (min) acaba de hacer un movimiento, por lo que evaluar que se mueven aqu * / if
( checkPlayerWin (X_PLAYER, tabla)) MIN_INFINITY retorno;

for (i = 0; i <MAX_CHILD_NODES; i ++) {if ( getCell (i, bordo) ==


vaco) {new_board = bordo;

PutCell (O_PLAYER, i, y new_board);


value = evaluateHumanMove (new_board, profundidad + 1);
100 100 Artificial Intelligence Inteligencia artificial

si (valor> = max) {max = valor;

si (profundidad == 0) computer_move = i;

}}

}}

}}

/ * No es posible mover - empate * / if (mx ==


MIN_INFINITY-1) {return SORTEO;

}}

volver mximo;

}}
Figura 4.6: Un juego de muestra de Tic-Tac-Toe que muestra el nmero de placas analizadas con minimax.
AI y juegos 101 10

Minimax es un gran algoritmo para la pequea profundidad y factor de ramificacin, pero

puede consumir un poco de almacenamiento para los problemas ms complejos. Figura 4.6

muestra un ejemplo de juego juega usando el algoritmo minimax. El ordenador

juega cuatro movimientos, elegidos por Minimax. Para cada uno de esos cuatro movimientos, un total

de 60.810 se evalan configuraciones.

TIP Si bien hay 3 9 tableros Tic-Tac-Toe nicas, en realidad hay muchos

un menor nmero de juntas vlidos como una victoria temprana (antes de llenar el tablero) hace

todas las placas del sucesor vlido.

Lo que se necesita es una manera de evitar las ramas en busca del rbol de juego que

son obviamente mal. Una forma de lograr esto es a travs de un algoritmo de poda

llamada alfa-beta que 's se utiliza conjuntamente con el algoritmo minimax.

Minimax con poda alfa-beta

Alfa-beta es la poda de un algoritmo simple que minimiza el juego de bsqueda de rboles de


movimientos que son obviamente mal. Considere una tabla de Tic-Tac-Toe, donde el jugador
contrario ganara en el siguiente movimiento. En vez de ir a la ofensiva con otro movimiento, la
mejor jugada es la que defiende el tablero de una victoria en el siguiente movimiento.

El ajedrez es un ejemplo clsico de este problema. Considere mover el rey de modo que 's
en peligro inmediato. Es 'es un movimiento vlido, por lo que el rbol de juego que sigui a esta
medida podra ser podado (no evaluado) para reducir el espacio de bsqueda.

Esta es la idea bsica de la poda alfa-beta. Identificar movimientos que no son beneficiosos, y
eliminarlos del rbol de juego. Cuanto ms alto en el rbol de juego que las ramas se podan el mayor
efecto en la reduccin de espacio de bsqueda del rbol. Vamos que est ahora a explorar el algoritmo
detrs de la poda alfa-beta.

Durante la bsqueda en profundidad del rbol de juego, calculamos y mantener dos variables denominadas
alfa y beta . La variable alfa define la mejor jugada que puede hacerse para maximizar (nuestro mejor
movimiento) y la variable beta define la mejor jugada que se puede hacer para reducir al mnimo (el oponerse
mejor jugada). Mientras se recorre el rbol de juego, si alfa es siempre mayor que o igual a la beta, entonces el
oponente 's movimiento nos obliga a una posicin peor (que nuestro actual mejor movimiento). En este caso,
evitamos la evaluacin de esta rama ms.

Vamos 's vistazo a un rbol de juego de ejemplo para demostrar el funcionamiento de la poda alfa-
beta. Nos Utilizaremos el rbol de juego simple que se muestra en la Figura 4.7. El algoritmo comienza
configurando alfa para -INFINITY y beta a + infinito, y luego hace una llamada a la rutina de minimizacin.
Se repite el minimizador a travs de los nodos sucesores y encuentra la ms pequea utilidad de los tres.
This Esta
102 102 Artificial Intelligence Inteligencia artificial

Figura 4.7: rbol de juego inicial para la poda alfa-beta.

Figura 4.8: podado rbol de juego a nivel minimizador.

se convierte en la variable beta en el minimizador, pero se devuelve a la funcin maximizador


para convertirse en la variable alfa.

Las variables alfa y beta actuales se pasan entonces a la minimizador de nuevo para la comprobacin
del subrbol -hand derecha (vase la Figura 4.8). Una vez que se evala el primer nodo (de izquierda a
derecha), nos encontramos con su utilidad para ser dos. Puesto que este valor es inferior a nuestra beta
(actualmente + infinito), la beta se convierte en dos. We Nosotros
AI y juegos 103 10

NO

T T

H MARIDO E mi

C do D re

a continuacin, comprobar para ver si alpha> = beta. Es, por lo tanto podemos concluir los nodos
restantes se reducirn al mnimo a dos o menos (ya que el nodo padre es un minimizador), que es
menor que la utilidad del subrbol de la izquierda, y est disponible para la poda.

La idea detrs de la poda alfa-beta es que si ests evaluando movimientos, y encontrar un movimiento
que es peor que el movimiento que han descubierto hasta ahora, lo ignoramos y seguimos adelante (Don 't
cavar ms profundamente en ese subrbol ).
El cdigo fuente para minimax con poda alfa-beta se puede encontrar en el CD-ROM en
./software/ch4/alphabeta.c.

La puesta en prctica de la poda alfa-beta es bastante simple como la nica necesidad es la de mantener
las variables alfa y beta y determinar cundo debe producirse la poda. Listing 4.4 proporciona la
implementacin alfa-beta, modificada a partir de nuestras funciones minimax originales del listado 4.3.

Listing 4.4: Actualizacin aplicacin Minimax para la poda alfa-beta.

corto evaluateHumanMove (tablero unsigned int, profundidad int, int alfa, int beta)
{{

int i, el valor;

unsigned int new_board; corto min = MAX_INFINITY + 1;


corto evaluateComputerMove (unsigned int, int, int, int);

/ * El ordenador (max) acaba de hacer un movimiento, por lo que evaluar que se mueven aqu
*/

si ( checkPlayerWin (O_PLAYER, tabla)) MAX_INFINITY retorno; for (i = 0; i


<MAX_CHILD_NODES; i ++) {

si ( getCell (i, bordo) == vaco) {new_board = bordo;

PutCell (X_PLAYER, i, y new_board);

value = evaluateComputerMove (new_board, profundidad + 1, alfa, beta); si (valor <min) {


min = valor;

}}

si (valor <beta) beta = valor;

/ * Pode este subrbol al no marcar ningn sucesores adicionales * / if (alpha> = beta)


de retorno beta;

}}
104 104 Artificial Intelligence Inteligencia artificial

}}

/ * No movimiento es posible - sorteo * / if (min ==


MAX_INFINITY + 1) {return DRENAJE;

}}

min retorno;

}}

corto evaluateComputerMove (tablero unsigned int, profundidad int, int alfa, int beta)
{{

int i, el valor;

unsigned int new_board; corto max = MIN_INFINITY-1;

/ * El ser humano (min) acaba de hacer un movimiento, por lo que evaluar que se mueven aqu * / if
( checkPlayerWin (X_PLAYER, tabla)) MIN_INFINITY retorno;

for (i = 0; i <MAX_CHILD_NODES; i ++) {if ( getCell (i, bordo) ==


vaco) {new_board = bordo;

PutCell (O_PLAYER, i, y new_board);

value = evaluateHumanMove (new_board, profundidad + 1, alfa, beta); si (valor> max) {


max = valor;

si (profundidad == 0) computer_move = i;

}}

si (valor> alpha) alpha = valor;

/ * Pode este subrbol al no marcar ningn sucesores adicionales * / if (alpha> =


beta) de retorno alfa;

}}

}}

/ * No es posible mover - empate * / if (mx ==


MIN_INFINITY-1) {return SORTEO;

}}

volver mximo;

}}

Variables en ambas funciones, la alfa (superior unida a) y beta (lmite inferior) se mantienen desde el
actual nodo de utilidad 's. Recordemos que en primera convocatoria, alfa es -INFINITY y beta es +
infinito. Para cada nodo, el alfa se compara con la beta, y si es mayor que o igual-, el restante
AI y juegos 105 10

uego de muestra de Tic-Tac-Toe que muestra el nmero de placas analizadas con poda alfa-beta.

nodos sucesores se podan (simplemente volviendo a este punto, con el valor alfa actual).

Entonces, cmo alfa- beta poda ayuda a optimizar el algoritmo bsico Minimax? Vamos 's resear un
juego muestra juega usando alfa-beta, y el nmero de tablas evaluadas en cada paso (vase la figura 4.9).
El ordenador primer movimiento 's con alfa-beta escanea un total de 2.338 placas de Tic-Tac-Toe.
Recurdese de la figura 4.6 que el primer movimiento para el algoritmo minimax escaneado 59,705
tableros Tic-Tac-Toe. Una gran diferencia, por lo que es posible hacer juego de bsqueda de rboles para
juegos ms complejos, como el ajedrez o las damas.
106 106 Artificial Intelligence Inteligencia artificial

Cuando se utiliza la poda alfa-beta, el nmero de nodos en promedio que necesitan ser
escaneada es O (b d / 2 ). Esta comparacin con Minimax, que va a escanear en O promedio (b d
) nodos. El factor de ramificacin tambin se puede reducir en el mejor caso de b, para minimax,
a b medio para la poda alfa-beta. Cuando se reduce el factor de ramificacin efectiva de un rbol
de juego, las posibilidades para la bsqueda pueden extender ms en un rbol de juego o hacer
rboles de juego ms complejas bsquedas.

PROPINA

El factor de ramificacin promedio de ajedrez es 38, mientras que el promedio factor de ramificacin para
Checkers es 8 (para posiciones no de captura). [Lu 1993]

Clsico juego de AI
Vamos que est ahora a explorar la aplicacin de la IA y de bsqueda que se utilice en los juegos
clsicos como el ajedrez, Go, Backgammon, e incluso Puente y Poker. La aplicacin de IA para
juegos es una de bsqueda, el conocimiento y la heurstica. La comprensin de la IA y los juegos es
importante porque proporciona una caja de arena para poner a prueba la eficacia de los algoritmos
de bsqueda. Es 's tambin un medio para comprender la complejidad de los juegos. Por ejemplo,
mientras que la construccin de un algoritmo de AI digno para el juego de Go es difcil de alcanzar,
Puente-jugando algoritmos de IA ganan regularmente en el ms alto nivel de los campeonatos del
puente.

En esta seccin, te revisan algunos de los juegos ms populares que han encontrado uso de
la IA y las tecnologas que emplean. A medida que te pronto descubrimos, minimax con poda
alfa-beta es una tcnica popular entre los programas de juego de papeles inteligentes, pero
heurstica tambin juegan un papel importante en la construccin de los jugadores ms rpidos y
ms eficientes.

Checkers juego de damas

Nos nombre contiene comenzar nuestra exploracin de la IA en los juegos clsicos con una
revisin rpida de AI 's aplicacin en Damas. Arthur Samuel, uno de los pioneros en la IA y la
mquina de aprendizaje, hizo algunos de los primeros trabajos en dar computadoras la
capacidad de aprender de la experiencia. Adems de programar un ordenador para jugar a las
damas en la computadora IBM 701, fue pionero en la idea de dejar que el programa aprenda
compitiendo contra s mismo. El programa de damas resultante compiti y venci en el cuarto
jugador clasificado en la nacin. [1959 Samuel] Arthur Samuel 's de trabajo en el programa de
damas era tan importante en el clculo no numrico, que influy en los diseadores de IBM ' s
primeras computadoras para incluir nuevas instrucciones lgicas. [McCarthy 1990]
AI y juegos 107 10

NOTE NOTA

PROPINA

El programa de damas construido en la Universidad de Alberta, Canad, es el primer programa de


ganar frente a un ser humano en la competicin del campeonato del mundo de la mquina.
[Chinnok]

Samuel trabajo 's sigue siendo de inters en el mundo de damas AI, pero ms recientemente, se han
empleado las redes neuronales. En el reproductor de Anaconda Damas, se proporcion el conocimiento
suficiente para una comprensin de los movimientos legales en el juego, y luego el jugador se adapt
usando una estrategia evolutiva (algoritmos genticos evolucin de los pesos de la red neuronal). El
resultado fue un jugador de los inspectores que vencer a un programa de damas disponible comercialmente
6-0. [Chellapilla, Fogel 2000].

El tema de las redes neuronales evolucionado genticamente se trata en el captulo 8.

Checkers es mucho ms simple que el ajedrez tanto en los tipos de piezas en juego (dos para las
damas, seis de Ajedrez) y las reglas que se utilizan durante el juego. Adems, en Checkers, cada
jugador tiene la mitad de la junta para jugar (32 cuadrados en lugar de la plena 64). Sin embargo,
mientras ms simple que Ajedrez, Damas es complejo en su propio derecho. Deje que 's ahora revisar
la forma del inspector ' s AI representa la junta y juega un juego inteligente.

Representacin tablero de ajedrez

La representacin de la estructura de datos de una tabla de Damas es importante porque es un fuerte


determinante de la eficiencia de los aspectos de bsqueda y evaluacin del programa (as como la cantidad de
memoria total utilizada por el rbol de bsqueda juego, libro de aperturas, y base de datos final del juego ).

Una representacin comn es un simple matriz de 8 por 8 que contiene uno de los seis valores (vaco, rojo,
negro, rojo-rey, y negro-rey). Una optimizacin del 8 por 8 es el modelo de 10 por 10, que incluye un borde de una
celda alrededor de toda la junta (con estas clulas que contienen el valor offboard esttica). Esto simplifica el
generador de movimiento en la identificacin de movimientos ilegales.

Existen otras representaciones para empacar la placa en un espacio ms pequeo, pero por lo
general se basan en una arquitectura de CPU en particular y las instrucciones para interrogar y
manipular los bits individuales.

Tcnicas empleadas por los inspectores Programas

Programas de damas tienen algunas similitudes con otros tipos de jugadores de la IA como el ajedrez
en el que tienen la apertura nica y que terminan fases de juego. Por esta razn, nos veremos
similitudes entre los inspectores y los programas de ajedrez.
108 108

Libro
Desd
persp
es un
de ap
config
datos
para
conju
funcio
movim
Func
El ev
num
carac
rojo,
dispa
pieza
el nm
por u
exper
decir,
ya no
C
NOTE NOTA fu

L
ca
co
algor
Al igu
poda
medio
del fa
10, q
para
rbol
M

hay o
reduc
el rb
U
d
alfa y
calcu
pued
Otras
Princ
venta
el rb
Histo
Para
juego
config
partic
apare
(con
alfa y
bsqu
el sub
de la
config
parm
bsqu
AI y juegos 109 10

PROPINA

NOTE NOTA

Una funcin hash comn usado en Damas tablas hash se llama Zobrist hash. Esta funcin hash
crea un XOR del tablero de ajedrez, que se traduce en resultados de hash nico y diferente para
diferentes configuraciones de mesa (que es necesaria para una rpida tienda de hash y de consulta
para garantizar un xito).

Base de datos del final del juego

Una base de datos de juegos End-contiene una relacin entre la configuracin de la tarjeta, donde
permanecen unas pocas piezas, y la estrategia que llevar a una victoria. Estos (tpicamente comprimidos)
bases de datos codifican el tablero en una forma compacta y a continuacin, utilizar una funcin de ndice
para identificar rpidamente la estrategia a utilizar.

La base de datos Chinook final del juego incluye todas las configuraciones de ocho piezas de mesa
(casi 444 mil millones de configuraciones). La base de datos se comprime utilizando una
codificacin por longitud de de la representacin final del juego.

Chess Ajedrez

NOTE NOTA
El ajedrez es un banco de pruebas para aplicaciones inteligentes interesante porque el juego es rico y complejo, con un
espacio de bsqueda masiva. Por esta razn, los algoritmos de bsqueda tradicionales son completamente inadecuados
para jugar a un juego razonablemente inteligente.

El ajedrez es un juego de informacin perfecta, a diferencia de juegos como el pker, donde no toda la
informacin que se conoce a cada jugador. Ambos jugadores ven el mismo tablero de ajedrez y saben todos los
movimientos que son posibles para ambos jugadores.

Ordenadores de ajedrez primeros operados de forma de fuerza bruta, ya que la velocidad de la


computadora fue visto como su mayor activo. La comprensin de la complejidad del juego de ajedrez,
que 's ahora se sabe que se requiere algo ms (pero la velocidad de clculo doesn ' t dao).

A principios de los das de la automatizacin de ajedrez, se utiliz limitada Minimax bsqueda en


profundidad para determinar el mejor movimiento para hacer. Con potencia limitada de la CPU y la
memoria, Minimax operado en rboles muy poco profundas, por lo que el horizonte efecto reducido
al mnimo la inteligencia de los movimientos. Con el advenimiento de las variaciones minimax, que
te todava encuentra Minimax como el algoritmo bsico de los sistemas modernos de ajedrez en la
actualidad.

programas de ajedrez se hacen comnmente de tres mdulos. El primero es un generador de movimiento que
analiza la actual junta directiva e identifica los movimientos legales que se pueden hacer. El segundo mdulo es la
funcin de evaluacin,
110 110 Artificial Intelligence Inteligencia artificial

PROPINA

que calcula una utilidad relativa para una configuracin de tablero de dado (lo bien un tablero dado se compara
con otros para una configuracin de la placa dada). El ltimo mdulo es el algoritmo de bsqueda que debe
recorrer de manera eficiente a travs de las configuraciones de mesa disponibles, teniendo en cuenta un
movimiento, y decidir qu camino tomar a travs del rbol para seleccionar el siguiente movimiento de hacer.

En la dcada de 1990 de IBM Deep Blue 's derrotado con xito Gary Kasparov, que en ese
momento era el campen del mundo de ajedrez.

Representacin tablero de ajedrez

Una representacin simple para un tablero de ajedrez es un 8 por 8 matriz bidimensional con cada
clula que contiene un identificador que representa el estado de la clula. Por ejemplo, 0 representara
una celda vaca, 1 para un pen blanco, -1 para un pen negro, etc.

Una representacin mejorado aadi un tablero de dos clulas a toda la junta, que se llena con un personaje
conocido que significa un movimiento ilegal. Esto hizo que fuera ms fcil de identificar movimientos ilegales como
sera posible con caballeros, y optimiza los comprobacin de lmites aspecto del programa de ajedrez.

Hoy en da, una representacin comn para los programas de ajedrez es el bitboard. Utilizando una palabra
de 64 bits (disponible en muchos ordenadores), cada clula en el tablero de ajedrez puede ser representado por
un bit de la palabra de 64 bits. Cada bit simplemente determina si una pieza se encuentra en la clula (1) o si la
celda est vaca (0). Pero en lugar de tener una sola bitboard por todo el tablero de ajedrez, hay 'Sa bitboard para
cada tipo de pieza en el tablero de ajedrez (una para cada uno de los tipos de piezas en blanco y negro). Un pen
bitboard representara la colocacin de peones blancos en el tablero. Un obispo bitboard contendra bits para los
alfiles negros. La ventaja de la bitboard es que los ordenadores compatibles con el tipo de 64 bits pueden
representar y consultar el estado de las juntas a travs de operaciones de bits de enmascaramiento, que son
extremadamente eficiente con mucha facilidad.

Otra ventaja de la bitboard es la eficiencia en la seleccin de un movimiento legal. Por OR de


(combinando) los bitboards, se puede ver que las clulas se toman en el tablero y, por lo tanto, que se
mueve son legales. Es 'Sa operacin sencilla que ' s eficiente para la generacin de movimiento.

Tcnicas utilizadas en los programas de ajedrez

Vamos que est ahora algunas de las principales tcnicas y algoritmos que son empleados por los
programas de ajedrez.

Base de datos del libro de apertura

Los primeros movimientos en un juego de ajedrez son importantes para ayudar a establecer un buen
AI y juegos 111 111

PROPINA

NOTE NOTA

posicin en el tablero. Por esta razn, muchos sistemas de ajedrez emplean una base de datos de
movimientos de apertura para una determinada estrategia que puede ser lineal busc.

Buscar Minimax con poda alfa-beta

Los sistemas de ajedrez suelen utilizar una versin modificada del juego de bsqueda de rboles
mediante la realizacin de una bsqueda superficial nica del rbol de juego utilizando minimax con
poda alfa-beta. Aunque no es intuitiva, se mueve ese resultado en las puntuaciones ms pequeos
(subir o bajar) son elegidos a veces que puede mejorar la posicin global bordo en lugar de una
ganancia a corto plazo.

El factor de ramificacin tpico de Ajedrez es de alrededor de 35, pero con la poda alfa-beta, esto
puede ser reducido a un factor de ramificacin eficaz de los 25. An grande, pero esta reduccin
puede ser de gran ayuda para permitir bsquedas ms profundas en el rbol de juego.

Otros algoritmos de bsqueda se han ideado para Chess, como la bsqueda de aspiracin, que
establece el lmite de los parmetros alfa y beta a algn valor heursticamente definido en lugar de +
INFINITY y -INFINITY. Esto limita la bsqueda a los nodos con una caracterstica particular. Hay 's
tambin la quiescencia de bsqueda, que trata de evaluar las posiciones que son relativamente
quiescente, o muerto. [Shannon 1950]

Otro mecanismo para reducir al mnimo el espacio de bsqueda se llama nulo movimiento hacia adelante de poda.
La idea bsica aqu es que si usted no hace nada (sin movimiento), puede hacer que el oponente nada para
cambiar la configuracin de la tarjeta en su beneficio? Si la respuesta es no, entonces oponente se mueve podran
ser podados de forma segura desde el rbol. Tambin se emplean tablas de transposicin hash para identificar sub-
estructuras que ya han sido evaluados para evitar la bsqueda repetitiva. El hash se utiliza para identificar
rpidamente la configuracin de la placa idnticos.

Esttica Evaluation Board

Debe quedar claro que a menos que Estamos cerca del final del juego, nuestra bsqueda del rbol de juego no se
encontrar ningn nodos hoja. Por lo tanto, te necesita tener una buena funcin de utilidad que nos ayuda a
decidir qu movimiento de hacer dado nuestro cercano horizonte. La funcin de utilidad para el ajedrez define si
una configuracin de la tarjeta dada es bueno o malo para el jugador, y puede decidir esto en base a un gran
nmero de factores. Por ejemplo, es nuestro rey o una pieza importante en peligro, o es el oponente en peligro por
la actual junta? Es una pieza perdida en el tablero, y si lo es, qu es el coste de la pieza (pen siendo el menos
importante, seguido por el obispo, caballo, torre, y la reina en el aumento de valor). Some Algunos
112 112 Artificial Intelligence Inteligencia artificial

de las otras evaluaciones que pueden tener lugar incluyen el espacio disponible para las piezas
a mover a y luego el nmero de amenazas actuales (a favor o en contra). [AI Chess]

Mientras que el algoritmo minimax con poda alfa-beta proporciona los medios para buscar en el rbol
de juego, la funcin de evaluacin nos ayuda a decidir qu camino se basa mejor en una serie de
funciones de utilidad independientes.

Otelo
El juego de Otelo (tambin conocido como Reversi) es otro juego para el que se han aplicado muchos
algoritmos de IA. Ejemplos de algoritmos de IA que se han implementado en los jugadores Othello
incluyen heurstica bsicos, minimax con poda alfa-beta, redes neuronales, algoritmos genticos, y otros.

Otelo tiene algunos aspectos comunes que son similares a otros dos jugadores juegos de suma cero. Por
ejemplo, como el ajedrez, Otelo tiene un juego de apertura, una mitad del juego, y un juego final. Durante estas fases
del juego, los algoritmos pueden ser diferentes de cmo se mueve se buscan y seleccionan (que Exploraremos
algunas de ellas en breve).

AI para los programas de Othello, como ajedrez y damas, lata regularmente campeones humanos de
juego. Por ejemplo, en 1997, el programa Otelo Logistello derrot a los campeones del mundo Takeshi
Murakami seis juegos a cero. Este programa se retir al ao siguiente de juego del torneo.

Las tcnicas utilizadas en los programas Othello

conocimiento de apertura

Al igual que muchos sistemas de juego de roles, movimientos de apertura son un buen indicador de las
posiciones del tablero fuertes posteriores. Por esta razn, el conocimiento de las fuertes posiciones en el
tablero inicial es recogida y usada por muchos programas de Otelo de papeles. En algunos casos, los
datos se recogen de forma automtica a travs de auto-play.

Funcin de evaluacin esttica

El aspecto ms importante de todos los programas de Otelo es la funcin de evaluacin. Es 'es tambin una de
las partes ms difciles de programar, ya que hay un nmero de variaciones que se pueden aplicar. Tres
variaciones particulares son tablas de disco cuadrados , la evaluacin basada en la movilidad y la evaluacin
basada en patrones . [Anderson 2005]

Mesas de disco cuadrados evaluar la junta desde la perspectiva de que diferentes clulas tienen
diferentes valores. Por ejemplo, la celda de la esquina se evala como una puntuacin alta, donde las
clulas prximas a las esquinas evalan a puntuaciones bajas.

En la evaluacin basada en la movilidad , movimientos que maximizan la movilidad (que se


define como el nmero de movimientos disponibles) se puntan ms alto que aquellos que
minimizan la movilidad.
AI y juegos 113 113

Por ltimo, la evaluacin basadas en patrones funciones intentan modelar el partido configuraciones locales
para determinar la utilidad de un movimiento. Esto se realiza comnmente mediante la evaluacin de cada fila,
columna, y la configuracin de esquina diagonal de forma independiente y luego sumando ellos, potencialmente
con los pesos para diferentes caractersticas.

Adems, hay una serie de heursticas que se puede utilizar en la evaluacin de los posibles
movimientos. Esto incluye evitar los bordes se mueve (ya que pueden crear oportunidades para
el oponente), as como mantener el acceso a las regiones de la junta (como puede ser el caso
cuando todos los discos de borde en una regin son para el jugador actual).

algoritmo de bsqueda

En las fases mediados de y de fin de juego de Otelo, se utiliza Minimax juego de bsqueda de rboles con poda
alfa-beta. Poda alfa-beta es especialmente significativo en Otelo como la bsqueda de nueve capas con solo
Minimax evala unos mil millones de nodos. Usando la poda alfa-beta, el nmero de nodos para evaluar reduce
a un milln de nodos y, a veces menos. El jugador Logistello Otelo hace uso de Minimax con alfa-beta, entre
otros algoritmos especializados para Otelo.

Adems de Minimax con la poda alfa -beta, bsqueda selectiva se puede utilizar eficazmente.
Bsqueda selectiva es similar a la profundizacin iterativa (vase el captulo 2). En la bsqueda selectiva,
buscamos a una profundidad, y luego tomamos caminos que conducen a los mejores movimientos, y
buscarlos a una profundidad mucho ms profundo. Esto nos permite buscar ms profundamente en el
rbol de juego, centrndose nuestra bsqueda a los movimientos que proporcionan el mayor beneficio.
Usando este mtodo con las estadsticas para comprender la relacin entre la bsqueda superficial y la
bsqueda ms profunda se llama Multi-Prob-Cut , o MPC. Este fue creado por Michael Buro y se formaliza
a CUT pares (por ejemplo, la bsqueda superficial de cuatro niveles a la profundidad de bsqueda de 12
niveles se llama un par de corte de 4/12).

End-juegos

A medida que el juego se acerca al final, el nmero de movimientos disponibles disminuye y


permite una bsqueda ms profunda del rbol de juego. Al igual que en la mitad del juego, la
bsqueda minimax con poda alfa-beta funciona bien, pero tambin se utilizan variaciones tales
como MPC.

otros algoritmos

Mientras minimax y alfa-beta son comunes, y se utiliza en diferentes etapas del juego, otros algoritmos
tambin han encontrado aplicacin en Otelo. El programa Otelo Anbal hace uso de redes neuronales
multicapa para la determinacin movimiento. Con el fin de entrenar la red neuronal, se crea una red
neuronal multicapa al azar y luego juega contra s mismo. Los movimientos que llevaron a la victoria se
refuerzan en la red a travs de un algoritmo de propagacin hacia atrs.
114 114 Artificial Intelligence Inteligencia artificial

Por el contrario, los movimientos que dieron como resultado una prdida se refuerzan
negativamente a debilitar su seleccin en el futuro. Despus de muchos juegos y propagacin
hacia atrs asociado un razonable Othello jugador resultados.

Go Ir
Nos va a terminar nuestra discusin de juegos perfectos de informacin con el juego de Go. Go es uno de
los retos actuales de IA como el alcance y la complejidad del juego es bastante grande. Consideremos,
por ejemplo, el rbol de juego factor de ramificacin que es un gran determinante de la complejidad del
juego. En el juego de ajedrez, el factor de ramificacin promedio es de 35. Pero en Go, el factor de
ramificacin tpica es de 300. Este orden de magnitud de diferencia significa que la bsqueda juego-rbol
con Minimax, incluso cuando se aplica la poda alfa-beta, los resultados en el rbol de poca profundidad
bsquedas. Incluso entonces, se requieren considerables memoria y el tiempo.

PROPINA

Para dar un ejemplo concreto, cuatro movimientos en el ajedrez puede evaluar 35 ^ 4


configuraciones de mesa (o aproximadamente 1,5 millones). En Go, cuatro movimientos evaluaran
200 ^ 4 configuraciones de mesa (o 1,6 billones de dlares).

Mientras contina el desarrollo considerable para la construccin de un jugador inteligente Go, los
resultados no han sido prometedores. Ajedrez, incluso con sus enormes rboles juego se ve tan simple en
comparacin a donde ir. Por esta razn, algunos creen que cuando un programa Go es capaz de jugar a
nivel de campeonatos, AI habr madurado a un nuevo nivel. [Johnson 1997]

Go-Junta Representacin

Lo que representa un tablero de Go puede ser un poco diferente que en otro juego de mesa representacin
's. Adems de la representacin sencilla placa (19 por 19 bordo con valores que indican, piedra negro vaco,
o piedra blanca), otros atributos se mantienen para apoyar el anlisis de la junta y la posterior generacin de
movimiento. Los atributos incluyen grupos de piedras, la informacin del ojo (patrones de piedras), y el
estado de la vida -la muerte y piedras (que estn en peligro de captura y que pueden mantenerse vivas).

Las tcnicas utilizadas en los programas Go

Go tiene algunas similitudes con otro juego que juegan AI, y tambin algunas diferencias. Es 's
interesante observar que los algoritmos de construccin de equipo Go ha oscilado entre juego de
bsqueda de rboles, sistemas de reglas, algoritmos evolutivos, y la ciencia cognitiva. Sin embargo,
dada la complejidad de Go, nuevos algoritmos son probablemente necesaria para hacer frente a la
amplitud y profundidad que se encuentra en el juego.
AI y juegos 115 115

movimientos de apertura

Como la mayora de IA del juego, los movimientos de apertura son importantes para establecer una
configuracin buena tabla. Por esta razn, casi todos los programas Go utilizan lo que 's conocido como
bibliotecas joseki. Estas bibliotecas contienen secuencias de movimientos que pueden ser utilizados antes
de utilizar la funcin de evaluacin para la generacin de movimiento.

mover Generacin

Dado el gran factor de ramificacin de Go, slo tiene que tomar cada movimiento legal y
generando un rbol de juego a una cierta profundidad no es factible. En su lugar, se aplican
heurstica para identificar qu movimientos legales son buenos candidatos para la revisin. Para
este conjunto de movimientos, la evaluacin se invoca para determinar qu tomar. Esto difiere
de ajedrez, por ejemplo, donde la bsqueda determina el paso a tomar. En ir, pasar candidatos
se generan, y luego stos se evalan para determinar qu es lo mejor.

Algunas de las heursticas que pueden ser aplicados a la generacin de movimiento Ir incluyen la
forma o la generacin de grupo (para tratar de seguir los patrones en una biblioteca de patrones),
manteniendo grupos vivos, o tratando de matar a los grupos opositores, as como la ampliacin o la
defensa de los territorios en el tablero. Heurstica tambin se pueden aplicar para los movimientos
globales, o los que se concentran en las regiones locales de la junta.

Relativa a mover generacin, algunos programas Go implementan Meta


NOTE NOTA

Generation. Generacion. Esto proporciona una visin de alto nivel de la estrategia y la tctica
para ser utilizado para la generacin de movimiento de nivel inferior.
Evaluation Evaluacin
Una vez que se identifican un conjunto de candidatos movimientos, los movimientos se les ordena
evaluarlos en funcin de su importancia relativa. La importancia poda
basarse en el objetivo actual (segn lo dictado por un generador de meta-nivel superior),
la captura de una cadena, o hacer un ojo, entre otros.
La evaluacin de los candidatos se mueve ahora se puede realizar utilizando el juego de rboles
de bsqueda (como minimax con poda alfa-beta). Id, pues, difiere bastante
poco en cmo se realiza la bsqueda. Por ejemplo, el programa Go intelecto
utiliza la heurstica en la bsqueda para determinar cundo cort una bsqueda basada
en un valor objetivo predeterminado, o para asociar un valor de urgencia con una
mover y tenerlo en cuenta al evaluar la posicin. Otros programas pueden
restringir movimientos a una regin de la junta y realizar la bsqueda rbol local.
Otros algoritmos se han utilizado en la evaluacin de configuraciones tablero de Go,
tales como AND-OR grficos, redes neuronales, diferencia temporal (TD) de aprendizaje,
Buscar y prueba-nmero. Con mucho, la caracterstica ms importante de Go
programas radica en la heurstica y reglas desarrolladas por los fuertes jugadores de Go o
a travs de anlisis retrgrado.
116 116 Artificial Intelligence Inteligencia artificial

Final del juego

El uso de la base de datos final del juego encuentra un uso exitoso en Ir, al igual que muchos
otros juegos complejos. Estas bases de datos pueden ser generados automticamente de
configuracin de la tarjeta y normas que se aplican para determinar el mejor movimiento para
hacer, y luego despus de determinar el resultado final, atribuyendo el movimiento con la victoria
/ prdida / sorteo.

Chaquete

Let 's ahora dejo el mundo de los juegos de informacin perfecta y explorar una serie de juegos
de informacin imperfecta (o juegos estocsticos). Recordemos que en un juego de informacin
perfecta, cada jugador tiene acceso a toda la informacin disponible sobre el juego (no hay nada
oculto). Backgammon introduce el elemento de azar, donde se rodaron los dados para
determinar los movimientos legales que son posibles.

Lo que hace tan interesante Backgammon en el dominio de la IA es que es extremadamente


complejo. Recordemos que en el ajedrez, el factor de ramificacin media es de 35, y en Go, el factor
de ramificacin puede ser tan alto como 300. En Backgammon, el factor de ramificacin alcanza los
400, por lo que es factible como candidato para la bsqueda juego-rbol. simple bsqueda de
movimientos basados en una configuracin de la tarjeta dada tambin es factible debido al enorme
nmero de estados en el Backgammon (estimado en ms de 10 ^ 20).

Afortunadamente, hay algunas otras tcnicas de IA que se han aplicado con xito para Backgammon,
y jugar al mismo nivel que los campeones humanos.

Las tcnicas utilizadas en los programas de Backgammon

Mientras que otros juegos complejos como el ajedrez, damas, Otelo y se han utilizado con xito
la bsqueda del rbol de partidas para la evaluacin y la generacin de movimiento, la alta
relacin de ramificacin de Backgammon hace que sea inviable. Dos enfoques que se han
aplicado a Backgammon estn basados en redes neuronales multicapa con autoaprendizaje.

Neurogammon

El jugador Neurogammon (creado por Gerald Tesauro) utiliza una red neuronal multicapa y el
algoritmo de retropropagacin para la formacin. La configuracin de la placa en bruto se us
como la entrada de red MLP, y la salida define el movimiento de hacer. Neurogammon fue
entrenado usando aprendizaje supervisado (backpropagation) y una base de datos de juegos
grabados de jugadores de backgammon expertos. El resultado fue un jugador de backgammon
fuerte, pero debido a su dependencia de una base de datos finito de juegos grabados, jug por
debajo del nivel de los jugadores expertos.
AI y juegos 117

TD-Gammon

El programa posterior Backgammon, tambin construido por Tesauro, llamado TD-Gammon, utiliza
una estructura de conocimiento de redes neuronales multicapa, sino una tcnica diferente para la
formacin, as como un algoritmo de aprendizaje mejorado.

En primer lugar, TD-Gammon hace uso de la diferencia temporal o TD, el algoritmo (cubierto en el
Captulo 8) el aprendizaje. Para cada juego, los dados virtuales se rodaron, y cada uno de los posibles 20
movimientos fueron evaluados. La medida de mayor valor estimado se utiliza como el valor esperado. A
continuacin, la configuracin de la placa se aplic a la red neuronal y alimenta entonces hacia adelante

Figura 4.10: TD-Gammon MLP representacin de red neural.


118 118 Artificial Intelligence Inteligencia artificial

PROPINA

a travs de la red. Un error delta se calcula entonces le da el valor resultante y el movimiento con el
valor esperado ms alto, y el error se aplica a los pesos de la red.

Curiosamente, no hay juegos de expertos se aplicaron a la red, pero en lugar de la red neuronal para seleccionar
movimientos para el jugador y el oponente. De esta manera, la red neuronal juega contra s mismo, y despus de
muchos juegos, una red neuronal como resultado que podan jugar (y ganar) a nivel de expertos.

La capacidad de TD-Gammon para aprender el juego de backgammon con cero conocimiento inicial del juego
es un testimonio de la obra de Arther Samuel jugador de los inspectores 's que introdujo la idea de auto-play
como un medio para construir un programa que aprendi sin la necesidad de supervisin.

Adems, Tesauro actualiza las entradas a la red neural para incluir no slo la configuracin de la junta
Backgammon, pero tambin algunas entradas especializadas que caracterizan caractersticas de la actual
junta.

Cuando no aprender, el programa TD-Gammon utiliza la red neuronal generada como el medio para la
generacin de movimiento. Para cada uno de los movimientos posibles de una configuracin de la placa dada,
cada posible nueva junta (despus de que se hizo el movimiento) se aplica a la red neural. El resultado de la red
es la probabilidad de una victoria, dado el ltimo movimiento (vase la Figura 4.10). El proceso entonces es
simplemente para evaluar cada uno de los movimientos posibles (utilizando un generador de movimiento) y
seleccione la nueva configuracin de la placa, que produce la ms alta probabilidad de ganar (la celda de salida de
la red neuronal).

Tesauro 's TD-Gammon ha evolucionado desde la versin inicial. El primer TD-Gammon (0.0) utilizadas 40
nodos ocultos dentro de la red neuronal y 300K juegos de entrenamiento para atar a la mejor usando otros
programas de Backgammon (como Neurogammon). Las versiones posteriores de TD-Gammon aumentaron los
nodos ocultos a 160 y tambin aument el nmero de juegos de entrenamiento muy por encima de un milln. El
resultado fue un jugador de backgammon fuerte que opera al mismo nivel que los mejores jugadores humanos en
el mundo. [Sutton / Barto 1998]

Adems de tener cero conocimiento del juego, la red neuronal ha aprendido las mejores posiciones
de apertura que diferan de los que piensa que es el mejor en su momento por los jugadores humanos.
De hecho, los jugadores humanos utilizan ahora las posiciones de apertura que se encuentran por TD-
Gammon.

Pker

El pker es un juego muy interesante que tambin funciona como un banco de pruebas ideal para los
algoritmos de IA. Es 's tambin un juego de muchos aspectos que se pueden utilizar diferentes AI
AI y juegos 119 119

techniques. Tcnicas. Como el pquer es un juego de informacin imperfecta (no toda la informacin est
disponible para todos los jugadores en trminos de sus tarjetas), un programa de Poker debe incluir la
capacidad de modelar la tarjeta probable que el oponente tiene.

Lo que hace Poker ms interesante es que el pquer es un juego de engao. Adems de modelar al
oponente y su estrategia, el programa Poker debe ser capaz de ver a travs de tcticas engaosas del
oponente en trminos de farol (intentar hacer otro jugador cree que su mano es mejor de lo que realmente es).
De igual importancia es la necesidad de evitar el juego predecible. Los jugadores de pquer profesionales
pueden explotar fcilmente cualquier caracterstica o patrn predecible de un jugador de pquer, y por lo tanto
es necesario algn elemento de aleatoriedad.

Desde una perspectiva prctica, es necesaria la construccin de un programa de Poker fuerte una
serie de caractersticas. El primero es la capacidad de evaluar la mano dada (en comparacin con las
manos invisibles de los oponentes) y determinar si la mano podra ganar. La probabilidad se mide como
una probabilidad, pero teniendo en cuenta la necesidad de evitar la previsibilidad del jugador, el farol debe
ser incorporada a hacer uso de las manos dbiles. La estrategia de apuestas es tambin una
caracterstica importante. Si bien esto podra basarse nicamente en la fuerza de la mano, sino que
tambin debe incluir los datos del modelo oponente, rentabilidad de la olla, etc. El modelo oponente es
otro elemento importante que se utiliza para entender el jugador cartas ocultas 's en funcin de su
comportamiento ( estrategia de apuestas, la experiencia pasada, etc.).

Loki - Un jugador de pker de aprendizaje

El jugador Loki Poker es un programa de aprendizaje que incorpora el modelado oponente con
un juego que puede ser difcil de predecir. La arquitectura bsica simplificada de Loki se muestra
en la Figura 4.11. Los elementos principales de esta arquitectura son el generador de Tripler,
Mano Evaluador, opositor Modeler, y, finalmente, el selector de acciones.

El elemento fundamental de la arquitectura es lo que 's llama la Triple . Un triple es un conjunto de tres
probabilidades que representan la probabilidad de plegado, aumento, y llamado. Utilizando el estado del
juego pblico, el oponente comportamiento 's se modela mediante el mantenimiento de triples para los
distintos estados de juego. A medida que el oponente toma decisiones, los triples se actualizan para
mantener una imagen constante de lo que el oponente da un cierto escenario.

Usando el modelo del oponente, entonces podemos identificar lo que debemos hacer dada nuestra
mano actual y la probabilidad de que el oponente mover 's. A partir de esto, generamos un triple. El
selector de accin, entonces puede escoger al azar una de las acciones en funcin de las probabilidades
en la triple. El uso de probabilidades de esta manera hace que sea mucho ms difcil para el adversario
predecir lo que vamos a hacer, ya que fundamentalmente puede ser al azar.
120 120 Artificial Intelligence Inteligencia artificial

FIGURA 4.11: Arquitectura bsica del jugador Loki Poker (Adaptado de [Loki 2003]).

La estrategia de apuestas se basa en una simulacin interna en una situacin dada y el pago
esperado. La simulacin hace uso del juego de bsqueda de rboles para identificar los posibles
resultados, pero la bsqueda es selectiva para evitar la gran espacio de estados que podran ser
enumerados.

Loki tambin ha hecho uso de la auto-play como un medio para aprender el juego de pquer
y la auto-optimizacin. La varianza en el juego con Loki (utilizando triples de probabilidad) le
permiti desempear numerosas versiones de s mismo, mientras se adapta a la obra. El
modelado y simulacin permiten oponente Loki jugar Poker razonablemente fuerte.

Escarbar

Para nuestro juego clsico final, Exploraremos el juego de Scrabble. Las ideas interesantes
detrs de la construccin de un jugador de Scrabble son tambin los que nos hemos visto hasta
ahora en otros jugadores de juegos clsicos.

El jugador Maven Scrabble (creado por Brian Sheppard) divide su obra en tres fases
separadas. Estos son los mitad del juego (que dura hasta que hay nueve o menor nmero de
baldosas que quedan en la bolsa), fase previa a la final del juego (que comienza cuando nueve
baldosas se dejan) y, por ltimo, la fase final del juego (cuando no hay azulejos permanecen ).
AI y juegos 121 12

En la fase de la mitad del juego, Maven utiliza un enfoque basado en la simulacin para determinar
qu movimiento hacer. La funcin de evaluacin para la eleccin de la medida se basa simplemente en
ese movimiento que lleva al nmero mximo de puntos. Teniendo en cuenta las fichas disponibles para el
jugador, el equipo identifica las palabras que son posibles (usando el tablero, que determina los
movimientos legales que se pueden hacer). Estas palabras (posibles movimientos) se ordenan por la
calidad (puntuacin). Algunos de estos posibles movimientos se simularon mediante sorteo al azar de los
azulejos (como con Poker AI), con el juego continua cierto nmero de vueltas (normalmente tres y
cincuenta y ocho capas de bsqueda en un rbol de juego). Durante la simulacin, los puntos obtenidos
se evalan y se asocian con el movimiento potencial dado. La realizacin de miles de dibujos al azar
permite que el programa para entender el mejor movimiento para hacer (Word para colocar en el tablero).

La fase de pre-final del juego funciona de manera similar a la mitad del juego, pero funciona
esta fase hacia la creacin de una buena situacin para el final del juego.

Por ltimo, la fase final del juego comienza una vez que no hay baldosas se dejan en la bolsa. En esta
etapa en el juego, no hay baldosas se dejan en la bolsa, y cada jugador se deducen las fichas restantes
en el jugador contrario bastidores 's (como todas las fichas estn en el tablero o en los bastidores). En
este punto, el juego cambia de un juego de informacin imperfecta a una de informacin perfecta. El
algoritmo B * A continuacin se aplica en esta etapa para una bsqueda profunda de las posibilidades de
palabras.

Para una rpida palabra de bsqueda, un lxico de palabras se almacena en un rbol. Esto
permite la bsqueda rpida de palabras relacionadas, donde la raz es la primera letra de la palabra,
y la hoja contiene la ltima letra de una palabra dada. Por ejemplo, la palabra 'examen ' y 'ejemplo '
existira de la misma raz de la letra 'e. ' '

Acciones Maven una serie de tcnicas que han explorado hasta el momento en el clsico juego
jugando AI. Hay que recordar que muchos juegos, como el ajedrez, el juego se dividieron en una
serie de fases. Cada fase puede diferir de la complejidad del juego y por lo tanto incorporar diferentes
algoritmos o estrategias, para el juego. Tambin de inters es el uso de la simulacin para identificar
las direcciones de juego que pueden ocurrir (como Scrabble es un juego de azar y la informacin
imperfecta). Recordemos que Poker utiliza la simulacin para identificar los diferentes caminos de
juego dada oculta (o agujero) tarjetas. Del mismo modo, Maven utiliza la simulacin para comprender
mejor los efectos o la seleccin de palabras desde la perspectiva de los azulejos oponente y tambin
los azulejos que an permanecen en la bolsa.

VIDEO JUEGO AI

Mientras que los juegos clsicos se han concentrado en la construccin de los jugadores ptimos utilizando AI,
juegos de video como de primera persona tiradores (FPS) o juegos de estrategia se centran
122 122 Artificial Intelligence Inteligencia artificial

PROPINA

ms en la construccin de la IA que es a la vez desafiante y divertido de jugar. Como reto es relativo al


jugador 's capacidad, la IA idealmente debe ser adaptable y aumentan en dificultad a medida que el
jugador ' aumenta la capacidad s.

Gran parte del desarrollo de la IA para juegos clsicos se centr en la bsqueda de fuerza bruta depender de
computacin de alto rendimiento. videojuego AI es muy diferente en ese pequeo de la CPU est disponible para
la IA (tan slo el 10%, ya que la mayora de la CPU est ligado a los motores de fsica y grficos). Por lo tanto,
nuevos algoritmos son necesarios para sintetizar personajes crebles y comportamientos de los videojuegos que
consumen poco de la CPU.

Mientras que AI es el trmino comnmente utilizado para describir el oponente comportamiento 's en
una variedad de juegos de video, este es un trmino equivocado. La mayora de videojuegos AI es
simplista en la naturaleza y rara vez se eleva por encima del nivel de las mquinas de estados
finitos.

Las aplicaciones de inteligencia artificial Algoritmos en Video Juegos

Deje que 's ahora a revisar algunas de las tcnicas utilizadas en los videojuegos AI. Nosotros te
damos una seccin transversal de los dominios en los que AI se puede aplicar, y luego explorar
algunos de los algoritmos que se han utilizado all.

Las siguientes secciones definen algunos de los elementos que se utilizan comnmente pa
NOTE NOTA

AI, pero no necesariamente el estado del arte. La seccin de referencias pa


ms informacin sobre dnde videojuego AI va hoy.
La aplicacin de la IA en los videojuegos es un rea rica para la investigacin en u
nmero de niveles. entornos de videojuegos (como se pueden encontrar en r
tiempo de juegos de estrategia y en primera persona tiradores) proporcionan un til banco de pruebas p
la aplicacin y visualizacin de tcnicas de IA. Juegos en s tien
convertido en una industria enorme (que 's estima que los juegos brutos ms de pelcula
por lo que el desarrollo de tcnicas de IA con las limitaciones asociadas que pued
se encuentran en juegos (como asignacin mnima de la CPU) puede ser muy beneficio
Es 's tambin posible permitir diferentes algoritmos y tcnicas para comp
uno contra el otro en estos entornos a entender su s
las diferencias y ventajas.
Adems del valor de entretenimiento de los videojuegos, las tcnic
para la construccin de personajes crebles tambin encuentra valor (y financiacin de la investigaci
en aplicaciones militares. Por ejemplo, los simuladores de combate areo que imi
la estrategia y la tctica de los pilotos veteranos, o el jerrquico y disciplina
el comportamiento de las tropas sobre el terreno en los simuladores de gestin de batalla. Each Cada
AI y juegos 123 12

de estas aplicaciones requiere algoritmos inteligentes que pueden diferir en forma de realizacin,
sino que evolucionan a partir del mismo conjunto de tcnicas.

La encarnacin fsica de muchas de estas ideas y algoritmos en el


NOTE NOTA

campo de la robtica ser explorado en el captulo 10.


El movimiento y la trayectoria de investigacin
El objeto de la trayectoria de investigacin en muchos juegos de primera o tercera persona tiradores,
a los juegos de estrategia en tiempo real es la identificacin de un camino desde el punto A al punto B
la mayora de los casos, existen varias rutas del punto A al punto B, por lo que las limitaciones de may
existir como camino ms corto, o menos costo. Considere, por ejemplo, dos puntos
separados por una colina. De hecho, puede ser ms rpido para ir alrededor de la colina, de ir
sobre ella, pero subiendo la colina podra dar alguna ventaja para el jugador (por ejemplo una
Archer con un oponente enemigo en la cuesta abajo opuesta).
En algunos casos, la ruta de investigacin es la bsqueda. El paisaje sobre el que ests
para trazar una ruta es un grfico de nodos que representan puntos de referencia. Cada borde de
la grfica tiene un coste dado (por ejemplo, llanuras podran tener un costo borde
de uno, donde se inclina podra tener un coste borde coherente con su pendiente).
Considerando ruta de investigacin como la bsqueda a travs de un grfico de nodos con ponderada
bordes, el A * algoritmo de bsqueda (explorado en el captulo 3) es ideal para este
application. solicitud. Es ptimo en comparacin con DFS y BFS, y nos puede dar la
camino ptimo.
El problema con A * es que est un muy informticas exigentes algoritmo.
Teniendo en cuenta el nmero de agentes en un juego de estrategia en tiempo real que necesita
moverse por el mapa, la cantidad de tiempo que tarda un * se multiplicara.
A medida que la AI en un juego de estrategia en tiempo real tambin necesitara apoyo de alto nivel
planificacin de objetivos y la estrategia econmica, la trayectoria de investigacin, pero es un elemen
que
debe ser optimizado.
Afortunadamente, hay algunas otras opciones para simplificar la operacin de
determinar que se mueven para hacer en un mapa. Nosotros empezaremos con un ejemplo sencillo
que demuestra el movimiento ofensivo y defensivo usando un grfico y
Bsqueda en una tabla, y luego explorar algunas de las otras tcnicas utilizadas.
Tabla de consulta con Ofensivo y Defensivo Estrategia
Cualquier mapa puede reducirse a un grfico, donde los nodos son los lugares que pueden
visitar, y los bordes son los caminos entre los nodos. La reduccin de un mapa
de esta manera hace un par de cosas. En primer lugar, reduce potencialmente un mapa con
un nmero infinito de puntos en un grfico con un menor nmero de puntos. Los bordes, o
los caminos entre nodos en el grfico, definir las diversas maneras en que podemos
viajar por nuestro grfico (y nuestro plano).
124 124 Artificial Intelligence Inteligencia artificial

Considere el mapa simple de una habitacin en la Figura 4.12. En este mapa, el jugador humano entra
en la parte inferior. Nuestro jugador no-carcter (o, APN) entra en la parte superior. Hay muchos lugares
en el mapa que el jugador y el CNP podra ir, pero muy pocos de ellos son importantes. Tenga en cuenta
que este es un ejemplo simplista, y un sistema real incluira muchos ms puntos del mapa.

Consideramos que estamos desarrollando una IA para un FPS. El objetivo es que el jugador y la
APN para luchar entre s, pero esto implica que debemos inculcar en nuestra NPC la capacidad de
atacar al jugador moviendo a su ubicacin. Adems, si nuestro APN est lesionado, queremos evitar
que el jugador recuperar fuerzas. Para que sea ms sencillo para nuestro agente de la APN, que
nombre contiene codificar el mapa como un simple grfico. Este grfico contiene las posiciones
defensivas que sern importantes en nuestro NPC (vase la Figura 4.13).

En la figura 4.13, nuestro mapa sencillo se ha reducido a un grfico an ms simple. Este


contiene las siete posiciones que puedan existir nuestro agente de la APN. Adems, los bordes de la
grfica muestran los movimientos legales que nuestra NPC

FIGURA 4.12: Correspondencia simple para un APN IA.


AI y juegos 125 12

agente puede tomar. Tenga en cuenta que, dado que el jugador puede existir en cualquier ubicacin
en el mapa (no se limita a la grfica), definimos rectngulos para el jugador. Si el jugador est en el
rectngulo, que nombre contiene simplificar su posicin para el nodo contenida en el rectngulo. El
propsito de esta se pondr de manifiesto en breve.

Nosotros te Suponemos aqu, en aras de la simplicidad, que la APN siempre ve


NOTE NOTA

el jugador. En un sistema ms complicado, el jugador tendra que ser


en el NPC 's campo de visin (FOV) para que el NPC para identificar el
El jugador presencia 's.
Ahora tenemos un grfico simple para nuestra APN. El siguiente paso es definir
lo que nuestro agente de la APN debe hacer en funcin de su estrategia. Por simplicidad,
nos 'll implementar dos estrategias bsicas. Si nuestro APN es saludable, que te tomamos una
estrategia ofensiva para atacar al jugador. Si el CNP no es saludable, entonces te
tener una estrategia defensiva.

FIGURA 4.13: Correspondencia simple reducido a un grfico an ms simple.


126 126 Artificial Intelligence Inteligencia artificial

Vamos 's comienzan con la estrategia ofensiva (se muestra en la Figura 4.14). La estrategia se
implementa como una matriz de conectividad grfico sencillo con dos dimensiones. Las filas representan
la ubicacin actual de nuestro APN, mientras que las columnas representan la ubicacin actual del
jugador. Recordemos que nuestro jugador puede existir en cualquier parte del mapa. Si el jugador est en
un rectngulo, que Utilizaremos el nodo contenida en el rectngulo para identificar al jugador 's posicin
actual. Si el jugador no est en un rectngulo, que te simplemente definir esto como desconocido.

La estrategia definida en la Tabla 4.14 es uno de seguir el jugador a su posicin en el mapa.


Por ejemplo, si el APN est en el nodo E, y el jugador es de alrededor de nodo A, a continuacin,
la APN utilizar la tabla estrategia ofensiva y se mueven al nodo D. Si el jugador se mueve
desde el nodo A al nodo C, usamos la tabla de nuevo por el NPC en el nodo D, y el jugador en el
nodo C, lo que resulta en la NPC en movimiento al nodo C (en el ataque).

FIGURA 4.14: tabla de consulta para la estrategia ofensiva agente de la APN.


AI y juegos 127 12

PROPINA

La tabla de consulta prev comportamientos reactivos, como nuestro APN simplemente reacciona a los
movimientos del jugador. Tenga en cuenta que 's tambin sin estado, ningn estado se mantiene entre
las bsquedas y la APN simplemente utiliza su posicin y el jugador ' posicin de s para determinar el
siguiente movimiento.

La estrategia defensiva se muestra en la Tabla 4.15. Esta estrategia es una de tomar algn tiempo para
sanar evitando el jugador. Tomemos, por ejemplo, el NPC en el nodo D y el jugador nuevo en torno a nodo A.
La tabla de bsqueda devuelve un movimiento desde el nodo D al nodo E, esencialmente poner distancia
entre nosotros y el jugador. Si el jugador se traslad al nodo D, la tabla de consulta devolvera el nodo F,
alejndose de un eventual movimiento por el jugador al nodo E. Tenga en cuenta que en algunos casos, la
mejor jugada es no moverse en absoluto. Si la APN fue en el nodo G y el jugador en el nodo B, el valor de
retorno de la mesa es '- ' indica simplemente quedarse quieto.

FIGURA 4.15: tabla de consulta para la estrategia defensiva agente de la APN.


128 128 Artificial

pod

e
b
Te
NOTE NOTA

dado

no

tab

punto

En ent

varios

travel.
de inclu

agent

qu c

habit

tabla d
para su
Figura 4.16: La segregacin de un mapa en zonas separadas para simplificar la trayectoria de investigacin.
AI y juegos 129 12

destino fuera de la habitacin en el lado derecho, el CNP sera dirigida al nodo B, y al llegar el
nodo B, utilice la tabla de consulta para obtener el resto del camino.

Es 's tambin muy comn para estos algoritmos en tiempo-rebanada su procesamiento. Esto
permite que el trabajo a realizar durante un nmero de iteraciones, sin ocupar la CPU en una
sola operacin.

Comportamiento de la APN

En la ltima seccin, nos dio a la APN la capacidad de atravesar un mapa mediante estrategias
basadas en la APN de salud 's (usando ofensivo intencional y estrategias defensivas). Deje que
's ahora explorar algunas opciones para dar nuestro NPC la capacidad de comportarse de forma
inteligente en su entorno.

El comportamiento de un NPC puede 't ser considerado aisladamente, porque el comportamiento


es en ltima instancia a tierra en el medio ambiente. La APN debe ser capaz de percibir su entorno
(ver, or, etc.). Con la informacin percibida del entorno (as como informacin de estado interno
como la motivacin), la APN puede razonar acerca de lo que debe hacerse. El resultado de
razonamiento es potencialmente un acto intencional, que se realiza como una accin (vase la figura
4.17). Esta accin (y las acciones subsiguientes) es lo que vemos externamente como el agente de la
conducta 's.

Figura 4.17: El bucle cerrado de razonamiento.


130 130 Artificial Intelligence Inteligencia artificial

El NPC estar equipado con un conjunto de sensores que permiten a los sentidos, o percibir, su medio
ambiente. Estos sensores podran indicar objetos (como el jugador) en su campo de visin en trminos de
la vista, o la direccin de un objeto utilizando la localizacin del sonido. Con un conjunto de sensores
como entrada, el NPC ahora puede razonar acerca de qu hacer. El estado interno tambin se mantiene
para indicar un conjunto de nivel superior de los objetivos que se pretende alcanzar, o para indicar la salud
de la APN (que podra cambiar su estrategia). Dado el estado del medio ambiente y el estado interno de la
NPC, una accin puede ser seleccionado. Esto puede alterar el medio ambiente, cambiar el APN estado
interno 's, y dar lugar a un cambio en lo que el NPC har a continuacin. Un NPC accin 's podra estar
movindose a una nueva ubicacin (como se describe en la seccin anterior), la comunicacin con otros
NPC (posiblemente sobre la localizacin del jugador), cambiando su arma, o el cambio de su postura (que
va desde una posicin vertical a una posicin prona).

Vamos que est ahora a revisar algunas de las opciones que pueden dar a nuestra APN
algunas habilidades bsicas de razonamiento.

Mquinas de Estado estticas

Uno de los mtodos ms simples, y tambin uno de los ms comunes, es la mquina de


estados. Las mquinas de estado consisten en un conjunto de estados, y los arcos, entre los
estados que definen las condiciones necesarias para la transicin. Consideremos el simple juego
de mquina de estados AI en la Figura 4.18.

Nuestra centinela APN definido por la mquina de estados (ms conocido como una mquina de
estados finitos, o FSM) tiene dos funciones bsicas de la vida. La APN marcha entre dos lugares,
guardando cierta entrada del reproductor. Cuando el jugador est a la vista, la APN lucha hasta la muerte.
La mquina de estados implementa esto como tres estados simples (uno puede pensar en ellos como
estados mentales ). En el primer estado, el NPC marcha a la ubicacin identificada como X. Se contina
marchando a X menos que una de dos cosas sucede. Si el NPC llega a la ubicacin X, it 's en su destino
para el estado, y que la transicin a la marcha alternativo

Figura 4.18: La mquina de estado para un juego simple AI.


AI y juegos 131 13

state. estado. Si el NPC ve el jugador, que ataca. Si se produce ninguno de estos eventos, el
NPC sigue marchando.

Cuando el NPC ve el jugador, mediante la introduccin de su campo -de-vista, las


transiciones al estado FSM ataque. En este estado, el NPC lucha hasta la muerte. Si el NPC
muere, entonces la mquina de estado ya no es activo (el NPC se encuentra sin vida en el
medio ambiente). Si el NPC en contra del jugador, que comienza a marchar de nuevo hacia la
ubicacin X.

Hay 's no mucho a la FSM, sino que son simples y fciles de depurar. Tambin son muy
predecibles, pero que es posible aadir probabilidades de transicin para dar la APN un pequeo
elemento de aleatoriedad.

Arquitecturas de comportamiento en capas

Nuestra anterior FSM define un agente muy simple que tena dos cosas en su mente, marchar y atacar. Lo ms
importante para la APN estaba atacando, pero mientras que ningn jugador se encontraba en su campo de
visin, que era bastante dispuestos a marchar hacia atrs y adelante. Pero qu ocurre si nuestra APN tiene
ms cosas de las que preocuparse. Si el NPC salud 's es baja, se debe dirigir a la enfermera. Si el NPC es
poca municin, debe dirigirse a la sala de armas para recargar. Si ms de un jugador aparece para atacar, en
caso de que luchar o correr a la caseta de vigilancia para tirar de la alarma? Estos aren 't del todo complejo,
pero el NPC ahora tiene que participar en algn pensamiento para determinar la accin ms apropiada para la
situacin dada.

Una manera de manejar este conflicto en la seleccin de la accin es Rodney Brooks '
arquitectura de subsuncin . Esta arquitectura confines responsabilidades a las capas aisladas, pero
permite que las capas se subsumen entre s en caso de necesidad. Vamos 's vistazo a nuestro
simple APN nuevo para ver cmo podemos mapear los nuevos comportamientos refinados en
subsuncin (ver Figura 4.19).

Figura 4.19: capas de comportamiento por el simple NPC.


132 132 Artificial Intelligence Inteligencia artificial

NOTE NOTA

NOTE NOTA

Figura 4.19 ilustra un ejemplo de nuestros NPC requisitos 's a una arquitectura en capas. Estos niveles deben
ser vistos en importancia relativa. En el nivel uno, nuestra APN realiza su turno de guardia, que marcha
diligentemente a lo largo de su ruta. Si el jugador est a la vista, la APN cambia a la capa de ataque para liberar al
entorno del jugador molestos. De Brookes arquitectura ', el Ataque capa subsumido (tom prioridad sobre) el
marzo de capa. Si no hay jugadores estn en el campo de visin, y la APN necesita ser sanado o reponer su
municin, al sostener la capa se hace cargo de llevar a cabo estas acciones. Por ltimo, la APN se convertir en el
sobrevivir capa si ms de un jugador se ve en el campo de visin. Y cuando se cumplan las restricciones dentro de
las capas, la APN por defecto de la capa ms baja. Por lo tanto, una vez que el jugador se elimina, y se devuelven
al municin y la salud, la APN volver a la marcha en el nivel uno.

Dentro de cada una de estas capas, FSM individuales se pueden utilizar para implementar el
comportamiento relevante. De esta manera, completamente nuevas mquinas de estados son consultados
basan en la capa de comportamiento actual de la APN.
Una analoga interesante para NPC en los videojuegos es el campo de Agentes Inteligentes. Nos
Exploraremos el campo de agentes de software inteligentes en el captulo 11.

Otros mecanismos de accin-seleccin

Nos Discutiremos otros algoritmos relevantes que podran ser utilizados para seleccionar una accin para un
NPC en los siguientes captulos. Las redes neuronales son un ejemplo interesante de la seleccin
comportamiento (clasificacin), as como la planificacin de algoritmos y muchos otros algoritmos de
aprendizaje (aprendizaje por refuerzo, por nombrar uno). Los algoritmos de aprendizaje por mquina son de
particular inters, ya que pueden inculcar la capacidad de la APN para aprender y comportarse de nuevas
maneras dadas encuentros previos con el jugador.

En un juego tpico, un motor de juego proporciona la plataforma de base para los grficos y jugabilidad
fundamental. Los comportamientos de la APN se realizan generalmente utilizando secuencias de
comandos de alto nivel, con un intrprete de guin ejecutado en el motor de juego. Esto proporciona una
gran cantidad de flexibilidad, en el que el motor del juego se lleva a cabo en un lenguaje de alto nivel
como C o C ++ para la eficiencia y los comportamientos de la APN se implementan en un lenguaje de
script para la flexibilidad.

equipo de AI

En muchos juegos, hay 's no slo un solo soldado de la APN que ' re luchando contra, sino todo un ejrcito que
deben trabajar juntos en armona con una sola
AI y juegos 133 13

PROPINA

o un puado de objetivos en mente. El control puede existir en varios niveles dentro de una jerarqua (ver Figura
4.20), desde el jefe de la escuadra que dirige las tropas para flanquear al enemigo en el campo de batalla
utilizando la informacin en tiempo real, a lo general la gestin de todo su ejrcito para poner en prctica el de
mayor las estrategias militares de nivel.

Dirigiendo un ejrcito global puede implicar un gran nmero de problemas, desde la programacin y
la produccin, asignacin de recursos, a la estrategia y la tctica de la fuerza en el mbito global.

El problema en este caso se puede simplificar en gran medida, reduciendo al mnimo el nmero de
niveles o de la organizacin. En primer lugar, los soldados individuales se limitan a seguir las rdenes, y,
a menos que sean dirigidos, pueden luchar hasta la muerte. Estas unidades individuales se pueden
programar utilizando mquinas de estado finito, u otros mecanismos sencillos para el comportamiento.

Siguiendo las rdenes es un requisito, pero hay 's tambin algo que decir acerca de la autonoma en
el plano soldado, aprovechando una situacin local para mejorar las posibilidades de una victoria
global.

El problema a resolver es entonces el control superior de toda la fuerza. Esto se puede subdividir a su vez, sobre
todo cuando las fuerzas estn divididas por objetivos independientes. Al ms alto nivel es la IA estratgica. Esta
capa de la AI tiene la
FIGURA 4.20: Estructura de la organizacin de un ejrcito simplificado.
134 134 Artificial
v

la tct

de es
Para
NOTE NOTA

pero gr

apoya
difcil. F
ejempl
ayudar

Meta
Un

unidad
plan pa
es ne
finalm
Le

aplica

(Para

satisfie
una po
puente
Figura 4.21: El plan y sus elementos.
AI y juegos 135 13

acciones , que son medidas independientes dentro de un plan. Cada accin potencialmente tiene un
requisito que debe cumplirse para que la accin a realizar. Ejemplo acciones incluyen mover un conjunto
de unidades de APN a un lugar, atacando al enemigo, la plantacin de una carga, etc. El plan, entonces,
es un conjunto de acciones que cuando se realiza en el orden dado, lograr un objetivo (ver Figura 4.21). El
mtodo por el cual se formula un plan es a travs del uso de un planificador .

A modo de ejemplo, vamos a 's decir que tenemos dos puntos de contacto que desean
atacar a un jugador que est disparando desde una posicin cubierta. Un ataque efectivo es por
un NPC para proporcionar fuego de cobertura en el jugador, mientras que el otro NPC se mueve
a una posicin de flanqueo para estar en una mejor posicin para atacar al jugador. Esto podra
representarse simplemente como se muestra en la Figura 4.22.

El objetivo del plan es eliminar al jugador que 's en una posicin cubierta (lo que significa que el jugador
est blindado contra el fuego de la APN ' posicin actual s). Para eliminar el jugador, uno NPC proporciona
fuego de cobertura en el reproductor para que otro PNJ se puede mover a una posicin de flanqueo a
atacar al jugador. Una vez que este NPC se encuentra en una posicin para disparar, el otro NPC se
precipita el jugador de posicin 's. Implcita en el plan es la cooperacin, ya travs de un ordenamiento
estricto de la

Figura 4.22: Ejemplo de plan para eliminar a un jugador en una posicin cubierta.
136 136 Artificial Intelligence Inteligencia artificial

NOTE NOTA

NOTE NOTA

acciones, coordinacin. Ms adelante, veremos cmo se logra la planificacin (y al igual que gran parte
de la IA, que 'es fundamentalmente un problema de bsqueda).

Implcita en la planificacin son condiciones previas (o pre-requisitos) que deben cumplirse para que el
plan para que sea vlida. Considere la planta de la figura 4.22 si slo uno est presente NPC. Qu
pasa si se elimina NPC_1 mientras est en movimiento a su posicin de flanqueo? Precondiciones
deben cumplirse para que un plan sea vlida, y si en cualquier accin que de tiempo en un plan no
pueden llevarse a cabo, el plan no puede continuar. Por lo tanto, en entornos dinmicos, planificacin y
replanificacin ir mano a mano.

Estrategia en tiempo real AI

Un uso interesante final del AI es en el desarrollo de los juegos de estrategia en tiempo real. Real-Time
Strategy AI difiere de equipo de AI en el que vamos a tratar no slo con los aspectos militaristas del
juego, sino tambin los aspectos econmicos. Por ejemplo, en un juego de estrategia en tiempo real, los
elementos de la civilizacin deben participar en la recoleccin de recursos como parte de un objetivo de
nivel superior de la construccin de un ejrcito para derrotar a un oponente.

Por ejemplo, en el comienzo de un juego de estrategia en tiempo real, la atencin se centra


acumulacin social y militar. Esto implica la creacin de nuevos ciudadanos para construir la economa.
Una vez que la economa alcanza un cierto nivel, una acumulacin militar puede ocurrir para atacar y
derrotar a un enemigo.

Las condiciones descritas podran ser incorporados en el motor de juego en s, sino por la flexibilidad,
podran implementarse permitiendo por separado facilidad de modificacin sin tener que reconstruir el motor
del juego. Una posibilidad que Ha sido usado en el pasado es la Regla sistemas basados en (o RBS).

La programacin basada en reglas

sistemas basados en reglas son una forma efectiva para codificar conocimiento experto sobre el juego
en un juego de estrategia. sistemas basados en reglas son tan interesantes que un comit de normas
se ha formado para estudiar su uso en juegos. [IGDA 2005]

Nos Exploraremos la programacin basada en reglas como parte de la revisin de la representacin


del conocimiento en el Captulo 6.

Un sistema basado en reglas se compone de dos memorias, una que sostiene hechos, y otro que contiene un
conjunto de reglas que existen para determinar el comportamiento. Un algoritmo de coincidencia en reglas se
aplica a los hechos, y esas reglas que responden a hechos se guardan en el conflicto-set. se revisa entonces este
conjunto de reglas y
AI y juegos 137 13

una regla recogi al fuego en un proceso denominado resolucin de conflictos. La regla se aplica
a continuacin, y la memoria de trabajo se actualiza.

La seleccin de una regla al fuego de una lista de reglas que han emparejado puede
NOTE NOTA utilizar una

nmero de algoritmos. Se podra seleccionar al azar, la ltima regla que coincide,


o la regla de que 's ms especfico (tena el mayor nmero de condiciones).

Figura 4.23: flujo tpico de un sistema basado en reglas.


138 138 Artificial Intelligence Inteligencia artificial

Ahora que ya han explorado el proceso, vamos a 's vistazo a la anatoma de hechos y reglas. Un
hecho es un elemento atmico de conocimiento que puede ser usado en conjuncin con otros
hechos de razonar usando reglas. Los hechos pueden tomar una variedad de formas; uno de los ms
comunes es la expresin S- (o expresin simblica), que simplemente es una manera de estructurar
los datos. Considere los siguientes cuatro hechos en nuestro simple base de conocimientos:

(Oponente-1 tamao grande) (oponente-2 tamao


pequeo) (tamao ejrcito grande)

En cuanto a nuestro mundo del juego, estos hechos nos dicen que el primer rival es de
tamao grande, el segundo oponente es pequea, y nuestro ejrcito tambin se considera
grande. Antes de pasar a algunas reglas dadas nuestra pequea base de conocimientos, vamos
's Revisar la estructura de una regla.

Las reglas se componen de dos cosas, los antecedentes y consecuentes. Si se piensa en una regla
como si / entonces construir, entonces el 'si ' es el antecedente y el 'despus ' es el consecuente.
Considere la siguiente comparacin sencilla:

if ((opponent.size <= SMALL_SIZE) && (army.size> =


LARGE_SIZE)) {
attack_opponent ();

}}

Este condicional simplemente dice que si el oponente 's tamao militar es pequea, y el
nuestro es grande, que te atacan. Una regla simple que codifica este comportamiento podra ser
implementado de la siguiente manera:

(regla de ataque oponente basndose en el tamao (? oponente


tamao pequeo)

(Tamao del ejrcito grande) ==>

(Ataque del ejrcito? Oponente))

Tenga en cuenta que el ' ? Oponente elemento' coincidir con cualquier oponente en la
memoria de trabajo, y si coincide con uno, te usan este mismo oponente cuando se ataca. Una vez
que esta regla se desencadena, nuestra memoria de trabajo existir como:

(Oponente-1 tamao grande) (oponente-2 tamao


pequeo) (tamao ejrcito grande)
(Ataque del ejrcito oponente-1)
AI y juegos 139 13

PROPINA

Este nuevo hecho conducira comportamiento dentro del motor de juego para formular un plan para atacar al
enemigo. El RBS tambin podra quitar hechos como impulsado por los consecuentes para reflejar el entorno
dinmico del juego.

Para hacer frente a los tamaos, el RBS puede 'fuzzify ' valores de rangos a grupos distintos. Por
ejemplo, el tamao usado en los ejemplos anteriores podra identificar el rango [0..4999] tan
pequeo, [5000..9999] como medio, y [10000..50000] tan grande. Esto reduce la complejidad de las
entradas y simplifica la base de reglas.

Un RBS es un mtodo til para la codificacin del conocimiento en un juego que puede ser utilizado
para conducir los comportamientos, especialmente los comportamientos de alto nivel en materia de
estrategia. Es 's tambin ventajoso porque permite que el elemento de estrategia que se desacopla del
motor de juego y permite ajustar ms tarde por los desarrolladores de juegos.

RESUMEN DEL CAPTULO


En este captulo se proporciona un amplio espectro de tcnicas utilizadas en la IA del juego, desde juegos
clsicos, a los videojuegos modernos. En los juegos clsicos como el ajedrez y las damas, e incluso juegos de
informacin imperfecta como Poker, el algoritmo de bsqueda minimax juego-rbol con la poda alfa-beta se
puede encontrar. En estos juegos, el objetivo de los desarrolladores es la construccin de un oponente que
puede derrotar a jugadores de clase mundial. Por el contrario, el objetivo en los videojuegos es la construccin
de los oponentes que son difciles de jugar, pero no es perfecto. Incluso con esta limitacin en mente, varias
tecnologas de IA se pueden encontrar en los juegos modernos, desde las redes neuronales, sistemas basados
en reglas y de rboles de decisin, para incrustar oponentes del juego que son a la vez desafiante y adaptable a
la humana nivel 's de juego.

REFERENCES REFERENCIAS
[AI Horizonte] Disponible en lnea en:
http://www.aihorizon.com/essays/chessai/boardrep.htm [Chess AI] Disponible en lnea
en:

http://www.cs.cornell.edu/boom/2004sp/ProjectArch/Chess/algorithms. html

[Archer 1999] Archer, AF Un tratamiento moderno de los 15 Puzzle, Americana de Matemticas .


106 :, 793-799, 1999.
140 140 Artificial Intelligence Inteligencia artificial

[Anderson 2005] Anderson, Gunnar. Escribir un programa de Otelo, Disponible en lnea en:

http://www.radagast.se/othello.

[Chellapilla, Fogel 2000] Chellapilla, Kumar y Fogel, David B. Anaconda Derrotas Hoyle 6-0: Un estudio de
caso Competir un programa de damas Evolved contra software disponible comercialmente (2000). Actas
del Congreso de 2000, sobre la computacin evolutiva CEC00.

[IGDA 2005] Grupo de Trabajo sobre sistemas basados en reglas, Comit de Normas de interfaz
AI, El AIISC Informe 2005, 2005. Disponible en lnea en:

http://www.igda.org/ai/report-2005/rbs.html

[Johnson 1997] Johnson, George. Para comprobar un ordenador potente, jugar un juego antiguo.
Introduccin a la Computacin y Cognicin. Disponible en lnea en:

http://www.rci.rutgers.edu/%7Ecfs/472_html/Intro/NYT_Intro/ChessMatch/ ToTest.html

[Loki 2003] Jonathan Schaeffer, Darse Billings, Lourdes Pena, Duane Szafron. Aprender a jugar al
pquer fuerte. 2003.
[Lu 1993] Lu, Chien-Ping Paul. Buscar en paralelo de rboles de juego estrecho. "
Maestro tesis 's, Universidad de Alberta, Departamento de Ciencias de la Computacin,
Edmonton, Canad, 1993.

[McCarthy 1990] Disponible en lnea en: http://www-


db.stanford.edu/pub/voy/museum/samuel.html

[Samuel 1959] Samuel, AL Algunos estudios realizados en la mquina de aprendizaje utilizando el


juego de damas, IBM Revista de Investigacin y Desarrollo, 1959.

[Shannon 1950] J. Schaeffer 1989 Campeonato Mundial de Ajedrez por ordenador, Informtica, Ajedrez y
Cognicin , Springer-Verlag, Nueva York, 1990.

[Sutton / Barto 1998] Sutton, Richard S., y Barto, Andrew G. aprendizaje por refuerzo: Una
introduccin. MIT Press, 1998.

RESOURCES RECURSOS
Bruce Moreland 's de ajedrez Programacin Temas. Disponible en lnea en:
http://www.seanet.com/~brucemo/topics/topics.htm

[Chinook] Disponible en lnea en: http://www.cs.ualberta.ca/


%7Echinook/

La Fundacin inteligente de Ir. Disponible en lnea en:


http://intelligentgo.org/en/computer-go/overview.html
AI y juegos 141 14

Bouzy, Bruno y Cazenave, Tristn. Computer Go: una encuesta orientada a AI. Universidad de
Pars.

Brooks, Rodney. Un sistema de control en capas robusta para un robot mvil,

IEEE Journal of Robotics and Automation RA-2, abril de 1986.

Tesauro, Gerald. Learning diferencia temporal y TD-Gammon. Disponible en lnea en:

http://www.research.ibm.com/massive/tdl.html

TD-aprendizaje, redes neuronales, y el Backgammon. Disponible en lnea en:


http://www.cs.cornell.edu/boom/2001sp/Tsinteris/gammon.htm [Sheppard 2002] Sheppard, Brian.
World-calibre de campeonato

Scrabble,

Inteligencia Artificial 134: (2002), 241-275.

EXERCISES CEREMONIAS
1. Lo que se entiende por la bsqueda de confrontacin, y en qu se diferencia de la bsqueda
tradicional rbol?
2. Qu es la capa de juego en busca de rboles?

3. Dado el rbol de juego se muestra en la Figura 4.24, cul es el valor en el nodo raz?
4. Minimax puede buscar a las hojas del rbol, o hasta una profundidad predefinida. Cules son las
consecuencias de poner fin a una bsqueda a una profundidad predefinida?

FIGURA 4.24: rbol de juego de la muestra para la bsqueda minimax.


142 142 Artificial Intelligence Inteligencia artificial

5. Dado el rbol de juego se muestra en la Figura 4.25, cul es el valor en el nodo raz y qu
nodos se podan de la bsqueda?
6. Cul fue el primer programa de juego-juego exitoso que utiliza la auto-play para aprender
una estrategia eficaz?
7. Explicar lo que se entiende por un encaje perfecto, la informacin y la informacin imperfecta juegos.
Dar algunos ejemplos de cada uno, y definen qu tipo son.
8. Definir algunas de las similitudes y diferencias para construir un juego de AI-jugando para
Damas y Ajedrez.
9. Cules son algunas de las principales diferencias entre el fortalecimiento de la IA para
juegos clsicos y juegos de video?

FIGURA 4.25: rbol de juego de la muestra para la bsqueda minimax con poda alfa-beta.
K ONOCIMIENTO
C aptulo 5 R
EPRESENTACIN

K Representacin
el conocimiento ONOCIMIENTO (KR), como su
de los sistemas informticos.
conocimiento en una forma que 's
nombre
Con lo indica, es
esto queremos la representaciones
decir teora y la prcticaconcisas
de representar
para el

directamente manipulable por el software. Esta es una distincin importante porque representar
el conocimiento slo es til si hay 's alguna manera de manipular el conocimiento y deducir de
ella.

INTRODUCTION INTRODUCCIN
Desde la perspectiva de la IA fuerte, KR se ocupa de la ciencia cognitiva detrs de
representacin del conocimiento. Cmo, por ejemplo, no almacenan y manipulan los datos?
Muchos de los primeros esquemas de representacin el resultado de esta investigacin, tales
como marcos y redes semnticas.

Este captulo explorar los diversos esquemas para la representacin del conocimiento, a
partir de los primeros mtodos de representacin a las actuales mtodos tales como la Web
Semntica. Nos 'll tambin exploramos algunos de los mecanismos para la comunicacin del
conocimiento, tal como se utiliza en sistemas multi-agente.
144 144 Artificial Intelligence Inteligencia artificial

TIPOS DE CONOCIMIENTO
Mientras que una gran taxonoma de los diferentes tipos de conocimiento, podra crearse que te
centramos en dos de los ms importantes, declarativo y procedimental .

Declarativa (o descriptivo) conocimiento es el tipo de conocimiento que se expresa como


declaraciones de proposiciones (o el conocimiento de hechos). Por otro lado, el conocimiento
procedimental se expresa como el conocimiento de la consecucin de un objetivo (por ejemplo, cmo
realizar una tarea determinada). El conocimiento procedimental es representado habitualmente
utilizando producciones, y es muy fcil de usar, pero difcil de manipular. El conocimiento declarativo
puede ser representada como la lgica, y es ms fcil de manipular, sino que es ms flexible y tiene
el potencial para ser utilizado en formas ms all de la intencin original.

En el captulo 11, nos 'll investigar agente arquitecturas inteligentes, algunos


NOTE NOTA

de los cuales operar en el conocimiento declarativo (como Prodigy), donde


otros utilizan el conocimiento procedimental (tales como el razonamiento de
Procedimientos
Sistema).
Existen otros tipos de conocimiento, por ejemplo, el conocimiento anloga
(asociaciones entre el conocimiento) y meta-conocimiento (conocimiento sobre
conocimiento). Nos Exploraremos estos tipos de conocimiento tambin.

El papel del conocimiento


Desde el contexto de la IA, que representa el conocimiento se centra en el uso de ese conocimiento
para resolver problemas y la implicacin de que el conocimiento es ms que informacin fctica. Por
lo tanto, la manera en la que se almacena el conocimiento es importante. Por ejemplo, podemos
almacenar el conocimiento en un formato legible por humanos y lo usamos (como este libro), pero el
conocimiento almacenado en esta forma no es fcilmente til por AI. Por lo tanto, el conocimiento
debe almacenarse de una manera que hace posible que la IA a buscarla, y si es necesario, inferir
nuevo conocimiento de ella.

El objetivo principal de la representacin del conocimiento es permitir a una entidad inteligente


(programa) con una base de conocimientos para que pueda tomar decisiones inteligentes acerca de su
entorno. Esto podra incorporar un agente encarnado saber que el fuego es caliente (y debe ser evitado), o
que el agua en ciertos casos puede ser utilizado para apagar un fuego para que sea aceptable. Tambin
se podra utilizar para ello que los repetidos intentos de iniciar sesin en una direccin segura es
potencialmente un intento de piratear un dispositivo, y que la direccin de pares asociados con esta
actividad podra ser monitoreado en otras actividades.
Representacin del conocimiento 145 14

Las redes semnticas


Las redes semnticas son una forma til para describir las relaciones entre un nmero de objetos.
Esto es similar a una caracterstica importante de la memoria humana, donde existe un gran nmero
de relaciones. Considere el concepto de libre asociacin. Esta tcnica fue desarrollada por Sigmund
Freud, donde el paciente se relaciona continuamente conceptos dados un concepto de semilla de
partida. La tcnica supone que los recuerdos estn dispuestos en una red asociativa, por lo que
pensar en un concepto puede conducir a muchos otros. La idea detrs de la asociacin libre es que
durante el proceso, el paciente finalmente tropezar a travs de un recuerdo importante.

Considere el ejemplo mostrado en la Figura 5.1. Este simple red semntica contiene una serie de datos y
las relaciones entre ese conocimiento. Redes semnticas tpicas utilizan el ES_UN y AKO (una clase de)
relacin a vincular el conocimiento. Como se muestra aqu, nos han actualizado las relaciones para
proporcionar ms significado a la red. Los rectngulos en la red representan objetos, y los arcos representan
relaciones. Aqu podemos ver que se muestran dos ciudades capitales, y son capitales en el mismo continente.
Uno es el capital de un estado de los Estados Unidos, mientras que otro es de Venezuela. Las relaciones
simples tambin muestran que dos ciudades de Nuevo Mxico son Albuquerque y Santa Fe.

Figura 5.1: Una red semntica simple con un pequeo nmero de hechos y las relaciones.
146 146 Artificial Intelligence Inteligencia artificial

PROPINA

La caracterstica interesante de las redes semnticas es que tienen la capacidad de representar un


gran nmero de relaciones entre un gran nmero de objetos. Tambin se pueden formar en una
variedad de maneras, con diferentes tipos de relaciones. La construccin de la red semntica es
impulsado por la aplicacin particular.

Un ejemplo interesante de una red semntica es el Unified Modeling Language, o UML. UML es una
especificacin para el modelado de objetos en una notacin grfica. Se est un mecanismo til para
visualizar las relaciones de sistemas grandes y complejos, e incluye la capacidad de traducir de una
forma grfica (modelo abstracto) a una forma de software.

FRAMES MARCOS
Marcos, introducido por Marvin Minsky, son otra tcnica de representacin que se desarroll de redes
semnticas (marcos pueden ser considerados como una implementacin de redes semnticas). Sin embargo,
en comparacin con las redes semnticas, marcos estn estructurados y siguen una abstraccin ms orientado
a objetos con una mayor estructura. La representacin del conocimiento basado en cuadros se basa en el
concepto de un marco, que representa una coleccin de ranuras que se pueden llenar por valores o enlaces a
otras tramas (vase la figura 5.2).

Un ejemplo de uso de marcos se muestra en la Figura 5.3. Este ejemplo incluye un nmero de
diferentes marcos, y diferentes tipos de marcos. Las tramas que son de color gris en la figura 5.3 son lo
que se llaman genricos marcos. Estos cuadros son cuadros que describen una clase de objetos. El nico
marco que no es de color se llama un ejemplo de trama. Este marco es una instancia de un marco
genrico. Tenga en cuenta tambin el uso de la herencia en este ejemplo. El marco genrico Archer define
un nmero de ranuras que se heredan por los marcos genricas de su clase. Por ejemplo, el marco
genrico Longbowman hereda las ranuras del marco genrico Archer. Por lo tanto, mientras que la ranura
arma no se define en el marco Longbowman, hereda esta ranura y el valor de la trama Archer.

Del mismo modo, 'john ' es una instancia de la trama Longbowman, y hereda el 'arma ranura'
y valor como

well. bien. Tenga en cuenta tambin la redefinicin de la fo


'defensa valor ranura'. Mientras que una trama puede definir
un valor predeterminado para esta ranura, puede ser
anulado por el bastidor de ejemplo.

Figura 5.2: La estructura de una trama.


Representacin del conocimiento 147 14

Figura 5.3: Un conjunto de marcos para un juego de estrategia.

Por ltimo, en este ejemplo, tambin relacionamos marcos genricos a travs de la


comparacin. Definimos que una instancia de un arquero es fuerte contra una instancia de la
trama Pikeman.

Lo que hace diferentes marcos de las redes semnticas son los componentes activos que causan
efectos secundarios que se producen cuando se crean marcos, manipulados o eliminadas. Incluso
hay elementos que controlan las acciones de las manipulaciones a nivel de la ranura. Estos pueden
ser considerados como factores desencadenantes, sino que tambin se conocen como demonios .
Adicin de disparadores para un lenguaje de representacin marco se llama attachement de
procedimiento y es una manera para incluir capacidades de inferencia en la representacin de
bastidor (vase la Tabla 5.1).

TABLA 5.1: archivos adjuntos de procedimiento para su uso en marcos.

Demonio Action Accin

if_new activa cuando se aade un nuevo marco.


148 148
if_added Se a
if_removed Se a
if_replaced Se a
Se a
si es necesario
insta
fram

Un ejemplo de esto se muestra en el Listado 5.1. En este ejemplo, definimos algunos de los
marcos mostrados en la Figura 5.3. Con marcos (en iProlog), podemos definir rangos para algunos
de los parmetros necesarios (tales como la defensa), y si el valor cae fuera de este rango, indicar
este problema a la consola. Esto permite que los marcos a no slo incluyen sus propios metadatos,
sino tambin su propia auto-comprobacin para asegurar que los marcos son correctos y coherentes.

LISTADO 5.1: ejemplos Frame con iProlog.

Archer objeto AKO con el arma: arco; armadura: la luz;

fuerte contra: Pikeman; dbil en contra: Heavy-caballera;

Longbowman AKO con Archer

origen: Gran Bretaa;

ataque: 6;

range distancia 0..9

defensa: 2;

range distancia 0..9

help ayuda si el nuevo valor> 9 a continuacin,

printf (nuevo valor, defensa demasiado grande.

John isa con Longbowman

if_removed de impresin ( Ya no ... )!

edad: 28;

range distancia 1..70

defensa 3;

Una extensin del concepto de trama es lo que se llama guiones . Un script es un tipo de
trama que se utiliza para describir una lnea de tiempo. Por ejemplo, una secuencia de
comandos se puede utilizar para describir los elementos de una tarea que requiere varios pasos
que se deben realizar en un orden determinado.
Representacin del conocimiento 149 14

LGICA PROPOSICIONAL
Lgica Proposicional, tambin conocido como la lgica de frase, es un sistema formal en el que el
conocimiento se representa como proposiciones. Adems, estas proposiciones se pueden unir de varias
formas utilizando operadores lgicos. Estas expresiones pueden ser interpretadas como reglas de
inferencia: Preservar la verdad que se pueden utilizar para derivar nuevos conocimientos a partir de la
edad, o poner a prueba los conocimientos existentes.

En primer lugar, vamos a 's introducir la proposicin. Una proposicin es una declaracin, o
una simple frase declarativa. Por ejemplo, langosta es caro es una proposicin. Tenga en
cuenta que una definicin de la verdad no est asignado a esta proposicin; que puede ser
verdadera o falsa. En trminos de lgica binaria, esto

proposicin podra ser falsa en Massachusetts, pero cierto en Colorado. Pero una proposicin
siempre tiene un valor de verdad. Por lo tanto, para cualquier proposicin, podemos definir el
verdadero valor basado en una tabla de verdad (vase la Figura 5.4). Esto simplemente dice que
para cualquier proposicin dada, que puede ser verdadera o falsa.

Tambin podemos negar nuestra propuesta para transformarlo en el valor de verdad


opuesto. Por ejemplo, si P (nuestra propuesta) es langosta es caro, entonces ~ P es langosta
no es caro. Esto se representa en una tabla de verdad tal como se muestra en la Figura 5.5.

Las proposiciones tambin se pueden combinar para crear proposiciones compuestas. El primero,
llamado un conjunto , es cierto slo si tanto de los conyuntos son verdaderas (P y Q). La segunda llamada
una disyuncin , es cierto si al menos uno de los disyuntos son verdaderas (P o Q). Las tablas de verdad
para estos se muestran en la Figura 5.6. Estos son, obviamente, la AND y OR tablas de verdad de la
lgica booleana.

El poder de la lgica proposicional entra en juego el uso de las formas condicionales. Las dos
formas ms bsicas se llaman modus ponens y Modus Tollens . Modus Ponens se define como:

Figura 5.4: Tabla de verdad para una proposition. proposicin.


Figura 5.5: Tabla de verdad para la negacin de una proposicin.
150 150 Artificial Intelligence Inteligencia artificial

Figura 5.6: tabla verdadera para la conjuncin y la disyuncin de dos proposiciones.

Figura 5.8: Tabla de verdad para


Figura 5.7: Tabla de verdad para Modus
Modus
Ponens. Tollens.

P, (P> Q), inferir Q

que simplemente significa que, dadas dos proposiciones (P y Q), si P es cierto, entonces Q
es cierto. En Ingls, vamos 's dicen que P es la proposicin la luz est encendida y Q es la
proposicin el interruptor est encendido. El condicional aqu se puede definir como:

si la luz est encendida y luego el interruptor est en

Por lo tanto, si la luz est encendida es cierto, la implicacin es que la luz est encendida. Ntese
aqu que la inversa no es cierto. El hecho de que el interruptor est encendido, doesn 't significa que la
luz est encendida. Se trata de una pieza de conocimiento que nos da una idea de la situacin del
interruptor de la que conocemos el estado de la luz.

En otras palabras, el uso de esta regla, tenemos una manera de obtener nuevos
conocimientos sintcticamente desde la antigedad.

NOTE NOTA

En estos ejemplos, podemos pensar en P como el antecedente, y Q como el consecuente. Uso de la si / entonces
la forma, la parte condicional de la reclamacin es el antecedente y la reclamacin siguiendo el 'entonces ' es el
consecuente.
Representacin del conocimiento 151 15

PROPINA

La tabla de verdad para Modus Ponens se muestra en la Figura 5.7.

Modus Tollens adopta el enfoque contradictorio de modus ponens. Con Modus Tollens, suponemos
que Q es falsa y luego inferir que el P debe ser falsa. Modus Tollens se define como:

P, (P> Q), no Q, por lo tanto no P.

Volviendo a nuestro ejemplo del interruptor y la luz, podemos decir el interruptor no est encendido, por lo
tanto la luz no est encendida. El nombre formal de este mtodo es demostracin por contraposicin. La tabla
de verdad para Modus Tollens se proporciona en la Figura 5.8.

Para ayudar a dar sentido a los nombres, modus ponens en latn significa modo que afirma, mientras
Modus Tollens es latino para el modo que niega. "

Una famosa regla de inferencia de la lgica proposicional es el silogismo hipottico. Esto tiene la
forma:

((P-> Q) ^ (Q-> R), por lo tanto (P-> R)

En este ejemplo, P es la premisa mayor, Q es la premisa menor. P y Q tienen un trmino comn con la
conclusin, P> R. El uso ms famoso de esta regla, y el ideal de la ilustracin, se proporciona a continuacin:

Premisa mayor (P): Todos los hombres son mortales.

Premisa menor (Q): Scrates es un hombre.

Conclusion: Conclusin: Scrates es mortal.

Obsrvese en este ejemplo que tanto P y Q comparten un trmino comn (hombre / hombre) y la
conclusin comparte un trmino de cada uno (a Scrates de Q, y mortales de P).

La lgica proposicional incluye una serie de reglas de inferencia adicionales (ms all de Modus
Ponens y Modus Tollens). Estas reglas inferencias pueden utilizarse para inferir conocimiento a partir de
los conocimientos existentes (o deducir conclusiones a partir de un conjunto existente de premisas
verdaderas).

El razonamiento deductivo con la lgica de proposiciones


En el razonamiento deductivo, la conclusin que se alcanza a partir de un conjunto previamente conocido de los
locales. Si las premisas son verdaderas, entonces la conclusin tambin debe ser cierto.
Deje que 's ahora exploran un par de ejemplos de razonamiento deductivo que utilizan la
lgica de proposiciones. Como el razonamiento deductivo depende del conjunto de premisas, y
mucho 's investigar estos primeros.

1) 1} Si se 's la lluvia, el suelo est mojado.

2) 2) Si el suelo est mojado, el suelo es resbaladizo.

Los dos hechos (conocimiento sobre el medio ambiente) son Premisa 1 y Premisa 2. Estos
tambin son reglas de inferencia que sern utilizados en la deduccin. Ahora introducimos otra
premisa que est lloviendo.
152 152 Artificial Intelligence Inteligencia artificial

3) Es la lluvia 's.

Ahora, vamos a 's probar que ' s resbaladiza. En primer lugar, el uso de Modus ponens con
Premisa 1 y Premisa 3, se puede deducir que el suelo est mojado:

4) El suelo est mojado. (Modus Ponens: Local 1, Premise 3)

De nuevo, usando modus ponens con Premisa 3 y 4, podemos probar que 's resbaladiza:

5) El suelo es resbaladizo. (Modus Ponens: Local 3, Local 4)

Tenga en cuenta que en este ejemplo, el silogismo hipottico funcionar tan bien,
demostrando que el suelo es resbaladizo en un solo paso.

Las limitaciones de la lgica proposicional

Mientras que la lgica de proposiciones es til, no puede representar la lgica de propsito


general en una forma compacta y sucinta. Por ejemplo, una frmula con N variables tiene 2 ** N
diferentes interpretaciones. Tambin doesn 't cambios de apoyo en la base de conocimientos con
facilidad.

valores de verdad de proposiciones tambin puede ser problemtico, por ejemplo; considerar la proposicin
compuesta a continuacin. Esto se considera verdadero (usando Modus Ponens donde P -> Q es verdadera
cuando P es falsa y Q es falso, vase la figura 5.7).

Si los perros pueden volar, a continuacin, los gatos pueden volar.

Ambas afirmaciones son obviamente falsa y, adems, hay 's no hay conexin entre los dos. Pero
desde el punto de vista de la lgica de proposiciones, que son sintcticamente correcta. Un problema
importante con la lgica de proposiciones es que las proposiciones enteras estn representados
como un solo smbolo. En la siguiente seccin, nombre contiene vistazo a otra representacin lgica
que permite un control ms preciso y una representacin ms precisa de un entorno.

Lgica de primer orden (lgica de predicados)


En la seccin anterior, se explor la lgica de proposiciones. Un problema con este tipo de
lgica es que no es muy expresivo. Por ejemplo, cuando se declara una proposicin como:

El suelo est mojado.

lo que no est claro qu planta nos estamos refiriendo. Tampoco podemos determinar que el
lquido est haciendo el suelo mojado. La lgica proposicional carece de la capacidad de hablar
de cosas especficas.

En esta seccin, se Exploraremos clculo de predicados (tambin conocida como Lgica de Primer Orden,
o FOL). El uso de FOL, podemos utilizar ambos predicados y variables para aadir una mayor expresividad, as
como la generalizacin ms a nuestro conocimiento.
Representacin del conocimiento 153 15

En FOL, el conocimiento se construye a partir de las constantes (los objetos del conocimiento),
un conjunto de predicados (relaciones entre el conocimiento), y un nmero de funciones (referencias
indirectas a otros conocimientos).

Las oraciones atmicas

Una constante se refiere a un solo objeto en nuestro dominio. Una muestra de conjunto de
constantes incluyen:

marc, elise, bicicleta, moto, el extrao, colorado

Un predicado expresa una relacin entre objetos, o define las propiedades de esos objetos.
Unos pocos ejemplos de relaciones y propiedades se definen a continuacin:

posee, paseos, sabe,

persona, soleado, libro, de dos ruedas

Con nuestros constantes y predicados definidos, ahora podemos utilizar los predicados para
definir las relaciones y propiedades de las constantes (tambin llamados enunciados atmicos). En
primer lugar, definimos que tanto Marc y Elise son 'personas. 'La 'persona ' es una propiedad de los
objetos (Marc y Elise).

Persona (orujo) persona (Elise)

Lo anterior puede aparecer como una funcin, la persona que la funcin y Marc o Elise como
argumento. Pero en este contexto, Persona (x) es una relacin unaria que simplemente significa que Marc
y Elise entran en la categora de la persona. Ahora definimos que Marc y Elise tanto se conocen entre s.
Usamos el sabe predicado para definir esta relacin. Tenga en cuenta que los predicados tienen aridad ,
que se refiere al nmero de argumentos. La 'persona predicado' tiene una aridad si uno donde el
predicado 'sabe ' tiene una aridad de dos.

Conoce (marc, elise) conoce (elise, orujo)

entonces podemos extender nuestro dominio con un nmero de otros atmica

frases, que se muestran y se definen a continuacin:

Paseos (marc, bicicleta) - Marc monta una bicicleta.

Paseos (Elise, motos) - Elise monta un scooter.

De dos ruedas (bicicletas) - Una bicicleta es de dos ruedas.

Libro (el extrao) - El Extrao-es un libro.

ria (Elise, libro (el extrao)) - Elise es propietaria de un libro llamado El extranjero.

Por ltimo, una funcin que nos permite transformar una constante en otra constante. Por
ejemplo, la funcin sister_of se demuestra a continuacin:

Sabe (orujo, sister_of (Sean)) -Marc sabe Sean hermana 's.


154 154 Artificial Intelligence Inteligencia artificial

Oraciones compuestas

Recordemos de la lgica proposicional que podemos aplicar operadores booleanos para


construir oraciones ms complejas. De esta manera, podemos tomar dos o ms oraciones
atmicas y con conectivas, construir una oracin compuesta. Un conjunto de muestras de
conectivas se muestra a continuacin:

AND Y

OR O

NOT NO
lgico condicional (continuacin)

Bicondicional Lgico
Ejemplos de oraciones compuestas se muestran a continuacin:
Conoce (marc, elise) sabe (elise, orujo)

- - Marc y Elise se conocen entre s. Sabe (marc, elise) sabe (elise,


orujo)
- - Marc conoce a Elise, y Elise no sabe Marc. Paseos (marc, motos) paseos
(orujo, bicicleta)
-- Marc monta un scooter o Marc monta una bicicleta.

Tambin podemos construir condicionales utilizando la lgica condicional conjuntivo, por


ejemplo:
Sabe (orujo, Elise) Knows (Elise, orujo)

- Si Marc conoce a Elise, a continuacin, Elise sabe Marc.

Esto tambin se puede escribir como un bicondicional, que cambia el significado ligeramente.
El bicondicional, un b significa simplemente B si A y A si b, o b implica una y una implica b.
"

Sabe (orujo, Elise) sabe (Elise, orujo) - Marc sabe si Elise Elise sabe
Marc.

Otra forma de pensar en el bicondicional es de la


NOTE NOTA construccin de

dos condicionales en la forma de un conjunto, o:


( Un b ) ( b una )
Esto implica que ambos son verdaderos o ambos son falsos.

Variables Variables
Hasta el momento, han explorado oraciones donde estaba presente toda la informacin, pero para ser til,
necesitamos la capacidad de construir frases abstractas que don 't se refieren a objetos especficos. Esto
se puede hacer usando las variables . For example: Por ejemplo:

Sabe (x, Elise) Persona (x)

- Si x sabe Elise, entonces x es una persona.


Representacin del conocimiento 155 15

Si tambin sabamos que: 'Knows (orujo, Elise) ', entonces podramos deducir que Marc es
una persona (persona (orujo)).

Quantifiers Cuantificadores

PROPINA

Deje que 's ahora llevarlo junto con los cuantificadores. Un cuantificador se utiliza para determinar la
cantidad de una variable. En la lgica de primer orden, hay dos cuantificadores, el cuantificador universal (
) y el cuantificador existencial ( ). El cuantificador universal se utiliza para indicar que una sentencia debe
contener nada cuando es sustituido por la variable. El cuantificador existencial indica que hay algo que
puede ser sustituido por la variable de tal manera que la sentencia se mantiene. Vamos 's a ver un ejemplo
de cada uno.

x. Persona (x)

- Existe x, que es una persona.


x. x. Persona (x) (conoce (x, elise) sabe (x, Marc))

- - Para todas las personas, existe alguien que sabe o Marc Elise. x. x. Sabe (x, Elise)
Persona (x)

- - Para cualquier x, si hay alguien que conoce x Elise, entonces x es una persona. Ahora que tenemos una
comprensin bsica de la lgica de primer orden, dej 's explorar

FOL adicionalmente con Prolog.

Captulo 13 proporciona una introduccin a los lenguajes de AI, incluyendo Prolog.

Lgica de Primer Orden y Prolog


PROPINA

Prolog se basa realmente en una versin de FOL con algunas diferencias sutiles que te explorar. Prolog es,
en esencia, un lenguaje para la representacin del conocimiento. Permite la definicin de los hechos (o
clusulas) y tambin reglas (que son tambin las clusulas, pero tienen cuerpos). Vamos 's comenzar con
una breve introduccin a Prolog y seguir con un par de ejemplos para demostrar tanto su representacin del
conocimiento y las habilidades de razonamiento.

Un entorno Prolog se compone de una serie de elementos, pero tres de los elementos importantes
son la base de conocimientos (reglas y hechos), el motor de inferencia, y el intrprete (la interfaz
con el motor de inferencia y la base de conocimientos).

Ejemplo sencillo

Vamos 's empezar con un ejemplo que fue explorada por primera vez con la lgica proposicional.
Considere el argumento:
156 156 Artificial Intelligence Inteligencia artificial

Todos los hombres son mortales.

Scrates es un hombre.

Por lo tanto, Scrates es mortal.

Podemos traducir todo, pero en la conclusin lgica de predicados de la siguiente manera:

x Hombre (x) Mortal (x)

El hombre (Scrates)

As que para todos X, donde X es un hombre, entonces X es tambin un mortal. Nos 'Hola! Hemos
proporcionado el predicado que indica que Scrates es un hombre, luego Scrates es mortal tambin. Ahora
vamos 's ver cmo esto se traduce en Prolog. En primer lugar, nombre contiene definir la regla:

mortal (X): -man (X).

Tenga en cuenta que en Prolog, la regla se define de manera diferente que el argumento FOL (como una
clusula de Horn). Para el demostrador de teoremas Prolog, esto se puede leer como para mostrar mortal (X),
resuelve el hombre (X). La regla tambin se puede leer mortal (X) si el hombre (X). Tenga en cuenta el punto
al final de la regla indica el final de la frase.

A continuacin, ofrecemos nuestra realidad (Scrates es un hombre):

hombre (Scrates).

Tenga en cuenta que esto es idntico a la definicin de una regla que es un hecho, que
podra ser especificada como:

hombre (Scrates): - cierto.

Toda la informacin que ya se ha definido. Una consulta ahora se puede emitir a Prolog para
probar la conclusin. Dos mtodos se muestran a continuacin. La primera simplemente pone a
prueba la conclusin, y la segunda es una consulta para aquellos objetos que satisfacen el
predicado:

| | ? - mortal (Scrates). yes s

| | ? - mortal (X) = X socrates s


Representacin del conocimiento 157 15

Nota en el segundo ejemplo que nos han solicitado ese partido Prolog para el predicado (por
lo que los objetos significa la expresin se evala como verdadera?). Vuelve con la variable X
instancia a Scrates (el resultado esperado).

A principios de la dcada de 1980, Japn comenz el ordenador de quinta generacin


NOTE NOTA

proyecto de sistemas. El objetivo de este proyecto fue el desarrollo de una


Quinta generacin super-computadora construida para el paralelismo masivo con
AI como su aplicacin principal. La lengua de la base para el equipo era
Prolog, pero como prlogo en el momento no apoy la concurrencia, otra
lenguas se desarrollaron en su lugar. Mientras que el proyecto estaba bajo
el desarrollo, la tecnologa de todo el mundo evolucion en diferentes direcciones
(microprocesadores y software). El proyecto no se reuni con el xito
pero s producir cinco mquinas paralelas y una variedad de aplicaciones
[Feigenbaum 1983]
Recuperacin de Informacin y KR
Prolog es a menudo visto como una forma de almacenar y recuperar informacin de forma inteligente
pero puede hacerlo de una manera que hace que sea ms til que lo que comnmente se
disponible en un sistema de base de datos relacional tradicional. Vamos 's comenzar con una
ejemplo del uso de Prolog para representar una pequea cantidad de conocimiento y luego
explorar unas pocas reglas para dar sentido a los conocimientos.
El primer paso es definir el dominio del conocimiento, o los hechos de
el que las reglas posteriores utilizarn. En este ejemplo se utilizar un conjunto de hechos simples
sobre el sistema solar, que comienzan con esas planetas que giran alrededor del sol. A UN
predicado comn se utiliza llamadas rbitas, los cuales sern utilizados no slo
para describir los planetas (los objetos que orbitan alrededor del sol), sino tambin para definir la
satlites que orbitan los planetas (ver Listado 5.1). Nota en el Listado 5.1 que la
planetas se definen primero (aquellos que orbitan el sol). Esto es seguido por cada
de los planetas. Cada planeta que tiene satlites utiliza las rbitas predicado
identificar los satlites que orbitan alrededor de cada uno de los planetas (slo una muestra se muestra
en el listado 5.1). Por ltimo, el predicado gaseous_planet se utiliza para definir e
gigantes gaseosos en el sistema solar.

LISTADO 5.1: Una base de conocimiento de los hechos sobre el sistema solar.

rbitas (sol, mercurio). rbitas (Sol, Venus).


rbitas (sol, tierra). rbitas (Sol, Marte).
158 158 Artificial Intelligence Inteligencia artificial

rbitas (Sol, Jpiter). rbitas (sol, saturno). rbitas


(sol, urano). rbitas (sol, Neptuno). rbitas (tierra,
the_moon). rbitas (estropea, phobos). rbitas
(estropea, Deimos). rbitas (Jpiter, metis). rbitas
(Jpiter, Adrastea).

...

rbitas (Saturno, pan). rbitas (Saturno, atlas).


...

rbitas (Urano, cordelia). rbitas (Urano, ofelia).


...

rbitas (Neptuno, naiad). rbitas (Neptuno, thalassa).


...

gaseous_planet (Jpiter). gaseous_planet (Saturno).


gaseous_planet (Urano). gaseous_planet (Neptuno).

Con este conjunto de hechos, un conjunto de reglas puede definirse ahora para incrustar el
conocimiento adicional en la base de datos, as como apoyar una pequea cantidad de
razonamiento. En primer lugar, hay que recordar que un planeta se define como un objeto
importante que orbita alrededor del sol. Esta regla se puede utilizar el predicado rbitas con el
sol para identificar aquellos elementos que son planetas (y no satlites).

planeta (P): - rbitas (sol, P).

Como se muestra, cualquier objeto (de nuestra base de conocimientos) que orbita alrededor
del Sol es un planeta. Con esta definicin, podemos fcilmente definir una regla para los
satlites. Un satlite es simplemente un objeto que orbita alrededor de un planeta.

por satlite (S): -

rbitas (P, S), planeta (P).

Este predicado utiliza una conjuncin que primero utiliza el objeto satlite (S) para determinar
qu objetos (P) con las rbitas de predicado estn satisfechos. Si este predicado produce un
objeto P, y 'planeta sa (utilizando el predicado planeta), entonces el S es un satlite.
Representacin del conocimiento 159 15

La siguiente regla separa los planetas gigantes de gas (planetas gaseosos) de los planetas
terrestres. Tenga en cuenta que al final del listado 5.1, los planetas gaseosos se definen
utilizando el predicado gaseous_planet. Esto se utiliza como se muestra a continuacin en la
forma negada (\ +) en conjuncin con el predicado planeta, para determinar si un objeto es un
planeta terrestre.

terrestrial_planet (P): -

planeta (P), \ + gaseous_planet (P).

Finalmente, con los datos de satlite que 's siempre, es muy simple para determinar si el
objeto no tiene ningn satlite. Dado el objeto planeta (que se valida con el predicado planeta),
este se utiliza en conjuncin con las rbitas de predicado para determinar si no se devuelven
resultados con la negacin (\ +).

no_moons (P): -

planeta (P), \ + rbitas (P, S).

Tener un predicado que identifica que un planeta no tiene satlites (lunas NO_), que es muy
fcil de negar esta para identificar si un planeta tiene satlites (has_moons).

has_moons (P): -

\ + No_moons (P).

Este ejemplo ilustra una propiedad interesante de la representacin del conocimiento y el de la


acumulacin del conocimiento humano tambin. El conocimiento puede ser construido sobre otro
conocimiento. Dado un conjunto, y una distincin entre una porcin de ese conjunto, las clasificaciones se
pueden definir ms y refinado a partir de una inicialmente pequeo conjunto de conocimientos. Por
ejemplo, saber que un planeta orbita alrededor del Sol, sabemos que todos los dems objetos que orbitan
alrededor de un objeto que no sea el sol son satlites. Un satlite es una luna de un objeto, por lo que 's
fcil de determinar aquellos objetos que tienen lunas y los que don ' t. Esta propiedad tambin puede ser
una maldicin, porque como las relaciones entre los datos crecen, cualquier error puede tener efectos
amplios en toda la base de conocimientos.

En representacin y el razonamiento acerca de un entorno.

Adems de razonamiento simple con una base de datos, Prolog se puede utilizar para
representar un entorno y a la razn de ello. Vamos que est ahora a explorar un mapa muy
simple que identifica un conjunto de ubicaciones y luego un vistazo a algunas funciones que
proporcionan Prolog con la capacidad de atravesar el mapa. Obsrvese en la figura 5.9 que
nuestro mapa es realmente nada ms que un simple grfico. Las conexiones en el mapa son
bidireccionales (de modo que se puede obtener de Lyon a Longmont, y tambin de Longmont a
Lyons).

En el captulo 2 que, en un grfico, existe un conjunto de bordes. Un borde es una conexin entre dos
vrtices en el grfico. As que el primer elemento de nuestra
160 160 Artificial Intelligence Inteligencia artificial

Figura 5.9: Mapa representado como un simple grfico bidireccional.

base de conocimientos son los bordes en el grfico (que ciudades conectar a qu otras
ciudades). Para esto, te utilizamos un predicado llamado borde , lo que indica un borde entre
los dos objetos (ver Listado 5.2). Ntese aqu que se muestra slo en una direccin, ya que te
dejamos Prolog sabe acerca de la utilizacin bidireccional cuando definimos las reglas.

LISTADO 5.2: Definicin de los lmites de nuestro mapa sencillo de Prolog.

EDGE (Lyons, fort_collins). de borde (Lyons,


Longmont). de borde (Lyons, canto rodado). borde
(Boulder, Longmont). borde (Boulder, Denver). borde
(Longmont, Lyons). borde (Longmont, canto rodado).
borde (Longmont, fort_collins). borde (Longmont,
Denver). de borde (fort_collins, de Denver).

Con este conjunto de hechos definido, podemos realizar algunas consultas con Prolog. Por
ejemplo, podemos proporcionar una ciudad, y entonces se le pregunta qu ciudades estn
conectadas con el predicado:

| | ? - borde (Longmont, Y). Y = Lyons? ; ;


Representacin del conocimiento 161 16

Y = Boulder? ; ;

Y = fort_collins? ; ; Y = Denver

s | ? -

Tambin podramos utilizar el predicado en forma de borde (X, Longmont) , pero ya que don 't
detalle la naturaleza bidireccional de nuestra grfica, esto no es ' t tan til.

A continuacin, se define una regla para determinar la conexin de dos ciudades. Tenemos que llamaremos
esta regla conectar, y ha de devolver cierto si las ciudades estn conectadas en el mapa por un borde, o falso si
no estn conectados (Ver listado 5.3). Tenga en cuenta cmo se construye esta regla. Utilizamos el borde
predicado para consultar si un borde se ha definido, pero desde que don 't codificar cada direccin en los
hechos, podemos probar ambos casos aqu para asegurar que cogemos un hecho que indica que existe el
borde. Recordemos que el punto y coma es un valor booleano operacin O, de modo que si uno o el otro es
cierto, entonces volvemos verdadero (que existe un borde, y la conexin).

LISTADO 5.3: Definir una regla para comprobar si existe una ventaja.

conectado (X, Y): -

borde (X, Y); borde (Y, X).

Ahora vamos 's explorar un conjunto de reglas que se pueden utilizar para determinar una o ms rutas entre
las ciudades en nuestro mapa sencillo. Tenemos que llamaremos la ruta de la regla, y utiliza otros dos reglas;
recorrer y marcha atrs. Traverse regla es una regla recursiva que busca un camino entre una partida y la
ciudad termina (con la etiqueta X e Y). Tambin mantiene una trayectoria variable, que es la consulta
mediante el cual se define la regla. Una vez travesa ha encontrado una ruta , la regla inversa se utiliza para
invertir el orden de la trayectoria encontrado para devolverlo al usuario (ver el Listado 5.4). Observe el uso de
[X] en la regla de desplazamiento. Los corchetes indican que una lista se est construyendo, y el contenido de
la lista se define como X, o la primera ciudad en el camino.

LISTADO 5.4: Reglas para determinar de forma recursiva caminos.

camino (X, Y, Path): -traverse (X, Y, [X], Q), inversa (Q,


Path).

Se crearn dos normas de alto nivel para atravesar el grfico. La primera (que se muestra en el listado 5.5)
es el caso especial de un camino entre slo dos ciudades. In this case, En este caso,
162 162 Artificial Intelligence Inteligencia artificial

el predicado conectado se utiliza para determinar esta condicin y no se realizan llamadas recursivas. Tenga en
cuenta que en la llamada de travesa, el camino est construido con Y (extremo de la ciudad) como la cabeza y
la ruta como la cola. Esto se hace porque la lista se basa en el orden de la ciudad ms visitada recientemente.
La ciudad inicial es el ltimo elemento de la lista, y el ms visitado recientemente es el primer elemento. Cuando
se utiliza la inversa, la lista aparecer normalmente en la salida (primera a la ltima ciudad).

LISTADO 5.5: La primera regla para la travesa.

atravesar (X, Y, P, [Y | P]): comunicado con los (X, Y).

La segunda regla ms compleja crea una llamada recursiva despus de una serie de pruebas
(condiciones previas). En primer lugar, el predicado conectado se utiliza para devolver las ciudades
conectadas a la ciudad actual (X). Este paso determina los prximos posibles pasos en la ruta de
acceso, para el cual no pueden ser numerosas. Cada se devuelve como una lista construida por
separado (llamadas separadas para atravesar por caminos separados). La siguiente ciudad a visitar
se llama Z, y la prxima prueba es asegurar que la prxima ciudad no es nuestro destino (Z \ == Y).

Por ltimo, utilizamos la funcin miembro para probar si la ciudad actual es parte de la ruta actual
(desde que ganamos 't visitar una ciudad ms de una vez). Si se superan estas pruebas, entonces
hacemos una llamada recursiva para recorrer con Z como la ciudad actual (al lado de visita), e Y
como el destino. La ruta se actualiza, la adicin de Z a la trayectoria de la ciudad. Las llamadas
continan entonces (para cada ruta), hasta que una o ms de las pruebas falla, sobre el cual las
llamadas recursivas parada y la cadena de llamada se desenrolla (devuelto a la persona que llama
principal). (Ver listado 5.6.)

LISTADO 5.6: Segunda regla recursiva para la travesa.

atravesar (X, Y, V, Path): -

conectado (X, Z), Z \ == Y, \ + miembro (Z, V), transversal (Z, Y, [Z | V],


el camino).

Una consulta se puede realizar ahora para determinar las rutas disponibles a partir de una ciudad
a otra ciudad. Un ejemplo de este proceso utilizando Prolog se muestra en el Listado 5.7. Tenga en
cuenta que se devuelven todas las permutaciones de los caminos.

LISTADO 5.7: Una consulta de prueba de la base de conocimiento del mapa.

| | ? - Ruta (Lyons, Denver, P).

P = [Lyons, fort_collins, Denver]? ; ;

P = [Lyons, fort_collins, Longmont, Denver]? ; ;


Representacin del conocimiento 163 16

P = [Lyons, fort_collins, Longmont, Boulder, Denver]? ; ; P = [Lyons,


fort_collins, Longmont, Boulder, Denver]? ; ; P = [Lyons, Longmont, Denver]? ; ;
P = [Lyons, Longmont, Boulder, Denver]? ; ;

P = [Lyons, Longmont, fort_collins, Denver]? ; ; P = [Lyons, Longmont,


Boulder, Denver]? ; ;
P = [Lyons, canto rodado, Denver]? ; ;

P = [Lyons, canto rodado, Longmont, Denver]? ; ;

P = [Lyons, canto rodado, Longmont, fort_collins, Denver]? ; ; P = [Lyons,


canto rodado, Longmont, Denver]? ; ;

P = [Lyons, canto rodado, Longmont, fort_collins, Denver]? ; ; P = [Lyons,


Longmont, Denver]? ; ;

P = [Lyons, Longmont, Boulder, Denver]? ; ;

P = [Lyons, Longmont, fort_collins, Denver]? ; ; P = [Lyons,


Longmont, Boulder, Denver]? ; ; (10 ms) no hay

||?-

WEB SEMNTICA
La Web Semntica es el nombre detrs de un esfuerzo para cambiar la forma en que la web se
define e interpreta. Hoy en da, Internet se compone de los ejrcitos y el contenido que se define
predominantemente a travs de la tecnologa Hyper-Text Markup Language (o HTML). Este
lenguaje proporciona una manera de aadir textura a las pginas web, por lo que en lugar de
simplemente ser documentos de texto, otra informacin puede ser incluida como audio o
informacin grfica. Pero simplemente HTML proporciona una manera de embellecer contenido
de modo que se puede representar en un dispositivo de una forma independiente.

Un ejemplo simple de HTML se muestra en el Listado 5.8. Este ejemplo define una pgina
web simple que incluye un ttulo (que se sita en la cabecera del navegador) y un cuerpo que
simplemente emite dos prrafos. Cada prrafo de este ejemplo se define un autor y un ttulo que
han autor. Usando la etiqueta HTML prrafo (<p>), estas lneas estn separadas por una sola
lnea.

LISTADO 5.8: Un ejemplo simple de HTML.

<html> <Html>

<head> <Head>
164 164 Artificial Intelligence Inteligencia artificial

<Title> Lista de autor </ title> </ head>

<body> <Body>

<P> John Doe Artculo A </ p> <p> Jane Doe artculo
B </ p> </ body>

</html> </ Html>

As que del listado 5.8, vemos que 'es relativamente fcil crear una pgina web que puede ser visto
por cualquier navegador web estndar. Si bien esto es til, 's slo es til desde una perspectiva de visin
humana. El navegador entiende cmo representar la informacin dado el margen de beneficio, pero no
sabe nada del contenido. Si nos 're construir agentes de software que pueden leer las pginas web y
comprender su contenido, se requiere algo ms. Aqu es donde RDF, o Resource Description Framework,
se pueden aplicar.

RDF permite la definicin de metadatos dentro del margen de beneficio, llamado declaraciones. Cada
declaracin en RDF contiene tres partes estructurales, un sujeto, predicado y objeto (vase el Listado 5.9).
Tambin se proporciona en este ejemplo es el espacio de nombres (codificados xmlns ), que proporciona
un espacio disambiguous de nombres definidos por un localizador uniforme de recursos (o URL, una
direccin web). El espacio de nombres proporciona una aclaracin de los trminos utilizados en el RDF.

LISTADO 5.9: Un ejemplo sencillo de RDF.

<rdf: RDF xmlns: RDF = http://www.w3.org/2006/09/test-rdf-syntax-ns# xmlns =


http://schemas.mtjones.com/rdftest/ > < rdf: Description = http://mtjones.com/rdf >

<Publicaciones>

<rdf: Descripcin ID = mtjones.com > <artculo>

<Autor> John Doe </ author> <title> Artculo A </


Article> </ Article>

<Artculo>

<Autor> Jane Doe </ author> <title> Artculo B </


Article> </ Article>

</ Rdf: Description>

</ publicaciones>
Representacin del conocimiento 165 16

</ Rdf: Description>

</ Rdf: RDF>

Lo que 's importante de este ejemplo es que los datos se proporciona en un formato que
hace que sea sencillo para analizar y comprender los elementos de los datos. Esto se debe a
que los datos se marca con el significado de los datos (metadatos). Tenga en cuenta que el
artculo define un autor y el ttulo de un artculo (como se define por la etiqueta de autor y la
etiqueta del ttulo). De esta manera, un analizador RDF puede encarnar una aplicacin (o agente
de software) con la capacidad de entender los datos que Ha sido siempre.

DISCOVERY conocimiento computacional


sistemas de descubrimiento de conocimiento computacional proporcionan una perspectiva
interesante sobre la creatividad y la creacin de conocimiento humano. Muchos de estos
sistemas se basan en el uso de la heurstica para restringir la bsqueda, as como la aplicacin
recursiva de un pequeo conjunto de mtodos de descubrimiento. Tambin comnmente se
basan en el uso de formas simples (del conocimiento inicial) para ayudar en el proceso de
descubrimiento. [WAGMAN 2000] Dos de los sistemas ms conocidos son el tocino y automtica

Matemtico (AM).

El tema que nos ocupa se diferencia de otros mtodos de aprendizaje basados en sus mtodos para
descubrir el conocimiento. mtodos de aprendizaje de mquinas o de minera de datos, producen
conocimiento en una variedad de formas, tales como rboles de decisin. Conocimiento (o cientfico)
mtodos de descubrimiento utilizan formalismos tales como ecuaciones que producen otras ecuaciones
para representar el conocimiento descubierto. Sin embargo, cada mtodo analiza los datos iniciales y las
relaciones de los datos utilizando una bsqueda heurstica para producir nuevos conocimientos.

Un problema con el descubrimiento de conocimiento computacional es que su uso requiere post-


procesamiento por un ser humano para filtrar e interpretar los conocimientos resultantes. Desde esta
perspectiva, el descubrimiento de conocimiento computacional se describe mejor como el descubrimiento
de conocimiento asistida, como un ser humano que comnmente se requiere para interpretar y aplicar los
resultados. Pero incluso con este inconveniente, el descubrimiento de conocimiento computacional ha
producido nuevos conocimientos en muchos campos cientficos (que conduce a las publicaciones en la
literatura de referencia).

El Sistema TOCINO
El tocino es en realidad una serie de sistemas de descubrimiento desarrollado a lo largo de varios aos. Un
aspecto de tocino es su capacidad para descubrir las leyes fsicas simples
166 166 Artificial Intelligence Inteligencia artificial

PROPINA

teniendo en cuenta las relaciones entre las dos variables. Por ejemplo, utilizando los mtodos generales simples
proporcionadas por tocino, dos variables pueden ser revisados por su relacin. Si una variable (X) aumenta y la otra
variable (Y) se incrementa, a continuacin, la heurstica AUMENTAR se puede aplicar, causando tocino para analizar su
relacin (X / Y). Si una variable aumenta mientras que el otro disminuye, entonces el decrecientes heurstic se puede
emplear (Bacon causando para analizar su producto, XY). Por ltimo, si el valor de X se mantiene constante (o casi
constante), tocino puede plantear la hiptesis de que X mantiene este valor.

Ntese que mientras BACON se proporciona una serie de datos (de dos variables), tiene la capacidad de
crear nuevos datos basados en las reglas predefinidas (proporcionando proporciones, productos y
constantes). TOCINO utiliza estas nuevas series, as en su intento de analizar los datos. Si bien estas reglas
son muy simples, tocino los utiliz para volver a descubrir con xito Kepler 'tercera ley del movimiento
planetario s (vase la ecuacin 5.1, donde d es el planeta ' distancia s desde el Sol, p es su periodo, y k es
una constante).

(Eq 5.1)

Otras variantes de tocino emplean procedimientos de descubrimiento incluso ms avanzado, pero


cada uno sigue un modelo similar de complejidad creciente (ms de dos variables, variables numricas
y simblicas, etc.).

El papel de tocino es la construccin de ecuaciones Dado un conjunto de datos usando una


variedad de heurstica (ecuaciones de ajuste a los datos).

El matemtico automtico (AM)


El matemtico automtica (o AM) es un sistema de descubrimiento matemtico con diferencias
significativas de tocino. AM fue diseado por Doug Lenat para descubrir nuevos conceptos en
matemticas elementales y la teora de conjuntos. Pero en lugar de buscar una solucin a un problema, o
un objetivo predefinido, AM se limita a seguir interesantes heurstica y genera nuevos ejemplos en busca
de regularidades. Cuando se encuentran regularidades, las conjeturas se pueden crear.

Cuando se inicia el AM, que 's provista de algunos hechos acerca de su dominio (conceptos
matemticos sencillos) utilizando el marco de la tcnica de representacin del conocimiento. Por ejemplo,
AM podra entender el concepto de los nmeros primos. Teniendo en cuenta estos conceptos y reglas
generales, AM a continuacin, aplica estos conceptos sobre la base de su valor (la regla ms interesante,
lo ms probable es que se utilizar).

AM utiliza un conjunto de mtodos generales para crear nuevos conceptos matemticos (como la
creacin de la inversa de una relacin existente, o mediante especializada
Representacin del conocimiento 167 16

restringir el dominio de un concepto). El modelo subyacente utilizado por la maana estaba programas
LISP pequeas, lo que represent una variedad de conceptos matemticos. Los nuevos programas LISP,
se generaron y se modifican para representar nuevos conceptos (basadas en su interpretacin con un
intrprete de LISP).

AM no descubri los conceptos por s solo, pero se bas en un intrprete humano para
revisar los datos producidos para entender lo que encontr. AM hizo descubrir numerosos
conceptos matemticos, como los nmeros primos y Goldbach conjetura 's pero en lugar de la
identificacin de estas caractersticas, en cambio, ha sido criticado como proporcionar los datos
para realizar el descubrimiento en esta crtica humano.

Doug Lenat sigui el desarrollo de AM con otro descubrimiento


NOTE NOTA

sistema llamado EURISKO. Este desarrollo, en lugar de buscar


para los conceptos matemticos, se centr en cambio en la bsqueda de la
utilidad
heurstica.

ONTOLOGA

PROPINA

Una ontologa es un concepto central en la representacin moderna del conocimiento, aunque las ideas detrs de l han
existido desde el principio de KR. Una ontologa desde la perspectiva de AI es un modelo que representa un conjunto de
conceptos dentro de un dominio especfico, as como las relaciones entre esos conceptos.

Recordemos el ejemplo de la red semntica en la Figura 5.1. Se trata de una ontologa para el
dominio de los lugares y capitales. El 'es, un ' tipo de relacin define una taxonoma jerrquica que
define cmo los objetos se relacionan entre s.

Tenga en cuenta que la figura 5.1 tambin se puede definir como un conjunto de relaciones
meronimia, ya que define cmo los objetos se combinan para formar objetos compuestos (ciudades
a los estados a los pases a los continentes).

Un uso interesante de una ontologa est en la forma de un lenguaje como un medio para codificar una
ontologa a los efectos de comunicar el conocimiento entre dos entidades (agentes). Esto se analiza en la
siguiente seccin.

Comunicacin del conocimiento


Tener un vasto depsito de conocimiento es ms til si se puede compartir y utilizar desde una variedad de
perspectivas. Ser capaz de compartir el conocimiento permite
168 168 Artificial

modif
pizarr
Usted
NOTE NOTA

Age

Conoc

Leng

SENTIDO COMN
Los sistemas informticos que incluyen algn tipo de AI para un dominio determinado problema todava
pueden ser considerados con razn poco inteligente porque carecen de algunos de los conocimientos ms
fundamental llamado sentido comn. For example: Por ejemplo:

Los objetos caen hacia la Tierra (debido a la gravedad) y no est lejos de la Tierra.

Si obtiene cerca de un fuego, que podra quemarse.


Es 's peligroso volar una cometa en una tormenta elctrica.

Para habilitar el razonamiento a un nivel de sentido comn, se propone una base de conocimientos de
sentido comn que contiene el conocimiento de sentido comn que la mayora de las personas poseen.
Esta base de conocimiento se construye de manera que una aplicacin puede utilizarlo para crear
inferencias (a razn). Ejemplos del tipo de conocimiento que est representado incluye el comportamiento
de los objetos, efectos de las acciones (gritando a alguien que puede hacer que se enojen), y las
condiciones previas de acciones (uno pone sus medias antes que sus zapatos). Muchos otros temas
podran ser cubiertos tales como las propiedades de los objetos (el fuego es caliente), y las descripciones
de los comportamientos humanos (si alguien est llorando, entonces pueden estar triste).

Un ejemplo interesante de un proyecto de sentido comn se llama Cic. Este proyecto fue
creado por Doug Lenat (que tambin cre el matemtico automtica). La base de conocimientos
Cyc incluye ms de un milln de conceptos y reglas, que se definen en un lenguaje basado en el
clculo de predicados (similar al lenguaje de programacin LISP). Ejemplos de conocimientos
bsicos codificado en Cyc incluyen:

(# $ # $ Capitalcity Colorado # $ Denver)

que codifica Denver es la capital de Colorado. "

(# $ # $ Genls hombres # $ Mortal)


Representacin del conocimiento 169 16

lo que representa Todos los hombres son mortales. La base de conocimientos Cyc se
divide en un nmero de colecciones de conocimiento llamado microtheories . Un microteora es
de conceptos y hechos acerca de un dominio particular del conocimiento (como una ontologa)
una contradiccin libre. Microtheories pueden estar relacionados entre s y se organizan en una
jerarqua, el apoyo a la herencia.

El desarrollo de Cyc y su motor de inferencia contina, pero el principal foco de trabajo es


principalmente en la ingeniera del conocimiento o conocimiento de mano de codificacin y reglas
para representar conocimientos bsicos de sentido comn.

RESUMEN DEL CAPTULO


La representacin del conocimiento se centra en los mecanismos por los cuales la informacin puede ser
almacenada y procesada en una manera de hacer que la informacin til como el conocimiento. En este
captulo se presentan algunos de los mecanismos ms importantes para la representacin del conocimiento,
tales como redes semnticas y marcos, y tambin mtodos que permiten no slo el almacenamiento de los
conocimientos, sino tambin de procesamiento, tales como la lgica proposicional y de primer orden (o
predicado) lgica. Por ltimo, se exploraron las aplicaciones de representacin del conocimiento incluyendo el
descubrimiento cientfico computacional, y el razonamiento de sentido comn con el proyecto Cyc.

REFERENCES REFERENCIAS
[Feigenbaum 1983] Feigenbaum, Edward A., McCorduck, Pamela La quinta generacin:
Inteligencia Artificial y Japn Challenge PC 's para el Mundo. 1983.

[Wagman 2000] Wagman, Morton. Procesos descubrimiento cientfico en seres humanos y equipos:
Teora e Investigacin en Psicologa e Inteligencia Artificial, Praeger Publishers, 2000.

RESOURCES RECURSOS
Brachman, Ronald J., Qu IS-A es y ISN t'. Un anlisis de taxonmica enlaces en las redes semnticas.
IEEE Computer , 16: (10), de octubre de 1983.

Langley, P. BACON.1: Un sistema de descubrimiento general. En las Actas de la segunda


conferencia bienal de la Sociedad Canadiense de Estudios computacionales de Inteligencia,
173-180, 1978.
170 170 Artificial Intelligence Inteligencia artificial

Lenat, DB AM: Un enfoque de la inteligencia artificial para el descubrimiento en matemticas como


bsqueda heurstica, Ph.D. Tesis, AIM-286, STAN-CS-76-570, Universidad de Stanford, AI Lab,
Stanford, 1976.

Lenat, DB, y Brown, JS Por qu estoy y EURISKO parecen funcionar. "

Inteligencia Artificial 23 (3): 269-294, 1984.

Post, Emil Introduccin a una teora general de las propuestas, americana Journal of Mathematics
43: 163-185.

Freud, Sigmund La interpretacin de los sueos, Macmillan, 1913. Grupo de Gestin de


objetos, Especificacin UML, 2007.

Disponible en lnea en: http://www.omg.org/technology/documents/modeling_ spec_catalog.htm

Woods, W. Qu 's en un enlace: Bases para redes semnticas, Representacin y comprensin: Estudios en
Ciencia Cognitiva, Academic Press, 1975.

EXERCISES CEREMONIAS
1. Definir la representacin del conocimiento en sus propias palabras. Cules son sus
caractersticas ms importantes?
2. Definir dos tipos de conocimiento y sus diferencias.

3. Considere un rbol genealgico, y representar esta usando una red semntica.

4. Marcos incluyen lo que se denomina una unin de procedimiento que se puede utilizar para
activar las funciones de varios tipos de eventos. Describir estos archivos adjuntos y
demuestran cmo pueden ser utilizados.

5. Definir Modus Ponens y Modus Tollens y proporcionar un ejemplo de cada uno.

6. Definir el cuantificador universal y existencial utilizado en la lgica de predicados.

7. Representar cada uno de los siguientes sentencias en lgica de primer orden:

a. Una ballena es un mamfero.

b. Jane ama a Juan.

c. John sabe Jane padre 's.

d. Si se 's la lluvia, entonces el suelo est mojado.

e. Si el interruptor est encendido y la luz apagada es entonces la bombilla se rompe.

f. Todas las computadoras tienen un procesador.

8. Describir las ventajas de la lgica de predicados sobre la lgica de proposiciones.

9. Representar a la condena en 7.d en Prolog.

10. Describir el propsito detrs de la Web Semntica. Cul es su representacin y cmo


ayuda?
M quina
C aptulo 6 L
GANANCIA

M aprendizaje achine, como su nombre lo indica, se centra en los algoritmos y mtodos que permiten a un ordenador
para aprender. Otra forma de pensar acerca de esto es desde la perspectiva de aprender con el ejemplo.
Given a Dado un

conjunto de datos, aprendizaje automtico puede aprender acerca de los datos y sus relaciones,
la produccin de informacin. En este captulo, la mquina de aprendizaje ser investigado
incluyendo una serie de algoritmos de aprendizaje automtico. Algoritmos para ser explorados
incluyen rboles de decisin, modelos de Markov, el aprendizaje vecino ms cercano, y otros.

Algoritmos de aprendizaje
Existen numerosos tipos de algoritmos de aprendizaje. Algunos de los mtodos ms populares
incluyen el aprendizaje supervisado, no supervisado de aprendizaje, y el aprendizaje
probabilstico.

algoritmos de aprendizaje supervisado implican que un profesor est presente para identificar cuando un
resultado es correcto o incorrecto. Los datos de entrada contiene tanto un predictor (variable independiente) y
de destino (variable dependiente) cuyo valor es a estimar. A travs del proceso de aprendizaje supervisado, el
algoritmo predice el valor de la variable de destino en funcin de las variables predictoras. Examples Ejemplos
172 172 Artificial Intelligence Inteligencia artificial

PROPINA

de algoritmos de aprendizaje supervisado incluir perceptrones, propagacin hacia atrs, y rboles de


decisin.

algoritmos de aprendizaje no supervisado implican que el aprendizaje se produce sin supervisin o


sin un maestro. En este caso, no hay ninguna variable de destino, pero en cambio las relaciones en los
datos que se explotan para la clasificacin (por ejemplo, patrones en los datos). Ejemplos de
aprendizaje no supervisado incluyen Hebbian Learning, Cuantificacin Vectorial y adaptativa teora de la
resonancia (ART).

alrogithms de aprendizaje supervisado y no supervisado se analizan en los captulos de redes


neuronales (captulos 8 y 9), adems de los ejemplos explorados aqu.

Por ltimo, los enfoques probabilsticos para el aprendizaje es un mtodo til en la IA moderna. Este enfoque
funciona sobre el principio de que la asignacin de probabilidades a los eventos pueden realizarse en base a
probabilidades previas y los datos observados. Esto es til porque, en teora, este mtodo puede llegar a
decisiones ptimas.

Aprendizaje supervisado
algoritmos de aprendizaje supervisado utilizan datos de entrenamiento que se ha clasificado (tiene un
valor objetivo para cada vector de entrenamiento). El objetivo del algoritmo de aprendizaje supervisado es
crear una funcin de prediccin utilizando los datos de entrenamiento que va a generalizar para vectores
de entrenamiento invisibles para clasificarlos correctamente.

En esta seccin, el aprendizaje de rbol de decisiones se explora para construir un rbol de


decisin a partir del comportamiento observado.

Aprender con rboles de decisin

Uno de los mtodos ms intuitivos y prcticos para el aprendizaje supervisado es el rbol de


decisin. Un rbol de decisin es el resultado de un proceso de clasificacin en el que los datos de
origen se reduce en un rbol predictor que representa un conjunto de reglas Si Entonces / / else.
Como ejemplo, considere un observador que se observ un jugador de FPS y registr sus acciones
cuando se enfrentan a un enemigo. El resultado se muestra en la Tabla 6.1

Tabla 6.1: Observado acciones de un jugador en un juego en primera persona-tirador.


Health Comportamie
Arma municin
Salud nto
Full
Pistola Low Bajo Lucha
Completo
Full
Pistola Low Bajo Evadir
Completo
Full
Cuchillo Low Bajo Lucha
Completo
Cuchillo Low Bajo Low Bajo Evadir
Machine Learning Aprendizaje automtico 173 17

Figura 6.1: Un rbol de decisin simple para un jugador de FPS.


PROPINA

Figura 6.2: la expresin condicional que resulta de la simple rbol de decisin.

Un ejemplo sencillo de un rbol de decisin, creado a partir de los datos observados en la Tabla 6.1,
se muestra en la Figura 6.1.

Como se muestra en la Figura 6.1 (y en la Tabla 6.1), este jugador tiene tres variables de prediccin. Estas son
las armas (el arma llevado actualmente por el jugador), Municin (la cantidad de municin realizado por el
jugador), y, finalmente, de la Salud (el nivel de salud del jugador). Los nodos interiores del rbol de decisiones son
las caractersticas y los arcos fuera de los nodos de caractersticas son valores de caractersticas. Cada hoja en el
rbol es una categora (o clase). El desglose de estos resultados de rbol de decisin en un simple expresin
condicional se muestra en la Figura 6.2.

Esta expresin de la condicin (que representa el rbol de decisin) define que si el jugador tiene un
arma con municin completa, que va a luchar. Si el jugador tiene un cuchillo y la salud completa, que va
a luchar. De lo contrario, el jugador evadir. Esto se muestra claramente en el condicional simple en la
Figura 6.2.

Es 's fcil ver cmo el rbol de decisin puede ser construido a partir de los datos de la Tabla 6.1,
pero con mucho ms grandes conjuntos de datos con muchas variables predictoras, la tarea es mucho
ms difcil. El (3 iterativo Dichotomizer) algoritmo ID3 automatiza esta tarea a travs de una forma de
arriba hacia abajo de bsqueda codiciosa a travs del espacio del rbol de decisiones.

el aprendizaje de rbol de decisiones es una tcnica comn utilizada en la minera de datos. La minera
de datos es un campo ms amplio que estudia la extraccin de informacin til a partir de conjuntos de
datos. La minera de datos es una tcnica popular en anlisis financiero y tambin encuentra uso en la
identificacin de fraude.
174 174 Artificial Intelligence Inteligencia artificial

El uso de un rbol de decisin se define simplemente como a partir de la raz y tomar el camino a travs del
rbol cuyos valores representan las caractersticas de un ejemplo dado. Cuando se alcanza la hoja del rbol, el
ejemplo ha sido clasificado.

Creacin de un rbol de decisin

Creacin de un rbol de decisin de un conjunto de ejemplos es un proceso sencillo. Pero el


objetivo es crear un rbol de decisin simple que es consistente con los datos de entrenamiento.
Sencilla puede ser ambigua, pero los rboles de decisin ms simples tienden a ser ms fiable y
generalizar mejor.

Creacin de un rbol de decisiones es un proceso recursivo sobre las caractersticas del conjunto de
datos, pero siempre comienza con la determinacin de la raz del rbol. Para elegir el que cuentan para
comenzar a construir el rbol, se utiliza la propiedad estadstica de ganancia de informacin. La
caracterstica con la ganancia de informacin ms alto se selecciona que especifica la caracterstica ms
til para su clasificacin.

Ganancia de informacin se basa en otra idea de la teora de la informacin llamada entropa


, que mide la cantidad de informacin detrs de la funcin. La entropa se define en la ecuacin
6.1.

6.1 eq

Dado un conjunto de muestras (S), la suma se toma de las proporciones de S que


pertenecen a la clase I. Si todas las muestras de S pertenecen a la misma clase I, entonces la
entropa es 0. La entropa de 1,0 define que el conjunto de muestra (por clase I) es
completamente al azar.

Para el clculo de la entropa para el comportamiento que se detalla en la Tabla 6.1, se


aplicara la ecuacin 6.1 de la siguiente manera:

E (S) = - (2/5) Log2 (2/5) + - (3/5) Log2 (3/5)

E (S) = 0,528771 + 0,442179 = 0,970951

Con la entropa calculada para el objetivo (Comportamiento), el siguiente paso es elegir la


funcin de la ganancia de informacin ms alto. Para el clculo de la ganancia de informacin
para una caracterstica, la ecuacin 6.2 se utiliza.

6,2 eq

ganancia de informacin identifica el grado de influencia de la funcin dada tiene sobre la prediccin
de la categora resultante (en este caso, el comportamiento). Un ejemplo de clculo de la ganancia de
informacin de la funcin de la municin se demuestra como:

Ganancia (Sweapon) = E (S) - (2/4) * La entropa (Sgun) - (2/4) * La entropa (Sknife)


Machine Learning Aprendizaje automtico 175 17

La entropa de un valor de un atributo determinado se calcula basndose en la entidad de


destino. Por ejemplo, el arma es el valor (Gun) en dos de los cuatro ejemplos. Para los ejemplos
donde arma tiene un valor de Gun, los objetivos se dividen entre pelea y Evasin (media para
cada uno). Por lo tanto, la entropa para el valor de la pistola es:

Entropy (Sgun) = - (1/2) Log2 (1/2) - (1/2) Log2 (1/2) Entropy (Sgun) = 0.5
- 0.5 = 0.0

Para ejemplos en los que el arma tiene el cuchillo valor, 's divisin, as (media tener cuchillo,
y cuando el ejemplo es del cuchillo, la conducta objetivo se divide entre pelea y Evasin, o
medio).

Entropy (Sknife) = - (1/2) Log2 (1/2) - (1/2) Log2 (1/2) Entropy (Sknife) =
0.5 - 0.5 = 0.0

As que volviendo al clculo de la ganancia para el arma, el resultado es:

Ganancia (Sweapon) = 0,970951 - (2/4) * (0,0) - (2/4) * (0.0) de ganancia


(Sweapon) = 0,970951 - 0,0 - 0,0 = 0,970951

A continuacin, la ganancia de informacin tanto para la municin y la salud se calcula:

Ganancia (Sammo) = E (S) - (1/4) * Entropy (Sfull) - (3/4) Entropy (Lento) Entropy (Sfull) = -
(1/1) Log2 (1/1) - (0 / 1) Log2 (0/1)

Entropy (Sfull) = 0

Entropy (Lento) = - (1/3) Log2 (1/3) - (2/3) Log2 (2/3)

Entropy (Lento) = 0,528321 a 0,389975 = 0,138346

Ganancia (Sammo) = 0,970951 - (1/4) * 0 - (3/4) * 0,138346

Ganancia (Sammo) = 0.970951 - 0 - ,103759 = 0,867192 Ganancia (Shealth) = E (S) - (2/4) *


Entropy (Sfull) - (2/4) Entropy (Lento) Entropy (Sfull) = - (1 / 2) Log2 (1/2) - (1/2) Log2 (1/2)

Entropy (Sfull) = 0.5 - 0.5 = 0.0

Entropy (Lento) = - (1/2) Log2 (1/2) - (1/2) Log2 (1/2) Entropy (lento) =
0.5 - 0.5 = 0.0

Ganancia (Shealth) = 0,970951 - (2/4) * 0,0 - (2/4) * 0..

Ganancia (Shealth) = 0,970951 - 0,0-0,0 = 0,970951 Las ganancias


resultantes entonces son:

Ganancia (Sweapon) = 0,970951 - 0,0-0,0 = 0,970951 Ganancia (Sammo) =


0,970951 - 0 - 0,103759 = 0,867192 Ganancia (Shealth) = 0,970951 - 0,0-0,0 =
0,970951

Para un juego de desempate, que slo tiene que seleccionar la primera mayor ganancia de
informacin y usar eso como el ms grande. Esto produce Arma como la caracterstica para representar la
176 176 Artificial Intelligence Inteligencia artificial

Figura 6.3: La bifurcacin de los datos de conjunto dado una decisin funcin de la raz.

raz del rbol. El algoritmo contina entonces, con la bifurcacin del conjunto de datos en dos conjuntos,
divididos por los valores de caractersticas y de entidades seleccionadas, y el proceso contina para
construir el resto del rbol (vase la figura 6.3).

El proceso contina como anteriormente en las dos patas del rbol. La entropa se calcula, y
el aumento de la informacin sobre cada caracterstica restante para determinar cul utilizar para
continuar desarrollando el rbol. Un resultado posible se demostr originalmente en la Figura
6.1.

Caractersticas de rbol de decisiones de aprendizaje

Como lo explica anteriormente, el algoritmo ID3 utiliza una forma voraz de bsqueda. Esto significa que el
algoritmo elige el mejor atributo en cada paso, y no vuelve a volver a evaluar las opciones de atributos
anteriores. Esto puede ser problemtico, como codicioso doesn 't significa necesariamente ptima. El
resultado puede ser un rbol de sub-ptima o desequilibrada que no cede la mejor segregacin de
caractersticas.

treees decisiones que son grandes o se crean a partir de una pequea cantidad de datos de
entrenamiento tienden a overfit (o sobre-generalizar). En general, mientras que los rboles de
decisin ms grandes son ms consistentes con los datos de entrenamiento, los rboles ms
pequeos tienden a generalizar mejor. Una manera de manejar este problema es podar los datos de
entrenamiento a un subconjunto ms pequeo para evitar un exceso de ajuste.

Las ventajas de los rboles de decisin es que son muy rpidos (tienden a clasificar en un menor
nmero de decisiones que las caractersticas del conjunto de datos) y tambin son fciles de interpretar.
Lo ms importante, ya que un rbol de decisin es inherentemente legible por humanos, que es muy fcil
de entender cmo funciona la clasificacin.

El aprendizaje no supervisado
Recordemos que supervis aprende aprendiendo de los datos que se preclasificado (cada vector de
entrenamiento incluye la clase de destino). aprendizaje no supervisado se diferencia en que no existe una
variable de destino. Todas las variables son tratadas como entradas, y por lo tanto, el aprendizaje no
supervisado se utiliza para encontrar patrones en los datos. Esto permite que los datos se reducen y
segmentados en sus clases representativas.
Machine Learning Aprendizaje automtico 177 17

Modelos de Markov

Un ejemplo til de un modelo de Markov es la cadena de Markov, el nombre de su creador, Andrey


Markov. Una cadena de Markov es una especie de mquina de estados que probabilstico que puede
ser fcilmente entrenados Dado un conjunto de datos de entrenamiento. Cada estado puede conducir
probabilsticamente a otros estados, pero los estados anteriores no tienen relevancia para las
transiciones de estado subsiguientes (slo el estado actual).

Lo que hace que las cadenas de Markov interesante es que pueden ser fcilmente creados a
partir de observaciones. Tomemos, por ejemplo, la idea de la casa inteligente. La casa supervisa
las acciones de los ocupantes durante el tiempo que el ocupante est en casa. Cada noche, el
ocupante fija la alarma para el 6 de la maana (domingo a jueves). A las 6 de la maana,
despus de que suene la alarma, el monitor cuenta de que la luz del bao se enciende. A travs
de la observacin, capturamos la siguiente ms de una semana de entrenamiento 's:

De lunes a viernes, de 6 am despertador, bao-luz-en fin de semana,


no hay ninguna alarma, bao-light-off

Con estos datos (cinco muestras de da de la semana, dos muestras de fin de semana), se 's
visible que en das laborables, los resultados de alarma en la observacin de que la luz del bao
se enciende con una probabilidad de 1,0. Con estos datos, el hogar inteligente podra encender
la luz del bao cuando se ve el evento precursor de la alarma que se apaga.

Esta idea se puede aplicar a una gran variedad de problemas en el campo de la prediccin,
agrupamiento y clasificacin. En la seccin siguiente, la cadena de Markov se utiliza para
entrenar mquinas de estados de probabilidad de caracteres para generar palabras al azar.
Estas palabras se generan a partir de una mquina de estados de probabilidad usando palabras
regulares para la formacin.

Palabra-Form Aprender con cadenas de Markov

Una cadena de Markov simple puede ser utilizado para generar razonables palabras
sintcticamente correctos utilizando palabras conocidas para la formacin. Para construir al azar,
pero las palabras razonables se utiliza la probabilidad de letras que siguen otras letras. Por
ejemplo, si la palabra el se utiliza como un ejemplo de formacin de cuatro puntos de datos
pueden ser recogidos. These are: Estos son:

la palabra comienza con la letra 't ' la letra 'h ' sigue la
letra 't ' la letra 'e ' sigue la letra 'h ' la letra 'e ' termina la
palabra.

Si analizamos una serie de palabras de esta manera, podemos identificar la frecuencia que las cartas
comienzan palabras, palabras finales, y seguir otras letras. Una representacin de la tabla
178 178 Artificial Intelligence Inteligencia artificial

PROPINA
Figura 6.4: La matriz de transicin carta resultante.

se utiliza para identificar la carta de principio (filas) seguido de la letra posterior (columnas). Como ejemplo,
considere la palabra 'como ' se est analizando. Para empezar, la clula indicada por la transicin a-> s se
incrementa (fila 'un ', columna 's '). Entonces el s- transicin> 'final ' se incrementa (se muestra como fila 's ',
columna '\ 0 ').

Considere la muestra de entrenamiento que consiste en las palabras:

mstil, dcil, misma, equipos, equipo, carne, vapor, y el tallo.

El producto de analizar estas palabras se muestra en la Figura 6.4. Para cada palabra, las
transiciones de la letra se cuentan para llegar a la representacin matricial. Tenga en cuenta tambin
que se calcula la suma de las filas (esto se utiliza posteriormente para la generacin de la palabra). El
nmero de veces que una letra dada se produjo primero tambin se cuenta (de nuevo, utilizado en la
generacin de palabra).

Ahora que existe la matriz, cmo sera una palabra al azar crearse a partir de esta representacin?
Para ello, los recuentos se utilizan como probabilidades para determinar qu carta al uso que se da una
carta seleccionada previamente. Para lograr esto, un nmero aleatorio se genera utilizando el valor de
suma como de los lmites (el nmero aleatorio mximo que se puede utilizar). Con este valor aleatorio,
la seleccin de la rueda de ruleta se utiliza para determinar qu carta de una fila a utilizar (representado
grficamente en la figura 6.5 para la fila 'm ').

la seleccin ruleta ve las opciones disponibles como una rueda de la ruleta. no aparecen Elementos con cero
probabilidad de seleccin. Aquellos con una probabilidad distinta de cero ocupan un espacio en la rueda
proporcional a su frecuencia. Por ejemplo, con una suma de 9, letra a se selecciona 2/9 de las veces, o P (0,22).
Machine Learning Aprendizaje automtico 179 17

Figura 6.6: seleccionar


Figura 6.5: La rueda de ruleta
probabilsticamente
enfoque de seleccin. una carta.

Para la seleccin de la rueda de ruleta, se selecciona un valor aleatorio que sirve como el lmite. Se
selecciona un punto de partida aleatorio (en este ejemplo, la primera clula) y un recuento se incrementa
dado los celulares contenidos 's (vase la figura 6.6). Si el contador es mayor que o igual al valor aleatorio,
a continuacin, se selecciona la letra. De lo contrario, la rueda contina y la siguiente ranura se acumula.
Este proceso contina hasta que el valor de recuento es igual o mayor que el valor aleatorio. Cuando se
cumple esta prueba, se selecciona la letra (en este caso, 'e se selecciona' seguir la letra 'm '). El proceso
continuara para la letra 'e, ' hasta que se selecciona el carcter terminal ( '\ 0 ') indica que la palabra est
completa. Esto sigue a los datos de la muestra, lo que indica que la carta 'e ' sigue a la letra 'm ' 3/8 's del
tiempo o P (0.375)).

Qu 's til sobre este algoritmo es que las letras con frecuencias ms altas (lo que significa
un mayor nmero de ocurrencias en las muestras de entrenamiento) se seleccionan con una
probabilidad mayor de cartas con ocurrencias inferiores. Esto permite la generacin de palabra
(en este caso) para seguir probabilsticamente el conjunto de entrenamiento.

Generacin palabra con cadenas de Markov

Para generar una nueva palabra al azar, el primer paso es definir qu letra a utilizar por primera vez.
Para ello, el vector (llamada 'recuento de primera letra se usa' en la Figura 6.4). Una carta es
seleccionado al azar (por la discusin anterior usando la seleccin de la rueda de ruleta). Con la
primera letra seleccionada, emitimos esta carta, y luego seleccione la siguiente letra utilizando la letra
actual 's fila en la matriz (vase la figura 6.4). Seleccin carta siguiente fue explorado en la Figura
6.6. Cuando la letra seleccionada es la NULL (o \ 0) carcter, la palabra es completa.

Esto se puede demostrar a mano usando la matriz de la representacin en la figura 6.4. En la Tabla 6.2, se
muestra el valor aleatorio y la letra resultante seleccionado.
180 180 Artificial Intelligence Inteligencia artificial

NO

T T
H MARIDO E mi

C do D re

Tabla 6.2: iteracin de la muestra de la generacin de la palabra.

valor aleatorio Action Accin


Iterar 'primera letra del vector, ' seleccionar
77
'm '
11 Iterar matriz fila 'm, ' seleccionar 'un '
22 Iterar matriz fila 'a, ' seleccionar 't '
55 Iterar fila de la matriz 't, ' seleccionar 'e '
66 Iterar matriz fila 'e, ' seleccione \ 0 (NULL)

El resultado es la generacin de la palabra al azar 'mate ' (no forma parte del conjunto de entrenamiento). En la
siguiente seccin, el cdigo para implementar esta capacidad se explora.

Implementacin de la cadena de Markov

La implementacin de la cadena de Markov para la construccin palabra aleatoria requiere dos componentes
bsicos. El primero es el elemento de formacin que lee el archivo de entrenamiento (llamado el corpus) y
construye la representacin matricial de la carta mquina de estado'. 'El segundo elemento es el elemento de
generacin de palabra que utiliza la representacin de la matriz para generar palabras al azar.

La implementacin completa de la demostracin de Markov Chain se puede encontrar en el CD-


ROM en ./software/ch6/markov.c.

La matriz se representa usando un simple matriz bidimensional como:

FILAS #define 28 # define COLS 28


matriz unsigned int [FILAS] [COLS];

ndices (fila y columna) de 0 a 25 representan las letras 'una ' a travs de 'z. 'ndice 26 (fila y columna)
representa la nueva lnea (final de la palabra). Columna 27 representa la suma de la fila en particular. Por ltimo, la
fila 27 representa el recuento de la letra dada que aparece como la primera letra (vase la Figura 6.4).

La construccin de la matriz de carta (como se ilustra en la Figura 6.4) es un proceso simple que se basa en
una mquina de estados muy simple. existe el primer estado, llamado START_LTR_STATE, para identificar que
una sola carta ha sido recibida y que se requiere una nueva carta para incrementar un celular. En este estado,
cuando se recibe un carcter, se incrementa el recuento de la primera carta del vector (que identifica cuntas
veces este personaje es el primero de una palabra). Despus de que se recibe un carcter inicial, el siguiente
estado se introduce el llamado NEXT_ LTR_STATE. En este estado, los recuentos de transicin se incrementan
(con qu frecuencia un carcter lleva a la otra). Cuando el siguiente carcter es recibido
Machine Learning Aprendizaje automtico 181 18

Figura 6.7: Grabacin de una palabra de datos 's con la mquina de estado de anlisis.

un carcter terminal (tales como el espacio, puntuacion, etc.), estos datos se registra (carcter al final de
una palabra), y luego las transiciones de mquina de estado de vuelta al FIRST_LTR_STATE. Este
proceso se muestra en la Figura 6.7.

La mquina de estado est implementado en corpus funcin read_ muestra en el listado 6.1. La
funcin simplemente lee cada lnea desde el archivo definido, y utiliza la mquina de estado para
mantener los recuentos de transicin carta en la matriz.

LISTADO 6.1: Creacin de la representacin de la matriz a partir de los datos de entrenamiento.

int read_corpus (char * nombre del archivo)

{{

FILE * fp;

lnea char [MAX_LINE + 1];

int i, estado = START_LTR_STATE; ch char, prev_char;


/ * Abrir y probar el archivo corpus * / fp = fopen (nombre
de archivo, r );

si (fp == NULL) return -1;

/ * Bucle a travs de cada lnea del archivo * /

mientras que (fgets (lnea, MAX_LINE, fp)! = (char *) 0) {/ * Bucle a


travs de la lnea * /

for (i = 0; ((i <MAX_LINE) && (lnea [i] = 0));! i ++) {ch = tolower (lnea [i]);

/ * Mquina de estado para manejo de caracteres * / switch


(estado) {

START_LTR_STATE caso:

/ * Nos ests en la letra inicial, guardarlo si no terminal * / if (! Is_terminal


(CH)) {
182 182 Artificial Intelligence Inteligencia artificial

prev_char = CH; matriz [FIRST_LETTER] [to_idx (ch)] ++; estado =


NEXT_LTR_STATE;
}}

break; descanso;

NEXT_LTR_STATE caso: si (is_terminal (CH)) {


/ * Si la siguiente letra es un terminal, transicin de vuelta * / matriz [to_idx
(prev_char)] [26] ++;

estado = START_LTR_STATE; } Else {

/ * Si la siguiente letra es un no-terminal, incrementar el recuento * / matriz [to_idx


(prev_char)] [to_idx (ch)] ++;

prev_char = CH;

}}

break; descanso;

}}

}}

}}

/ * Complete con columnas de suma en la matriz * /


calculate_maximums ();

return 0; Return 0;

}}

Cuando read_corpus ha terminado, la matriz se actualiza y representa los datos de


entrenamiento. La matriz se puede utilizar ahora para generar palabras al azar que imitan la
estructura de las palabras en los datos de entrenamiento. Dos funciones se utilizan para la
generacin de textos, stos se generate_word y select_letter.

generate_word funcin (ver listado 6.2) es la funcin de nivel superior que selecciona las letras para
construir una palabra. Comienza seleccionando una letra, sino del vector que representa la frecuencia de
las letras que aparecen primero (FIRST_ CARTA). Se pide a cada nueva carta (fila de la matriz) utilizando
la letra actual (que representa la fila de partida para seleccionar). Una vez que se selecciona el carcter
terminal, la palabra es completa y la funcin devuelve.

LISTADO 6.2: Funcin generate_word para crear una nueva palabra al azar.

vaco generate_word (void)

{{

int sel;
Machine Learning Aprendizaje automtico 183 18

/ * Seleccione la primera letra de usar * / sel = select_letter


(FIRST_LETTER);

/ * Continuar, seleccionando letras adicionales basados en * la ltima letra.

*/

while (sel = END_LETTER!) {printf ( % c , ( 'un ' + sel));


sel = select_letter (sel);

}}

printf ( \ n );

regreso;

}}

El ncleo del algoritmo de creacin de palabra es la funcin de seleccin _carta (ver Funcin
6.3). Esta funcin implementa el algoritmo de seleccin de rueda de la ruleta. El algoritmo comienza
con la fila, que representa la letra anterior. Esto proporciona la fila que se utiliza para determinar qu
carta va a seguir. Un valor aleatorio se crea (MAX_VAL), que representa el lmite (donde se detendr
la bola en la rueda de ruleta). se acumula entonces la fila (a partir de la primera clula) hasta que se
alcanza o se excede el MAX_VAL. En este punto, se devuelve la carta. Si no se alcanza el
MAX_VAL, a continuacin, la celda siguiente se acumula y el proceso contina.

Listado 6.3: El select_letter funcin que probabilsticamente selecciona las cartas sobre la base de la
letra actual.

Char select_letter (fila int)

{{

int MAX_VAL;

int i = 0, suma = 0;

/ * Retirar el valor mximo (para la seleccin de la ruleta) * / MAX_VAL = RANDMAX


(matriz [fila] [MAX_COUNTS]) 1; / * Realizar la ruleta * /
while (1) {

/ * Aadir en el valor ranura actual * / sum + = matriz [fila]


[i];

/ * Si> = MAX_VAL, a continuacin, seleccione esta carta * / if


(suma> = MAX_VAL) de retorno i;

/ * De lo contrario, pase a la siguiente letra de la fila * / if (++ i> =


MAX_COUNTS) i = 0;
184 184 Artificial Intelligence Inteligencia artificial

}}

de salida (0);

}}

Generacin de palabras al azar de un programa construido a partir de esta fuente pueden


dar lugar a palabras interesantes, y tambin las palabras no tan interesantes. Por ejemplo, estas
palabras se generaron a partir de un corpus de ejemplo:

antinsubaized sutosermed eroconated


axpoged porantide arouded anvilured
arketized

Pero ms a menudo que no, las palabras de este tipo pueden dar lugar a:

phteroobund rolacunficonged

Desde esta perspectiva, la extraccin de las palabras ms tiles de las palabras sin sentido
se puede hacer con la participacin humana. En otras palabras, la aplicacin genera conjuntos
de soluciones que luego son revisados por un ser humano para identificar aquellos que tienen un
valor (por ejemplo, si una nueva compaa o nombre del frmaco estaban siendo buscado). Esto
se llama hombre-aprendizaje asistido sin supervisin y los resultados en el mejor enfoque
(software para la bsqueda, revisin humana para el filtrado).

Otras aplicaciones de cadenas de Markov

Las cadenas de Markov y sus variantes se pueden encontrar en una serie de reas, incluyendo el
reconocimiento de voz, la comprensin del habla, la composicin de msica, y una serie de otras reas. La
simplicidad del algoritmo hace que sea muy eficiente. El sistema no tiene idea de los eventos para los que se
estn definiendo las probabilidades, todo lo que 's aprendido es de probabilidad entre eventos dentro de un
sistema. Pero incluso sin una comprensin de la semntica detrs de las relaciones, el sistema todava puede
reaccionar a ellos (como el ejemplo de alarma / bao-luz). El enfoque tambin es til desde el punto de vista del
aprendizaje-humana asistida (con los operadores humanos teniendo en cuenta la importancia de las relaciones
encontrado).
Machine Learning Aprendizaje automtico 185 18

Figura 6.8: espacio de caractersticas de la muestra para la clasificacin 1NN.

Vecino ms cercano Clasificacin


Uno de los algoritmos de aprendizaje no supervisado ms tempranas que es tambin uno de los ms sencillos
se llama cercana clasificacin vecino . Este algoritmo clasifica un patrn invisible o concepto al encontrar el
patrn ms cercano en el conjunto de datos conocidos. Esto es lo que se entiende por vecino ms cercano. La
clase del vecino ms cercano en el espacio de caractersticas multidimensional es la clase de la (no visto)
vectores de prueba.

Un ejemplo de esto se muestra en la Figura 6.8. En el centro del espacio de caractersticas es


una muestra nueva que an no se ha clasificado. La distancia entre la nueva muestra y otros
ejemplos en el espacio se calcula. El ejemplo ms cercano se utiliza como la clase a la que esta
nueva muestra debe ser agrupado. En este ejemplo, el ejemplo ms cercano es una unidad de
distancia, y por lo tanto se utiliza la clase de este ejemplo. La declaracin de la clase basado en la
muestra ms cercana se llama un vecino ms cercano (1NN).

El clculo de la distancia entre dos vectores de caractersticas se puede lograr en un nmero de


maneras, pero el ms popular es la medida euclidiana. Otra funcin muy popular utiliza la distancia
Manhattan. La distancia euclidiana se calcula utilizando la ecuacin 6.3 para vectores de
caractersticas p y q.

6,3 eq

vecino ms cercano (1NN) realiza un enfoque simple pero eficaz para la clasificacin. En la
siguiente seccin, una simple demostracin de 1NN se explora para la clasificacin de los
animales.
186 186 Artificial Intelligence Inteligencia artificial

Ejemplo 1NN

El algoritmo para 1NN se describe y se implementa fcilmente. Con 1NN, la muestra de vector
(no clasificados) caracterstica se compara con todos los ejemplos conocidos. La clase para el
ejemplo ms cercano se utiliza entonces como la clase para el vector de caractersticas de la
muestra.

Para el ejemplo de vectores, se utiliza la tabla de la figura 6.9. Este contiene una serie de
caractersticas que en ciertas combinaciones definen un tipo de animal. Cinco tipos de animales
se clasifican aqu usando 14 vectores de ejemplo y 10 atributos.

Figura 6.9: Ejemplo cuentan con vectores para la clasificacin animal.

Figura 6.10: clculo de la distancia para el animal misterio a los ejemplos conocidos.
Machine Learning Aprendizaje automtico 187 18

NO

T T

H MARIDO E mi
C do D re

Como un ejemplo, considerar un animal recin descubierto con los atributos mostrados por su vector de
caractersticas (ver Figura 6.10). Lo que est observado es que el animal misterio de los huevos y las vidas
tanto en el agua como en tierra. La distancia del vector de caractersticas para cada ejemplo conocido se
calcula y el ejemplo ms cercano se utiliza para la clase (vase la Figura 6.11). En este caso, el animal
misterio se clasifica como un anfibio.

La aplicacin de 1NN es muy simple y se muestra en el listado 6.4. Como se muestra la distancia
calc_ simplemente calcula la distancia utilizando cada caracterstica del vector. El algoritmo 1NN
simplemente camina a travs de cada ejemplo vector y calcula la distancia desde el vector de muestra
(vase principal). El vector ms cercano se utiliza entonces como la clase.

La implementacin completa de la demostracin 1NN se puede encontrar en el CD-ROM en


./software/ch6/one_nn.c.

LISTADO 6.4: Ejemplo de implementacin del algoritmo de agrupamiento 1NN.


10
max_features #define
10
#define MAMMAL 00
BIRD #define 11
FISH #define 22
#define ANFIBIOS 33
REPTIL #define 44
typedef struct {
int cuenta con [max_features];
clase int;
SAMPLE_T};
14
#define MAX_SAMPLES
14
muestras SAMPLE_T [MAX_SAMPLES] = {
/ * LY LE FBM CWH BM CB HF SS LWL BWG * /
1, 1, 1, 0, 0,
{{ 0, 0, 1, 1, 0, 0, 0}, mamfero}, /* Ardilla */
1, 0,
1, 1, 0, 0,
{{ 1, 0, 1, 1, 0, 0, 0}, mamfero}, /* Gato */
0,
0, 0, 0, 1, 0,
{{ 1, 1, 0, 0, 1, 0}, Anfibio}, / * * rana /
0, 0,
0, 0, 1, 0, 1,
{{ 1, 1, 0, 0, 1, 1, 0}, BIRD}, /* Pato */
0, 0,
1, 0, 0, 0, /* Murcilago
{{ 1, 0, 1, 1, 0, 0, 0 0 }, Mamfero},
0, */
1, 1, 0, 0,
{{ 1, 0, 1, 1, 0, 0, 0}, mamfero}, / * * Elefante /
0,
0, 0, 0, 1, 0,
{{ 1, 1, 0, 0, 0, 0, 0 0 }, Reptil}, / * * Cocodrilo /
0, 1,
0, 0, 1, 0, 1,
{{ 1, 1, 0, 0, 0, 0, 0 0 }, BIRD}, /* Bho */
0, 0,
0, 0, 0, 1, 0,
{{ 1, 1, 0, 0, 0, 0, 1 1 }, FISH}, / * * Trucha /
0, 1,
0, 0, 0, 1, 0,
{{ 1, 1, 0, 0, 0, 0, 0 0 }, Reptil}, /* Tortuga */
0, 1,

188 188

{{ 0, 1

{{ 1, 0
0, 1,
{{
0, 1,
0, 1,
{{
0, 1,
};

char * nombres [5] = { mamfero , ave , pescado , anfibio , reptil }; doble


calc_distance (int * feature_vector, int ejemplo)

{{

doble distancia = 0,0; int i;

/ * Calcular la distancia para cada caracterstica del vector * / for (i = 0; i


<max_features; i ++) {

distancia + = SQR ((muestras [Ejemplo] .features [i] - feature_vector [i]));


}}

sqrt (distancia) de retorno;

}}

int principal (void)

{{

int i, class = 0;

distancia doble, min = 100,0;

int fv [max_features] = {0, 1, 0, 0, 0, 0, 0, 0, 1, 0}; for (i = 0; i


<MAX_SAMPLES; i ++) {

/ * Calcular la distancia entre la muestra y example_i vector * / distancia = calc_distance


(fv, i);

/ * Si este es el vector ms cercano, guardarlo * / if (distancia


<min) {

min = distancia;

class = muestras [i] .class;

}}

}}

printf ( Clase es% s \ n , los nombres de [Clase]); return 0;


Return 0;

}}

k-NN Ejemplo

Un problema con la clasificacin 1NN es que puede ser susceptible de datos ruidosos. Una
solucin a este problema es en lugar de simplemente la clasificacin basada en el vecino ms
cercano, tomar los k vecinos ms cercanos y utilizar el voto de la mayora para determinar la
clase correcta (ver Figura 6.11).
Machine Learning Aprendizaje automtico 189 18

Figura 6.11: Usando los ejemplos k ms cercanos para clasificar una nueva muestra.

NO
T T

H MARIDO E mi

C do D re

La ventaja de k = NN (donde k > 1) es que la probabilidad de clasificacin errnea de una muestra se reduce
porque ms ejemplos pueden intervenir en el resultado. El k porcin puede ser tomado demasiado lejos, y si el k
valor es demasiado grande, sino que tambin puede resultar en errores de clasificacin. El valor de k , por tanto,
debe ser pequea, pero no demasiado grande. Ejemplos no relacionadas influyen en el voto.

La implementacin para k-NN es una variacin de 1-NN en que los ejemplos k se utilizan para la
clasificacin en lugar de simplemente uno.

La representacin de datos para k = NN es idntica a la de un 1-NN, como se muestra en el Listado 6.4. Lo que
difiere es cmo se produce la clasificacin una vez que se calculan las distancias euclidianas. Listing 6.5 proporciona la
funcin principal para la clasificacin k-NN. Como se muestra, cada distancia se calcula para el vector de caractersticas
fc (con calc_distance) y luego se guarda en la matriz de distancia. Count_votes de funcin y luego se invoca (con el
valor k) para encontrar y contar los ejemplos de voto.

La implementacin completa de la demostracin k-NN se puede encontrar en el CD-ROM en


./software/ch6/k_nn.c.

LISTADO 6.5: la funcin primordial de la ejecucin k-NN.

int main (void)

{{

int i, class = 0;

int fv [max_features] = {0, 1, 0, 1, 0, 0, 0, 0, 1, 0};


190 190 Artificial Intelligence Inteligencia artificial

doble distancia [MAX_SAMPLES]; int k = 3;

/ * Caminar a travs de cada ejemplo vector * / for (i = 0; i


<MAX_SAMPLES; i ++) {distancia [i] = calc_distance (fv, i);
}}

/ * Count, Ganar Ordenar y devolucin Clase * / class = count_votes


(distancia, k); printf ( Clase es% s \ n , los nombres de [Clase]);
return 0; Return 0;

}}

La funcin calc_distance es el mismo como se muestra en el Listado 6.4. La siguiente funcin, count_votes,
se utiliza para encontrar los ejemplos ms cercanos k el vector de muestra y luego encontrar la clase
representada por la mayora de los ejemplos. La funcin comienza moviendo los miembros de la clase de los
Ejemplos de vectores en una nueva lista de vector. La lista se ordena mediante el vector de distancia
introducida en la funcin. Los votos de clase array es entonces puesto a cero y los miembros k superior de la
lista (los ms cercanos a la muestra no clasificados) se cuentan. Por ltimo, la clase con ms votos se devuelve
a la funcin principal para emitir la clase a la que pertenece la muestra (basado en el voto de la mayora de los
ms cercanos k ejemplos).

LISTADO 6.6: Funcin para encontrar y contar los vectores k ejemplo ms cercano.

int count_votes (doble * dist, int k)

{{

int i, lista [MAX_SAMPLES]; int votos [MAX_CLASSES];


int ordenadas;
int max, clase;

/ * Clases de pasar a la nueva matriz lista temporal * /

lista [i] = muestras [i] .class para (i ++ i = 0;; i <MAX_SAMPLES); / * Ordenar la lista en
orden ascendente de distancia * /

ordenados = 0; mientras que (ordenados!)


{ordenados = 1;

for (i = 0; i <MAX_SAMPLES-1; i ++) {if (dist [i]> dist [i + 1]) {

int temp = lista [i]; lista [i] = lista [i + 1]; lista [i + 1] = temp; doble tdist = dist [i];
dist [i] = dist [i + 1]; dist [i + 1] = tdist;
Machine Learning Aprendizaje automtico 191 19

ordenados = 0;

}}

}}

}}

/ * Contar los votos * /

for (i = 0; i <MAX_CLASSES; i ++) votos [i] = 0; / * Aadir el voto a la


clase particular * /

[lista [i]] {califican ++ para (i ++ i = 0;; i <k);

}}

/ * Contar los votos y devolver la clase ms grande * / max = votos [0];

class = 0;

for (i = 1; i <MAX_CLASSES; i ++) {if (votos [i]> max) {

max = votos [i]; class = i;


}}

}}

Rendimiento de Clase;

}}
Figura 6.12: k-NN Ejemplo para la Clasificacin (k = 3).
192 192 Artificial Intelligence Inteligencia artificial

El k algoritmo NN es mucho menos susceptible al ruido que la 1-NN y por lo tanto puede
proporcionar una mejor clasificacin de 1- NN. El valor de k debe ser suficiente para producir un
conjunto representativo de ejemplos de voto grande, pero lo suficientemente pequeo para evitar
demasiado pequea de una muestra.

El proceso de la k -NN se muestra en la Figura 6.12. La distancia desde cada ejemplo al vector
de muestra (misterio animal) se lleva a cabo y la parte superior a travs de elegido. En este caso, los
ejemplos aren 't ordenados, pero en vez acaba de seleccionar de la lista (se muestra en negrita). En
este ejemplo, dos de los ejemplos ms cercanos son de la clase de los anfibios y uno de la clase de
aves.

El ms cercano algoritmo del vecino k-NN es un gran algoritmo para la clasificacin de


vectores de caractersticas utilizando un conjunto de ejemplos de anuncios conocidos. Los
inconvenientes pueden incluir el tiempo de procesamiento necesario si el set de ejemplo y el
vector de caractersticas son grandes. Su mayor ventaja es su sencillez.

RESUMEN DEL CAPTULO


Mientras que la mquina de aprendizaje es una de las tcnicas ms antiguas de la IA, sigue siendo til y eficaz
para el aprendizaje en general. En este captulo, las ideas detrs de aprendizaje supervisado y no supervisado
se exploraron y se les dio un conjunto de algoritmos que demuestran estos enfoques. Los rboles de decisin
se introdujeron desde la perspectiva de aprendizaje supervisado, as como las cadenas de Markov y el
algoritmo del vecino ms prximo desde la perspectiva de aprendizaje no supervisado. Todos son tiles para el
aprendizaje y la clasificacin en una amplia variedad de dominios de problemas.

RESOURCES RECURSOS
Anzai, Y. reconocimiento de patrones y aprendizaje automtico Nueva York, Academic Press, 1992.

Carbonell, J. (Ed.) Aprendizaje Automtico Paradigmas y mtodos Boston, MA MIT Press, 1990.

Dasarthy, B. (Ed.). Vecino ms cercano (NN) Normas Tcnicas: NN patrn de clasificacin, 1991.

Hastie, T. et al Los elementos de aprendizaje estadstico, Springer, 2001. Mitchell, TM


mquina de aprendizaje, McGraw-Hill, 1997.

EXERCISES CEREMONIAS
1. En sus propias palabras, definir las diferencias fundamentales entre el aprendizaje
supervisado y no supervisado.
Machine Learning Aprendizaje automtico 193 19

2. Qu es una aplicacin comn de aprendizaje de rbol de decisiones?

3. Definir la entropa y su aplicacin al aprendizaje de rbol de decisiones. Lo que se puede


deducir si la entropa es cero o uno?
4. Qu problemas pueden ser el resultado de la creacin de rboles de decisin de la
formacin de conjuntos que son demasiado pequeos o demasiado grande?
5. Qu otras aplicaciones son tiles para las cadenas de Markov?

6. En el ejemplo de Markov presenta en este libro, se consideran slo dos letras para construir
una matriz de probabilidad. Actualizar el programa de ejemplo para considerar tres letras en la
construccin de probabilidad. Cmo afecta esto a la produccin de palabras al azar?

7. Ms cercano vecino de clasificacin utiliza un vector de caractersticas para representar


conceptos conocidos. dicha accin-seleccin, cmo podra un personaje en primera
persona-tirador (APN) se define se realiz con 1NN?

8. Describir la diferencia entre 1NN y clasificacin k-NN.

9. Cul es el principal problema con la clasificacin 1NN?

10. De qu manera la clasificacin k-NN mejorar las capacidades de clasificacin 1NN?


11. Cul es el principal problema con la clasificacin k-NN?

Figura 6.13: k-NN Ejemplo para la Clasificacin (k = 3).


E evolutiva se
C aptulo 7 C
OMPUTATION

E Computacin evolutiva se refiere a una clase de algoritmos que utilizan la evolucin simulada en cierta medida
como un medio para resolver una variedad de problemas, desde la optimizacin numrica a la lgica simblica.
By Por

evolucin simulada, queremos decir que los algoritmos tienen la capacidad de evolucionar una poblacin
de soluciones potenciales, tales que las soluciones ms dbiles, y se sustituirn con las soluciones ms
fuertes de forma incremental (mejor). En otras palabras, los algoritmos siguen el principio de la seleccin
natural. Cada uno de los algoritmos tiene una cierta cantidad de plausibilidad biolgica, y se basa en la
evolucin o la simulacin de los sistemas naturales. En este captulo, se Exploraremos algoritmos
genticos, programacin gentica, estrategias evolutivas, evolucin diferencial, y otro algoritmo inspirado
en la biologa: la inteligencia de enjambre.

Breve historia de la computacin evolutiva


Es 's no es de extraar que la evolucin ha sido utilizado como una metfora para la solucin de
problemas muy difciles. Evolucin en s mismo es un mecanismo de bsqueda incremental, por
lo que las soluciones a los problemas ms aptos se propagan a las generaciones futuras, y las
soluciones menos aptos se desvanecen poco a poco. Este proceso de seleccin natural
proporciona un vehculo maravilloso para encontrar soluciones a los difciles problemas de
optimizacin multivariable.
196 196 Artificial Intelligence Inteligencia artificial

Mientras que los algoritmos evolutivos han existido desde hace bastante tiempo, su uso ha
aumentado a medida que los sistemas informticos modernos permiten la evolucin de las
poblaciones ms grandes de soluciones a problemas mucho ms complejos.

Las estrategias evolutivas


Uno de los primeros usos de la evolucin se produjo en la dcada de 1960 por Rechenberg. Rechenberg
introducido estrategias de evolucin como un medio para optimizar los vectores de valores reales para optimizar
los sistemas fsicos, tales como superficies de sustentacin. [Rechenberg 1965] En esta estrategia evolutiva
temprana, el tamao de la poblacin se restringi a dos miembros, el padre y el nio. El miembro nio se
modific de manera aleatoria (una forma de mutacin), y cualquiera que sea miembro era ms ajuste (padre o
hijo) se dej entonces se propaguen a la siguiente generacin como el padre. Por ejemplo, como se muestra en
la Figura 7.1, el miembro de nio es ms apropiado que el padre en la primera generacin, que se traduce en
que sea el padre en la siguiente generacin.

Figura 7.1: Demostracin de la estrategia evolutiva dos miembros simple.

Figura 7.2: Evolucin de mquinas de estados finitos para una simple tarea de anlisis.
Computacin evolutiva 197 19

La programacin evolutiva
La programacin evolutiva tambin se introdujo y se avanz en la dcada de 1960 por Fogel. Con la
programacin evolutiva, Fogel evolucion poblaciones de mquinas de estados finitos (o autmatas) que
resolvieron varios problemas. [Fogel 1966] Una mquina de estado finito es un grfico con las transiciones
de estado sobre la base de un smbolo de entrada y el estado actual (por ejemplo, muchos analizadores
estn diseados como mquinas de estados finitos). Fogel mtodo 's mejor de forma incremental la
poblacin a travs de la mutacin aleatoria de las transiciones de estado.

El ejemplo mostrado en la figura 7.2 muestra una de las codificaciones que se podran utilizar
para la evolucin de las mquinas de estados finitos. El objetivo es desarrollar una mquina de
estados finitos que pueden reconocer patrones tales como AABB, aabbaabb, aabbaabbaabb,
etc.

La parte superior izquierda de la Figura 7.2 es la mquina de codificacin cruda de estado finito que se
puede mutar durante la evolucin. Este particular los resultados de la mquina de estados finitos en el diagrama
de transicin de estado mostrado en la parte central derecha. Esto se puede diagramado como se muestra en la
parte inferior derecha de la figura 7.2, el diagrama de estado de la mquina.

Algoritmos genticos
John Holland introdujo la idea de algoritmos genticos en la dcada de 1960 como un algoritmo basado en
la poblacin con mayor plausibilidad biolgica que los enfoques anteriores. Cuando las estrategias
evolutivas y programacin evolutiva utilizan mutacin como una manera de buscar el espacio de
soluciones, Holanda algoritmo gentico 's extendi este con los operadores adicionales directamente de la
biologa. Las soluciones potenciales (o cromosomas) se representan como cadenas de bits en lugar de los
valores reales. Adems de la mutacin, Holanda tambin se utiliza de cruce y la inversin para navegar
por el espacio de soluciones (vase la Figura 7.3).

Figura 7.3: Holanda cadena de bits algoritmo gentico 's.


198 198 Artificial
H

p
Todos
NOTE NOTA

genes,
o fsica
cromo

soluci

soluci

Programacin gentica
En 1990, John Koza introdujo el subcampo llamada programacin gentica. Esto se considera un
subcampo, ya que fundamentalmente se basa en el algoritmo gentico bsico creado por Holanda, y se
diferencia en la representacin subyacente de las soluciones que deben evolucionado. En lugar de utilizar
cadenas de bits (como con algoritmos genticos) o los valores reales (como es el caso de la programacin
evolutiva o estrategias evolutivas), la programacin gentica se basa en S-expresiones (rboles de
programas) como el esquema de codificacin.

Considere el ejemplo mostrado en la Figura 7.4. La poblacin se compone de dos miembros, A y B. Usando
el operador de cruce, una porcin de A se injerta en B, que resulta en una nueva expresin. La programacin
gentica tambin utiliza el operador de mutacin como una manera de extender la poblacin al espacio de
bsqueda.

Figura 7.4: Usando el operador de cruce para crear nuevos S-expresiones.


Computacin evolutiva 199 19

PROPINA

Mientras Koza representacin 's se centr en S-expresiones, la programacin gentica lineal se ha


introducido a evolucionar en los programas estndar de la mquina (montaje) idiomas.

MOTIVACIN BIOLGICA
Los algoritmos evolutivos se tratan en este captulo son biolgicamente plausible. En cada caso,
los algoritmos que te explorar estn basados en la poblacin. Cada uno de los algoritmos opera
sobre una poblacin de entidades, la paralelizacin de la capacidad de resolver un problema.

El primer conjunto de algoritmos que te revisin (algoritmos genticos, programacin gentica, y


las estrategias evolutivas) es realmente de carcter evolutivo. Estos algoritmos implican la seleccin
natural a travs de una poblacin de posibles soluciones. Los miembros de la poblacin nacen y
mueren con el tiempo, sino que pasan en sus materiales genticos a travs de las poblaciones en
busca de una solucin satisfactoria. En el centro de estos algoritmos es lo que se llama
recombinacin , o la combinacin y mutando de soluciones que pueden cambiar el material en la
poblacin. A medida que los miembros de la variacin de la piscina, slo aquellos que son aptos
puede pasar a la siguiente poblacin (potencialmente en una forma ms conveniente). Este proceso
se ilustra en la Figura 7.5.

Figura 7.5: proceso fundamental de los algoritmos evolutivos basados en la poblacin.

Figura 7.6: Optimizacin por sistema natural (enjambre de partculas y Optimizacin Colonia Ant).
200 200 Artificial Intelligence Inteligencia artificial

El segundo conjunto de algoritmos que Exploraremos es capaz de resolver una variedad de


problemas utilizando la naturaleza como una gua. El primer algoritmo, en el campo de la inteligencia
de enjambre, utiliza una poblacin de partculas que pululan entre s a travs de un paisaje de la
aptitud para resolver diversos problemas, tales como la optimizacin. La mejor de partculas se utiliza
como el centro del enjambre, con otras partculas que pululan alrededor de ella (en busca de mejores
soluciones).

El segundo algoritmo, Optimizacin de Colonia de Hormigas, simula una colonia de hormigas


y utiliza feromonas simulados para encontrar soluciones a varios problemas relacionados con el
grfico-(como se muestra en la Figura 7.6, donde el rastro de feromona identifica el camino ms
corto a travs de la grfica).

Los algoritmos genticos (GA)


Vamos 's comenzar nuestra discusin de los algoritmos evolutivos con los ms populares y ms
flexible algoritmo, el algoritmo gentico. El algoritmo gentico ISN 't realmente un nico algoritmo,
sino una coleccin de algoritmos y tcnicas que se pueden utilizar para resolver una variedad de
problemas en un nmero de diferentes dominios de problemas. Por ejemplo, muchos consideran que
los algoritmos genticos para la optimizacin de una tcnica numrica, pero los algoritmos genticos
se pueden utilizar para mucho ms (como lo veremos ms adelante en la aplicacin de ejemplo).

La capacidad del algoritmo gentico para resolver problemas de amplio alcance se deriva del
mtodo por el cual la solucin se representa en la poblacin. Como vimos en la introduccin, las
soluciones pueden ser representados como cadenas de bits (con una representacin subyacente),
los valores reales, as como ms entidades abstractas tales codificaciones especiales de LISP S-
expresiones. El algoritmo gentico se puede aplicar a muchos problemas, y se limita principalmente a
los desarrolladores la capacidad de 's para representar eficientemente una solucin. Nos veremos
una serie de codificaciones posibles soluciones para algoritmos genticos, programacin gentica y
estrategias evolutivas.

Algoritmo Gentico general


El GA es una coleccin de recetas de algoritmos que pueden utilizarse para evolucionar soluciones a una gama
de diferentes tipos de problemas. Lo llamamos una receta porque hay un gran nmero de variaciones de la AG
que se puede utilizar. Estas variaciones se seleccionan tpicamente basndose en el tipo de problema a ser
resuelto.

Vamos 's empezar con una discusin sobre el flujo bsico de la AG, y luego te cavar en los detalles y
explorar las variantes que son ms tiles. Tenga en cuenta que el GA se llama una tcnica basada en la
poblacin, porque en lugar de operar sobre una posible solucin nica, que utiliza una poblacin de
posibles soluciones.
Computacin evolutiva 201 20

Cuanto mayor sea la poblacin, mayor es la diversidad de los miembros de la poblacin, y


cuanto mayor sea el rea buscada por la poblacin.

Un intento de comprender por qu algoritmos genticos trabajo se llama el bloque Edificio- Hiptesis
(BBH). Esto especifica, por GA binario, que la operacin de cruce (dividiendo dos cromosomas y luego el
intercambio de las colas) mejora la solucin mediante la explotacin de soluciones parciales (o bloques de
construccin) en el cromosoma originales. Uno puede pensar en esto como la reparacin gentica, donde
los bloques de construccin de ajuste se combinan entre s para producir soluciones de mayor aptitud.
Adems, el uso Fitness- seleccin proporcional (miembros de ajuste ms altos se seleccionan con ms
frecuencia), los miembros menos aptos y sus correspondientes bloques de construccin, mueren a cabo
aumentando as la aptitud total de la poblacin.

El algoritmo gentico global puede ser definido por el simple proceso se muestra en la Figura 7.7. En
primer lugar, un conjunto de posibles soluciones al azar se crea que sirve como la primera generacin.
Para obtener los mejores resultados, este grupo debe tener una adecuada diversidad (lleno de miembros
que difieren ms de lo que son similares). A continuacin, la aptitud de cada miembro se calcula. El
gimnasio aqu es una medida de lo bien que cada posible solucin resuelve el problema en cuestin.
Cuanto mayor sea la aptitud, mejor ser la solucin en relacin con los dems.

Figura 7.7: flujo simple del algoritmo gentico.


202 202 Artificial Intelligence Inteligencia artificial

Figura 7.8: Dos de los modelos ms simples de seleccin GA.

Figura 7.9: ilustra el operadores de cruce en la recombinacin gentica.

A continuacin, los miembros de la poblacin se seleccionan basndose en algn algoritmo. Los


dos enfoques ms simples son seleccin rueda de ruleta, y la seleccin elitista (vase la Figura 7.8).
la seleccin de la rueda de ruleta es un algoritmo probabilstico que selecciona los miembros de la
poblacin proporcional con su aptitud (cuanto mayor encajar el miembro, lo ms probable ser
seleccionado). En la seleccin elitista, los miembros de la aptitud ms altos de la poblacin se
seleccionan, forzando a los miembros de ajuste inferiores a morir.

Usando la seleccin de la rueda de ruleta (utilizando los datos de la Figura 7.8), uno probable
resultado de la seleccin sera que dos de Un miembro seran seleccionados, y uno de cada uno de
los miembros C y D. Desde Un miembro es de mayor aptitud que los otros miembros, se tiene el
privilegio de propagar ms cromosomas a la siguiente poblacin. Seleccin Elitist en este modelo
(que se muestra en la Figura 7.8) simplemente toma el 50% superior de la poblacin miembros 's (la
mayor parte en forma), y luego distribuye estos para la prxima generacin.

Volviendo ahora a nuestro flujo de GA, desde el proceso de seleccin, tenemos un nmero de
miembros que tienen el derecho a propagar su material gentico a la siguiente poblacin. El siguiente
paso es para recombinar estos miembros de material 'para formar los miembros de la siguiente
generacin. Comnmente, los padres se seleccionan dos a la vez desde el conjunto de individuos que
estn permitidos para propagar (desde el proceso de seleccin). Dados dos padres, dos nios
Computacin evolutiva 203 20

Figura 7.10: Ilustrando la mutacin y la inversin de los operadores genticos.

se crean en la nueva generacin con ligeras alteraciones cortesa del proceso de recombinacin (con
una probabilidad dada de que se puede producir el operador gentica). Las figuras 7.9 y 7.10 ilustran
cuatro de los operadores genticos.

Figura 7.9 ilustra los operadores genticos de cruce. Uso de cruce, los padres se combinan
mediante la seleccin de un punto de cruce y, a continuacin, el intercambio de las colas de los
dos padres para producir los dos nios. Otra variante de cruce crea dos puntos de cruce, el
intercambio de los materiales genticos en dos lugares.

Figura 7.10 cubre el operador de mutacin y tambin el operador de inversin. Cada uno de
estos operadores eran los operadores genticos originales de Holanda trabajo original 's. El
operador de mutacin simplemente muta (o vueltas) un poco. Tenga en cuenta que en los
cromosomas -valued reales, un ligero cambio en el valor puede tambin llevarse a cabo ya que
la mutacin (pequeo incremento o decremento del valor). El operador de inversin tiene una
parte del cromosoma, y la invierte. En este caso, la gama de bits se volc.

Por ltimo, se han discutido el proceso de la Asamblea General, pero no cmo termina. Hay un
nmero de maneras en que podemos terminar el proceso. La ms obvia es que terminar cuando se
encuentre una solucin, o uno que cumpla con los diseadores criterios 's. Pero a partir del algoritmo
perspectiva 's, tambin tenemos que tener en cuenta la poblacin y su capacidad para encontrar una
solucin.

Otro criterio de terminacin, lo que podra devolver una solucin subptima, es cuando la poblacin
carece de la diversidad, y por lo tanto la incapacidad para buscar adecuadamente el espacio de
soluciones. Cuando los miembros de la poblacin se vuelven similares, hay 'Sa prdida en la capacidad
de bsqueda. Para combatir esto, damos por terminado el algoritmo de deteccin temprana por si la
aptitud media de la poblacin es cerca de la aptitud mxima de cualquier miembro de la poblacin (por
ejemplo, si la aptitud media es superior a 0,99 veces la aptitud mxima). Una vez que la poblacin se
vuelve demasiado similar, los miembros se han centrado en reas similares del espacio de bsqueda, y
por lo tanto son incapaces de ramificacin a nuevas reas en busca de los individuos ms aptos.
204 204 Artificial Intelligence Inteligencia artificial

FIGURA 7.11: movimientos legales para las torres de Hanoi con estados inicial y meta.

Figura 7.12: Mover representacin de secuencia para las torres de problema Hanoi.

PROPINA

El problema de la falta de diversidad en los resultados de los algoritmos genticos en la convergencia prematura,
ya que los miembros convergen en un mximo local, no habiendo encontrado el mximo global. terminacin
anticipada es una solucin, pero otros incluyen reinicio algoritmo si se detecta esta situacin.

Implementacin de Algoritmos Genticos

Vamos que est ahora explorar una implementacin de un algoritmo gentico para resolver un
problema de las Torres de Hanoi. Este problema est relacionado con tres clavijas, con tres
discos de tamao nico, y el objetivo de mover los discos de una clavija a otra. Existe la
restriccin de que un disco se puede mover a una clavija slo si la clavija est vaco, o si el disco
que se est en la clavija es mayor que el PEG para ser movido (vase la figura 7.11).

El primer problema a resolver es cmo representar la secuencia de movimientos para resolver el


problema de una forma que puede ser evolucionado por el algoritmo gentico. La primera cosa a
considerar es que hay slo un puado de movimientos que son posibles (aunque stos no siempre
pueden ser legales, dependiendo de la configuracin actual). Si numeramos las clavijas de cero a dos,
podemos pensar
Computacin evolutiva 205 20

Figura 7.13: Ilustrando los movimientos proporcionadas en la secuencia de solucin en la Figura 7.12.

el espacio de la solucin como una secuencia de movimientos mediante el cual el movimiento


codifica la clavija fuente y el PEG destino.

De la figura 7.12, el primer movimiento '02 'representa un movimiento del disco a partir de PEG 0
a la clavija 2. El siguiente paso '01 ' mueve el disco de PEG 0 a clavija 1. La secuencia de
movimientos que se muestran en la figura 7.12 se puede demostrar visualmente como se ilustra en la
Figura 7.13. La configuracin de la parte superior representa la configuracin inicial del problema, y
posteriores mueve mostrar cmo la configuracin cambia con cada movimiento (el disco gris es la
ltima desplazado).

Deje que 's ahora se clavan en la fuente que proporciona esta representacin (vase el Listado
7.1). El cromosoma para el GA es secuencia de movimientos, y cada gen es un solo movimiento.
Nosotros te representamos los movimientos muy simples como nmeros enteros de 0 a 5. Nosotros
te descodificar el nmero traslado a la clavija a / de comandos utilizando la matriz se mueve. Esto
nos permite evitar una representacin directa, y proporcionar un formato ms sencillo a la Asamblea
General de evolucionar.

Las torres de simulacin Hanoi se proporciona por la matriz de clavijas. Esta contiene tres estructuras que
representan las clavijas, y hasta tres discos (con el nmero de discos actualmente en la clavija definida por la
cuenta). La solucin est representada por la solution_t tipo. Este contiene la secuencia de movimientos (plan),
el nmero de movimientos activos (op_count), y la evaluacin de condicin fsica actual.
206 206 Artificial Intelligence Inteligencia artificial

Listado 7.1: En representacin del espacio de soluciones para las torres de Hanoi.

#define A_TO_B 0x01


#define A_TO_C 0x02
#define B_TO_A 0x10
#define B_TO_C 0x12
#define C_TO_A 0x20
#define C_TO_B 0x21
MAX_OPERATIONS #define 66
carbonilla mueve [MAX_OPERATIONS] = {
A_TO_B, A_TO_C, B_TO_A, B_TO_C, C_TO_A, C_TO_B};
typedef struct {
Char PEG [3];
int cuenta;
Peg_t};
peg_t clavijas [3];
12
NUM_OPERATIONS #define
12
typedef struct {
int Int op_count;
plan de unsigned char [NUM_OPERATIONS + 1];
double doble aptitud;
Solution_t};

La poblacin de la GA se divide en dos partes. Nos nombre contiene mantener una gran variedad
de soluciones como la poblacin actual, y la otra matriz como la prxima generacin de soluciones.
El ciclo actual y la siguiente generacin de entre uno al otro como se realiza el algoritmo (al lado se
convierte en corriente, etc.).

#define POPULATION_SIZE200 200

soluciones solution_t [2] [POPULATION_SIZE];

Vamos que est ahora a ver el bucle principal para el GA, y luego discutir las principales funciones que
proporcionan el proceso de la evolucin. Comenzamos por la inicializacin al azar de la poblacin de posibles
soluciones con una llamada a initialize_population, y luego calcular la aptitud de cada miembro (probando cada
plan contra una simulacin de las Torres de Hanoi) utilizando compute_population_fitness. A continuacin, entrar
en el bucle que invoca el ncleo de la AG. El perform_ga funcin realiza un ciclo a travs de la poblacin, la
seleccin de los miembros de seguir adelante, y combinndolos de nuevo en la prxima generacin. La aptitud
de cada miembro se calcula de nuevo, y las estadsticas fundamentales son emitidos (condicin fsica mnima,
aptitud media, mxima y la forma fsica de la poblacin total).
Computacin evolutiva 207 20

Este proceso contina mientras que hay 's adecuada diversidad de la poblacin (la comprobacin
de la aptitud media en contra de la mxima) y no hemos ' t encontrado an una solucin (una
solucin perfecta ser un gimnasio de 75,0).

Listado 7.2: Un fragmento del bucle principal para el algoritmo gentico.

RANDINIT (); initialize_population (act);


compute_population_fitness (act);

while ((avg <(0,999 * max)) && (max <75.0)) {cur = perform_ga (act);
compute_population_fitness (act);

if (((generacin ++)% 500) == 0) {

printf ( % 6d:% g% g% g \ n , generacin, min, avg, max);

}}

}}

La funcin perform_ga se muestra en el Listado 7,3, y es el ncleo de la implementacin del algoritmo


gentico. Se lleva a cabo la seleccin y recombinacin (usando algunas funciones de apoyo). El primer paso es
identificar qu ndice de las soluciones de matriz que te uso para la prxima generacin (esencialmente lo
contrario de la generacin actual). Luego caminamos a travs de la poblacin actual, la seleccin de dos padres
con la funcin select_parent. Si cruce se va a realizar (al azar, por la probabilidad de cruce), a continuacin, se
selecciona un punto de cruce, y las colas intercambi en los dos padres (utilizando el mnimo de los op_counts
para asegurar la secuencia ms pequea posible de movimientos).

Tenga en cuenta tambin que a medida que los genes individuales (se mueve) se copian de los padres para
el nio, hay 'Sa posibilidad de mutacin con la macro mutar. Cada nio recibe el nmero de operaciones
utilizadas por el padre (tamao del plan de movimiento).

Listado 7.3: El ncleo del algoritmo gentico.

int perform_ga (int cur_pop)

{{

int i, j, new_pop;

int parent_1, parent_2; int cruce;


new_pop = (== cur_pop 0)? 1: 0;

for (i = 0; i <POPULATION_SIZE; i + = 2) {/ * i es child_1, i + 1 es


child_2 * /
208 208 Artificial Intelligence Inteligencia artificial

parent_1 = select_parent (cur_pop); parent_2 = select_parent


(cur_pop);

si (RANDOM () <CROSSOVER_PROB) {cruce = RANDMAX (

MIN (soluciones [cur_pop] [parent_1] .op_count, soluciones [cur_pop]


[parent_2] .op_count));
} Else {

cruce = NUM_OPERATIONS;

}}

para (j = 0; j <NUM_OPERATIONS; j ++) {if (j <cruzado)


{soluciones [new_pop] [i] .plan [j] =

Mutar (soluciones [cur_pop] [parent_1] .plan [j]); soluciones [new_pop] [i + 1]


.plan [j] =

Mutar (soluciones [cur_pop] [parent_2] .plan [j]); } Else {

soluciones [new_pop] [i] .plan [j] = mutar (soluciones [cur_pop] [parent_2] .plan [j]);

soluciones [new_pop] [i + 1] .plan [j] = mutar (soluciones [cur_pop] [parent_1] .plan


[j]);
}}

}}

soluciones [new_pop] [i] = .op_count soluciones [cur_pop] [parent_1] .op_ contar;

soluciones [new_pop] [i + 1] .op_count = soluciones [cur_pop] [parent_2] .op_ cuentan;

}}

volver new_pop;

}}

La funcin select_parent proporciona el algoritmo de seleccin de la rueda de ruleta (ver el


Listado 7.4). Esta funcin camina a travs de la poblacin actual, y pone a prueba cada miembro con
una funcin de probabilidad. Si se selecciona un nmero aleatorio que es menor que el de la aptitud
del miembro ms de la suma de todos los miembros, entonces esta persona es seleccionada como
padre y regres. La idea es que los miembros de la aptitud ms altos se seleccionan ms a menudo,
pero de vez en cuando, un miembro menos aptos se le permite propagarse. Esto es realmente
deseable, ya que aumenta la diversidad de la poblacin en general. Si toda la poblacin est
marcada, y se selecciona ningn miembro, a continuacin, un miembro de azar de la poblacin se
devuelve.
Computacin evolutiva 209 20

Listado 7.4: Seleccin de una solucin madre con la seleccin de ruleta.

int select_parent (int cur_pop)

{{

int i = RANDMAX (POPULATION_SIZE); int cuenta =


POPULATION_SIZE; doble select = 0,0;
while (count--) {

seleccionar = soluciones [cur_pop] [i] .fitness;

si (random () <(seleccionar / suma)) return i; si (++ i> =


POPULATION_SIZE) i = 0;
}}

retorno (RANDMAX (POPULATION_SIZE));

}}

Por ltimo, vamos 's vistazo a la funcin de aptitud (compute_fitness). Esta funcin es
utilizada por compute_population_fitness, que simplemente realiza compute_fitness a toda la
poblacin, y recoge las estadsticas necesarias. El flujo bsico de esta funcin es primero para
inicializar las torres de simulacin Hanoi (clavijas, contenidos de PEG, y el recuento de los
discos). La solucin miembro se luego se repiten a la ejecucin de cada comando, y realizando
el movimiento disco que 's especificado. Si el movimiento es ilegal (sin disco en la clavija de la
fuente, o intentar mover un disco grande sobre un disco ms pequeo), entonces un contador de
illegal_ mueve se incrementa, pero el movimiento no se realiza para mantener una configuracin
de clavijas vlida.

Cuando se han reiterado todos los movimientos de la solucin, la aptitud se calcula y se volvi. En
este ejemplo, se calcula el gimnasio, dando una puntuacin de 25 por cada disco que 's en la clavija
correcta. Entonces restamos de esto el nmero de movimientos ilegales que se intentaron. El propsito de
esto es de evolucionar soluciones que son ptimas (sin movimientos ilegales intentaron).

Listado 7.5: Clculo de la aptitud de una solucin potencial.

doble compute_fitness (int cur_pop, miembro int, int traza)

{{

int i, de, a, disco = 3; int illegal_moves = 0; int


move; Int mover;

doble aptitud;

/ * Inicializar las clavijas * / for (i = 0; i <3; i ++) {


210 210 Artificial Intelligence Inteligencia artificial

clavijas [0] .peg [i] = disc--; clavijas [1] .peg [i] =


0; clavijas [2] .peg [i] = 0;

}}

clavijas [0] .count = 3; clavijas [1] .count = 0;


clavijas [2] .count = 0;

for (i = 0; i <soluciones [cur_pop] .op_count [miembro]; i ++) {/ * Obtener el


movimiento real de la matriz se mueve * /

move = mueve [soluciones [cur_pop] [miembro] .plan [i]]; / * Bsqueda de la


clavija fuente * /

de = (mover >> 4) y 0xf; si (clavijas [de] .count == 0)


{illegal_moves ++;

} Else {

/ * Bsqueda de la clavija de destino * / a = moverse y


0xf;

/ * Se asegura que 'movimiento legal sa * / if ((clavijas


[a] .count == 0) ||

(clavijas [de] .peg [clavijas [de] .count-1] <clavijas [a] .peg


[clavijas [a] .count-1])) {

/ * Realizar el movimiento, actualizar la configuracin de clavijas * / clavijas


[de] .count--;

clavijas [a] .peg [clavijas [a] .count] = clavijas [de] .peg [clavijas [de] .count]; clavijas [de] .peg
[clavijas [de] .count] = 0;

clavijas [a] .count ++; } else {illegal_moves +


+;
}}

}}

}}

/ * Calcular la aptitud * /

aptitud = (doble) (PEG [2] .Count * 25) - (dobles) illegal_moves; si (la aptitud <0,0)
de musculacin = 0,0;

la aptitud de retorno;

}}

Vamos que est ahora un vistazo a la aplicacin en accin. Listado 7.6 muestra la salida de
la aplicacin (utilizando una probabilidad de mutacin de 0,01 y una probabilidad de cruce de
0,07).
Computacin evolutiva 211 211

NO

T T

H MARIDO E mi

C do D re

La implementacin del algoritmo gentico se puede encontrar en el CD-ROM en

./software/ch7/ga.c.

Listado 7.6: Ejemplo de salida del algoritmo gentico de las torres de problema Hanoi.

$ ps ./ga.exe

1: 1 0 17,155 48 501 20 46,1 49

1001: 0 44,195 49 1,501: 0 44,345 48 1,578: 0 45,68


75
Traza: 02 01 21 02 10 12 02

La solucin ptima completa a las torres de problema Hanoi se muestra en la Figura 7.14. El menor
nmero de movimientos que resuelven este problema es de siete. La ejecucin visual de este plan se
muestra en la Figura 7.14 (la solucin ptima). En algunos casos, el algoritmo encontrar un plan ptimo.
Comnmente esto ocurre cuando existe una falta de diversidad en la poblacin. Este es un problema
esperado con el GA, y requerira la aplicacin de mltiples carreras, o un reinicio automtico cuando se
detecta esta situacin.

Figura 7.14: La solucin ptima a las torres de Hanoi por tres discos.
212 212 Artificial Intelligence Inteligencia artificial

La programacin gentica (GP)


Como ya comentamos en la primera parte de este captulo, la programacin gentica es la evolucin
de inspiracin biolgica de los programas informticos que resuelven una tarea predefinida. Por esta
razn, GP es nada ms que un algoritmo gentico aplicado a la evolucin del programa problema.
Sistemas GP primeros utilizan LISP S-expresiones (como se muestra en la Figura 7.4), pero ms
recientemente, gentica lineales de programacin de sistemas se han utilizado para evolucionar
secuencias de instrucciones para resolver tareas de programacin definidos por el usuario. [Banzhaf
1998]

La evolucin de los programas completos con GP es computacionalmente muy costoso, y los


resultados han sido limitados, pero GP tiene un lugar en la evolucin de fragmentos de programas. Por
ejemplo, la evolucin de las funciones individuales que tienen entradas y salidas muy especficas y cuyo
comportamiento puede ser fcilmente definido para la evaluacin de la aptitud por GP. Para evolucionar
una funcin, la salida deseada debe ser fcil de medir con el fin de entender el paisaje fsico de la funcin
con el fin de evolucionar gradualmente ella.

GP tambin se ha aplicado a la evolucin del hardware fsico utilizando


NOTE NOTA

lgica programable. Esta es un rea de investigacin interesante, pero


debido a
la incapacidad de comprender la complejidad del diseo resultante, se
reuni
con un xito limitado.

Programacin Algoritmo Gentico

El algoritmo de programacin gentica utiliza el mismo flujo fundamental como el algoritmo gentico
tradicional. La poblacin de las posibles soluciones se inicializa al azar y, a continuacin calcula su
aptitud (a travs de una simulacin de instrucciones ejecutadas con la pila). Seleccin de los
miembros que pueden propagarse a la siguiente generacin que entonces puede ocurrir a travs de
la seleccin proporcional a la aptitud. Con este mtodo, el ajuste ms altos del individuo, el

Figura 7.15: Ejemplo de conjunto de instrucciones de codificacin para el ejemplo de programacin gentica lineal.
Computacin evolutiva 213 21

FIGURA 7.16: Demostrar que el operador de cruce gentico en dos programas lineales simples.

mayor es la probabilidad de que se pueden seleccionar para la recombinacin en la generacin


siguiente.

El cromosoma, o programa que se desarroll, se compone de genes, o las instrucciones individuales. El


cromosoma tambin puede ser de diferentes longitudes, asignados en la creacin, y luego heredadas durante la
evolucin. Nos nombre contiene utilizar un conjunto simple instruccin definida para el problema particular,
como se muestra en la Figura 7.15.

Con este nmero mnimo de instrucciones, te apoyamos el clculo de un nmero de


diferentes tipos de funciones (tales como volumen y el rea ecuaciones para dos y objetos
tridimensionales). Cada una de las instrucciones que opera en la pila, ya sea empujando un
nmero a la pila, o la manipulacin de la pila de alguna manera.

Continuando con el algoritmo de GP, una vez que se seleccionan dos padres, las soluciones se
recombinan con alguna pequea probabilidad usando las operaciones de cruce y mutacin. Este
proceso se muestra a continuacin en la Figura 7.16.

A partir de la figura 7.16, vemos cmo dos programas no relacionados pueden combinar para
producir un programa para calcular el rea de un crculo (el nio 1).

NOTE NOTA
La arquitectura simulada aqu por GP se llama un cero-direccin

architecture. arquitectura. Lo que hace que esta arquitectura nica es que se trata de un stack-
centrado arquitectura - no hay registros disponibles. todos los argumentos
y el procesamiento se produce en la pila. Esto hace que el conjunto de instrucciones muy
simple, que es ideal para la evolucin de secuencias de instrucciones para el complejo
operations. Operaciones.
Vamos 's un vistazo a un ejemplo final para entender completamente el funcionamiento de estos
programas lineales usando una mquina de pila (vase la Figura 7.17). En este ejemplo,
tenemos un simple programa de cuatro instrucciones (que calcula el cubo de la
214 214 Artificial Intelligence Inteligencia artificial

valor en la parte superior de la pila). La parte superior de la figura representa el estado inicial antes
de que se ejecuta el programa. Las instrucciones se muestran a la derecha, con un puntero a la
ltima instruccin ejecutada (con la instruccin que aparece en negrita). La pila se muestra en la
configuracin inicial con el valor a ser al cubo (y un puntero al siguiente elemento que se puede
escribir).

La instruccin DUP lleva el elemento superior de la pila y lo duplica (de modo que los dos
primeros elementos de la pila ser el mismo). El MUL mltiplos de instruccin de los dos
primeros elementos de la pila, y luego empuja el resultado de nuevo en la pila (pero consumir los
dos valores iniciales). El resultado cuando se han ejecutado todas las instrucciones es el cubo
del valor inicial, almacenada en la parte superior de la pila.

Recuerde que la representacin es muy importante, y mucho se debe tener cuidado cuando se disea
para el problema en cuestin. Ya que estar ejecutando muchos de estos programas durante la fase de
evaluacin del algoritmo (gran poblacin, muchas iteraciones de verificacin), debe ser simple y eficiente.
Deje que 's ahora se clavan en la aplicacin para ver cmo funciona.

Figura 7.17: secuencia de instrucciones Ejemplo y la pila para el 'cubo programa'.


Computacin evolutiva 215 21

Aplicacin de la programacin gentica

NO

T T

H MARIDO E mi
C do D re

Vamos 's investigar una implementacin de programacin gentica lineal evolucionando la secuencia de
instrucciones para resolver una ecuacin de volumen especfico. Gran parte de la aplicacin es compartida
con nuestra fuente algoritmo gentico existente, por lo que te centramos aqu en las diferencias
fundamentales en la ejecucin (la representacin del cromosoma, y la funcin de determinacin de la
aptitud).

El cromosoma (solucin potencial programa) est representado por la programs_t estructura. Este
contiene el nmero de instrucciones en el programa (op_count) y el propio programa (programa). La aptitud
es la medida de la aptitud actual del programa (de instrucciones op_count). Las dos poblaciones de
soluciones del programa se representa como el conjunto de programas de dos dimensiones. Es 's de dos
dimensiones, porque tenemos que representar a la generacin actual y la siguiente (para todo el tamao de
la poblacin).

La plena aplicacin de programacin gentica se puede encontrar en el CD-ROM en


./software/ch7/gp.c.

Por ltimo, en el listado 7.7, es la lista de instrucciones legales. Figura 7.15 muestra los significados
de estas instrucciones, y la Figura 7.17 ilustra su uso en un programa de ejemplo.

Listado 7.7: Programa y la representacin de la poblacin para el ejemplo de programacin gentica lineal.

#define NUM_INSTRUCTIONS 20 typedef struct {

int Int op_count;

programa unsigned char [NUM_INSTRUCTIONS];

double doble aptitud;


Programs_t};
#define POPULATION_SIZE2000 2000

programas programs_t [2] [POPULATION_SIZE];

#define PUSH_PI 00
#define PUSH_2 11
#define PUSH_3 22
#define DUP 33
SWAP #define 44
#define MUL 55
#define DIV 66
#define ADD 77
MAX_OPERATIONS #define8 8
216 216 Artificial Intelligence Inteligencia artificial

PROPINA

Al definir un conjunto de instrucciones para la programacin gentica, disear el conjunto de


instrucciones solucionar el problema, si es posible. Especificar las instrucciones que pueden
contribuir a la solucin, en lugar de aumentar la complejidad con un gran nmero de instrucciones
que slo enturbian el espacio de soluciones.

Ahora vamos 's vistazo a las diferencias de nuestro ejemplo anterior algoritmo gentico. La primera diferencia
es el mtodo por el cual los cromosomas de los padres son seleccionados para la recombinacin. En el ejemplo
anterior, se utiliz la seleccin ruleta, pero en este ejemplo, que quiera se modifica SELECT_ matriz que presente
una forma de seleccin elitista (ver Listado 7.8). Empezamos en un miembro al azar y luego trabajar a travs de
toda la poblacin en busca de un miembro de cuya aptitud es ms que el promedio. Cuando uno se encuentra,
que lo vuelve simplemente (sin seleccin probabilstica, que no sea a partir de una ubicacin aleatoria).

Una ventaja de este enfoque es que podemos establecer las probabilidades de cruce y mutacin
alta (para cubrir ms del espacio de bsqueda) sin mucha preocupacin por la prdida de las buenas
soluciones existentes.

Listing 7.8: La eleccin de los padres utilizando un algoritmo de seleccin elitista.

int select_parent (int cur_pop)

{{

int i = RANDMAX (POPULATION_SIZE); int cuenta =


POPULATION_SIZE; doble select = 0,0;
/ * Paso a travs de cada una de la poblacin 's miembros * / while (count--)
{

seleccione programas = [cur_pop] [i] .fitness;

/ * Seleccionar este padre si su estado fsico es ms que la media * / if


(seleccione> = promedio) de retorno i;

/ * Comprobar el siguiente miembro de la poblacin * / if (++ i> =


POPULATION_SIZE) i = 0;

}}

/ * No se encontr nada mayor que el promedio, devolver un miembro aleatorio * / return (


RANDMAX (POPULATION_SIZE));

}}

Por ltimo, vamos 's vistazo a la funcin de aptitud. Esta funcin proporciona la simulacin para el
conjunto de instrucciones simples. Tambin dentro de esta funcin es el objeto de la pila de la que
operarn las instrucciones (vase la Figura 7.9). This Esta
Computacin evolutiva 217 21

funcin muy simplemente opera como una mquina virtual. Se realiza un bucle a travs de las
instrucciones, la ejecucin de ellos dan los datos disponibles en la pila. Si la instruccin se considera
ilegales (o desbordamientos subdesborda la pila), entonces la instruccin es simplemente ignorado, y
pasar a la siguiente instruccin.

Tenga en cuenta que se repite el bucle a travs de los programas en curso varias veces,
NOTE NOTA

para garantizar que resuelve la ecuacin para mltiples valores de la muestra.


Empezamos
empujando un valor aleatorio en la pila, y luego la ejecucin de cada
de instrucciones en serie. Cuando el programa se ha completado, comprobamos el
resultado
y calcular un valor de fitness. Esto se basa en la existencia de un valor de la izquierda
en la pila, y calcular correctamente la ecuacin muestra (ecuacin 7.1).

Listado 7.9: funcin de aptitud para el ejemplo de programacin gentica lineal.

doble compute_fitness (int cur_pop, miembro int)

{{

int i, la instruccin;

int iteracin = MAX_ITERATIONS; doble aptitud = 0,0;

doble esperada, d; pila stack_t; while


(iteration--) {

d = (doble) RANDMAX (100) + RANDOM (); esperado = (PI * (d * d *


d)) / 4,0; stack.index = 0;
PUSH (pila, d);

for (i = 0; i <programas [cur_pop] .op_count [miembro]; i ++) {/ * Obtener el


movimiento real de la matriz se mueve * /

= instruccin programas [cur_pop] [miembro] .program [i]; Interruptor (instruccin)


{
PUSH_PI caso:

(Si IS_FULL (pila)) { PUSH (pila, PI);


}}

break; descanso;

PUSH_2 caso:

if (! IS_FULL {(pila)) PUSH (pila, 2,0);


}}

break; descanso;
218 218 Artificial Intelligence Inteligencia artificial

PUSH_3 caso:

Si {(IS_FULL (pila)!) PUSH (pila, 3,0);


}}

break; descanso; DUP caso:

if (! is_empty {double temp = POP (pila) (pila)); PUSH (pila,


temp); PUSH (pila, temp);
}}

break; descanso; SWAP caso:


si (stack.index> = 2) {

doble temp1 = POP (pila); doble temp2 = POP (pila);

PUSH (pila, temp1); PUSH (pila, temp2);

}}

break; descanso; MUL caso:


si (stack.index> = 2) {

doble temp1 = POP (pila); doble temp2 = POP (pila);


PUSH (pila, (Temp 1 * Temp 2));
}}

break; descanso; DIV caso:


si (stack.index> = 2) {

doble temp1 = POP (pila); doble temp2 = POP (pila);


PUSH (pila, (temp1 / temp2));
}}

break; descanso; AADIR caso:


si (stack.index> = 2) {

doble temp1 = POP (pila); doble temp2 = POP (pila);


PUSH (pila, (temp1 + temp2));
}}

break; descanso;
Computacin evolutiva 219 21

defecto:

afirmar (0);

}}

}}

/ * Calcular la aptitud * /

aptitud + = (1,0 / (doble) stack.index); si (stack.stk [0] == espera)


{
aptitud + = 30,0;

si (== stack.index 1) de musculacin + = 10,0;

}}

}}

aptitud = aptitud / (dobles) MAX_ITERATIONS; la aptitud de retorno;


}}

La funcin de evaluacin que nosotros estamos tratando de resolver en el listado 7.9 es el


volumen de una esfera (ver la ecuacin 7.1). Hay 'Sa sola variable para la ecuacin, d, o el dimetro
de la esfera. Este valor se inserta en la pila y el resultado debe ser un nico valor de V (tal como se
define por la ecuacin 7.1).

(Eq 7.1)

Teniendo en cuenta la ecuacin, y algn conocimiento de la operacin de la mquina de pila, una


solucin simple hecho a mano al problema es:

PUSH 2, PUSH 3, MUL, SWAP, DUP, DUP, MUL, MUL, PI PUSH, MUL, DIV

que es una solucin razonable al problema, pero la evolucin doesn 't sabe nada acerca de
la ecuacin, y hace un mejor trabajo de encontrar soluciones (apretando una instruccin de
distancia). Aqu hay una serie de otras soluciones que se desarrollaron por el programador
gentica lineal:

DUP, DUP, PUSH 2, PUSH 3, MUL, PI PUSH, DIV, MUL, MUL, MUL

DUP, SWAP, DUP, PI PUSH, MUL, MUL, PUSH 3, PUSH 2, MUL, DIV,

SWAP, DIV

DUP, DUP, MUL, MUL, PUSH 2, DIV, PUSH 3, MUL, PI PUSH, DIV

DUP, DUP, PUSH 3, DUP, SWAP, ADD, DIV, DIV, PI PUSH, DIV, MUL
220 220 Artificial Intelligence Inteligencia artificial

Nota En el segundo ejemplo, que hay 'Sa instruccin superfluo (SWAP, que se muestra en cursiva).
Esta instruccin doesn 't ayuda en la solucin de la ecuacin, pero que doesn ' t mal tampoco. La
presencia de esta instruccin tiene alguna plausibilidad biolgica, que debe ser mencionado. Los bilogos
moleculares han descubierto lo que 's llamados 'basura ' ADN (o secuencias funcionales no de ADN) que
se llaman intrones. Los investigadores en los algoritmos genticos en realidad han descubierto que la
introduccin de intrones en realidad puede mejorar la capacidad de los algoritmos genticos para resolver
problemas complejos. [Levenick 1991]

La programacin gentica, en este caso, la programacin gentica lineal, es una metfora


til para la evolucin de secuencias de instrucciones para funciones simples a moderadamente
complejo. Es 's no slo es til para evolucionar funciones altamente optimizados para problemas
especficos, pero tambin puede ser til para estudiar maneras nuevas y novedosas para
resolver problemas.

Estrategias evolutivas (ES)


Estrategias evolutivas (ES) son uno de los ms antiguos de los algoritmos evolutivos, y siguen siendo bastante
tiles. Que es muy similar al algoritmo gentico, pero en lugar de centrarse en las cadenas binarias (como lo
hizo el algoritmo gentico original), las estrategias evolutivas se centran en la optimizacin de los parmetros de
valor real.

Se desarroll el algoritmo de estrategias evolutivas (en paralelo a los algoritmos genticos)


durante la dcada de 1960 en la Universidad Tcnica de Berln (TUB), Alemania por Rechenberg y
Schwefel. estrategias evolutivas fueron inicialmente diseadas para resolver problemas de dinmica
de fluidos a travs de simulaciones. Sus experimentos iniciales utilizaron una poblacin de uno
(principal + descendencia, elegir el mejor para propagar an ms), ya que la optimizacin se realiza
de forma manual, sin acceso a un ordenador para simular los experimentos. Incluso con este enfoque
simple (que ms tarde se convirti en una tcnica basada en la poblacin) sus resultados fueron
exitosos.

FIGURA 7.18: Schwefel mtodo 's para la optimizacin de la boquilla utilizando estrategias evolutivas.
Computacin evolutiva 221 22

A medida que la estrategia evolutiva continu siendo desarrollado, fue utilizado con xito por
Schwefel para optimizar la forma de un supersnico dos boquilla intermitente -Fase. [EvoNews
1999] Para optimizar la forma de boquillas, Schwefel utiliza una codificacin que define el
dimetro de la boquilla en varios puntos a travs del tubo (vase la Figura 7.18).

La estrategia evolutiva original utilizaba un solo padre, y produjo un solo nio. Esto se llama una estrategia
(1 + 1) (uno de los padres produce una sola cra). En trminos generales, estas estrategias se definen como ,
where , dnde los padres son seleccionados y descendientes resultado. En esta estrategia, la poblacin de
todos los miembros compiten por la supervivencia. Otro enfoque se conoce como , where , dnde los padres
son seleccionados y descendientes resultado. Only the Solo el

descendencia competir en la prxima generacin, los padres estn completamente


reemplazada en la prxima generacin.

Algoritmo evolutivo Estrategias


Uno de los aspectos nicos del algoritmo de estrategias evolutivas, y lo que hace el algoritmo til hoy en da, es
que 'es relativamente sencillo de implementar. Tradicionalmente, los algoritmos ISN t' tan fcil de entender como
el algoritmo gentico, pero el enfoque que ser explorado aqu proporcionar los conceptos bsicos, y un par de
simplificaciones de mutacin propuestos por el propio Schwefel.

Figura 7.19: El algoritmo fundamental estrategias evolutivas.


222 222 Artificial
El flujo
7.1

El proc
Cada u
miemb

el pro

NOTE NOTA

algoritm
for Tom
e

en s
repr

so

ES se

genera
descen
mutatio
lo que
u

ca

(Si un
gene
Deje q

fu

repar

un nm

a ajus

la solu
lla

estos n

nmero

nme
Un

li
Computacin evolutiva 223 22

Figura 7.20: Parcela de la funcin de ejemplo a ser maximizada por la estrategia evolutiva.

en el recocido simulado). Para apoyar esto, podemos utilizar la iteracin actual ( iter cur ) y la
iteracin max ( iter max ) para identificar un multiplicador, como se muestra en la Ecuacin 7.4).

(Eq 7.4)

Las estrategias evolutivas Implementacin


Deje que est ahora echar un vistazo a una implementacin de estrategias evolutivas para un problema de
optimizacin de la funcin. El objetivo de este problema es encontrar los parmetros que maximizan la
funcin (como resultado el mayor valor). Nos Utilizaremos la funcin mostrada en la ecuacin 7.5, que se
muestra grficamente en la Figura 7.20.

(Eq 7.5)

Vamos 's comenzar con una descripcin de las estructuras fundamentales que sern utilizados
por el algoritmo de estrategias evolutivas. Los dos elementos centrales de las estrategias evolutivas
es el tamao de la poblacin, y el nmero de iteraciones que se producir (que es equivalente al
nmero de generaciones que se crear). El typedef solution_t especifica los argumentos (x e y) y el
resultado (fitness). Nos nombre contiene crear una matriz de dos dimensiones de estos tipos
solution_t, con la primera dimensin se utiliza para definir la generacin (que opera de una manera
ping-pong), y la segunda dimensin utiliza para definir los miembros de la poblacin.

Aadir 7,10: estructuras fundamentales para el algoritmo evolutivo estrategias.

MAX_POPULATION
50 50
#define
MAX_ITERATIONS #define 20 20
224 224 Artificial Intelligence Inteligencia artificial

typedef struct {dobles x; doble y; doble


aptitud; Solution_t};

soluciones solution_t [2] [MAX_POPULATION];

El bucle principal de la estrategia evolutiva se muestra en el Listado 7.11. Inicializamos la poblacin


con un conjunto aleatorio de soluciones utilizando initialize_ poblacin, y luego calcular la poblacin de
deporte 's con compute_ population_fitness. A continuacin, iterar las iteraciones nmero mximo
previamente definido en la MAX_ITERATIONS. Una llamada a select_and_recombine crea la siguiente
generacin de soluciones, despus de lo cual, cambiamos la poblacin actual (segn la definicin de
cur_pop) a la siguiente. Despus de evaluar la aptitud de toda la poblacin (a travs de
compute_population_fitness), seguimos el proceso hasta que se alcanza el nmero mximo de
iteraciones.

Listado 7.11: El bucle principal de la estrategia evolutiva

int principal (void)

{{

int cur_pop = 0; int i = 0;

RANDINIT (); initialize_population (cur_pop);

compute_population_fitness (cur_pop); for (i = 0; i


<MAX_ITERATIONS; i ++) { select_and_recombine (cur_pop, i);
cur_pop = (== cur_pop 0)? 1: 0; compute_population_fitness
(cur_pop); printf ( % g% g% g \ n , min, avg, max);
}}

find_and_emit_best (cur_pop); return 0; Return 0;


}}

El ncleo de la estrategia evolutiva est en la seleccin y recombinacin de soluciones candidatas (vase la


select_and_recombine funcin, el Listado 7.12). Esta funcin primero determina qu ndice de poblacin es la
siguiente generacin (new_pop) y el multiplicador de corriente, que se utiliza para escalar los cambios
Computacin evolutiva 225 22

en la mutacin (ver ecuacin 7.4). luego caminamos a travs de toda la poblacin actual (tal
como fue aprobado en, pop).

Para cada miembro de la poblacin actual, comenzamos por la generacin de nuestros


nmeros aleatorios distribuidos normalmente (usando las ecuaciones 7.2 y 7.3). A continuacin,
el padre mutar para crear la descendencia en la prxima generacin (de una manera elitista). Si
la descendencia no es tan en forma como el padre, entonces la solucin madre se copia en la
siguiente generacin (sobrescribir la descendencia generada). Este proceso contina para cada
miembro de la generacin existente.

Aadir 7,12: La creacin de la prxima generacin de la poblacin.

vaco select_and_recombine (int pop, int iteracin)

{{

int i, new_pop; doble multiplicador;


doble U1, U2, Z1, Z2, la aptitud;

/ * Averiguar qu ndice de poblacin es la prxima generacin * / new_pop = (pop


== 0)? 1: 0;

/ * Ecuacin 7.4 * /

ltiplicadores = ((dobles) MAX_ITERATIONS - (doble) de iteracin) / (dobles) MAX_ITERATIONS;

for (i = 0; i <MAX_POPULATION; i ++) {u1 = RANDOM (); u2 =


RANDOM ();
/ * Ecuacin 7.2 * /

z1 = (sqrt (log -2,0 * (U1)) * sin ((2,0 * pi * u2))) * multiplicador; / * * Ecuacin 7.3 /

z2 = (sqrt (log -2,0 * (U1)) * cos ((2,0 * pi * u2))) * multiplicador; / * Crear el nio como el
padre mutado * / soluciones [new_pop] [i] .x = consolidados (soluciones [pop] [i] .x +
z1); Soluciones [new_pop] [i] .y = consolidados (soluciones [pop] [i] .y + z2); aptitud =
compute_fitness (y soluciones [new_pop] [i]);

/ * Si el nio tiene menos aptos que los padres, mover el padre a hijo * / if (<aptitud
soluciones [pop] [i] .fitness) {soluciones [new_pop] [i] .x = soluciones [pop] [i] .x;
Soluciones [new_pop] [i] .y = soluciones [pop] [i] .y;

}}

}}

regreso;

}}
226 226 Artificial Intelligence Inteligencia artificial

Nota en el Listado 7.12, la funcin de lmite se utiliza para unidos los valores a partir de -20 a
20 para ambos x y y .

Por ltimo, se presenta la funcin para calcular la idoneidad de una solucin candidato determinado. El uso
de la ecuacin 7.5, se evala la funcin, almacenar, y devuelto.

Listado 7.13: Clculo de la aptitud de una solucin candidato.

NO

T T
H MARIDO E mi

C do D re

doble compute_fitness (solution_t * sol_p)

{{

dobles x, y; doble aptitud;

/ * Almacenar en cach los argumentos para simplificar la ecuacin * / x = sol_p->


x;

y = sol_p-> y;

/ * * Ecuacin 7.5 / aptitud = sol_p-> aptitud =

(Sin (x) / x) * (sen (y) / y) * (doble) 10,0; la aptitud de retorno;

}}

La implementacin de estrategias algoritmo evolutivo se puede encontrar en el CD-ROM en


./software/ch7/es.c.

Vamos que est ahora a ver el algoritmo en accin. Tenga en cuenta que el programa emitir los valores
de fitness (mnimo, promedio y mximo), para cada generacin. Como puede verse en el listado 7.14, seis
generaciones son todo lo que se requiere para llegar a dentro del 90% del mximo. El algoritmo se sintoniza
entonces durante 14 generaciones (para conseguir dentro de un 99,9% del mximo). Tenga en cuenta que
en los resultados, se toman medidas en el mximo de fitness, donde la aptitud mxima aparece en estado
latente, y luego un miembro de ajuste ms altos se encontraron. Esto se ha observado en una serie de
algoritmos evolutivos, y atado biolgicamente a lo 's llama puntuado equilibrio .

En la teora del equilibrio puntuado (desde la biologa evolutiva), se ha encontrado que especies que se reproducen
a menudo muestran ningn cambio evolutivo a travs de su vida. Sin embargo, cuando se produce el cambio evolutivo,
sus efectos se ven claramente en la capacidad de la nueva especie para sobrevivir y adaptarse a su entorno.

Listado 7.14: simple ejecucin del algoritmo evolutivo estrategias.

$ ./es

-1,86534 0,221798 3,15964


Computacin evolutiva 227 22

-1,57037 0,360016 3,15964 -0,194702 0,805424 8,64


-0,0959031 0,961668 8,64 -0,0959031 1,15622 8,7512
1,24244 9,06489 -0,0959031 -0,00876197 1,35238
9,69174 -0,00179016 1,3965 9,96464 1,50873 9,96464
-0,00179016 0,049577 1,54039 9,96464 0,049577
1,59179 9,96464 1,62029 9,96464 0,0596969 0,0596969
1,65329 9,98932 1,70359 9,98932 0,0596969 0,0596969
1,71321 9,98932 0,0596969 0,0596969 1,74583 9,98932
1,7309 9,98932 1,75184 9,98932 0,0596969 0,0596969
0,0596969 1,75429 9,98932 1,75759 9,99414

Lo mejor es [0,0561596, -0,0190792] = 9,99414

$ ps

Evolucin diferencial (DE)


Evolucin Diferencial (DE) es un mtodo evolutivo basado en la poblacin estocstico ms
reciente (introducido por Storn y Price en 1996). De ello se deduce el flujo algoritmo evolutivo
estndar (mutacin, recombinacin, seleccin), pero tiene algunas diferencias significativas en
cmo se realiza la mutacin y recombinacin.

La idea fundamental detrs de DE es el uso de las diferencias vectoriales (la eleccin de dos
vectores seleccionados al azar, y luego toman su diferencia como medio para perturbar el vector
y la sonda del espacio de bsqueda). Se aade entonces el vector de diferencia a un tercer
vector seleccionado al azar, haciendo que el enfoque de auto-organizacin.

DE tambin incluye dos parmetros ajustables, F (el factor de ponderacin) y CR (la


probabilidad de cruce). El factor de ponderacin se aplica al vector de diferencia. La probabilidad
de cruce especifica la probabilidad de que ocurra multi- punto de cruce para el vector inicial y el
vector objetivo resultante.
228 228 Artificial Intelligence Inteligencia artificial

Figura 7.21: flujo de alto nivel del algoritmo de evolucin diferencial con diferencias observadas para DE.

Diferencial Evolucin Algoritmo

El algoritmo de evolucin diferencial es simple, pero tiene algunas complejidades adicionales en


el nmero de actividades que se realicen para la recombinacin. Vamos 's empezar con un
panorama general de la ED algoritmo, y luego explorar los detalles de mutacin y
recombinacin.

El flujo de alto nivel para DE se muestra en la Figura 7.21. Este es el flujo algoritmo evolutivo
fundamental, pero los detalles son diferentes para la mutacin, la recombinacin y reemplazo.

Hay una serie de variaciones para DE, pero te centran aqu en el enfoque nominal. Despus de la
inicializacin, cada uno de los miembros de la poblacin sufre mutacin y recombinacin. Una vez
que se produce la recombinacin, el nuevo miembro se compara con el antiguo miembro, y lo que es
mejor aptitud se mueve a la prxima generacin (poltica de sustitucin).

Con nuestro miembro de la generacin actual (x i, G ) seleccionamos tres miembros de manera


uniforme al azar de la generacin actual que son nicos

(x i, G ! = x r1, G ! = x r2, G ! = x r3, G ). Usando estos vectores de miembros, creamos lo que se conoce como un
vector mutante, o vector donante, (v i, G + 1 ) en la prxima generacin utilizando la diferencia ponderada de dos
de los vectores (r2 y r3) suma con la

tercero vector (r1). Esto se muestra en la ecuacin 7.6.


( V i, G + 1 = x r 1 , G + F ( x r 2, G - x r 3, G (Eq
7.6)
)
Computacin evolutiva 229 22

FIGURA 7.22: proceso de mutacin en la evolucin del diferencial.

Figura 7.23: El cruce y la sustitucin proceso de DE.

Este nuevo vector mutante ha completado la etapa de mutacin y ahora est listo para la recombinacin.
Este proceso se muestra grficamente en la Figura 7.22.

En esta etapa, te realizamos un cruce de mltiples puntos del vector mutante

(v i, G + 1 ) con nuestro vector original a partir de la generacin actual (x i, G ). Esto constituye el uso de
elementos de nuestro vector mutante con el miembro original

para la evaluacin de la aptitud. Este proceso se muestra en la ecuacin 7.7.

f ( rand CR ) de ( v j, i , G + 1 1 ) ) (Eq
u Usted == 7.7
j, i, G + 1
{ F ( rand> CR ) than que ( V j, i , G ) )
)

El proceso de cruce se realiza en cada elemento del vector, con el candidato vector resultante que
suministra al proceso de sustitucin (ver Figura 7.23). El miembro y el mutante actual se permiten al azar
para contribuir al nuevo vector. Al final, el que sea vector tiene la mayor
230 230 Artificial Intelligence Inteligencia artificial

Se permite la aptitud (nuevo vector o vector de la generacin actual) en la prxima generacin.

Deje que 's ahora exploran una implementacin de ejemplo de la DE para la maximizacin
de la funcin. Para propsitos comparativos, nombre contiene usar la funcin mostrada en la
Figura 7.20.

Evolucin diferencial Implementacin


Vamos 's comenzar con una discusin de cmo se representarn los objetos DE en un programa (ver
Listado 7.15). El tipo de vector fundamental (vec_t) ser utilizado para representar los vectores de valores
reales para ser optimizado. Este est integrado en nuestro objeto miembro (member_t), que tambin
incluye la medida de la aptitud.

Tenga en cuenta que la poblacin es de dos dimensiones de tamao. La primera dimensin


NOTE NOTA

representa la generacin (dos se utilizan debido a que nombre contiene implementar un


ping-
generacin pong, donde en un momento dado, el ndice representa la corriente
generacin, y el ndice opuesto representa la prxima generacin).
Tambin mantenemos una mejor member_t que mantiene el mejor miembro encontrado
hasta ahora (para propsitos de limpieza).
Tambin definimos los parmetros ajustables aqu, F (el factor de mutacin)
y CR (la probabilidad de cruce). Estos parmetros se pueden ajustar para el
en particular problema en cuestin, pero son razonables en sus niveles actuales de este
optimization problem. Problema de optimizacin.

Aadir 7,15: tipos y simblica DE.

max_elements #define 2 2

typedef doble vec_t [max_elements];

MAX_POPULATION
10 10
#define
100
MAX_ITERATIONS #define
100

typedef struct {vec_t args; doble aptitud;


Member_t};

poblacin member_t [2] [MAX_POPULATION]; member_t mejores =


{{0.0,0.0}, 0.0};
#define F ((doble) 0.5)

#define CR ((doble) 0.8)

El bucle principal de DE se muestra en el Listado 7.16. Esta funcin implementa el bucle externo para
el algoritmo de DE. Comienza la inicializacin de la corriente
Computacin evolutiva 231 23

poblacin (_pop act), y despus de inicializar el generador de nmeros aleatorios. La poblacin es


luego inicializado con una llamada a init_population, que no slo inicializa los vectores para cada
miembro, pero tambin calcula sus valores iniciales de fitness (con una llamada a compute_fitness).

Con la inicializacin completa, entramos en el algoritmo de DE. Nos nombre contiene proporcionar
ningn criterio de salida, y en lugar de simplemente ejecutar el algoritmo para algn nmero mximo de
iteraciones (MAX_ITERATIONS). Cada iteracin consiste en realizar el algoritmo de ncleo DE
(select_and_ recombinan) y luego emitir la mejor miembro encontrado hasta ahora (como se almacena en
la mejor estructura).

Aadir 7,16: El documento DE principal de bucle.

int main ()

{{

int i;

int cur_pop = 0;

RANDINIT (); init_population (cur_pop);

for (i = 0; i <MAX_ITERATIONS; i ++) {cur_pop = select_and_recombine


(cur_pop); printf ( mejor aptitud =% g \ n , best.fitness);
}}

return 0; Return 0;

}}

El ncleo del algoritmo de DE se implementa en la funcin select_and_ recombinan (ver el Listado


7,17). Comenzamos por la determinacin del ndice de la prxima generacin (next_pop) y despus de
inicializar la mejor aptitud estructura a cero (con el fin de encontrar el mejor miembro actual de la
poblacin).

El siguiente paso consiste en recorrer cada uno de los miembros de la poblacin para crear una nueva
solucin candidato. Nos cach el ndice actual al miembro de prxima generacin (mutante) para
aumentar la legibilidad del cdigo. A continuacin, creamos tres nmeros aleatorios (R1, R2, y R3), que
son todos nicos, y difieren entre s y el ndice de miembro actual (i).

El vector mutante se crea siguiente utilizando la ecuacin 7.6. El uso de los tres miembros de
la poblacin actual (tal como se define por nuestros tres nmeros aleatorios), se crea el vector
mutante. Con la ecuacin 7.7, el proceso de cruce se realiza usando el miembro actual de la
generacin actual, y el vector mutante. Cuando se haya completado, la aptitud se calcula con
una llamada a compute_fitness.
232 232 Artificial Intelligence Inteligencia artificial

En este punto, tenemos un vector mutante con su aptitud calculado. Comparamos la aptitud del
mutante con la aptitud del miembro actual, y lo que son mayores se mueve en la siguiente
generacin (el proceso de sustitucin). Seguimos esto con un poco de limpieza para no perder de
vista el mejor vector encontrado hasta ahora (emitida en la funcin principal).

Listado 7.17: El proceso de DE de mutacin, la recombinacin y reemplazo.

int select_and_recombine (int emergente)

{{

int next_pop = (== pop 0)? 1: 0; int i, j;

member_t * mutante; int r1, r2, r3; best.fitness =


0,0;
for (i = 0; i <MAX_POPULATION; i ++) {

/ * Cache el vector objetivo en la prxima generacin * / mutante = &


poblacin [next_pop] [i];

/ * Calcula tres nmeros aleatorios (R1, R2, R3), que son todos * nico.

* / Do {

r1 = RANDMAX (MAX_POPULATION);

} While (r1 == i); do {


r2 = RANDMAX (MAX_POPULATION);

r3 = RANDMAX (MAX_POPULATION);

} While ((r3 == r2) || (r3 == r1) || (r2 == r1) ||

(R3 == i) || (R2 == i));

/ * Dado el miembro candidato, y nuestros miembros al azar, forman un * 'miembro


mutante ' (Ecuacin 7.6).

*/

para (j = 0; j <max_elements; j ++) {mutante-> args [j] = poblacin [POP]


[R1] .args [j] +

(F * (poblacin [pop] [R2] .args [j] - poblacin [POP] [R3] .args


[j]));

}}

/ * Realizar cruzado de 'mutante vector' con la actual generacin * miembro (Ecuacin


7.7)

*/
Computacin evolutiva 233 23

para (j = 0; j <max_elements; j ++) {

si (aleatorio () <CR) mutante-> args [j] = poblacin [pop] [i] .args [j];

}}

mutante-> aptitud = compute_fitness (mutante);

/ * Si el miembro original tiene una aptitud mayor que el mutante, la copia * el miembro original
sobre el mutante en la prxima generacin.
*/

si (poblacin [pop] [i] .fitness> mutante-> fitness) {for (j = 0; j


<max_elements; j ++) {mutante-> args [j] = poblacin [pop] [i] .args [j ];

}}

mutante-> aptitud = poblacin [pop] [i] .fitness;

}}

/ * Servicio de limpieza - guardar el mejor miembro * / if (mutante->


Fitness> best.fitness) {

para (j = 0; j <max_elements; j ++) {best.args [j] = mutante-> args


[j];
}}

best.fitness = mutante-> aptitud;

}}

}}

volver next_pop;

}}

Por ltimo, el compute_fitness funcin se utiliza para calcular la aptitud

de un miembro de la poblacin. El puntero al elemento actual se pasa en (de tipo member_t ), y las
coordenadas se extraen para mejorar
legibilidad. Atamos las coordenadas a las limitaciones de la funcin (el rea que tenemos la
intencin de maximizar) y luego usar la ecuacin 7.5 para calcular y devolver el gimnasio.

Listado 7.18: Clculo de la aptitud de un miembro de DE.

doble compute_fitness (member_t * member_p)

{{

dobles x, y; doble aptitud;

/ * Cach las coordenadas a simplemente la funcin. * / X = member_p->


args [0];
y = member_p-> args [1];
234 234 Artificial Intelligence Inteligencia artificial

NO

T T

H MARIDO E mi
C do D re

/ * Bound la ubicacin de la partcula * / if ((x <-10,0) || (x> 10,0) ||

(Y <-10,0) || (Y> 10,0)) de musculacin = 0,0; else {

/ * Ecuacin 7.5 * / aptitud =

(Sin (x) / x) * (sen (y) / y) * (doble) 10,0;

}}

la aptitud de retorno;

}}

La implementacin del algoritmo evolucin diferencial se puede encontrar en el CD-ROM en


./software/ch7/de.c.

El algoritmo hace un muy buen trabajo de converger rpidamente en una solucin. Listing
7.19 muestra un ejemplo de ejecucin de la aplicacin DE. En muy poco tiempo, el algoritmo se
mueve de soluciones pobres a una solucin casi ptima (10,0).

Listado 7.19: muestra de la ejecucin de la aplicacin DE.

$ ./de.exe

Mejor aptitud = 0.662495 mejor aptitud = 0.662495


mejor aptitud = 0.963951 mejor aptitud = 3,66963
mejor aptitud = 4,8184 mejor aptitud = 4,8184 mejor
aptitud = 5,54331 mejor aptitud = 5,54331 mejor
aptitud = 7,48501 mejor aptitud = 7,48501 mejor
aptitud = 9,78371 mejor aptitud = 9,78371 mejor
aptitud = 9,97505 mejor aptitud = 9,97505 mejor
aptitud = 9,97505 mejor aptitud = 9,99429 mejor
aptitud = 9,99429 mejor aptitud = 9,99429 mejor
aptitud = 9,99429
Computacin evolutiva 235 23

Mejor aptitud = 9,99568 mejor aptitud = 9,99646


mejor aptitud = 9,99646 mejor aptitud = 9,9981
mejor aptitud = 9,9981 mejor aptitud = 9,9981 mejor
aptitud = 9,99837 mejor aptitud = 9,99974 mejor
aptitud = 9,99974 mejor aptitud = 9,99984 mejor
aptitud = 9,99984 mejor aptitud = 9,99998 mejor
aptitud = 9,99998 mejor aptitud = 9,99998 mejor
aptitud = 9,99998

$ ps

La carrera anterior se muestra trazada en la Figura 7.24. Como se muestra, el algoritmo es


rpidamente capaz de converger y luego ajustar el resultado a la solucin ptima cerca.

Mientras que hay 's no una prueba de convergencia para el algoritmo de DE, se ha demostrado ser
eficaz en una amplia gama de problemas de optimizacin. Los autores originales tambin encontraron en
un estudio que el algoritmo DE fue ms eficiente que tanto el algoritmo gentico y el recocido simulado.

Figura 7.24: La mejor parcela de la aptitud para la implementacin evolucin diferencial (tamao de la poblacin 100).
236 236 Artificial Intelligence Inteligencia artificial

Figura 7.25: anatoma de una partcula en una tormenta ms grande.

Enjambre de partculas de optimizacin (PSO)


El ltimo algoritmo basado en la poblacin que Exploraremos en este captulo se llama optimizacin
por enjambre de partculas (o PSO). PSO simula un conjunto de partculas que pululan uno con el
otro dentro de un espacio N-dimensional (donde N es el tamao del vector solucin). Un conjunto
muy simple de ecuaciones se utiliza para implementar un comportamiento flocado, que da a las
partculas una cierta cantidad de libertad para buscar el espacio de bsqueda de N dimensiones,
pero tambin algunas limitaciones para exhibir acuden comportamiento mediante el seguimiento de
la partcula que tiene el actual mejor rendimiento.

Una partcula dentro del enjambre existe como un objeto que contiene un vector (con la
misma dimensionalidad como el espacio de la solucin), una velocidad (para cada elemento del
vector dimensionalidad, lo que resulta en el vector de velocidad), la aptitud (para el vector de
corriente) y un vector que representa la mejor posicin encontrado hasta ahora (vase la figura
7.25).

Las partculas en el enjambre estn influenciados por dos factores nicos. La primera es la
mejor posicin (vector) de la propia partcula, y la segunda es la posicin global mejor
encontrado por cualquier partcula en el enjambre. Por lo tanto, una partcula est influenciada
por su mejor posicin, y tambin la mejor posicin del enjambre. La cantidad de influencia de
cada uno es controlable, como veremos en la discusin del propio algoritmo.

Vamos que est ahora cavar en el algoritmo PSO, para entender cmo pululan partculas, y
las ecuaciones de influencia enjambre.

Enjambre de partculas Algoritmo

El algoritmo de optimizacin de enjambre de partculas es muy sencillo de entender, pero


tambin es muy eficaz para una variedad de problemas de optimizacin. En esta seccin se
explorar el algoritmo PSO con el suficiente detalle para implementar un maximizador funcin
general.
Computacin evolutiva 237 23

El uso de enjambres de partculas como una tcnica de optimizacin es reciente en


comparacin con los otros algoritmos evolutivos discutidos hasta ahora. El comportamiento
social de los pjaros que acuden y la escolarizacin de pescado inspirado Eberhart y Kennedy
para crear lo que ellos denominan como la inteligencia de enjambre .

El flujo bsico de la PSO es como sigue. En primer lugar, una poblacin de vectores aleatorios y
velocidades se crean como el enjambre de partculas. Inicialmente, estas partculas se colocan al
azar, y cada uno se mueven en direcciones al azar, pero, como se realiza el algoritmo, enjambre
comportamiento surge como las partculas de sondear la superficie multi-dimensional.

Con nuestro conjunto aleatorio de partculas, el estado fsico de cada uno se evala y se almacena
como el estado fsico actual. Tambin hacemos un seguimiento de una mejor partcula global que tiene la
mejor condicin fsica general. Esta partcula, en cierta medida, es el centro del enjambre. Tenga en
cuenta que tambin un seguimiento de la mejor vector personal de la partcula, que se almacena como la
mejor posicin (ver Figura 7.20). En este punto, los criterios de terminacin se podran aplicar. Si no se
encuentra una solucin satisfactoria, o un nmero mximo de iteraciones se ha realizado, el algoritmo
podra salir, que emite la corriente mejor solucin global encontrado hasta ahora.

Si el algoritmo no ha alcanzado an sus criterios de terminacin, la velocidad de las partculas se


actualiza, a continuacin, cada partcula posicin 's se actualiza (dado su posicin actual y la velocidad
actual). El proceso contina entonces mediante la evaluacin de cada partcula de deporte 's, y la
comprobacin de los criterios de terminacin.

Clculo de la siguiente posicin de una partcula de N-dimensional se muestra en la ecuacin 7.8. Cada
elemento del vector ( X n ) de las partculas ( P ) se acumula el elemento de la velocidad ( V n ) escalado por el
intervalo de tiempo ( t ) durante el cual la partcula es para ser movido.

(Eq 7.8)

Recordamos que tambin actualizamos la velocidad despus de la partcula se mueve. Como se


muestra en la ecuacin 7.9, hay dos influencias independientes sobre el cambio en la velocidad, la
corriente mejor partcula mundial (definida como G Xn ), y el personal mejor para esta partcula (PB Xn ).
Para cada trmino, existe lo que 's llama una constante de aceleracin (c 1 , c 2 ), que se utiliza para
determinar el grado de influencia de la mejor solucin global o personal tiene sobre la ecuacin de
velocidad.

Para aadir un poco de variabilidad a la ecuacin, tambin incluimos dos nmeros uniformes
aleatorios (R 1 , R 2 ), que se aplican a los trminos. Cmo estos nmeros aleatorios uniformes
se generan proporciona un cierto nfasis a un trmino sobre otro (global vs mejor marca
personal). El objetivo es sondear el espacio de soluciones con una mayor variabilidad.

Pv n = Pv n + ( C 1 * R 1 * ( Gx n - Px n )) + ( c 2 * R 2 * ( PBV n - Px n )) (ecuacin 7.9)


238 238 Artificial Intelligence Inteligencia artificial

El uso de estas ecuaciones muy simples (EQ 7.8 para el movimiento de partculas y la
ecuacin 7.9 para el ajuste de la velocidad), el algoritmo de PSO es capaz de minimizar o
maximizar funciones con una eficiencia similar a los algoritmos genticos o estrategias
evolutivas.

Enjambre de partculas Implementacin

Como se muestra en la discusin algoritmo, la puesta en prctica de la optimizacin de enjambre de


partculas es simple. Vamos 's comenzar nuestra discusin con una descripcin de la representacin
de las partculas y el enjambre en el software.

En esta implementacin, hemos nombre contiene codificar una solucin como un objeto
bidimensional, con la aptitud definido como la funcin de los argumentos de vectores (dos en este
ejemplo, que representa la x y los argumentos y). Para la funcin de aptitud, que te utilizamos la
funcin mostrada en la Figura 7.20 (como se demuestra por el algoritmo de estrategias evolutivas).

Aadir 7,20 proporciona los tipos fundamentales y simblica para la aplicacin de optimizacin de
enjambre de partculas. El tipo ms fundamental es la vec_t, que define nuestro vector (en este
ejemplo, se especifica un coordenadas x e y). Este tipo de vector se utiliza para representar la
posicin de coordenadas (coord), la velocidad de la corriente, y las mejores coordenadas vectoriales
personales (best_coord). particle_t Estructura recoge estos juntos como un solo objeto para
representar toda la partcula. El enjambre de partculas (de nmero MAX_ partculas) est
representado por las partculas de matriz. El tipo particle_t tambin se utiliza para representar la
corriente mundial mejor (gbest).

Aadir 7,20: tipos enjambre de partculas y la simblica.


typedef struct {
doble X;
doble y;
Vec_t};
typedef struct {
coord vec_t;
velocidad vec_t;
doble aptitud;
vec_t best_coord;
doble fitness_best;
Particle_t};
#define MAX_PARTICLES 10 10
MAX_ITERATIONS
30 30
#define
Computacin evolutiva 239 23

partculas particle_t [MAX_PARTICLES]; particle_t gbest;

El flujo del algoritmo de enjambre de partculas se implementa en la funcin main (ver el Listado
7,21). Esto inicializa y semillas el generador de nmeros aleatorios (RANDINIT) y los inicializa la
poblacin de partculas con ubicaciones aleatorias y velocidades. El bucle luego itera para el nmero
mximo de iteraciones (MAX_ITERATIONS). Para cada iteracin, cada partcula en el enjambre se
actualiza a travs de una llamada a UPDATE_ partcula. Despus de todas las partculas en el
enjambre se actualizan, la corriente de partculas mejor mundial (gbest) se emite de manera que el
enjambre progreso 's puede ser rastreado.

Listado 7.21: El bucle principal de optimizacin de enjambre de partculas.

int principal ()

{{

int i, j;

RANDINIT (); init_population ();

for (i = 0; i <MAX_ITERATIONS; i ++) {for (j = 0; j


<MAX_PARTICLES; j ++) { update_particle (y partculas [j]);
}}

printf ( Best actual:% g / g% =% g \ n , gbest.coord.x, gbest.coord.y, gbest.fitness);


}}

return 0; Return 0;

}}

El ncleo de la partcula algoritmo de optimizacin enjambre se proporciona en la funcin


update_particle (Ver listado 7,22). La funcin proporciona una serie de capacidades, pero comienza
con la actualizacin de la partcula posicin 's usando la ecuacin 7.6. Con la partcula cambio 's en
el lugar, se calcula el nuevo gimnasio de la partcula con una llamada a compute_fitness. A
continuacin, utilizando la ecuacin 7.7, el vector de velocidad de la partcula se actualiza (dada la
partcula posicin personal mejor 's y la posicin de la mejor posicin global).

Por ltimo, la funcin realiza algn servicio de limpieza para mantener las mejores posiciones. En
primer lugar, comprobamos si la aptitud para la partcula es mejor que el mejor estado fsico personal. Si
es as, almacenamos esta dentro de la partcula. Si la partcula 's mejor marca personal ha sido
actualizado, comprobamos para ver si es mejor que la mejor posicin global. Si es as, almacenamos esta
en la partcula gbest.
240 240 Artificial Intelligence Inteligencia artificial

Aadir 7,22: Actualizacin de posiciones de las partculas y velocidades.

vaco update_particle (particle_t * particle_p)

{{

/ * Actualizar la partcula posicin 's (Ecuacin 7.8) * / particle_p-> coord.x + =


(particle_p-> velocity.x * dt); particle_p-> coord.y + = (particle_p-> velocity.y dt
*); / * Evaluar la partcula 's de la aptitud * /

particle_p-> aptitud = compute_fitness (y particle_p-> coord); / * Actualizar el


vector de velocidad (Ecuacin 7.9) * / particle_p-> velocity.x + =

((C1 * ALEATORIO () * (gbest.coord.x - particle_p-> coord.x)) +

(c2 * ALEATORIO () * (particle_p-> best_coord.x - particle_p-> coord.x))

); );

particle_p-> velocity.y + =

((C1 * ALEATORIO () * (gbest.coord.y - particle_p-> coord.y)) +

(c2 * ALEATORIO () * (particle_p-> best_coord.y - particle_p-> coord.y))

); );

/ * Si la condicin fsica es mejor que el mejor personal, a continuacin, guardarlo. * /


If (particle_p-> Fitness> particle_p-> fitness_best) {particle_p-> fitness_best =
particle_p-> aptitud; particle_p-> best_coord.x = particle_p-> coord.x; particle_p->
best_coord.y = particle_p-> coord.y;

/ * Si la condicin fsica es mejor que el mejor mundial, a continuacin, guardarlo.


* / If (particle_p-> fitness_best> gbest.fitness) {

gbest.fitness = particle_p-> fitness_best; gbest.coord.x = particle_p->


coord.x; gbest.coord.y = particle_p-> coord.y;
}}

}}

regreso;

}}

La funcin de aptitud (aptitud compute_) acepta una entrada de vector, y extrae los elementos
del vector para el uso en la ecuacin 7.5 (vase la discusin anterior sobre el algoritmo de estrategias
evolutivas). Tenga en cuenta que los lmites de la funcin se fijan a -10 a 10 para ambos ejes. En el caso
de la posicin se encuentra fuera de esta caja de texto, se devuelve un gimnasio cero (ver Listado 7,23).
Computacin evolutiva 241 24

Listado 7.23: Clculo de la aptitud de una partcula.

NO

T T
H MARIDO E mi

C do D re

doble compute_fitness (vec_t * vec_p)

{{

dobles x, y; doble aptitud;

/ * Cach las coordenadas a simplemente la funcin. * / X = vec_p-> x;

y = vec_p-> y;

/ * Bound la ubicacin de la partcula * / if ((x <-10,0) || (x> 10,0) ||

(Y <-10,0) || (Y> 10,0)) de musculacin = 0,0; else {


/ * Ecuacin 7.5 * / aptitud =

(Sin (x) / x) * (sen (y) / y) * (doble) 10,0;

}}

la aptitud de retorno;

}}

La implementacin del algoritmo de optimizacin de enjambre de partculas se puede encontrar en


el CD-ROM en ./software/ch7/ps.c.

Vamos que est ahora examinar la aplicacin en accin. La aplicacin emite la corriente de
partculas ms global a medida que itera (ver Listado 7,24).

Listado 7.24: Salida de ejemplo de la aplicacin enjambre de partculas.

$ ./ps

Actual Mejor: -9,13847 -1,40457 0,216992 Mejor actual: 0,9244 1,22842


6,62169 Mejor actual: 0,0934527 1,17927 7,82673 Mejor actual: 0.10666
1.17463 7.83906 Mejor actual: 0,119866 1,16999 7,85087 Mejor actual:
0,133073 1,16535 7,86217 Mejor actual: 0.14628 1.16071 7.87295 Mejor
actual: 0,159487 1,15607 7,8832 Mejor actual: 0.172693 1.15143
7.89293

... ...

Actual Mejor: -0.0890025 0,0432563 9,98369 Mejor actual: -0.0890025


0,0432563 9,98369
242 242 Artificial Intelligence Inteligencia artificial

r condicin fsica de partculas global que muestra la convergencia rpida y luego la sintonizacin solucin con velocidades de
desaceleracin.

FIGURA 7.27: Funcin objetivo con las mejores partculas globales superpuestos.

Actual Mejor: 0,016041 9,99766 -0.0338574 Mejor actual: 0,016041 9,99766


-0.0338574 Mejor actual: 0,0043322 9,99994 -0.00436827
$ ps

Como se muestra en la figura 7.26, la mejor aptitud mundial converge muy rpidamente a
una solucin (en alrededor de 70 iteraciones). El enjambre de partculas es capaz de encontrar
una buena solucin con bastante rapidez, pero luego tiende a orbitar esta posicin debido a su
alta velocidad. Pero a medida que las ecuaciones de velocidad ralentizan el enjambre de
partculas, las partculas son capaces de afinar con el fin de encontrar una solucin mejor.
Computacin evolutiva 243 24

Podemos visualizar mejor este proceso observando la superficie de funcin objetivo con las mejores
partculas globales superpuestos (ver Figura 7.27). En esta figura, vemos el estado fsico de la superficie
de funcin (el claro es el color, mejor es la aptitud). La partcula muestra una convergencia muy rpida a
una solucin razonable, y luego se afina en este pico a encontrar la mejor solucin. Tenga en cuenta que
lo que 's se muestra aqu es el mejor de partculas mundial (que se encuentra por todo el enjambre de
partculas), y no el enjambre de partculas en s mismas.

El algoritmo puede ser sintonizado por los dos parmetros de aceleracin (C 1 y C 2 ). Estos
parmetros determinan el grado de influencia del mejor vector personal y el mejor vector mundial
tienen sobre la partcula trayectoria 's. Recordemos que la ecuacin de velocidad se utiliza para
cambiar la velocidad hacia la partcula mejor posicin 's, o la mejor posicin global. Esta aceleracin
tambin incluye un elemento aleatorio, para apoyar a sondear la superficie de la funcin objetivo con
la esperanza de escapar de los mnimos locales.

optimizacin de enjambre de partculas es otro mtodo de optimizacin que es muy til biolgicamente
plausible. Al igual que la mayora de los otros mtodos evolutivos, el PSO

FIGURA 7.28: Demostracin del proceso de evolucin del cromosoma al PLD.


244 244 Artificial Intelligence Inteligencia artificial

se basa en una poblacin de soluciones candidatas para encontrar la mejor solucin. Como
puede verse a partir de la implementacin de ejemplo, PSO es simple, computacionalmente
barato y eficaz para la optimizacin de la funcin.

HARDWARE evolvable
El uso de algoritmos evolutivos para generar el hardware se ha utilizado de una manera similar a la
GP se utiliza para desarrollar el software. evolucin Hardware vara de diseo simple de circuito (tal
como, por filtros analgicos), o productos ms complejos, tales como la evolucin de la arquitectura
para lgica programable Arrays (PLA, o un dispositivo de lgica programable, PLD).

La evolucin de las soluciones de hardware se ha restringido a los problemas de juguete, pero la


investigacin en esta rea es prometedor. Sin embargo, la evolucin del hardware tiene sus
problemas. Por ejemplo, la evolucin de los circuitos a los problemas tiende a dar lugar a soluciones
que son difciles o imposibles de entender. La evolucin no tiene conocimiento de la esttica o la
legibilidad, y la evolucin se encuentra comnmente atajos que hacen difcil su comprensin. Los
circuitos que se encuentran a travs de la evolucin no siempre pueden ser tolerantes del ruido o de
la temperatura, lo que hace difcil su despliegue. En el extremo, el uso de diseos que se desprenden
requiere comnmente mayor pruebas para asegurar que toda la variabilidad ha sido explorado en el
diseo resultante.

RESUMEN DEL CAPTULO


Mientras que los algoritmos evolutivos no son nuevas, se encontrar la investigacin continuada e
incluso nuevos algoritmos estn desarrollando hoy en da (por ejemplo, evolucin diferencial y la
inteligencia de enjambre). Los algoritmos evolutivos prestado conceptos de la seleccin natural
darwiniana como un medio para desarrollar soluciones a los problemas, eligiendo entre los individuos
ms aptos para propagar a las generaciones futuras. En este captulo hemos explorado una serie de
algoritmos evolutivos y biolgicamente, inspirada. Despus de una introduccin a los algoritmos
evolutivos, presentamos el algoritmo gentico que est en el ncleo de la mayora de los algoritmos
evolutivos. A continuacin, exploramos la programacin gentica, un proceso evolutivo significa para
generar secuencias de cdigos. A continuacin, se revisaron uno de los mtodos evolutivos
originales, estrategias evolutivas. A continuacin, analizamos el nuevo mtodo de evolucin
diferencial, y terminado con una revisin de la optimizacin de enjambre de partculas (un mtodo de
optimizacin biolgicamente plausible).
Computacin evolutiva 245 24

REFERENCES REFERENCIAS
[Banzhaf 1998] Banzhaf, W., Nordin, P., Keller, RE, Francone, FD,

Programacin Gentica: Introduccin: En la evolucin automtica de programas de ordenador y


sus aplicaciones , Morgan Kaufmann, 1998.

[EvoNews 1999] habla el profesor Hans-Paul Schwefel a EvoNews. 1999. Disponible en lnea en:
http://evonet.lri.fr/evoweb/news_events/news_features/

article.php? id = 5

[Fogel 1966] Fogel, LJ, Owens, AJ, Walsh, MJ Inteligencia Artificial travs simulado Evolucin .
Wiley, Nueva York, 1966.

[Levenick 1991] Levenick, James R. Insercin intrones Mejora Algoritmo Gentico ndice de xito:
Siguiendo el ejemplo de Biologa. Actas de la Cuarta Conferencia Internacional sobre Algoritmos
Genticos, 1991.

[Rechenberg 1965] Rechenberg, I. trayectoria de la solucin ciberntica de un problema experimental.


Traduccin Biblioteca Informe Tcnico N 1122, Royal Aircraft Establishment, Farnborough, Hants.,
Reino Unido, 1965.

RESOURCES RECURSOS
Higuchi, Testuya; Liu, Yong; Yao, Xin (Eds.) Hardware Evolvable, gentica y computacin evolutiva
Springer, 2006.

Iba, Hitoshi; Iwata, Masaya; Higuchi, Testuya mquina de aprendizaje a nivel de hardware puerta-
Evolvable, 1996.

Koza, JR (1990), la programacin gentica: un paradigma para genticamente las poblaciones


reproductoras de programas de ordenador para resolver problemas ,
Departamento de Ciencias de la Universidad de Stanford Computer informe tcnico

STAN-CS-90-1314 .

sitio web de optimizacin por enjambre de partculas

Disponible en lnea en: http://www.swarmintelligence.org/

[Price, et al 1997] Precio, K., y Storn, R. Evolucin diferencial, Dr. Dobb Journal 's, pp 18-24,
1997.

EXERCISES CEREMONIAS
1. Describir la primera utilizacin de un algoritmo evolutivo y cmo funcionaba.

2. Describir tres de los algoritmos evolutivos, y comparar y contrastar ellos.


3. Describir el flujo fundamental del algoritmo gentico (cada una de las fases).
246 246 Artificial Intelligence Inteligencia artificial

4. Describir la hiptesis de bloques de construccin como se define para los algoritmos genticos.

5. Describir las diferencias entre la seleccin ruleta y seleccin elitista.


6. Describir los operadores de cruce y mutacin para el algoritmo gentico. Qu efecto tienen
que ofrecen en el espacio de bsqueda local?
7. Describir el operador de inversin presentado por Holanda.

8. Qu es un criterio de terminacin?

9. Definir convergencia prematura y luego formas de combatirla.

10. Qu problemas otra secuencia de planificacin se podra aplicar al algoritmo gentico?


Describe una, y luego discutan cmo implementar esta evolucin de la GA.

11. Cmo se utiliz inicialmente el algoritmo de programacin gentica (qu tipos de


programas se desarrollaron)?
12. Cules son los problemas fundamentales de la programacin gentica?

13. La ejecucin de la programacin gentica en este libro se centr en un simple (direccin


cero) del conjunto de instrucciones. Qu valor existe para simplificar el conjunto de
instrucciones, y qu problemas podran resultar con un conjunto ms complejo ms grande?

14. Por qu la aplicacin GP lleve a cabo los programas candidato varias veces para grabar un
valor de aptitud?
15. La aplicacin GP encontr numerosas soluciones al problema candidato (incluso con el
conjunto de instrucciones simples). Qu dice esto acerca de la viabilidad de este algoritmo?

16. Cul es la diferencia bsica entre el algoritmo evolutivo estrategias y el algoritmo gentico?
17. Qu problema fue el algoritmo evolutivo temprano estrategias aplicadas para el xito?
18. Describir las diferencias bsicas entre un fenotpica algoritmo y una genotpica algoritmo.
19. Qu es un nmero aleatorio uniformemente distribuido?

20. Describir el proceso de equilibrio puntuado.

21. Describir el proceso bsico del algoritmo de evolucin diferencial. Cules son los procesos
de mutacin, cruzado, y el reemplazo?
22. Qu efecto tienen los parmetros ajustables F y CR tienen en el algoritmo de evolucin
diferencial?
23. En sus propias palabras, describe el proceso bsico del algoritmo de optimizacin con
enjambre de partculas.
24. Cul es la definicin de una partcula en un algoritmo de enjambre de partculas?

25. Para una partcula dada en un enjambre, definir las dos influencias que especifican cmo
debe moverse en el espacio de soluciones.
Computacin evolutiva 247 24

26. Las ecuaciones de actualizacin de velocidad para el algoritmo de optimizacin de enjambre


de partculas incluyen dos nmeros aleatorios. Qu efecto tienen estos nmeros aleatorios?

27. Lo que afectar a hacer las dos constantes de aceleracin (C1 y C2) tiene en la ecuacin de
velocidad de enjambre de partculas?
28. Cul es el hardware capaces de evolucionar, y cules son los principales problemas que
enfrenta?
N I
C aptulo 8 EURAL
N as
redes
y
o

N redes EURAL son biolgicamente estructuras de computacin motivados que se modelan


despus de conceptualmente el cerebro. La red neuronal se compone de una red altamente conectado de
elementos de clculo (neuronas individuales que imitan) que colectivamente se pueden utilizar para
resolver problemas interesantes y difciles. Una vez capacitados, las redes neuronales pueden generalizar
para resolver diferentes problemas que tienen caractersticas similares. En este captulo se va a introducir
los conceptos bsicos de redes neuronales e introducir una serie de algoritmos de aprendizaje
supervisado. En el captulo 11, nos 'll continuar nuestra exploracin de las redes neuronales y revisar
algunas variantes que se pueden utilizar para resolver diferentes tipos de problemas y, en particular, las de
supervisin

algoritmos de aprendizaje.

Breve historia de las redes neuronales


La historia de las redes neuronales es interesante porque, como la propia AI, que es una de las
grandes visiones, la eventual decepcin y, por ltimo, la adopcin silencio. En 1943, McCulloch y
Pitts desarroll un modelo de red neuronal basada en la comprensin de la neurologa, pero los
modelos suelen estar limitadas a las simulaciones lgica formal (la simulacin de operaciones
binarias). A principios de la dcada de 1950,
250 250 Artificial Intelligence Inteligencia artificial

investigadores en redes neuronales trabajaron hacia modelos de redes neuronales con el apoyo
de los neurlogos.

Pero no era 't hasta finales de la dcada de 1950 que los modelos prometedores comenzaron a
emerger. El modelo de perceptrn, desarrollado por Rosenblatt, fue construido con el propsito de
entender la memoria humana y el aprendizaje. El perceptrn bsico consista en una capa de entrada
(para el estmulo) y una capa de salida (resultado) que era totalmente interconectada. Cada conexin se le
asigna un peso que se aplic a los estmulos de entrada (a la que se conecta en la capa de entrada).
Mediante el ajuste de los pesos de las conexiones, una salida deseada podra estar formada para una
entrada dada. Esto permiti que el perceptrn para aprender a reconocer patrones de entrada.

En la dcada de 1960, otro modelo de aprendizaje surgi de Widrow y Hoff, de la Universidad de


Stanford llamado ADALINE o elemento lineal adaptativo. Este algoritmo particular usado -squares
menos -mean para ajustar los pesos de la red, pero este modelo en particular se podra implementar
en el mundo fsico utilizando componentes electrnicos analgicos.

En 1969, la creciente popularidad de las redes neuronales fue llevado a un alto. Marvin
Minsky y Seymour Papert escribieron un libro titulado perceptrones en el que se discuten las
limitaciones de los perceptrones de una sola capa, pero luego generalizarse a modelos ms
potentes de mltiples capas. El resultado fue una severa reduccin en la financiacin de la
investigacin de redes neuronales, y la correspondiente reduccin en el esfuerzo aplicado al
campo. Por suerte, varios investigadores continuaron la investigacin de los modelos de redes
neuronales, y los nuevos modelos definidos con xito y mtodos para el aprendizaje. En 1974,
Paul Werbos desarroll el algoritmo de propagacin hacia atrs, lo que permiti el xito del
aprendizaje en las redes neuronales multicapa.

Desde la dcada de 1970, la investigacin y los resultados exitosos en el diseo de redes


neuronales han atrado a cientficos de nuevo al campo. Muchos trabajos tericos y prcticos del
tratamiento de redes neuronales han surgido, y las redes neuronales se pueden encontrar ahora
fuera del laboratorio y en aplicaciones reales, como el reconocimiento de patrones y clasificacin.
Para apoyar a las grandes redes neuronales, circuitos integrados se han desarrollado para acelerar
la operacin y capacitacin en aplicaciones de produccin.

MOTIVACIN BIOLGICA
En 1943, McCulloch y Pitts usan su comprensin de la neurologa para construir una nueva
estructura de procesamiento de la informacin. El elemento de procesamiento de una red
neuronal es el modelo de una neurona, que se considera como el elemento fundamental en el
procesamiento de nuestro propio cerebro.
Redes Neuronales I 251 25

Figura 8.1: La clula neurona con entradas (dendritas) y salidas (axones).

La neurona es un dispositivo simple de procesamiento que tiene entradas (conocido como dendritas ) y
salidas (conocido como axones ). El axn se divide en su extremo en miles de ramas, cada una potencialmente
influyen en otras neuronas en una sinapsis (un pequeo espacio que separa los axones y dendritas). Cuando
una neurona recibe entradas excitadoras que excedan sus entradas inhibitorias, se transmite una seal hacia
abajo su axn a otras neuronas. Este proceso contina en otras neuronas, la creacin de una red paralela
masiva de neuronas en un estado excitado o inhibido. Aprendizaje a continuacin, se puede definir como la
alteracin de las uniones sinpticas que cambian la forma en que una neurona est influenciada por otros.

Mientras que las redes neuronales son el modelo de nuestra comprensin de la forma en
NOTE NOTA

que nuestros funciona el cerebro, sorprendentemente se conoce poco acerca de cmo nuestro
cerebro
de hecho funcionar. A travs de diferentes tipos de inspeccin, podemos ver nuestra
cerebro en funcionamiento, pero debido a la enorme cantidad de neuronas y
interconexiones entre estas neuronas, cmo funciona sigue siendo un misterio
(Aunque existen muchas teoras).

FUNDAMENTOS DE Redes Neuronales


Vamos 's comienzan con una exploracin de las aplicaciones de redes neuronales, los conceptos
fundamentales detrs de las redes neuronales, y luego comenzar una investigacin sobre una serie
de modelos de redes y algoritmos de aprendizaje.

Puede encontrar las redes neuronales en una gran variedad de aplicaciones, desde las tareas de
clasificacin (por ejemplo, la evaluacin de riesgos crdito-), tareas de procesamiento de datos
(procesamiento de seal adaptativo) y aproximacin de funciones arbitrarias (modelizacin de series
temporales y prediccin). En este captulo, se Exploraremos las redes neuronales para la clasificacin
(reconocimiento de caracteres y clasificacin de datos).
252 252 Artificial Intelligence Inteligencia artificial

Figura 8.2: neurona simple con equivalentes biolgicos.

Una red neuronal se compone de uno o ms neuronas, que es el elemento de procesamiento bsico.
Una neurona tiene una o ms entradas (dendritas), cada uno de los cuales se ponderan individualy. Una
neurona tiene una o ms salidas (axones) que se ponderan cuando se conecta a otras neuronas. La
neurona en s incluye una funcin que incorpora sus entradas (a travs de la suma) y despus se
normaliza su salida a travs de una funcin de transferencia (vase la Figura 8.2).

Para cada entrada de la figura 8.2, se aplica un peso. Estas entradas ajustados se suman
entonces y se aplica una funcin de transferencia para determinar la salida. Eq 8.1 proporciona la
ecuacin para esta simple neurona.

(Eq 8.1)

Perceptrones sola capa (SLP)

PROPINA

Perceptrons Individual capa (o SLP) se pueden utilizar para emular funciones lgicas tales como NO,
NOR, OR, AND y NAND, pero no pueden utilizarse para emular la funcin XOR (se requieren dos capas
de neuronas para esta funcin). Nos Exploraremos este problema en breve.

Minsky y Papert documentaron la limitacin XOR de los perceptrones de una sola capa, lo que
finalmente result en gran reduccin de la funcin de red neuronal durante la dcada de 1970.

Un sesgo tambin se aplica comnmente a cada neurona, que se aade a la suma ponderada de las entradas
antes de pasar por la funcin de transferencia. Un peso tambin se aplica comnmente a la polarizacin. El sesgo
determina el nivel
Redes Neuronales I 253 25

Figura 8.3: Ejemplos de perceptrones de una sola capa (SLP).

de activaciones de entrada (valor de las entradas ponderadas) que se requieren para que la neurona
al fuego. El sesgo se fija comnmente a uno, pero un peso tambin est presente para el sesgo que
puede ser sintonizado por el algoritmo de aprendizaje.

Un SLP no se debe confundir con una sola neurona. Considere la red en la Figura 8.3. Esta
es tambin una SLP, porque consiste en una sola capa. Para los problemas de mayor
dimensionalidad, debemos utilizar los MLP, o perceptrones multicapa.

En representacin de SLP es bastante simple. Dado que las entradas y los pesos tienen una
correspondencia uno-a-uno, que 's fcil de calcular la salida. Considere el cdigo simple en el
listado 8.1.

Listing 8.1: Cdigo de ejemplo que ilustra la representacin SLP.

NUM_INPUTS #define 3

/ * Nota: 1 aqu para tener en cuenta la entrada de polarizacin * /


double pesos [NUM_INPUTS + 1];

dobles entradas [NUM_INPUTS + 1]; int step_function (doble


entrada)
{{

si (input> 0,0) return 1; else return -1;

}}

int calc_output (void)

{{

int i;

suma doble = 0,0;

/ * Establecer el sesgo (se podra hacer una vez en init) * /


254 254 Artificial Intelligence Inteligencia artificial

Figura 8.4: Ejemplo de una capa mltiple Perceptron (MLP).

entradas [NUM_INPUTS] = 1,0;

/ * Calcular la salida (Ecuacin 8.1) * / for (i = 0; i <NUM_INPUTS


+ 1; i ++) {sum + = ( pesos [i] * entradas [i]);

}}

/ * Pasar la salida a travs de la etapa de funcin (activacin) * / return


step_function (suma);

}}

Multi-capa de perceptrones (MLP)

Como Minsky y Papert revel en su libro perceptrones, perceptrones de una sola capa tienen
la desventaja de que slo se pueden utilizar para clasificar los datos linealmente separables.
Pero lo que se encontr un corto tiempo despus es que por el apilamiento de los perceptrones
de una sola capa en mltiples perceptrones de capa (vase la Figura 8.4), la capacidad de
resolver cualquier problema de clasificacin en teora podra ser realizado. El MLP puede
modelar prcticamente cualquier funcin de complejidad arbitraria, donde el nmero de entradas
y el nmero de capas ocultas determinan la complejidad funcin.

Las neuronas en un MLP tienen los mismos atributos bsicos de la SLP (sesgo, etc.). Sin embargo,
con mltiples capas, la salida de una capa se convierte en la entrada del siguiente proceso. La aplicacin
para el MLP es un poco ms complicado, pero sigue siendo sencillo (ver listado 8.2). Tenga en cuenta que
aqu el uso de una funcin de activacin tanto para los nodos ocultos y de salida. La funcin sigmoide se
puede utilizar para aplastar la salida de la neurona a 0,0 a 1,0.
Redes Neuronales I 255 25

Listado 8.2: Cdigo de ejemplo que ilustra la representacin MLP.

NUM_INPUTS #define 44
NUM_HIDDEN_NEURONS #define 44
NUM_OUTPUT_NEURONS #define 33
mlp_s typedef {
/ * Las entradas al MLP (+1 de sesgo)
*/
entradas dobles [NUM_INPUTS + 1];

/ * Los pesos de la capa oculta para entrada (1 de sesgo) * /

doble w_h_i [NUM_HIDDEN_NEURONS + 1] [NUM_INPUTS + 1]; / * Capa oculta * /


doble oculto [NUM_HIDDEN + 1];

/ * Los pesos de salida a capa oculta (1 de sesgo) * / doble w_o_h


[NUM_OUTPUT_NEURONS] [NUM_HIDDEN_ NEURONAS + 1];
/ * Salidas de la MLP * /

salidas dobles [NUM_OUTPUT_NEURONS]; Mlp_t};


feed_forward vaco (mlp_t * MLP)

{{

int i, h, fuera;

/ * Alimente a las entradas a la capa oculta a travs de la oculta * a los pesos de


entrada.

*/

para (h = 0; h <NUM_HIDDEN_NEURONS; h ++) {MLP-> oculto [h] = 0,0;

for (i = 0; i <NUM_INPUT_NEURONS + 1; i ++) {MLP-> ocultos [H] + = (MLP->


entradas [i] * MLP-> w_h_i [h] [i]);

}}

MLP-> oculto [h] = sigmoide (MLP-> oculto [h]);

}}

/ * Alimente a las activaciones de la capa oculta a la capa de salida * a travs


de la salida a los pesos ocultos.

*/

para (OUT = 0; cabo <NUM_OUTPUT_NEURONS; fuera ++) {MLP-> salida [out]


= 0,0;

para (h = 0; h <NUM_HIDDEN_NEURONS; h ++) {MLP-> salidas [out] + = (MLP-> oculto


[h] * MLP-> w_o_h [out] [h]);

}}

MLP-> salidas [OUT] = sigmoide (MLP-> salidas [out]);


256 256 Artificial
}}
regres

}}
A

Este M
tres ce
Las c

valor
efecto
Tenga

clula

clulas

cells. C
aliment
ms s
Podem
NOTE NOTA paralel

una

para s

en

pr

nme
Figura 8.5: Red Grfico Aplicado en el Listado 8.2
Redes Neuronales I 257 25

Supervisado vs algoritmos de aprendizaje sin supervisin

Hay dos categoras bsicas de algoritmos de aprendizaje para las redes neuronales: aprendizaje
supervisado y aprendizaje no supervisado.

En el paradigma de aprendizaje supervisado, la red neuronal se entrena con los datos que se
conocen las respuestas correctas e incorrectas. Mediante el clculo de la salida de la red neuronal y
comparar esto con la salida exceptuado de los datos de las pruebas dadas, podemos identificar el
error y ajustar los pesos en consecuencia. Ejemplos de algoritmos de aprendizaje supervisado
incluyen el algoritmo de aprendizaje Perceptron, Least-Mean-Squares aprendizaje y retropropagacin
(cada uno de los cuales sern exploradas en este captulo).

Algoritmos de aprendizaje no supervisado son aquellos en los que hay 's sin respuesta dada
en los datos de prueba. Lo que estos algoritmos hacen en cambio, es analizar los datos con el
fin de entender sus similitudes y diferencias. De esta manera, las relaciones en los datos se
pueden encontrar que pueden no haber sido evidentes antes. Ejemplos de algoritmos de
aprendizaje sin supervisin incluyen el algoritmo de k-medias de agrupacin, adaptable teora de
la resonancia (ART), y de Kohonen Self-Organizing Maps (cada uno de ellos, y ms, ser
discutido en el captulo 9).

Binario vs entradas y salidas continuas

Las redes neuronales pueden operar con una combinacin de tipos de entrada. Por ejemplo,
podemos utilizar entradas binarias (-1, 1) y salidas binarias. Nos Exploraremos esto en nuestros
dos primeros ejemplos de SLP. Para otras aplicaciones, tales como aplicaciones de audio o
vdeo, que Tendr entradas continuas (tales como datos de valor real). Es Tambin es posible
utilizar combinaciones, tales como entradas continuas y salidas binarias (por problemas de
clasificacin).

Ahora que tenemos una comprensin bsica de las topologas de red neuronales y algoritmos de
aprendizaje, vamos 's empezar con una investigacin del perceptrn y entender cmo puede ser
entrenado para la clasificacin de patrones simples.

el perceptrn
Un perceptrn es una sola red neural neurona que se introdujo por primera vez por Frank
Rosenblatt a finales de 1950. El perceptrn es un modelo simple para las redes neuronales que
se pueden utilizar para una cierta clase de problemas sencillos llamado separables lineales
problemas (llamados de otro modo discriminantes lineales ). These are Estos son a menudo
utilizado para clasificar si un patrn pertenece a una de dos clases (vase la Figura 8.6).
258 258 Artificial Intelligence Inteligencia artificial

Figura 8.6: Una discriminante lineal se puede utilizar para clasificar patrones de entrada en dos clases.

Figura 8.7: Visualizacin de la discriminante lineal de funciones booleanas simples.

PROPINA

As dado un conjunto de entradas que describen un objeto (a veces llamado un vector de


caractersticas), un perceptrn tiene la capacidad de clasificar los datos en dos clases si los datos son
linealmente separables. Dado el conjunto de posibles entradas, la tarea entonces es identificar los
pesos que clasifican correctamente los datos (linealmente independientes) en dos clases.

Otro nombre para el perceptrn es el Umbral de la Unidad Lgica, o TLU. El TLU es un discriminador
lineal que da un umbral (si la suma caracterstica es mayor que el umbral, o menor que el umbral).

El perceptrn puede clasificar con precisin las funciones booleanas estndar, tales como Y, O, NAND, NOR y.
Como se muestra en la Figura 8.7, el AND y OR funciones pueden ser separados linealmente por una lnea (en el
caso de dos entradas, o un hiperplano de tres entradas), pero la funcin XOR es linealmente inseparable. Un
componente de sesgo proporciona el desplazamiento de la lnea desde el origen. Si exista ningn sesgo, la lnea
(o hiperplano) se limitaran a pasar a travs del origen y los pesos slo se controlar el ngulo del discriminante.
Redes Neuronales I 259 25

Figura 8.8: perceptrn simple usado para la clasificacin de la funcin binaria.

Un resultado de Rosenblatt trabajo 's en perceptrones fue el Mark I perceptrn al laboratorio


aeronutico de Cornell. El Mark I era un ordenador analgico basado en el perceptrn que tena
un 20 por 20 retina y aprendi a reconocer las letras.

Perceptrn Algoritmo de Aprendizaje

aprendizaje del perceptrn es un algoritmo de aprendizaje supervisado y es un procedimiento


simple donde las ponderaciones se ajustan a clasificar el conjunto de entrenamiento. Cada
muestra del conjunto de entrenamiento se aplica a la perceptrn, y el error (resultado esperado
menos el resultado real) se utiliza para ajustar los pesos. Una tasa de aprendizaje tambin se
aplica (pequeo nmero entre 0 y 1) para minimizar los cambios que se aplican en cada paso.

Nos Utilizaremos el perceptrn muestra en la figura 8.8 para ilustrar el algoritmo de


aprendizaje perceptrn. Los pesos de la perceptrn configuracin inicial a cero. Hay dos
entradas con dos pesos correspondientes y tambin un sesgo con un peso. El sesgo se
establece en uno, pero el peso para el sesgo ser ajustado para alterar su efecto. El clculo de
la salida del perceptrn entonces se puede definir (Eq 8.2).

(Eq 8.2)

La funcin de paso simplemente empuja el resultado a 1,0 si es superior a un umbral; de otro


modo, el resultado es -1,0.

Dado un conjunto de entrenamiento para nuestra perceptrn, aplicamos cada uno de los elementos
del conjunto de entrenamiento para el perceptrn y para cada muestra, ajustar los pesos basados en el
error. El error se define como el resultado esperado menos el resultado real. Cada uno se ajusta utilizando
la ecuacin 8.3 (llamada la Regla Perceptron ).
(Eq
w i = w i + aTi i 8.3)
260 260 Artificial
En esta ecuacin, ( alfa ) es la tasa de aprendizaje (nm
uno), T es el objetivo (o resultado esperado), y i i es
peso actual w i . 8.3 eq muy simple aj
o disminuir el peso, basado
entrada correspondiente (que se identifica por multiplicando el resultado esperado por la entrada
de entrenamiento para esta conexin).

El algoritmo de aprendizaje del perceptrn es un ejemplo de un aprendizaje supervisado


NOTE NOTA

algorithm. algoritmo. Presentamos un conjunto de entrenamiento en nuestro perceptrn y


penalizarlo
cuando llega a la respuesta equivocada (una clasificacin incorrecta).
La aplicacin del algoritmo de aprendizaje contina hasta que no hay cambios son
hecho a los pesos porque todas las pruebas estn debidamente clasificados.

Implementacin perceptrn
La implementacin del algoritmo de aprendizaje del perceptrn es muy simple (ver Listado 8.3). En esta
implementacin, el perceptrn se entren con el grupo de aprendizaje (una funcin booleana), y despus
de calcular el error (de la deseada vs resultado real), los pesos se ajustan por la ecuacin 8.3. El clculo
de la salida del perceptrn se muestra en la funcin de clculo. Esta funcin implementa la ecuacin 8.2.
El proceso de formacin contina durante un nmero mximo de iteraciones, y cuando haya terminado, la
tabla de verdad se emite para la funcin booleana.

Listing 8.3: Perceptrn aprendizaje aplicacin.

MAX_TESTS #define 44

training_data_t training_set [MAX_TESTS] = {{-1,0, -1,0, -1,0}, {-1,0,


1,0, 1,0},

{1,0, -1,0, 1,0}, {1,0, 1,0, 1,0}};

doble de cmputo (test int)

{{

doble resultado;

/ * * Ecuacin 8.2 /

resultado = ((training_set [test] .a * pesos [0]) + (training_set [test] .B *


pesos [1]) +

(1,0 pesos * [2])); / * Clip el resultado * /

si (resultado> 0,0) resultado = 1,0; otro resultado =


-1,0;
Redes Neuronales I 261 26

Texto original
Rather than digging deep down into the graph, progressing further and further from the root (as is the case
with DFS), BFS checks each node nearest the root before descending to the next level (see Figure
2.14).Sugiere una traduccin mejor
NO

T T
H MARIDO E mi