Descrição do Problema
Entradas Exemplo de Entrada Exemplo de Saída O algoritmo Data Limite para Entrega |
Descrição do Problema - Ordenação ParcialEm muitas situações é necessário encadear atividades considerando a precedência entre elas. Por exemplo, a construção de uma casa pode ser descrita por uma série de atividades como
Esta atividade de laboratório consiste em construir um, dado uma relação de atividades e as relações de precedência entre elas, determinar
EntradasA relação das atividades será através de um arquivo de entrada, 'atividades.txt', contento o seguinte:Exemplo de Entrada12 Exemplo de SaídaLista 1 (atividade por vez)6 MG montagem do girabrequim7 MB montagem das bielas8 MV montagem do comando de valvulas9 MP montagem dos pneus1 CH montagem do chassi5 MM montagem do motor O algoritmo1 - Sugestão para a representação dos dadosRepresente cada atividade por uma estrutura contendo:Cada nó dessa lista de 'sucessoras' pode ser representado por uma estrutura contendo Mantenha as as estruturas que descrevem as atividades num vetor (alocado dinamicamente).
2 - Sugestão para a estrutura geral do algoritmo (p/ uma atividade por vez0. Criar uma fila F, inicialmente vazia. 1. Percorrer o vetor de atividades, colocando numa fila F aquelas que já podem ser executadas (não dependem de nenhuma outra atividade). 2. Enquanto a fila tiver alguma atividade a ser executada 2.1 - retire a primeira atividade A da fila F e a coloque na saída. 2.2 - para cada atividade S, 'sucessora' de A, decremente o contador de predecessoras. Se esse contador chegou a zero, coloque S na fila F (ela já pode ser executada). 3. Quando a fila F estiver vazia, se o número de atividades escritas na saída for menor que o número de atividades da lista, ocorreu um erro: existe pelo menos um ciclo nas relações de dependência. Data Limite para EntregaO projeto deverá ser entregue por email ao assistente de ensino até o dia 30/08/00 |