Grafos - Problema do caixeiro-viajante V. Problema do caixeiro-viajante Considere-se um grafo em que os vértices representam cidades e as arestas (ou arcos) representam as estradas de uma dada região (a cada aresta está associada a distância entre cidades). O problema é calcular o ciclo de menor distância total que, tendo início e fim na cidade “X”, passe em todas as cidades uma única vez. Este problema, designado por problema do caixeiro-viajante (travelling salesman problem), implica calcular no grafo um ciclo (ou circuito) de Hamilton de encargo total mínimo. O tempo necessário à resolução deste problema cresce exponencialmente com o número de vértices do grafo. Só o método de enumeração (identificação de todos os ciclos possíveis) garante o cálculo da solução óptima do problema mas tal método é impraticável. Veja-se que se um computador for capaz de tratar cerca de 10000 ciclos por segundo, necessitará aproximadamente de 18 segundos para calcular o óptimo num grafo com 10 vértices, 50 dias para um grafo com 15 vértices, 2 anos para um grafo com 16 vértices e 193000 anos para um grafo com 20 vértices! É a enormidade destes tempos que tornou este problema um dos mais famosos e “não resolvidos” problemas matemáticos. Neste texto, apresentam-se, para cálculo, três métodos heurísticos e um método exacto do tipo ”branch and bound”. 1. Método do vértice adjacente mais próximo É um método aproximado que é aplicado do seguinte modo: • Selecciona-se arbitrariamente um vértice “vi ” para início do ciclo • Selecciona-se dos vértices ainda não seleccionados o vértice “vk” que está à menor distância de “vi”, ficando a cadeia vi , vk . Repete-se este procedimento para o último vértice agregado até esgotar todos os vértices do grafo Veja-se a sua aplicação no grafo orientado com a seguinte matriz de distâncias (km): A A B C D E 10 18 14 8 B 16 20 18 12 C 12 18 10 12 D 18 20 18 E 16 20 16 8 12 Vértice inicial : A Vértice, não seleccionado, mais próximo de A : C (12 km) Vértice, não seleccionado, mais próximo de C : E (16 km) Vértice, não seleccionado, mais próximo de E : B (12 km) Vértice, não seleccionado, mais próximo de B : D (20 km) Vértice, não seleccionado, mais próximo de D : A (14 km) Circuito “quase óptimo” : A ; C ; E ; B ; D ; A ; distância total = 74 km Nota: Diz-se quase óptimo por não resultar de um método exacto. O circuito óptimo tem distância total de 66 km. INVESTIGAÇÃO OPERACIONAL (MS) V-1 Grafos - Problema do caixeiro viajante 2. Método da inserção com menor encargo É um método aproximado que é aplicado do seguinte modo: • Selecciona-se o sub ciclo (sub circuito) “i, j, i” associado a Min {cij + cji } (escolha arbitrária se houver empate) • No sub ciclo (sub circuito) corrente, calcular para cada ligação do tipo (u,v) a inserção do vértice “k” (não seleccionado) a que corresponda o aumento mínimo de distância dado por Min {cuk + ckv – cuv}. Repetir este procedimento até ter seleccionado todos os vértices do grafo. Veja-se a sua aplicação no grafo orientado com a seguinte matriz de distâncias (km): A A B C D E B 16 10 18 14 8 C 12 18 20 18 12 10 12 D 18 20 18 E 16 20 16 8 12 Escolha do sub circuito inicial A B C D ABA=26 ACA=30 BCB=38 ADA=32 BDB=38 CDC=38 AEA=24 BEB=32 CEC=28 DED=20* Sub circuito a estudar : DED com a distância total de 20 km D 8 E 12 D Inserções possíveis : No par D,E ou no par E,D D 8 14 A 18 E 16 20 10 8 12 A 16 C Vértice a inserir A B C B C Aumento de distância de D para E 14+16-8 = 22 18+20-8 = 30 10+16-8 = 18* D 18 20 12 B V-2 12 Aumento de distância de E para D 8+18-12 = 14* 12+20-12 = 20 12+28-12 = 28 28 Grafos - Problema do caixeiro-viajante O menor encargo de inserção resulta da escolha do vértice “A” para inserir no par E, D ficando o sub circuito DEAD com distância total de 34 km (sub circuito anterior de 20 km, aumentado com 14 km). Sub circuito a estudar : DEAD com distância total de 34 km D 8 E 8 A 18 D 18 D Inserções possíveis : No par D,E ou no par E,A ou no par A,D D 8 E 18 10 B 8 20 12 16 12 C B A 10 16 18 12 C B 20 28 C Estudo da inserção Vértice a inserir B C Aumento de distância de D para E 18+20-8 = 30 10+16-8 = 18* Aumento de distância de E para A 12+10-8 = 14* 12+18-8 = 22 Aumento de distância de A para D 16+20-18 = 18* 12+28-18 = 22 O menor encargo de inserção resulta da escolha do vértice “B” para inserir no par E,A ficando o sub circuito DEBAD com distância total de 48 km (sub circuito anterior de 34 km, aumentado com 14 km). A inserção do último vértice no sub circuito corrente conduz aos seguintes circuitos: DCEBAD com distância total de 66 km ; DECBAD com distância total de 68 km ; DEBCAD com distância total de 74 km ; DEBACD com distância total de 70 km ; Circuito “quase óptimo” : DCEBAD; distância total = 66 km INVESTIGAÇÃO OPERACIONAL (MS) V-3 Grafos - Problema do caixeiro viajante 3. Método da inserção com maior afastamento É um método aproximado que é aplicado do seguinte modo: • Selecciona-se o sub ciclo (sub circuito) “i, j, i” associado a Max {cij + cji } (escolha arbitrária se houver empate) • Selecciona-se um vértice “k” dos não inseridos face à regra seguinte: - regista-se a menor distância de cada um dos vértices, já pertencentes ao sub ciclo (sub circuito) corrente, aos vértices “k” a inserir; - escolhe-se, para inserção, o vértice “k” onde seja maior a distância registada (máximo dos mínimos); • No sub ciclo (sub circuito) corrente, calcular para cada ligação do tipo (u,v) a inserção do vértice “k” (agora seleccionado) a que corresponda o aumento mínimo de distância dado por Min {cuk + ckv – cuv}. Regressar à selecção de novo vértice para inserir até ter seleccionado todos os vértices do grafo. Veja-se a sua aplicação no grafo orientado com a seguinte matriz de distâncias (km): A A B C D E B 16 10 18 14 8 C 12 18 20 18 12 10 12 D 18 20 18 E 16 20 16 8 12 Escolha do sub circuito inicial A B C D ABA=26 ACA=30 BCB=38* ADA=32 BDB=38* CDC=28 AEA=24 BEB=32 CEC=28 DED=20 Sub circuito a estudar : BCB com a maior distância total (38 km; escolha arbitrária pois há empate) B 18 C 20 B Escolha do vértice para inserção B C Min V-4 Distância para vértices inseríveis A D E 10 20 20 18 18 16 10 18* 16 Obs. Máximo dos mínimos = 18. Inserir D Grafos - Problema do caixeiro-viajante Inserções possíveis : No par B,C ou no par C,B B 18 C 20 18 D Aumento de distância de D para E 20+10-18 = 12* D B 18 10 D Vértice a inserir 20 Aumento de distância de E para D 28+18-20 = 16 O menor encargo de inserção é no par B, C ficando o sub circuito BDCB com distância total de 50 km (sub circuito anterior de 38 km, aumentado com 12 km). Sub circuito a estudar : BDCB com distância total de 50 km Escolha do vértice para inserção Vértices inseríveis A E 10 20 18 16 14 8 B C D Min 10 Obs. 8 Máximo dos mínimos = 10. Inserir A Inserções possíveis : No par B,D ou no par D,C ou no par C,B B 20 D 10 18 A 10 14 C 12 20 18 A Vértice a inserir A B 16 A Aumento de distância de B para D 10+18-20 = 8* Aumento de distância de D para C 14+12-10 = 16 Aumento de distância de C para B 18+16-20 = 14 O menor encargo de inserção é no par B,D ficando o sub circuito BADCB com distância total de 58 km (sub circuito anterior de 50 km, aumentado com 8 km). A inserção do último vértice no sub circuito corrente conduz aos seguintes circuitos: BEADCB com distância total de 76 km ; BAEDCBcom distância total de 68 km ; BADECBcom distância total de 60 km ; BADCEB com distância total de 66 km ; Circuito “quase óptimo” : BADCEB; distância total = 66 km INVESTIGAÇÃO OPERACIONAL (MS) V-5 Grafos - Problema do caixeiro viajante 4. Método de Little 1 a. Generalidades O grafo da figura representa uma rede rodoviária tendo B associada a cada uma das arestas a distância (km) entre os vértices extremos. Uma viatura de uma empresa situada em "A" necessita 14 A 9 entregar encomendas em B, C, D, E (clientes) e regressar à empresa. 9 C 9 13 12 15 6 14 Se pretender passar uma e só uma vez em cada vértice e percorrer a menor distância total qual o(s) itinerário(s) a E 7 D utilizar? Considere-se por exemplo o ciclo hamiltoniano "A - B - C - D - E" de distância total 51 km. Se associarmos ao grafo um problema de afectação podemos dizer que "A" é afectado a "B", "B" a "C", …, "E" a "A". Se calcularmos a afectação óptima no quadro da matriz do grafo obtêm-se os A pares assinalados sendo o valor de Min f(X) = 45 km. A B C D E A afectação óptima é A - B - E - D - C - A que sendo um ciclo de Hamilton de valor óptimo 45 km é o itinerário de menor distância a escolher para a viatura da empresa. Se a afectação óptima constituir um ciclo de Hamilton este pode ser calculado B 14 14 9 13 15 C 9 9 9 12 9 D 13 12 6 6 14 7 por esta via. Infelizmente uma situação deste tipo é rara não sendo útil na vida prática onde problemas deste tipo são comuns na distribuição de bens, processamento de dados em computador, horários escalonados etc. b. Matriz reduzida Na aplicação deste algoritmo considera-se que uma matriz está reduzida quando em cada fila (linha/coluna) há pelo menos um elemento nulo. Para reduzir uma matriz, subtrai-se a cada linha o menor dos seus elementos e na matriz resultante subtrai-se a cada coluna o menor dos seus elementos. Se na matriz reduzida for possível uma afectação óptima (solução de valor nulo) o seu valor é igual à soma dos elementos subtraídos. c. Penalidade do Regresso O cálculo de um ciclo envolve a agregação de arestas. Admita-se que nesta matriz reduzida se coloca o problema de escolher ou não escolher a aresta BC (peso 0) para construir um ciclo de Hamilton de valor mínimo. A A B C D 8 4 0 B 2 0 0 C 2 0 D 0 5 2 6 Quais as consequências de não escolher BC? Para construir o ciclo será necessário: • ligar "B" a outro vértice; o mais favorável é "D" pois a aresta BD tem peso 5; • ligar um vértice a "C"; o mais favorável é "A" pois a aresta AC tem peso 2; A aresta BC tem peso nulo. Se não é escolhida, o Regresso a "C" conduz, pelo menos, ao agravamento de 7 no valor total do ciclo. Este agravamento denomina-se Penalidade do Regresso a "C". 1 Little J.D.C., Murty K.G., Sweeny D., Karel C., An algorithm for the TSP (Traveling Salesman Problem) V-6 E 15 9 14 7 Grafos - Problema do caixeiro-viajante Numa matriz reduzida as Penalidades do Regresso são calculadas para todas as arestas de valor nulo somando os menores valores das linha e coluna daquelas arestas. Na matriz anterior as Penalidades do Regresso são: • em AD, 2 +2 = 4 ; em BC, 5 + 2 =7 ; em CB, 2 +0 = 2 ; em DA, 0 +4 = 4 ; em DB, 0 +0 = 0 Na aplicação do algoritmo será necessário calcular as Penalidades do Regresso em matrizes reduzidas que podem ser registadas como mostra a figura seguinte ( 0k ): A A B B 2 8 C 4 D 04 C 4 0 0 2 0 0 7 D 04 5 (notar que a matriz está reduzida) 2 2 Considerando nesta matriz as Penalidades do Regresso, a aresta BC seria escolhida para o ciclo de Hamilton por estar associada à maior penalidade. INVESTIGAÇÃO OPERACIONAL (MS) V-7 Grafos - Problema do caixeiro viajante d. Algoritmo de Little É um algoritmo exacto que utiliza a técnica de “branch and bound”. Considere-se o grafo da figura e respectiva matriz de distâncias (km): B A 82 A 167 114 8 A B C D E 240 29 C 151 63 253 E 146 82 167 114 8 B 82 240 151 29 C 167 240 D 114 151 63 63 253 146 D O primeiro passo é reduzir a matriz do grafo obtendo-se a matriz A R0. O total dos valores subtraídos em linha e coluna é 192 km pelo que o valor de qualquer ciclo hamiltoniano é pelo menos igual a R0 = (192) esta soma. B 53 A B C 53 104 156 D E 51 0 67 0 C 159 211 0 245 D 106 122 0* 138 Na matriz R0 (matriz reduzida associada a S0) calculando as Penalidades do Regresso tem-se: A B 53 A B 53 R0 = C 104 156 (192) D 51 67 E 051 053 C 159 D 106 211 122 0210 0210 245 E 053 053 190 83 138 A maior Penalidade do Regresso é 210 km que ocorre em CD e DC. Como há empate a escolha da aresta para o ciclo é arbitrária. Considere-se a escolha de CD. A primeira separação dos ciclos de Hamilton é feita considerando ou não a inclusão da aresta CD: S0 Foram criados dois sucessores de S0 : 192 S1: conjunto dos ciclos hamiltonianos com a aresta CD sem CD S1 S2 S2 : conjunto dos ciclos hamiltonianos sem a aresta CD Os ciclos hamiltonianos pertencentes a S2 têm pelo menos o valor de S0 aumentado da penalidade associada à não inclusão de CD, ou seja, 192 + 210 = 402 km. No que respeita às soluções pertencentes a S1 é necessário organizar a matriz reduzida R1 (a partir de R0 porque S1 é sucessora de S0). V-8 E 0 0 190 83 Considere-se S0 =192 km a raiz da arborescência das soluções a calcular. com CD E 8 29 253 146 Grafos - Problema do caixeiro-viajante Os aspectos a considerar para organizar R1 são os seguintes: • eliminar em R0 a linha "C" e a coluna "D" porque S1 inclui a aresta CD. • impedir a formação de ciclo "parasita" considerando DC= C ∞ D Deste modo obtém-se a seguinte matriz: A B 53 A B D 53 51 67 E 0 0 C 159 211 ∞ 245 E 0 0 83 Necessita ser reduzida Para obter R1 é necessário reduzir a matriz subtraindo 51 na linha D e posteriormente 159 na coluna C sendo de 210 a soma dos valores subtraídos. A matriz reduzida R1 é então: A B 53 C 0 52 E 0 0 ∞ 86 32 R1 = A B 53 (210) D 0 16 E 0 0 pelo que as soluções pertencentes a S1 têm pelo menos o valor de: S0 + Encargo de redução de R1 = 192+210 = 402 km Nota: a igualdade de S1 e S2 é mera coincidência. Temos agora as soluções da figura sendo S0 necessário decidir nova separação para 192 prosseguir o cálculo do ciclo. com CD Esta separação deve ser feita na solução com menor valor (estamos calculando um mínimo) decidindo-se arbitrariamente sem CD S1 S2 402 402 quando há empate (como está a suceder). Seleccionando S2 é necessária a matriz reduzida R2 (associada a S2) para calcular Penalidades do Regresso e fazer escolha de nova aresta. Na organização de R2 a partir de R0 (porque S2 é sucessora de S0) tem-se em atenção que: • S2 é solução sem CD pelo que em R2 deve figurar CD = ∞ ; • em S2 já foi considerada a Penalidade do Regresso a "D" pelo que em R0 devem ser subtraídos nas linha "C" e coluna "D" o menor dos valores da respectiva fila (a penalidade 210 já foi considerada para o cálculo do valor de S2). INVESTIGAÇÃO OPERACIONAL (MS) V-9 Grafos - Problema do caixeiro viajante Vejamos, passo a passo, a reconstituição de R2 partindo de R0: A R0 = A B C 53 104 B 53 C 159 211 156 D 106 122 0* E 0 0 190 (192) D 51 67 0 83 E 0 0 245 138 Subtraindo 104 na linha "C", 106 na coluna "D" e considerando CD = ∞ tem-se a matriz reduzida R2: A R2 = A B C B 53 53 0 C 159 211 D 0 16 ∞ 52 E 0 0 86 83 D 51 67 0 E 0 0 245 32 Nota: se nesta matriz for feita afectação tem-se AD, BE, CA, DC, EB. Somando o valor associado a estas (0) arestas, 114 + 29 + 167 + 63 + 29 = 402, tem-se o valor de S2 já disponível do antecedente. Para efectuar a separação em S2 há que calcular as Penalidades do Regresso em R2 : A A B 53 B 53 R2 = C 052 52 (0) D 51 67 E 00 052 C 159 211 D E 016 16 00 ∞ 0210 245 016 86 Maior penalidade é 210 km Separação em DC 83 32 Em S2 a separação dos ciclos de Hamilton é feita considerando ou não a inclusão da aresta DC: S2 402 com DC sem DC S3 S4 Foram criados dois sucessores de S2 : • S3 : conjunto dos ciclos hamiltonianos com a aresta DC • S4 : conjunto dos ciclos hamiltonianos sem a aresta DC Os ciclos hamiltonianos pertencentes a S4 têm pelo menos o valor de S2 + Penalidade do Regresso a C, ou seja, 402 +210 = 612 km. Para avaliar as soluções pertencentes a S3 é necessário organizar a matriz reduzida R3 (a partir de R2 porque S3 é sucessora de S2) Para organizar R3 é necessário: • eliminar em R2 a linha "D" e a coluna "C" porque se escolheu a aresta DC. V-10 Grafos - Problema do caixeiro-viajante D • impedir a formação de ciclo "parasita" considerando C CD= ∞ (já considerado em R2) Deste modo obtém-se a matriz seguinte: A B 53 A R3 = B 53 (0) C 052 52 E 00 052 D E 016 16 00 ∞ 32 016 Maior penalidade é 52 km 86 Separação em CA ou EB A matriz obtida é R3 porque já está reduzida (encargo de redução nulo). Tem-se o valor de S3 = S2 + 0 = 402 km. Em R3 foram já calculadas as Penalidades do Regresso, para decidir a separação das soluções. Temos agora as soluções: S2 402 com DC sem DC S3 S4 402 612 A nova separação é feita em S3 ou S1 (ambas com valor 402 km). Admita-se a decisão de continuar escolhendo S3 para separação dos ciclos de Hamilton considerando ou não a inclusão da aresta CA (podia ser EB porque tem igual Penalidade do Regresso). Foram criados dois sucessores de S3 : • S5 : conjunto dos ciclos hamiltonianos com a aresta CA • S6 : conjunto dos ciclos hamiltonianos sem a aresta CA Os ciclos hamiltonianos pertencentes a S6 têm pelo menos o valor de S3 + Penalidade do Regresso a "A", ou seja, 402 +52 = 454 km. Para avaliar as soluções pertencentes a S5 é necessário organizar a matriz reduzida R5 a partir de R3 (porque S5 é sucessora de S3). Para organizar R5 é necessário: • eliminar em R3 a linha "C" e a coluna "A" porque se escolheu a aresta CA. D C • impedir a formação de ciclo "parasita" considerando AD= ∞ A INVESTIGAÇÃO OPERACIONAL (MS) V-11 Grafos - Problema do caixeiro viajante Deste modo obtém-se a matriz seguinte: A B 53 B E 0 D ∞ 16 32 E 0 0 Necessita ser reduzida O encargo da redução desta matriz é de 16 (subtracção na 2ª coluna) e a matriz reduzida R5 é a seguinte: A R5= B (16) E B 53 069 D E ∞ 0 053 Maior penalidade é 69 km 00 Separação em EB 16 Tem-se o valor de S5 = S3 + 16 = 402 + 16 =418. Em R5 foram já calculadas as Penalidades do Regresso, para decidir a separação das soluções. Temos agora as soluções: S3 402 com CA sem CA S5 S6 418 454 A nova separação é feita em S5 (como a matriz dos sucessores será de ordem 2 há condições para atingir já uma solução admissível ou concluir pela inexistência de ciclo pelo que não se passa para S1 ). Escolhendo S5 para separação dos ciclos de Hamilton considerando ou não a inclusão da aresta EB criam-se dois sucessores de S5 : • S7 : conjunto dos ciclos hamiltonianos com a aresta EB • S8 : conjunto dos ciclos hamiltonianos sem a aresta EB Os ciclos hamiltonianos pertencentes a S8 têm pelo menos o valor de S5 + Penalidade do Regresso a "B", ou seja, 418 +69 = 487 km. Para avaliar as soluções pertencentes a S7 é necessário organizar a matriz reduzida R7 a partir de R5 (porque S7 é sucessora de S5). Para organizar R7 é necessário: • eliminar em R5 a linha "E" e a coluna "B" porque se escolheu a aresta EB. C D • impedir a formação de ciclo "parasita" A considerando BE= ∞ E V-12 B Grafos - Problema do caixeiro-viajante Deste modo obtém-se a matriz seguinte: D R7 = A ∞ E 0 (0) B 0 ∞ Já está reduzida Tem-se o valor de S7 = S5 + 0 = 418 + 0 = 418 km. As Penalidades do Regresso são nulas pelo que se acrescentam ao ciclo as arestas AE e BD obtendo-se a primeira solução admissível com valor 418 km que B passa a constituir limite para eliminar de análise as soluções correntes S4 =612 km ; S6 = 454 km ; S8 = 82 240 A 167 487 km porque têm valor superior. A solução S7 é um ciclo de Hamilton com valor 418 km. 114 8 E 29 C 151 63 253 146 D É necessário explorar a solução S1=402 km pois pode gerar um ciclo de valor inferior ao já calculado. A matriz R1 com Penalidades do Regresso é a seguinte: A A B 53 R1 = B 53 (210) D 016 16 E 00 016 C E 052 52 00 Maior penalidade é 52 km 052 Separação em AC ou BE ∞ 86 32 Em S1 a separação dos ciclos de Hamilton é feita considerando ou não a inclusão da aresta AC (podia ser BE), criando dois sucessores: • S9 : conjunto dos ciclos hamiltonianos com a aresta AC • S10 : conjunto dos ciclos hamiltonianos sem a aresta AC Os ciclos hamiltonianos pertencentes a S10 têm pelo menos o valor de S1 + Penalidade do Regresso a "C", ou seja, 402 +52 = 454 km (superior a 418 km; eliminar de análise posterior). Para avaliar as soluções pertencentes a S9 é necessário organizar a matriz reduzida R9 a partir de R1 (porque S9 é sucessora de S1). Para organizar R9 é necessário: • eliminar em R1 a linha "A" e a coluna "C" porque se escolheu a aresta AC. A C • impedir a formação de ciclo "parasita" considerando DA= ∞ D INVESTIGAÇÃO OPERACIONAL (MS) V-13 Grafos - Problema do caixeiro viajante Deste modo obtém-se a matriz seguinte: B D E A 53 B ∞ 0 16 E 0 32 Necessita ser reduzida 0 O encargo da redução desta matriz é de 16 (subtracção na 2ª linha) e a matriz reduzida R9 é a seguinte: R9 = (16) B E B A 53 D ∞ 016 069 16 E 053 00 Maior penalidade é 69 km Separação em BE Tem-se o valor de S9 = S1 + 16 = 402 + 16 = 418 km. Em R9 foram já calculadas as Penalidades do Regresso, para decidir a separação das soluções. Temos agora as soluções: S1 402 com AC sem AC S9 S10 418 454 A separação em S9 é feita considerando ou não a inclusão da aresta BE criando dois sucessores: • S11 : conjunto dos ciclos hamiltonianos com a aresta BE • S12 : conjunto dos ciclos hamiltonianos sem a aresta BE Os ciclos hamiltonianos pertencentes a S12 têm pelo menos o valor de S9 + Penalidade do Regresso a "E", ou seja, 418 + 69 = 487 km (superior a 418 km; eliminar de análise posterior). Para avaliar as soluções pertencentes a S11 é necessário organizar a matriz reduzida R11 a partir de R9 (porque S11 é sucessora de S9). Para organizar R11 é necessário: • eliminar em R9 a linha "B" e a coluna "E" porque se escolheu a aresta BE. C A • impedir a formação de ciclo "parasita" considerando EB = ∞ D B Deste modo obtém-se a matriz reduzida R11: A V-14 R11 = D ∞ B 0 (0) E 0 ∞ Não necessita redução E Grafos - Problema do caixeiro-viajante Tem-se o valor de S11 = S9 + 0 = 418 + 0 = 418 km. As Penalidades do Regresso são nulas pelo que se acrescentam ao ciclo as arestas DB e EA obtendo-se outra solução admissível com valor 418 km. B A solução S11 é um ciclo de Hamilton com valor 418 km. 82 Trata-se do mesmo ciclo de S7 pelo que o ciclo 240 A 167 óptimo é único com valor 418 km. 114 8 29 C 151 63 253 Nota: o grafo é não orientado. E 146 D Na figura seguinte encontra-se a arborescência S0 192 com CD S1 S2 402 402 com AC com BE S11 (ADMISSIVEL) 418 sem CD sem AC com DC sem DC S9 S10 S3 S4 418 454 402 612 sem BE com CA sem CA S12 S5 S6 487 418 454 com EB sem EB S7 (ADMISSIVEL) S8 418 487 construída durante o cálculo do(s) ciclo(s). INVESTIGAÇÃO OPERACIONAL (MS) V-15 Grafos - Problema do caixeiro viajante 5. Auto Teste a. Um agente de fiscalização de parquímetros de uma autarquia é responsável por 5 zonas de parqueamento (A,B,C,D,E). A movimentação eficaz do agente supõe que este após fiscalizar uma zona não volte à mesma antes de ter fiscalizado as restantes. Por outro lado importa que cada uma das zonas seja fiscalizada com a maior frequência possível. O departamento de tráfego da autarquia, após visita de estudo à área dispõe agora dos tempos (minutos) que o agente necessitará para fiscalizar uma zona e atingir a zona seguinte (ver matriz): A B C D E Tempo entre zonas (min.) A B C D E 16 12 18 16 10 18 20 20 18 20 28 16 14 18 10 8 8 12 12 12 Que tipo de problema clássico lhe sugere esta situação? Que instruções daria ao fiscal ? b. Numa empresa de metalomecânica é necessário executar 6 tipos de tarefas diferentes na mesma máquina. Para iniciar qualquer das tarefas é necessário preparar a máquina (montagem de acessórios e afinações) o que consome tempo (custo). Estes custos de preparação para dada tarefa variam consoante a natureza da tarefa terminada, ou seja, para iniciar a tarefa "A" o custo de preparação pode ou não ser o mesmo consoante a tarefa terminada seja "B", "C" …, de "n" tarefas. No grafo da figura os vértices representam as tarefas e os valores associados às arestas representam custos de preparação associados aos vértices adjacentes. Assim se a tarefa "A" for imediatamente anterior à tarefa "B", o custo de preparação é de 6 u.m. B 6 5 A 4 8 2 E C 6 8 9 4 7 D Qual a sequência de execução das tarefas de modo a minimizar os custos totais de preparação (setup) ? c. Admita que no exercício da alínea a. o agente pretende fiscalizar todas as zonas iniciando o percurso em A e terminando em E. Que instruções daria ao fiscal para que o percurso fosse o mais rápido possível? V-16 Grafos - Problema do caixeiro-viajante 6. Solução do Auto Teste a. Trata-se do problema do caixeiro-viajante sendo necessário calcular um circuito de Hamilton (o grafo é orientado) num grafo fortemente conexo em que os vértices são as zonas de parqueamento e aos arcos estão associados os tempos de fiscalização e deslocação entre as mesmas. Pode aplicar-se o algoritmo de Little para o que se reduz a matriz obtendo R0 e uma solução S0 raiz da arborescência a construir. A matriz R0 , com encargo de redução e Penalidades do Regresso é a seguinte: A A R0 = B 06 (62) C 2 D 6 E B C 00 02 D 2 E 4 8 6 10 Maior Penalidade é 6 8 00 Separação em BA 00 6 00 00 S0 = 62 min. 02 2 4 02 Em S0 : separação em BA ; S1 com BA ; S2 sem BA. S2 = S0 + 6 = 62 + 6 = 68 min. S1 : necessária matriz reduzida R1 R1 : construir a partir de R0 eliminando linha B e coluna A ; AB= ∞ ; reduzida B C A ∞ 04 R1 = C 00 (0) D 6 * D 2 E 4 Maior Penalidade é 4 8 00 Separação em AC 02 2 4 E 02 00 S1 = S0 + 0 = 62 min. Em S1 : separação em AC ; S3 com AC ; S4 sem AC S4 = S1 + 4 = 62 + 4 = 66 min. S3 : necessária matriz reduzida R3 R3 : construir a partir de R1 eliminando linha A e coluna C ; CB = ∞ ; reduzida B R3 = C ∞ (0) D 6 D 8 E 08 Maior Penalidade é 8 06 Separação em CE E 08 06 S3 = S1 + 0 = 62 min. Em S3 : separação em CE ; S5 com CE ; S6 sem CE S6 = S3 + 8 = 62 + 8 = 70 min. S5 : necessária matriz reduzida R5 INVESTIGAÇÃO OPERACIONAL (MS) V-17 Grafos - Problema do caixeiro viajante R5 : construir a partir de R3 eliminando linha C e coluna E ; EB = ∞ ; reduzida R5 = (6) B 6 D D E ∞ 02 D D B 0 reduzir E 0 ∞ S5 = S3 + 6 = 68 min. 1ª solução admissível : B ⇒ A ⇒ C ⇒ E ⇒ D ⇒ B (valor do circuito é S5 = 68 min.) Dispondo deste limite superior, as soluções S2 = 68 min.e S6 = 70 min. não são sujeitas a separação dado não poderem gerar soluções com valor inferior ao limite superior S5 = 68 min. É necessário examinar as soluções de S4 = 66 min para o que se reconstitui a matriz R4 a partir de R1: • considerando o valor de (A,C) = ∞ • atendendo a que a Penalidade do Regresso pela não inclusão do arco (A,C) já está considerada no valor de S4 Sendo R1 : R1 = B C A ∞ 04 C 00 D 6 2 E 00 4 02 B C D A ∞ ∞ 02 E 2 Está reduzida; é R4 C 00 8 00 Maior Penalidade é 2 02 Separação em AD ou DC * D 2 E 4 8 00 02 tem-se a matriz : R4 = D 6 02 00 00 2 E Em S4 : separação em AD ; S7 com AD ; S8 sem AD S8 = S4 + 2 = 66 + 4 = 70 min. (não explorar por que excede limite superior 68 min.) S7 : necessária matriz reduzida R7 R7 : construir a partir de R4 eliminando linha A e coluna D ; DB = ∞ ; reduzida B R7 = C (0) D 00 C E 00 ∞ 00 02 2 E S7 = S4 + 0 = 66 min. 02 Em S7 : separação em DC ; S9 com DC ; S10 sem DC S10 = S7 + 2 = 66 + 2 = 68 min. S9 : necessária matriz reduzida R9 V-18 Maior Penalidade é 2 Separação em DC ou EB Grafos - Problema do caixeiro-viajante R9 : construir a partir de R7 eliminando linha D e coluna C ; CB = ∞ ; reduzida B R9 = C E 0 ∞ (0) E 0 S9 = S7 + 0 = 66 min. Seleccionar os arcos CE e EB. 2ª solução admissível : B ⇒ A ⇒ D ⇒ C ⇒ E ⇒ B (valor do circuito é S9 = 66 min.) A solução óptima é S9 = 66 min., tempo mínimo entre inícios de fiscalização da área. b. Trata-se de um problema típico de ciclo de Hamilton. O ciclo óptimo é ACBDEA com custo mínimo de 26 u.m. Notar que o trabalho na máquina pode iniciar-se com qualquer das tarefas desde que se obedeça à sequência calculada. c. É necessário calcular um caminho elementar, com todos os vértices do grafo e comprimento igual a "n-1" (caminho de Hamilton). Para detectar o caminho hamiltoniano de A a E, calcula-se o ciclo de Hamilton de "A" a "A" mas modifica-se a matriz inicial do seguinte modo: • No vértice inicial do caminho (vértice A) Impedir a ligação ao vértice final do caminho (vértice E) Impedir a ligação dos vértices intermédios do caminho (B, C e D) ao vértice inicial (A) • No vértice final do caminho (vértice E) Ligação ao vértice inicial do caminho (vértice A) com valor nulo Impedir a ligação aos vértices intermédios do caminho (B, C e D) A matriz para cálculo do ciclo é então: A A B C D E ∞ ∞ ∞ 0 B 16 C 12 D 18 ∞ 18 20 20 28 16 Caminho óptimo 8 A-C-B-D-E 20 18 10 ∞ ∞ E Nota: Pode eliminar-se a coluna de "A" (partida) e a linha de "E" (chegada) ∞ INVESTIGAÇÃO OPERACIONAL (MS) Tempo óptimo = 60 minutos V-19