Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Faça como eu fiz: construindo um sistema inteligente de recomendação

import heapq

class Produto:
def init(self, nome, categoria, probabilidade_conversao):
self.nome = nome
self.categoria = categoria
self.probabilidade_conversao = probabilidade_conversao

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

def heuristica(produto):
# Quanto maior a chance de compra, melhor a recomendação
return -produto.probabilidade_conversao

class AStarRecommendation:
def init(self, produtos, heuristica):
self.produtos = produtos
self.heuristica = heuristica
self.grafo = self.criar_grafo()

def criar_grafo(self):
    grafo = {}

    for produto in self.produtos:
        conexoes = []

        for outro_produto in self.produtos:
            if outro_produto != produto:
                conexoes.append(outro_produto)

        grafo[produto] = conexoes

    return grafo

def a_star(self, inicio, objetivo):
    fila_prioridade = []

    heapq.heappush(
        fila_prioridade,
        (self.heuristica(inicio), 0, inicio)
    )

    visitados = set()
    caminhos = {}

    while fila_prioridade:
        _, custo, atual = heapq.heappop(fila_prioridade)

        if atual in visitados:
            continue

        visitados.add(atual)

        if atual == objetivo:
            break

        for vizinho in self.grafoif vizinho not in visitados:
                h = self.heuristica(vizinho)

                heapq.heappush(
                    fila_prioridade,
                    (custo + 1 + h, custo + 1, vizinho)
                )

                caminhos[vizinho] = atual

    caminho = []
    produto_atual = objetivo

    while produto_atual in caminhos:
        caminho.insert(0, produto_atual)
        produto_atual = caminhos[produto_atual]

    return caminho

Livros da loja virtual

produtos = [
Produto("Python para Iniciantes", "Tecnologia", 0.92),
Produto("Inteligência Artificial", "Tecnologia", 0.88),
Produto("Banco de Dados", "Tecnologia", 0.75),
Produto("Gestão de Projetos", "Negócios", 0.65)
]

recomendador = AStarRecommendation(produtos, heuristica)

inicio =

1 resposta

Boa noite, Isis! Tranquilo?

Gostei demais da sua resposta, continue assim!

Mandou muito bem explorando o uso de estruturas de grafos para simular recomendações, apresentou com clareza a aplicação do algoritmo A* em Python e ainda destacou a lógica de heurística baseada em probabilidade de conversão. Esse exercício mostra criatividade, domínio de conceitos de busca e preocupação em aplicar técnicas de IA para problemas práticos de recomendação.

Para aprimorar sua solução, algumas boas práticas são:

  • Escalabilidade: permitir que o algoritmo funcione com grandes listas de produtos sem perder desempenho.
  • Expansão funcional: incluir pesos diferentes nas conexões (como categorias ou afinidade) para tornar as recomendações mais realistas.
  • Correção de sintaxe: ajustar os métodos __init__ (com dois underlines) e o loop for vizinho in self.grafo[...] para evitar erros de execução.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você considera mais interessante evoluir esse projeto adicionando pesos nas conexões para simular afinidade entre produtos ou expandindo para integrar dados reais de comportamento de usuários?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!