Vous êtes sur la page 1sur 4

Universidade Federal de Minas Gerais ncia da Computac o Departamento de Cie a Algoritmos e Estruturas de Dados III Primeiro Semestre de 2014

Trabalho Pr atico 2 - Surpresa na Prova

Introdu c ao
Um professor de Teoria de Grafos do MIT, encucado com a similaridade das respostas de sua u ltima prova, decidiu fazer um estudo inovador em sua turma. Ele distribuiu uma prova onde havia apenas uma quest ao de m ultipla escolha, com N op c oes. Cada aluno deveria marcar quais op co es ele achasse correta, podendo marcar desde apenas uma op c ao at e todas as N. O objetivo do professor n ao era corrigir se o aluno respondeu certo ou errado, e sim avaliar qual a semelhan ca entre as resposta dada por cada aluno. Ao corrigir as provas o professor ent ao analisou as respostas. Ele mapeou esse estudo em um grafo, para ser poss vel avaliar tal semelhan ca. Com isso, o professor quer descobrir qual o maior conjunto de alunos que n ao marcaram nenhuma resposta igual, com o objetivo de identicar o maior n umero de alunos que n ao trocaram respostas entre si.

Solu co es
Para este trabalho, voc e dever a apresentar duas solu c oes: uma que apresente a solu c ao otima (solu c ao exata) e outra solu c ao - n ao necessariamente otima - obtida atrav es de uma heur stica. Caso voc e consiga desenvolver - e provar - que sua heur stica e um algoritmo aproximativo, voc e ganhar a tr es pontos extras!

Entrada
O arquivo de testes pode conter diversas inst ancias. A primeira linha do arquivo cont em um inteiro com o n umero de inst ancias presentes no teste. Na primeira linha de cada inst ancia estar ao dois inteiros A e N, separados por um espa co em branco, onde A e o n umero de alunos e N eo n umero de op c oes de respostas para a quest ao da prova. As pr oximas N linhas conter ao os n umeros dos alunos que marcaram cada uma das op c oes, separados por um espa co em branco. Ou seja, na i- esima linha estar a os n umeros dos alunos que marcaram aquela i- esima op c ao. Cada aluno ser a identicado por um n umero que vai de 1 ao valor de A. A seguir temos um exemplo de entrada do programa: Entrada: 2 5 1 2 3 8 4 5 5 4 1

1 3 3 1 1 6 1 1 2 1 1 2 1 1 3 5

4 4 5 5 5 4 10 2 4 6 6 4 2 5 4 3 2 5

Nesse exemplo, temos que na primeira inst ancia 5 alunos e a prova apresentava 8 op c oes de escolha. Os alunos 1, 4 e 5 marcaram a op c ao 1. Os alunos 2 e 5 marcaram a op c ao 2 e assim por diante. J a na segunda inst ancia temos 6 alunos e 10 op c oes de resposta, onde os alunos 1, 2 e 4 marcaram a op c ao 1 e assim por diante. Al em disso, o professor observou que na prova nenhuma op c ao deixou de ser marcada, ou seja, sempre haver a pelo menos um aluno que marcou uma determinada op c ao.

Sa da
Para cada inst ancia de teste, dever a ser impresso no arquivo de sa da a quantidade de alunos que fazem parte do maior conjunto que n ao apresentou nenhuma resposta igual. A sa da de cada inst ancia deve estar em uma linha, sem espa cos em branco no nal. Entre duas inst ancias distintas deve existir espa NAO co em branco. Veja a sa da do exemplo anterior: Sa da: 3 4

Entrega
A data de entrega desse trabalho e 04/04/2014. A penaliza c ao por atraso obedece ` a seguinte f ormula 2d1 /0.32%, onde d s ao os dias u teis de atraso. Submeta apenas um arquivo chamado <numero matricula> <nome>.zip. N ao utilize espa cos no nome do arquivo. Ao inv es disso utilize o caractere . N ao inclua arquivos compilados ou gerados por IDEs. Apenas os arquivos abaixo devem estar presentes no arquivo zip. Makele Arquivos fonte (*.c e *.h) Documentacao.pdf N ao inclua nenhuma pasta. Coloque todos os arquivos na raiz do zip. Siga rigorosamente o formato do arquivo de sa da descrito na especica c ao. Tome cuidado com whitespaces e formata c ao dos dados de sa da SERA NECESSARIO IMPRESSA! NAO ENTREGAR DOCUMENTAC AO Ser a adotada m edia harm onica entre as notas da documenta c ao e da execu c ao, o que implica que a nota nal ser a 0 se uma das partes n ao for apresentada.

Documenta c ao
A documenta c ao n ao deve exceder 10 p aginas e deve conter pelo menos os seguintes itens: Uma introdu c ao do problema em quest ao. Modelagem e solu c ao proposta para o problema. O algoritmo deve ser explicado de forma clara, possivelmente atrav es de pseudo-c odigo e esquemas ilustrativos. An alise de complexidade de tempo e espa co da solu co implementada. Experimentos variando-se o tamanho da entrada e quaisquer outros par ametros que afetem signicativamente a execu c ao. Espera-se a utiliza c ao de tabelas e gr acos, com suas respectivas an alises. Especica c ao da(s) m aquina(s) utilizada(s) nos experimentos realizados. Uma breve conclus ao do trabalho implementado.

C odigo
O c odigo deve ser obrigatoriamente escrito na linguagem C. Ele deve compilar e executar corretamente nas m aquinas Linux dos laborat orios de gradua c ao. O utilit ario make deve ser utilizado para auxiliar a compila c ao, um arquivo Makele deve gerar dois execut aveis com o nome tp2e e tp2h que dever ao obrigatoriamente ser capazes de receber o nome de um arquivo de entrada - de onde ser ao lidas as inst ancias do problema - e o nome de um arquivo de sa da - onde ser ao gravadas as solu c oes. O comando para executar as solu c oes dever a seguir o exemplo abaixo: /.tp2e input.txt output.txt /.tp2h input.txt output.txt As estruturas de dados devem ser alocadas dinamicamente e o c odigo deve ser modularizado (divis ao em m ultiplos arquivos fonte e uso de arquivos cabe calho .h) Vari aveis globais devem ser evitadas. Parte da corre c ao poder a ser feita de forma automatizada, portanto siga rigorosamente os padr oes de sa da especicados, caso contr ario sua nota pode ser prejudicada. Legibilidade e boas pr aticas de programa c ao ser ao avaliadas.