O objetivo é: dado um produto, obter uma pequena lista de produtos comumente relacionados.
O pseudo-código abaixo pode ajudar:
funcao produtos_relacionados(cod_produto, max_itens): lista_codigos
vendas = listar_vendas_em_que_aparece(cod_produto)
produtos = listar_produtos_vendas(vendas)
agrupamento = contar_ocorrencia_produtos(produtos)
retorna agrupamentos[0, max_itens]
Conforme oraculo bem disse, há inúmeras formas de resolver, todas válidas. A solução que eu entreguei se assemelha à segunda sugestão dele e está um pouco mais detalhada. É a mais simples, pode ser entregue em menor tempo e sem guinadas bruscas.