Este projeto foi desenvolvido por Larissa Gondim, Laura Morais e Maria Luiza Uchoa, alunas do segundo período de Ciência da Computação na UFPB. O sistema utiliza lógica de programação para auxiliar na investigação de crimes em um cenário de museu.
O sistema simula um processo investigativo correlacionando evidências para identificar suspeitos com base em:
- Presença no local e análise de oportunidade.
- Eventos detectados e vestígios digitais.
- Habilidades técnicas compatíveis com o crime.
- Ausência ou presença de álibi.
- Sistema de pontuação para classificação de níveis de suspeita.
- Prolog (SWI-Prolog) para o motor de inferência.
- Python para integração e lógica de sistema.
- Streamlit para a interface web interativa.
- PySwip para a comunicação entre Python e Prolog.
O projeto está organizado na seguinte estrutura de diretórios:
src/
├── python/
│ ├── app.py (Interface Web)
│ └── main.py (Interface CLI)
└── prolog/
└── sistema.pl (Base de Conhecimento e Regras)
O sistema oferece ferramentas completas para a análise forense:
- Ranking de Suspeitos: Ordenação de indivíduos por nível de suspeita (Alta, Média ou Baixa) baseada em pontuação acumulada.
- Explicação Detalhada: O sistema gera um relatório textual explicando os motivos da pontuação de cada suspeito (Local, Digital, Profissão e Álibi).
- Inferência Reversa: Identifica quais habilidades são necessárias para um crime específico e quais pessoas as possuem.
- Suporte a Múltiplos Crimes: Capacidade de analisar diferentes tipos de ocorrências, como roubo de quadros ou furtos de joias.
- Análise de Presença: Cruzamento de dados de localização e horário para determinar a viabilidade da autoria.
É necessário ter o SWI-Prolog instalado no sistema e as dependências Python:
pip install pyswip streamlitPara executar a verificação interativa via terminal:
python src/python/main.pyPara executar a aplicação no navegador:
streamlit run src/python/app.pyAo consultar um suspeito como Larissa, o sistema analisa os fatos na base sistema.pl:
- Entrada: Seleção do crime e nome do suspeito.
- Processamento: O Prolog verifica que a pessoa estava na sala principal, possui a profissão de restauradora, tem mensagens apagadas e possui álibi confirmado.
- Saída: Gera uma pontuação total e classifica o nível de suspeita, fornecendo a justificativa detalhada de cada ponto.
Este projeto foi desenvolvido com fins didáticos para a disciplina Lógica aplicada à Ciência da Computação, focando na aplicação de sistemas especialistas em cenários reais de tomada de decisão baseada em regras.