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

Resolviendo problemas y busquedas

Se crea la clase producto que almacena atributos basicos, el metodo a* se crea en AStarRecommendation y la heurisitica en la etapa 3 con la definición AStarRecommendation. y en la etapa cuatro se crean productos, para probar su funcionamiento.
import heapq

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

def __repr__(self):
    return f"{self.nombre} ({self.categoria})"

class AStarRecommendation:
def init(self, productos, heuristica):
self.productos = productos
self.heuristica = heuristica # Función heurística: probabilidad de conversión
self.grafo = self.crear_grafo()

def crear_grafo(self):
    # Creando un grafo simplificado de productos, donde cada producto se conecta al siguiente
    grafo = {}
    for producto in self.productos:
        grafo[producto] = [p for p in self.productos if p != producto]
    return grafo

def a_star(self, inicio, objetivo):
    fila_prioridad = []
    heapq.heappush(fila_prioridad, (0 + self.heuristica(inicio), 0, inicio))  # f = g + h
    visitados = set()
    caminos = {}

    while fila_prioridad:
        _, g, actual = heapq.heappop(fila_prioridad)

        if actual in visitados:
            continue

        visitados.add(actual)
        if actual == objetivo:
            break

        for vecino in self.grafo[actual]:
            if vecino not in visitados:
                h = self.heuristica(vecino)
                heapq.heappush(fila_prioridad, (g + 1 + h, g + 1, vecino))  # g es el costo acumulado
                caminos[vecino] = actual

    # Recuperando el camino
    camino = []
    producto = objetivo
    while producto in caminos:
        camino.insert(0, producto)
        producto = caminos[producto]
    return camino

def heuristica(producto):
# Cuanto mayor sea la probabilidad de conversión, más atractivo será el producto
return -producto.probabilidad_conversion # Vamos a minimizar la heurística (cuanto menor, mejor)

Ejemplo de productos

productos = [
Producto("Producto A", "Categoría 1", 0.9),
Producto("Producto B", "Categoría 1", 0.8),
Producto("Producto C", "Categoría 2", 0.7),
Producto("Producto D", "Categoría 2", 0.6),
]

Creando el sistema de recomendación

recomendador = AStarRecommendation(productos, heuristica)

Buscar el mejor camino entre dos productos

inicio = productos[0] # Producto A
objetivo = productos[2] # Producto C

camino_recomendado = recomendador.a_star(inicio, objetivo)

Mostrando la recomendación

print("Camino recomendado:")
for p in camino_recomendado:
print(p)

1 respuesta

Hola Luis, espero que estés bien.

Gracias por tu aporte, es bueno ver los diferentes puntos de vista, eso enriquece nuestros conocimientos.

Si tienes alguna pregunta sobre el contenido de los cursos, estaremos aquí para ayudarte.

Te recomiendo que puedes interactuar con el resto de nuestros compañeros por nuestro Discord.

En virtud de que en Discord el alcance es mayor, la interacción es inmediata y llega a más compañeros, y el foro solo quedaría para esclarecer cualquier duda que puedas tener sobre el contenido de los cursos.

De esa manera, si tienes algún comentario, opinión, recomendación o algún consejo sea por el Discord — con certeza por ahí llegará a más personas.

Si este post te ayudó, por favor, marca como solucionado ✓. ¡Continúa con tus estudios!