Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de la resolución de problemas. La idea básica detrás de este enfoque es buscar una solución a un
conjunto de posibles acciones que se pueden tomar para llegar a un estado objetivo. Cada acción
lleva a un nuevo estado y cada estado puede tener múltiples acciones posibles. El objetivo es
encontrar una secuencia de acciones que lleven desde el estado inicial al estado objetivo.
búsqueda A* y otros. Cada uno de estos algoritmos utiliza diferentes estrategias para explorar el
inicial es el cubo desordenado y el estado objetivo es el cubo ordenado. Cada acción posible es
mover una de las caras del cubo, y cada estado es una configuración diferente del cubo. La
Se utiliza para resolver una amplia variedad de problemas, desde juegos como el ajedrez
lógica complejos.
1
FASE 2 - ESPACIOS DE ESTADO EN LA IA
solución a un problema, representado como un espacio de estados, que puede ser representado
como un grafo o un árbol. Cada nodo en el grafo representa un estado posible del problema, y las
Por ejemplo, en el caso del problema del cubo de Rubik, el espacio de estados se puede
representar como un grafo en el que cada nodo representa un estado posible del cubo, y cada
necesarias para pasar de un estado inicial a un estado objetivo, y hay diferentes algoritmos que se
pueden utilizar para realizar esta búsqueda, como el algoritmo de búsqueda en profundidad, el
inteligencia artificial, como el aprendizaje por refuerzo, donde se utiliza para encontrar la mejor
política (una secuencia de acciones) para maximizar una recompensa en un entorno de juego.
Como funciona
2
FASE 2 - ESPACIOS DE ESTADO EN LA IA
como un grafo en el que cada nodo representa un estado posible del cubo, y las aristas del
2. Estado inicial y estado objetivo: El siguiente paso es definir el estado inicial y el estado
objetivo del problema. En el caso del cubo de Rubik, el estado inicial es el cubo
tomar para pasar de un estado a otro. En el caso del cubo de Rubik, las posibles acciones
son rotar una de las caras del cubo en el sentido de las agujas del reloj o en el sentido
contrario.
búsqueda para encontrar la secuencia de acciones necesarias para pasar del estado inicial
al estado objetivo. Hay varios algoritmos de búsqueda que se pueden utilizar, como el
A* y otros.
inicial y continúa moviéndose hacia abajo en el árbol de estados hasta que encuentra el
son viables o no. Por ejemplo, en el caso del cubo de Rubik, un estado no viable sería
3
FASE 2 - ESPACIOS DE ESTADO EN LA IA
aquel en el que el cubo tiene piezas en posiciones incorrectas o donde las caras no están
alineadas correctamente.
secuencia de movimientos necesarios para pasar del estado inicial al estado objetivo.
algoritmo de búsqueda para encontrar la solución y la evaluación de los estados para determinar
si son viable
4
FASE 2 - ESPACIOS DE ESTADO EN LA IA
información completa o precisa. Se utiliza cuando existe una falta de certeza o conocimiento
sobre todos los aspectos de un problema. Por ejemplo, en la toma de decisiones empresariales, no
siempre se dispone de información completa sobre los costos, ingresos, preferencias de los
como la teoría de la probabilidad y la lógica difusa. Estas técnicas permiten modelar y manejar la
riesgo de errores.
de resultados.
La lógica difusa, por otro lado, se utiliza para modelar la incertidumbre en las relaciones
entre las variables. Permite modelar el grado de certeza o incertidumbre en una afirmación
mediante el uso de términos difusos, como "muy probable", "poco probable", "posiblemente",
etc.
5
FASE 2 - ESPACIOS DE ESTADO EN LA IA
historial de un usuario para predecir qué productos o servicios pueden ser de su interés.
vagos, puede ser difícil determinar con precisión la causa subyacente de la enfermedad.
3. Control de robots: Los robots autónomos a menudo tienen que tomar decisiones en
situaciones inciertas. Por ejemplo, un robot de limpieza puede tener que navegar en una
decisiones informadas.
6
FASE 2 - ESPACIOS DE ESTADO EN LA IA
riesgo de errores.
7
FASE 2 - ESPACIOS DE ESTADO EN LA IA
Algoritmos de búsqueda
un conjunto de reglas para generar nuevos estados a partir de estados existentes. Estos estados se
representan como nodos en un grafo y las reglas de generación de nuevos estados se representan
nodo de destino que represente una solución al problema. En muchos casos, el algoritmo debe
buscar una solución óptima, es decir, una solución que minimice o maximice una función de
costo o utilidad.
Existen varios tipos de algoritmos de búsqueda, cada uno con sus propias características y
explora cada rama del árbol de búsqueda hasta encontrar un nodo de destino o hasta que
se agoten todas las ramas. DFS es simple de implementar y utiliza menos memoria que
2. Búsqueda en amplitud (BFS): Este algoritmo explora todos los nodos a una
solución óptima si existe, pero puede requerir una gran cantidad de memoria.
8
FASE 2 - ESPACIOS DE ESTADO EN LA IA
los nodos con menor costo de camino. Encuentra siempre la solución óptima si los costos
4. Búsqueda A*: Este algoritmo combina la búsqueda en costo uniforme con una heurística
que estima el costo del camino restante hasta la solución. La heurística guía la búsqueda
hacia los nodos más prometedores y puede reducir significativamente el número de nodos
expandidos.
puede utilizar un algoritmo de búsqueda para encontrar la ruta más rápida o económica
3. Juegos: Los algoritmos de búsqueda se utilizan para encontrar la mejor jugada en juegos
algoritmo de búsqueda para encontrar la jugada óptima en un momento dado del juego.
9
FASE 2 - ESPACIOS DE ESTADO EN LA IA
complejos, optimizar procesos, encontrar patrones en grandes conjuntos de datos, entre otras
aplicaciones.
10
FASE 2 - ESPACIOS DE ESTADO EN LA IA
espacio de búsqueda, cada estado representa una posible enfermedad y cada transición representa
una posible causa o relación entre los síntomas y la enfermedad. Una estrategia de búsqueda
efectiva podría ser la búsqueda en profundidad limitada (LDFS), que explora las posibles
Razonamiento con incertidumbre: dado que los síntomas pueden tener diferentes
momento de realizar el diagnóstico. Para abordar este problema, se puede utilizar la teoría de la
probabilidad y la lógica difusa para modelar la incertidumbre en los datos y las relaciones entre
los síntomas y las enfermedades. Se puede utilizar un sistema de inferencia basado en reglas que
combine la información de los síntomas con la probabilidad de que cada enfermedad sea la causa
Algoritmos de búsqueda: para hacer que el proceso de diagnóstico sea más eficiente, se
pueden utilizar algoritmos de búsqueda heurística que guíen la búsqueda hacia las enfermedades
más probables en lugar de explorar todo el espacio de búsqueda. Por ejemplo, el algoritmo de
búsqueda A* podría ser utilizado para encontrar la enfermedad más probable dadas las
11
FASE 2 - ESPACIOS DE ESTADO EN LA IA
para mejorar la precisión del diagnóstico, utilizando conjuntos de datos de casos pasados de
Prototipo de algoritmo
preparar los datos. Se necesitan dos conjuntos de datos: uno que contenga los síntomas
observados del paciente y otro que contenga las relaciones entre los síntomas y las
enfermedades. Este último conjunto de datos puede ser obtenido a partir de una base de datos
Búsqueda en espacios de estado: Una vez que se tienen los datos, se puede comenzar a
utilizar la técnica de búsqueda en espacios de estado para encontrar la enfermedad más probable
(LDFS) se puede utilizar para explorar el espacio de búsqueda de las enfermedades posibles. El
algoritmo LDFS explorará primero los síntomas más probables y descartará las enfermedades
menos probables.
Código:
visitados = set()
while stack:
continue
12
FASE 2 - ESPACIOS DE ESTADO EN LA IA
if enfermedad in visitados:
continue
visitados.add(enfermedad)
return enfermedad
relacionados = obtener_relacionados(enfermedad)
return None
incertidumbre en los datos y las relaciones entre los síntomas y las enfermedades. Se puede
utilizar un sistema de inferencia basado en reglas que combine la información de los síntomas
con la probabilidad de que cada enfermedad sea la causa subyacente de los síntomas.
Código:
return None
if enfermedad == 'gripe':
13
FASE 2 - ESPACIOS DE ESTADO EN LA IA
return 0.9
return 0.1
if enfermedad == 'amigdalitis':
return 0.8
return 0.2
return None
síntomas y enfermedades para poder realizar la búsqueda en el espacio de estado. Esta base de
datos puede ser obtenida de fuentes médicas confiables y debe ser preprocesada para su uso en el
algoritmo.
Una vez que se tienen los datos necesarios, se puede comenzar la implementación del
implementación en Python:
Código
sintomas = {
14
FASE 2 - ESPACIOS DE ESTADO EN LA IA
sintomas_pendientes = sintomas.copy()
enfermedades_posibles = enfermedades.copy()
sintoma_actual = list(sintomas_pendientes.keys())[0]
enfermedades_filtradas = []
if sintoma_actual in sintomas[enfermedad]:
enfermedades_filtradas.append(enfermedad)
if len(enfermedades_filtradas) == 1:
return enfermedades_filtradas[0]
enfermedades_posibles = enfermedades_filtradas
sintomas_pendientes.pop(sintoma_actual)
15
FASE 2 - ESPACIOS DE ESTADO EN LA IA
if len(enfermedades_posibles) == 1:
return enfermedades_posibles[0]
else:
# Ejemplo de uso
enfermedad_diagnosticada = busqueda_estado(dict.fromkeys(sintomas_paciente),
enfermedades_posibles)
Este algoritmo recibe como entrada la base de datos de síntomas y enfermedades, así
espacios de estado para determinar la enfermedad más probable a partir de los síntomas del
paciente. El algoritmo recorre los síntomas del paciente y filtra las enfermedades posibles de
acuerdo con la base de datos. Si hay más de una enfermedad posible, se continúa filtrando por
los siguientes síntomas hasta que se determina una enfermedad o se agotan los síntomas.
incertidumbre en el desarrollo del prototipo de salud, se podría utilizar una red bayesiana para
bayesiana es un modelo probabilístico que representa las relaciones entre las variables y sus
16
FASE 2 - ESPACIOS DE ESTADO EN LA IA
En este caso, se pueden modelar los síntomas como variables aleatorias y las
enfermedades como nodos hijos que dependen de los síntomas. El modelo se entrena con datos
correspondientes. Una vez entrenado el modelo, se puede utilizar para diagnosticar una
Código
import numpy as np
import pandas as pd
import pgmpy
'Resfriado')])
17
FASE 2 - ESPACIOS DE ESTADO EN LA IA
0.6]])
evidence=['Fiebre', 'Tos'],
evidence_card=[2, 2],
evidence=['Dolor de cabeza'],
evidence_card=[2],
values=[[0.7, 0.3],
[0.3, 0.7]])
model.check_model()
def diagnose(symptoms):
18
FASE 2 - ESPACIOS DE ESTADO EN LA IA
prob_resfriado = model.query(variables=['Resfriado'],
evidence=evidence)['Resfriado'].values[1]
return 'Gripe'
else:
return 'Res
Continuando con el código, una vez que tenemos el grafo de síntomas y enfermedades,
profundidad limitada (depth-limited search) para encontrar la enfermedad más probable dado un
conjunto de síntomas:
Código
explored = set()
while frontier:
if problem.is_goal_state(state):
return state
19
FASE 2 - ESPACIOS DE ESTADO EN LA IA
explored.add(state)
frontier.append((successor, depth+1))
return None
class DiseaseDiagnosisProblem:
self.graph = graph
self.observations = observations
def get_start_state(self):
successors = []
if state[0] == 'START':
if node.startswith('D_'):
successors.append((node, 1.0/len(self.graph.nodes)))
20
FASE 2 - ESPACIOS DE ESTADO EN LA IA
else:
if neighbor.startswith('S_'):
belief *= self.graph[disease][neighbor]['weight'][evidence]
else:
successors.append((neighbor, 1.0))
return successors
donde el grafo es la representación del conocimiento previo del experto y las observaciones son
los síntomas del paciente. El método `get_start_state` devuelve el estado inicial, que en este caso
es el estado especial 'START' con probabilidad 1.0. El método `is_goal_state` devuelve True si
el estado es diferente de 'START'. El método `get_successors` devuelve los sucesores del estado
dado, que en este caso son las enfermedades que pueden ser causadas por los síntomas
observados.
21
FASE 2 - ESPACIOS DE ESTADO EN LA IA
Código
solution = depth_limited_search(problem)
print(solution)
Este código imprimirá el nombre de la enfermedad más probable dadas las observaciones
del paciente.
Se puede definir una función `diagnose` que reciba como argumentos los síntomas del
para encontrar las enfermedades que coinciden con los síntomas, y luego devolverá una lista con
Código
Finalmente, podemos probar nuestra función `diagnose` con una base de conocimientos
Código
knowledge_base = [
22
FASE 2 - ESPACIOS DE ESTADO EN LA IA
'fiebre baja']},
print(diseases)
resultado = ['Gripe']
Indicando que el paciente probablemente tiene gripe, ya que los síntomas que presenta
23
FASE 2 - ESPACIOS DE ESTADO EN LA IA
Bibliografía
ACM Transactions on Intelligent Systems and Technology (TIST). (n.d.). Retrieved March 25,
https://people.engr.tamu.edu/guni/csce421/files/AI_Russell_Norvig.pdf
de, C. (2004, December 2). algoritmo diseñado para localizar un elemento con ciertas
Inc. https://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqueda
Foundation, Inc.
https://es.wikipedia.org/wiki/B%C3%BAsqueda_en_el_espacio_de_estados
https://www.iagua.es/noticias/idrica/tendencias-inteligencia-artificial-2022-incorporando-
aprendizaje-procesos
IEEE Transactions on Neural Networks and Learning Systems. (n.d.). Retrieved March 25, 2023,
from https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=5962385
Journal of Artificial Intelligence Research (JAIR). (n.d.). Retrieved March 25, 2023, from
https://www.jair.org/index.php/jair
López de Mántaras Badia, R., & Meseguer gonzález , P. (2017). Inteligencia Artificial. CSIC
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/42319
24
FASE 2 - ESPACIOS DE ESTADO EN LA IA
https://www.elsevier.com/books/artificial-intelligence-a-new-synthesis/nilsson/978-1-
55860-535-0
https://www.ieee.es/Galerias/fichero/docs_investig/2022/DIEEEINV01_2022_EDUOLI_
Inteligencia.pdf
http://menteerrabunda.blogspot.com/2008/07/razonamiento-con-incertidumbre.html
25