Tarefa 1: destrinchar documentação e código
Atenção: Esta tarefa tem um estilo muito diferente as outras, por isso tem mais tempo que o normal, em sobreposição com outras tardefas que serão dadas.
O objetivo é ler a documentação e o código fonte do Sage,
produzindo uma descrição sucinta em alto nível do 4 backends que
implementam grafos.
A documentação aparece no manual a partir de Overview of (di)graph data structures.
O código fonte, numa
instalação local, fica em
/usr/lib/python3/dist-packages/sage
, mas é acessível também no github.
Por uma
descrição em alto nível quero dizer algo legível por alguém com razoável
conhecimento técnico (p.e., o professor), mas sem interesse nos
detalhes (p.e., quase todo mundo). Mais precisamente:
- Usa, de forma apropriada, terminologia e conceitos de estruturas de dados, como listas
ligadas, árvores, vetores, e conceitos de teoria dos grafos.
- O tipo das variáveis implementadas não interessa, mas interessa a
semântica. Por exemplo, não interessa que existe uma variável tipo
int
chamada num_verts
; o que interessa é que o número de vértices é
parte da estrutura. Além disso, podem existir dados que fazem parte
da estrutura, mas não têm muita importância para o entendimento e não precisam ser mencionados.
- A documentação diz que uma ou outra estrutura prioriza armazenamento ou velocidade.
Alguma explicação sobre como isso se reflete na implementação também é bom.
- Algumas estruturas são mais flexíveis do que outras com
relação à possibilidade de anexar mais informação (rótulos, por
exemplo). Gostaria de ter explicação de como a estrutura força isso.
Tudo isso tem a ver com alto nível. Sucinto significa tentar escrever
um texto razoavelmente curto, contendo toda a informação necessária.
Não entregue o primeiro texto que produziu, reescreva pelo menos uma vez.
Entrega
Este trabalho poderá ser entregue por conjuntos de até três pessoas.
No caso de conjuntos de pelo menos duas pessoas, sigam os seguinte requisitos:
- Só um entrega. O texto traz claramente no topo a identificação
de todos os membros do grupo.
- Junto com o texto,
adicionem um pequeno memorial sobre o método de trabalho. Provavelmente
envolveu leitura, explicação, discussão, escrita, reescrita.
Normalmente as pessoas têm papéis diferentes, e isso não está
errado, mas contem a história. De novo, sucinto.
- O acima pressupõe uma colaboração real entre os membros do
grupo. Se em algum grupo tem um que trabalha e carrega dois folgados nas
costas, paciência.
Não há restrições para trabalhos entregues pelo conjunto vazio.
Data máxima de entrega: 18/10/2023. Tentem entregar antes.
Arnaldo Mandel <am@ime.usp.br>
Última modificação: Wed Aug 9 10:53:55 -03 2023
por
am