Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haz lo que hicimos en el aula

De acuerdo a lo aprendido en clase, una solución en Python de acuerdo a lo solicitado sería:

import heapq

==========================

Clase Producto

==========================

class Producto:
def init(self, nombre, categoria, probabilidad_conversion):
self.nombre = nombre
self.categoria = categoria
self.probabilidad_conversion = probabilidad_conversion

def __repr__(self):
    return self.nombre

==========================

Clase AStarRecommendation

==========================

class AStarRecommendation:

def __init__(self):
    self.grafo = {}

# Agregar producto
def agregar_producto(self, producto):
    if producto not in self.grafo:
        self.grafo[producto] = []

# Conectar dos productos
def conectar(self, producto1, producto2, costo=1):
    self.grafo[producto1].append((producto2, costo))
    self.grafo[producto2].append((producto1, costo))

# Heurística
# Mientras mayor sea la probabilidad de conversión,
# menor será el valor heurístico.
def heuristica(self, producto):
    return 1 - producto.probabilidad_conversion

# Algoritmo A*
def a_estrella(self, inicio, objetivo):

    cola = []
    heapq.heappush(cola, (0, inicio))

    vino_de = {}
    costo = {inicio: 0}

    while cola:

        _, actual = heapq.heappop(cola)

        if actual == objetivo:
            camino = []

            while actual in vino_de:
                camino.append(actual.nombre)
                actual = vino_de[actual]

            camino.append(inicio.nombre)
            camino.reverse()
            return camino

        for vecino, peso in self.grafo[actual]:

            nuevo_costo = costo[actual] + peso

            if vecino not in costo or nuevo_costo < costo[vecino]:
                costo[vecino] = nuevo_costo

                prioridad = nuevo_costo + self.heuristica(vecino)

                heapq.heappush(cola, (prioridad, vecino))

                vino_de[vecino] = actual

    return None

==========================

Crear productos

==========================

laptop = Producto("Laptop Gamer", "Computadoras", 0.90)
mouse = Producto("Mouse Inalámbrico", "Accesorios", 0.75)
teclado = Producto("Teclado Mecánico", "Accesorios", 0.80)
monitor = Producto("Monitor 27 pulgadas", "Monitores", 0.85)
audifonos = Producto("Audífonos Gamer", "Audio", 0.70)

==========================

Crear sistema

==========================

sistema = AStarRecommendation()

productos = [laptop, mouse, teclado, monitor, audifonos]

for p in productos:
sistema.agregar_producto(p)

Grafo simplificado

sistema.conectar(laptop, mouse)
sistema.conectar(mouse, teclado)
sistema.conectar(teclado, monitor)
sistema.conectar(monitor, audifonos)
sistema.conectar(laptop, monitor)
sistema.conectar(mouse, audifonos)

==========================

Buscar mejor camino

==========================

camino = sistema.a_estrella(laptop, audifonos)

print("Mejor camino encontrado:")
print(" -> ".join(camino))

Explicación de la solución

  1. Clase Producto

Representa cada producto.
Contiene:
nombre
categoría
probabilidad de conversión

  1. Clase AStarRecommendation

Construye un grafo donde los productos son nodos.
Permite agregar productos y conectarlos.
Implementa el algoritmo A* para encontrar el mejor recorrido.

  1. Heurística
    Como una mayor probabilidad de conversión es mejor, la heurística devuelve un valor menor para esos productos, haciendo que el algoritmo los priorice durante la búsqueda.

def heuristica(producto):
return 1 - producto.probabilidad_conversion

  1. Prueba del sistema
    Se crean cinco productos, se conectan entre sí y se busca el mejor camino desde Laptop Gamer hasta Audífonos Gamer.

Resultado esperado

Una salida posible es:
Mejor camino encontrado:
Laptop Gamer -> Mouse Inalámbrico -> Audífonos Gamer

Conclusión

Este ejemplo demuestra cómo adaptar el algoritmo A* a un sistema de recomendación simplificado:

Los productos son los nodos del grafo.
Las conexiones representan posibles recomendaciones.
La heurística utiliza la probabilidad de conversión para favorecer los productos con mayor posibilidad de compra.
El algoritmo A* encuentra el camino más conveniente combinando el costo acumulado y la heurística, produciendo recomendaciones más inteligentes.

1 respuesta

¡Hola!

Espero que estés bien. Aprecio mucho tu participación en el foro.

Recuerda que puedes regresar siempre que necesites aclarar alguna duda o simplemente compartir más ideas.

¡Ánimo y sigue adelante con tu aprendizaje!

No olvides marcar esta publicación como solucionada. ¡Es una gran ayuda para toda la comunidad! ✓ ¡Mucho éxito en tus estudios!