Está en la página 1de 3

Implementación de Algoritmo de Búsqueda en

Anchura para el Juego de Misioneros y Caníbales, en


lenguaje de programación C++
Daniel Sandoval, Santiago Yaguargos
Facultad de Ingeniería en Sistemas, Electrónica e Industrial
Universidad Técnica de Ambato
msandoval8785@uta.edu.ec, syaguargos8009@uta.edu.ec

Resumen- Este documento presenta la información acerca búsqueda, que se centran en figurar de forma lógica, grafos
del objetivo que tiene la Teoría de Juegos en los diferentes o arboles donde se guardan la información inicial para su
problemas del ámbito general tomando en cuenta la incremento. Estas técnicas de búsqueda consisten en una
aplicabilidad en los diferentes conflictos a través de agentes
inteligentes. Se resume la fundamentación teórica de las serie de esquemas de representación del conocimiento, que
técnicas de la Inteligencia Artificial que permiten resolver el mediante diversos algoritmos nos permite resolver ciertos
problema de Misioneros y Caníbales centrado en la Búsqueda problemas desde el punto de vista de la I.A.
en Anchura. Finalmente se plasma el proceso y los métodos
usados para la implementación del algoritmo en el En la implementación de este tipo de algoritmos de
determinado lenguaje de programación donde se muestra el búsqueda, existe técnicas llamadas Búsqueda en Anchura,
árbol de estados que toma el problema para llegar a una
solución óptima.
Búsqueda en Profundidad y Búsqueda Bidireccional que
permite al agente inteligente recorrer espacios de un grafo o
Palabras Clave- Teoría de Juegos, Búsqueda en Anchura, C+ un árbol según la especificación de su técnica. [3]
+, Juego Misioneros y Caníbales.
Cuando se habla de técnicas de búsqueda, la Inteligencia
I. INTRODUCCIÓN Artificial considera elementos importantes como son: el
La Teoría de Juegos representa una rama importante en estado inicial, estado final, conjunto de estados y los
la economía y las matemáticas la cual pretende estudiar operadores.
soluciones para una decisión en la cual se maximice la
función objetivo y se minimice el consumo de recursos.

Según F. Fernández “La Teoría de Juegos estudia de


manera formal y abstracta las decisiones óptimas que deben
tomar diversos adversarios en conflicto, pudiendo definirse
como el estudio de modelos matemáticos que describen el
conflicto y la cooperación entre entes inteligentes que
toman decisiones.” [1]
Fig. 1. Esquema de un árbol de estados
Los entes inteligentes también conocidos como agentes
inteligentes son capaces se aprender de un modelo para la
resolución de un conflicto y razón por la cual este es dotado Para el problema de Misioneros y Caníbales se propone
de inteligencia. permitir al agente inteligente recorrer un camino
nombrándolos como espacios de estado, a partir de un
Los problemas que surgen en el mundo actual, permiten inicial logrando de forma óptima y utilizando la técnica de
a la Teoría de juegos estar presente en problemas cotidianos búsqueda en Anchura encontrar la solución.
donde intervienen 2 o más participantes y por lo cual las
situaciones son difíciles de analizar y entender, ya que
existen muchos factores en el ámbito de actividad humana,
siendo una razón importante en la que se han ido
evolucionando modelos mucho más óptimos, como son
algoritmos de inteligencia artificial, que permiten conocer
el camino que el agente inteligente recorre para encontrar la
solución. [2] Fig. 2. Representación gráfica del Juego Misioneros y Caníbales

Para la computación evolutiva y la Inteligencia Artificial Muchos de los investigadores en la computación


