Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

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.