INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 00/006 o Semestre RESOLUÇÃO DA REPESCAGEM DO o TESTE I. (,+,+,0 =,0 val.) ) Considere o seguinte grafo. d f i l a c g h b e j k Considere a aplicação de uma procura em largura primeiro (BFS) com fonte no vértice a. Calcule o valor da seguinte expressão: d[d] + d[ f ] + d[i] + d[g] + d[ j] + d[l] Solução: 4. /
) Considere o grafo da figura. a c s t b Calcule o grafo de componentes fortemente ligados, indicando em cada caixa quais os nós que ficam no mesmo componente. Solução: s abc t /
) Indique qual das seguintes frases está incorrecta. a. O número de SCCs num grafo G = (V,E), dirigido, é O(V ). b. A complexidade de listar os elementos ligados de um grafo G = (V,E) não dirigido O(V + E). c. A complexidade para identificar SCCs num grafo G = (V, E), dirigido e denso, é O(V logv ). d. A existência de múltiplas MSTs implica a existência de múltiplas ocorrências de pelo menos um valor de peso dos arcos. e. Em grafos dirigidos, o número de ordenações topológicas no pior caso é Ω( V ). f. Num grafo G = (V,E), dirigido, acíclico, a existência de única ordenação topológica (v,...,v k ) implica a existência de um único caminho entre v e v k em G. g. A complexidade para identificar SCCs num grafo G = (V, E), dirigido, é, no pior caso, Ω(V + E). h. A complexidade do algoritmo de Kruskal é O((V + E)logV ), quando é baseado na utilização de um amontoado. i. O número de operações de colapsagem de árvores no algoritmo de Boruvka é O(logV ). Solução: A resposta certa é a f. /
II. (,0+,0+,0 =,0 val.) ) Considere a aplicação do algoritmo de Dijkstra no grafo usando o vértice s como fonte. a 8 b c e s 0 d g k i j f h Seja d (k) [u] o valor de d[u] após a aplicação de k passos do algoritmo de Dijkstra. Indique o valor da seguinte expressão: d (7) [c] + d () [a] + [ j] + d () [b] + d () [c] Solução A resposta certa é 4. 4/
) Considere o seguinte grafo dirigido e pesado. 4-0 -0 0 - -0 6 0-0 - Seja d (k) i j o valor d i j da matriz D k calculada durante a aplicação do algoritmo de Floyd- Warshall. Calcule os valores:, d(4) 6, d(4) 6, d(4), d(4) 6 e d(4) 46. Solução: 6 6 6 46 0 0 0 /
) Considere um grafo G = (V,E), dirigido e com função de peso ω : E {0,,,}, onde n = V e m = E. Indique qual é a menor complexidade assimptótica de um algoritmo para determinar os caminhos mais curtos para todos os vértices a partir de um vértice s V. a. n lg m b. n lg m c. n + m d. n m e. m lg n f. m g. n h. n i. m lg n Solução: A resposta certa é a c. 6/
III. (,0+,0+,0 = 6,0 val.) ) Considere a rede de fluxo da figura. a 4 s b d t Indique os caminhos de aumento descobertos quando aplica o algoritmo de EDMONDS-KARP para determinar o fluxo máximo. Solução: set, sact, sadet, sbadet, sbacdet c e 4 7/
) Considere a rede de fluxo da figura. 7 a 4 s b d t Qual é o excesso do vértice a após as duas primeiras operações de descarga na execução do algoritmo RELABEL-TO-FRONT. Assuma que a lista de vértices a percorrer no ciclo principal é inicializada com {a, b, c, d, e}. Solução: A resposta certa é 0. c e 4 8/
) Qual é a melhor complexidade assimptótica de um algoritmo que determine os arcos de um dos possíveis cortes mínimos após aplicar um dos algoritmos estudados para determinar o fluxo máximo. a. O(V E) b. O(V + E) c. O(V ) d. O(V E) e. O(V + E) f. O(E ) Solução: A resposta correcta é a b. 9/
IV. (,0+,0 = 4,0 val.) ) O algoritmo de procura em profundidade primeiro permite, à medida que os vai percorrendo, classificar os arcos em Arcos de árvore (tree edges): arcos na floresta DF Arcos para trás (back edges): ligam vértice u a vértice v antecessor na mesma árvore DF Arcos para a frente (forward edges): ligam vértice u a vértice v descendente na mesma árvore DF Arcos de cruzamento (cross edges): na mesma árvore DF, se u (ou v) não antecessor de v (ou u), ou entre árvores DF diferentes. Esta classificação é determinada pelos tempos de descoberto e de fim, e pela cor do vértice v na altura em que o arco é percorrido. Classifique os seguintes arcos (u,v), ou demonstre que esta situação não pode ocorrer. a. d[v] < f [v] < d[u] < f [u], cor[v] = branca b. d[u] < d[v] < f [v] < f [u], cor[v] = preta Solução: a. Não pode acontecer. Se v já terminou quando se visita u, então tem que ter cor preta. b. Arco para a frente. 0/
) Seja G(V,E) uma rede de fluxo, seja f um fluxo definido em G e seja p um caminho de aumento na rede residual G f. A função f p : V V R é definida como: c f (p) : se (u,v) p f p (u,v) = c f (p) : se (v,u) p 0 : caso contrário Prove que f p é um fluxo em G f com valor f p = c f (p) > 0. Solução: A função f p verifica as três propriedades que definem uma função de fluxo: a. é fácil observar que f p (u,v) c f (u,v), (u,v) E. b. f p (u,v) = f p (v,u), (u,v) E: se (u,v) p, f p (u,v) = f p (v,u) = c f (p), caso contrário f p (u,v) = f p (v,u) = 0. c. v V f p (u,v) = 0. Notar que p é um caminho simples, portanto, ou não passa por u e então f p (u,v) = 0, v V, ou passa uma única vez, (t,u) p e (u,v) p, vindo v V f p (u,v) = f p (t,u) + f p (u,v) = c f (p) + c f (p) = 0. Por definição, p é um caminho entre s e t em G f e, também por definição, um arco (u,v) pertence à rede residual G f sse c f (u,v) > 0, logo f p = c f (p) > 0. /