Este código usa uma estrutura de árvore para representar pré -requisitos. Está escrito em Python e usa um dicionário para representar a árvore. Cada chave é um nome de curso, e o valor é uma lista de seus cursos de pré -requisito. Isso permite vários pré -requisitos e evita dependências circulares (até certo ponto, veja as limitações abaixo).
`` `Python
Classe Pré -requisito:
def __init __ (self):
self.tree ={}
DEFT add_course (self, curso_name, pré -requisitos =nenhum):
"" "" Adiciona um curso à árvore do pré -requisito. "" "
Se os pré -requisitos não são:
Pré -requisitos =[]
self.tree [curso_name] =pré -requisitos
DEFT add_prerequisite (self, curso_name, pré -requisito_course):
"" "" Adiciona um pré -requisito a um curso. "" "
Se Course_name não em Self.tree:
self.add_course (curso_name) # Crie curso se não existir
self.tree [curso_name] .append (pré -requisito_course)
def check_prerequisites (self, curso_name, complete_courses):
"" "" Verifica se um aluno concluiu os pré -requisitos para um determinado curso. "" "
Se Course_name não em Self.tree:
Retornar true # curso não existe, então não há pré -reqs
Pré -requisitos =self.tree [curso_name]
para pré -requisito em pré -requisitos:
Se préreq não estiver em completed_courses:
retornar falso
retornar verdadeiro
def get_all_courses (self):
"" "" Retorna uma lista de todos os cursos no sistema. "" "
Lista de retorno (self.tree.keys ())
DEF Print_tree (self):
"" "Imprime a árvore de pré-requisito em um formato fácil de usar." ""
Para claro, pré -requisitos em self.tree.items ():
Se pré -requisitos:
print (f "{curso}:{pré -requisitos}")
outro:
print (f "{curso}:sem pré -requisitos")
Exemplo de uso
préreq_tree =pré -requisiteTee ()
Adicione cursos e pré -requisitos
Prereq_tree.add_course ("Cálculo I")
préreq_tree.add_course ("Calculus II", ["Cálculo I"])
préreq_tree.add_course ("Álgebra linear", ["Cálculo I"])
préreq_tree.add_course ("equações diferenciais", ["cálculo II", "álgebra linear"]))
préreq_tree.add_course ("Probabilidade e estatística")
préreq_tree.add_course ("aprendizado de máquina", ["Calculus II", "Probabilidade e Estatística"]))
Imprima a árvore
Prereq_tree.print_tree ()
#Verifique os pré -requisitos
complete_courses =["Cálculo I", "Cálculo II", "Álgebra Linear"]
Print (F "\ \ \ ncan Student Tome Equações diferenciais? {préreq_tree.check_prerequisites ('equações diferenciais', complete_courses)}")
complete_courses =["Cálculo I", "Probabilidade e Estatística"]
print (f "O aluno pode tomar aprendizado de máquina? {préreq_tree.check_prerequisites ('aprendizado de máquina', complete_courses)}")
complete_courses =["cálculo I", "probabilidade e estatística", "álgebra linear", "cálculo II", "equações diferenciais"]
print (f "O aluno pode tomar aprendizado de máquina? {préreq_tree.check_prerequisites ('aprendizado de máquina', complete_courses)}")
Print (F "\ nall cursos:{préreq_tree.get_all_courses ()}")
`` `
Limitações: *
Dependências circulares: Essa implementação não detecta explicitamente dependências circulares (por exemplo, A requer B e B requer A). Adicionar uma verificação para isso exigiria um algoritmo mais complexo (como a classificação topológica).
*
Manuseio de erro: Manuseio de erro mais robusto (por exemplo, para nomes de cursos inválidos) pode ser adicionado.
*
escalabilidade: Para um número muito grande de cursos, uma representação de árvore mais eficiente (por exemplo, usando uma biblioteca de gráficos dedicada como 'Networkx`) pode ser preferível.
Este exemplo aprimorado fornece uma base mais funcional e robusta para um sistema de gerenciamento de pré -requisito de estudantes. Lembre-se de expandi-lo com manuseio de erros mais sofisticado, validação de entrada e potencialmente uma interface gráfica do usuário (GUI) para uma experiência mais amigável.