Sei sulla pagina 1di 5

Universidade Federal de Ouro Preto – UFOP

Departamento de Computação e Sistemas


CSI203 - Organização e Arquitetura de Computadores I
Prof. Samira Santos da Silva

Primeiro Trabalho Prático – Implementação em Linguagem MIPS

Valor: 20 pontos
Data de Entrega: até 12/12/2017.
O trabalho prático deverá ser feito em grupos de 3 pessoas.

1. Descrição
O objetivo deste trabalho é exercitar os conhecimentos adquiridos em sala sobre a linguagem de
programação Assembly MIPS. Para isso, deverá ser implementado o Algoritmo de Kruskal, um
algoritmo para encontrar a árvore geradora mínima (minimal spanning tree – MST), ou seja, a
árvore de menor custo, em um grafo não direcionado com custos nas arestas.

Figura 1: Um grafo Figura 2: Árvore


simples com custos nas Geradora Mínima (de
arestas custo mínimo)

Seu programa deve ler primeiramente o valor de N, o número de nós que o grafo possui. Em
seguida, o programa deverá ler uma matriz NxN, a chamada matriz de adjacência de custos. Cada
valor na posição (i,j) da matriz corresponde ao custo da aresta que liga i a j. Caso esta aresta não
exista no grafo, o valor desse custo deve ser igual a 0. Em seguida, o algoritmo de Kruskal deve
ser executado sob essa matriz e as arestas que forem adicionadas na árvore geradora juntamente a
seus custos devem ser impressos na tela.
O exemplo de execução a seguir ilustra o que deve ser feito:

O algoritmo de Kruskal funciona da seguinte forma. Dado o grafo da Figura 1, arestas vão sendo
adicionadas à árvore geradora mínima começando da aresta com menor custo (uma aresta
somente é adicionada se não forma um ciclo no grafo). Esse processo se repete com as arestas
ainda não adicionadas até que o grafo esteja conexo (ou seja, exista pelo menos um caminho entre
quaisquer pares de nós).
O pseudocódigo abaixo ilustra o funcionamento do Algoritmo de Kruskal.

Todos os arquivos necessários para execução do código deverão ser entregues. Além disso, um
arquivo readme.txt informando as instruções de execução do seu código deverá ser
disponibilizado. Os códigos deverão estar comentados com a descrição da função de cada bloco de
instrução.

2. Observações:
• A consulta a documentações, manuais e tutoriais na Web é válida, desde que não haja
cópia explícita e as fontes sejam devidamente citadas.

• Busque utilizar instruções que foram vistas em sala de aula!

• Em caso de detecção de cópias, TODOS os envolvidos receberão a nota ZERO.

2.1 Entrega
A data de entrega será até o dia 12/12/2017 (23:59). Todo o código-fonte devidamente comentado
deverá ser entregue pelo moodle.
Eventualmente, entrevistas poderão ser marcadas com os alunos para que estes expliquem suas
implementações.

Atrasos:

Onde n é número de dias de atraso. Obs.: O primeiro dia de atraso começa a contar a partir das
00:00 horas do dia 13/12/2017.

3. Dicas
• Utilize o simulador MARS para executar e testar seu programa. Nele é possível acompanhar
passo-a-passo a execução do algoritmo, além de saber o valor de cada um dos registradores.

• Execute instrução a instrução, verificando se o resultado está sendo construído corretamente.

• Utilize os slides e o Guia Rápido do MIPS (link no site da disciplina) para revisar sobre a
linguagem MIPS e para obter os códigos de leitura e impressão de dados.
ANEXO – EXEMPLO de implementação do Algoritmo de Kruskal em C

Potrebbero piacerti anche