esta teoría permite crear algoritmos que permitan ayudar al evolutiva han incorporado como rama de la Teoría de
agente a comprender el problema, como son algoritmos de
Juegos, la solución de problemas a través de entes dotados Fig. 3. Ärbol de estados del Juego Misioneros y Caníbales
de Inteligencia Artificial.
C. Código C++
II. MATERIALES Y MÉTODOS
. La implementación del algoritmo de búsqueda en // Función para mostrar la estructura de datos
anchura para el problema de Misioneros y Caníbales
requiere: void mostrar_grafo()
 Conocimiento del lenguaje de programación C+ { ObjNodo ptr;
+ ObjArista ar;
 Entorno de programación DevC++ ptr=raiz;
cout<<"NODO | LISTA DE ADYACENCIA\n";
Para la solución al problema presentado, el desarrollador
interactúa con el lenguaje de programación C++, el cual while(ptr!=NULL)
permite utilizar métodos o funciones y estructuras de datos, { cout<<" "<<ptr->nombre<<"|";
específicamente árboles y grafos. if(ptr->ady!=NULL)
{
A. Problema ar=ptr->ady;
while(ar!=NULL)
{
Tres misioneros y tres caníbales quieren cruzar un río cout<<" "<<ar->destino->nombre;
mediante un bote que solo puede ser usado por uno o dos
individuos, sean misioneros o caníbales. ar=ar->dato;
}
Reglas:
}
 En número de caníbales no debe ser mayor al ptr=ptr->dato;
número de misioneros, en ninguna de las dos cout<<endl;
orillas, así estén dentro o fuera de la barca, }
porque se los comerán. }
// Función para búsqueda en anchura
 Encontrar la secuencia de pasos posibles para
que los seis individuos crucen de una orilla a void busquedaAnchura()
otra. {
ObjNodo aux;
aux=raiz;
B. Árbol de estados int contador=1;
cout<<"\n Busqueda en anchura: \n";
while(aux!=NULL)
Cada nodo es representado por: {
(número de caníbales, número de misioneros, orilla) cout<<aux->nombre<<" ";
if(aux->nombre=="0:0:0")
- Número de caníbales: entre 1 y 3 {
- Número de misioneros: entre 1 y 3
- Orilla: 1 orilla inicial y 0 orilla objetivo cout<<"\nrecorrio "<<contador<<" nodos en el arbol";
cout<<endl;
Estado Inicial: 3 caníbales y 3 misioneros están en la break;
orilla izquierda, representado como (3,3,1) }else
{
Estado Final: 3 caníbales y 3 misioneros están en la cout<<"=> ";
orilla derecha, representado como (0,0,0) }
aux=aux->dato;
Operaciones: en el problema existen 5 operaciones que contador++;
se pueden realizar solo si se cumplen con las limitaciones }
descritas. }

// Función booleana que determina existencia de nodos.

bool se_encuentra(string nombre)


{
ObjNodo aux;
aux=raiz;
bool retorno=false; diferentes sistemas expertos y la inteligencia artificial
if(nombre=="0:0:0") asociada con Teoría de Juegos.
{
return false;
}else IV. BIBLIOGRAFÍA
{
while(aux!=NULL)
[1] F. F. Rodriguez, «Teoría de Juegos: análisis matemático
{
de conflictos,» Las Palmas, 2005.
if(aux->nombre==nombre)
{ [2] J. E. Ricart, «Una Introducción a la Teoría de los
retorno=true; Juegos,» IESE Business School, Barcelona, 1998.
break; [3] C. Quimiz, «Algoritmos de Búsqueda y sus tipos,» 2014.
}
aux=aux->dato;
}
return retorno;
}
}

// Función para la inserción de nodos.

void insertar_nodo(string variable)


{
ObjNodo t,nuevo=new struct nodo;
nuevo->nombre=variable;
nuevo->dato = NULL;
nuevo->ady=NULL;

if(raiz==NULL)
{
raiz = nuevo;
}
else
{
t = raiz;
while(t->dato!=NULL)
{
t = t->dato;
}
t->dato = nuevo;
}

III. RESULTADOS, DISCUSIONES Y CONCLUSIONES

Se implementó el algoritmo de búsqueda en Anchura


para encontrar la solución al problema de Misioneros y
Caníbales mediante la representación de un árbol de
estados en el cual el estado inicial va formado por todos
los individuos en la una orilla y el objetivo es llegar al
estado final en la cual, todos los individuos crucen a la
otra orilla con las reglas predeterminadas del juego.

Se obtuvo el resultado al problema, que permite al


usuario conocer el conjunto de estados que recorrería un
agente mediante un recorrido por los niveles del árbol.

Se concluye que el método permite al usuario un mayor


entendimiento y conocimiento sobre el recorrido del
árbol presentado, el cual permite ser aplicado en

También podría gustarte