CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) Algoritmos em Grfos: Circuitos de Euler e Prolem do Crteiro Chinês R. Rossetti, A.P. Roch, A. Pereir, P.B. Silv, T. Fernndes FEUP, MIEIC, CPAL, 00/0 Circuitos de Euler Puzzle: desenhr s figurs ixo sem levntr o lápis e sem repetir rests; de preferênci, terminndo no mesmo vértice em que inicir. Reformulção como prolem em Teori de Grfos: pôr um vértice em cd intersecção Cminho de Euler: cminho que visit cd rest exctmente um vez Prolem resolvido por Euler em 7 e que mrc o início d Teori dos Grfos Circuito de Euler: cminho de Euler que começ e c no mesmo vértice Circuito de Euler e Pro. Crteiro Chinês./rr ()
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) Condições necessáris e suficientes Um grfo não dirigido contém um circuito de Euler sse () é conexo e () cd vértice tem gru (nº de rests incidentes) pr. Um grfo não dirigido contém um cminho de Euler sse () é conexo e () todos menos dois vértices têm gru pr (estes dois vértices serão os vértices de início e fim do cminho). Um grfo dirigido contém um circuito de Euler sse () é (fortemente) conexo e () cd vértice tem o mesmo gru de entrd e de síd. Um grfo dirigido contém um cminho de Euler sse () é (fortemente) conexo e () todos menos dois vértices têm o mesmo gru de entrd e de síd, e os dois vértices têm grus de entrd e de síd que diferem de. Método sedo em pesquis em profundidde pr encontrr um circuito de Euler Método:. Escolher um vértice qulquer e efectur um pesquis em profundidde prtir desse vértice (se o grfo stisfizer s condições necessáris e suficientes, est pesquis termin necessrimente no vértice de prtid, formndo um circuito, emor não necessrimente de Euler). Enqunto existirem rests por visitr. Procurr o primeiro vértice no cminho (circuito) otido té o momento que possu um rest não percorrid. Lnçr um su-pesquis em profundidde prtir desse vértice (sem voltr percorrer rests já percorrids). Inserir o resultdo (circuito) no cminho principl Tempo de execução: O( E + V ) Cd vértice e rest é percorrido um únic vez Cd vez que se percorre um djcente, vnç-se o pontdor de djcentes (pr não voltr percorrer s mesms rests) Usm-se lists ligds pr efectur inserções em tempo constnte Circuito de Euler e Pro. Crteiro Chinês./rr ()
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) Exemplo em grfo não dirigido Arests por visitr Cminho dest iterção Cminho cumuldo ª iter. -*----7- -*----7-7 Com rests por visitr ª iter. 7 --- --------7- (Circuito de Euler) Prolem do crteiro chinês (Chinese postmn prolem) Ddo um grfo pesdo conexo G=(V,E), encontrr um cminho fechdo (i.e., com início e fim no mesmo vértice) de peso mínimo que trvesse cd rest de G pelo menos um vez. A um cminho nesss condições chm-se percurso óptimo do crteiro Chinês. A qulquer cminho fechdo (não necessrimente de peso mínimo) que trvesse cd rest de G pelo menos um vez chm-se percurso do crteiro. Prolem estuddo pel primeir vez p/ Mei-Ku Kun em 9, relciondo com distriuição de correspondênci o longo de um conjunto de rus, prtindo e terminndo num estção de correios. Se o grfo G for Eulerino, então qulquer circuito de Euler é um percurso óptimo do crteiro Chinês. Se o grfo G não for Eulerino, pode-se construir um grfo Eulerino G* duplicndo lgums rests de G, seleccionds por form conseguir um grfo Eulerino com peso totl mínimo ver seguir. Nunc é necessário visitr cd rest mis do que dus vezes! Circuito de Euler e Pro. Crteiro Chinês./rr ()
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) Algoritmo pr chr um percurso óptimo do crteiro chinês num grfo não dirigido. Achr todos os vértices de gru ímpr (com nº ímpr de rests incidentes) em G. Sej k o nº (pr!) destes vértices. Se k=0, fzer G*=G e sltr pr o psso.. Achr os cminhos mis curtos (e distâncis mínims) entre todos os pres de vértices de gru ímpr em G.. Construir um grfo completo G' com os vértices de gru ímpr de G ligdos entre si por rests de peso igul à distânci mínim clculd no psso.. Encontrr um emprelhmento perfeito de peso mínimo em G' (ver seguir). Isto corresponde emprelhr os vértices de gru ímpr de G, por form minimizr som ds distâncis entre vértices emprelhdos.. Pr cd pr (u, v) no emprelhmento perfeito encontrdo, dicionr pseudo-rests (rests prlels duplicds) G o longo de um cminho mis curto entre u e v. Sej G* o grfo resultnte.. Achr um circuito de Euler em G*. Este circuito é um percurso óptimo do crteiro Chinês. 7 Relizção do psso Psso mis complexo Um emprelhmento perfeito é um emprelhmento que envolve todos os vértices O prolem de encontrr um emprelhmento perfeito de peso mínimo pode ser reduzido o prolem de encontrr um emprelhmento de peso máximo num grfo genérico por um simples mudnç de pesos Bst sustituir cd peso w ij por M+-w ij, em que M é o peso d rest mis pesd Sendo o grfo completo e com número pr de vértices, um emprelhmento de peso máximo é necessrimente perfeito Um emprelhmento de peso máximo num grfo genérico pode ser encontrdo em tempo polinomil - ver referêncis Circuito de Euler e Pro. Crteiro Chinês./rr ()
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) Exemplo (/) Grfo G e vértices de gru ímpr (somredos) v 9 Exemplo (/) Distâncis (pelo cminho mis curto) entre todos os pres de vértices de gru ímpr d(v i,v j ) v v v v v v v - 7 0 v - v - 9 0 v - v - 7 v - 0 Circuito de Euler e Pro. Crteiro Chinês./rr ()
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) Exemplo (/) Grfo G' correspondente (com vértices unidos por rests de peso igul à distânci) e emprelhmento perfeito de peso mínimo (rests trço forte): Exemplo (/) Grfo G* correspondente, com um possível numerção ds rests o longo de um circuito de Euler (distâncis não são mostrds): Circuito de Euler e Pro. Crteiro Chinês./rr ()
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) * Cso de grfos dirigidos Modificções o lgoritmo nterior: ) Identificm-se os vértices com nº diferentes de rests entrr e sir ) Procurm-se os cminhos mis curtos de vértices que têm défice de síds pr vértices que têm défices de entrds ) Constrói-se um grfo iprtido, em que os vértices são distinguidos consonte têm mis rests entrr ou sir e são replicdos consonte diferenç entre entrds e síds ) Procur-se um emprelhmento perfeito de peso mínimo num grfo iprtido - Em vez de replicr os vértices no ponto, pode-se ssocir cd vértice um multiplicidde (nº de emprelhmentos em que pode prticipr) e converter o prolem directmente pr um prolem de fluxo máximo de custo mínimo em que lgums rests têm cpcidde superior -> Ver no exemplo seguir Resolúvel igulmente em tempo polinomil Infelizmente, o prolem é NP-completo (tempo exponencil) qundo se cominm rests dirigids com rests não dirigids (grfos mistos) Exemplo: determinr o percurso seguir pelo cmião do lixo, qundo lgums rus têm sentidos únicos * Exemplo (/) Grfo G e vértices com diferente nº de entrds e síds: 0 - - 0 7 (nº de entrds) (nº de síds) - Circuito de Euler e Pro. Crteiro Chinês./rr (7)
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) * Exemplo (/) Grfo G com distâncis de vértices com deficit de síds pr vértices com deficit de entrds, e emprelhmento perfeito de peso mínimo (rests trço forte, otids resolvendo o prolem de fluxo máximo de custo mínimo indicdo no slide seguinte): 7 multiplicidde dupl (pode prticipr em dus prelhs) 7 * Exemplo (/) Formulção do prolem de emprelhmento óptimo como prolem de fluxo máximo de custo mínimo: s,0,0,0,0,,,,,7,,,,,,7, cpcidde,0,0,0 custo t Cpcidde = multiplicidde Cpcidde = min(multiplicidde(origem),multiplicidde(destino)) Circuito de Euler e Pro. Crteiro Chinês./rr ()
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) * Exemplo (/) Grfo G* correspondente, pós duplicção de cminhos mis curtos entre os vértices emprelhdos, e um numerção possível ds rests o longo de um circuito de Euler (distâncis não são mostrds): 9 0 7 7 Nº de sequênci de visit 0 9 7 * Exemplo de plicção (/) Achr um conjunto de sequêncis de teste complets (do estdo inicil um estdo finl) de comprimento totl mínimo corindo tods s trnsições num utómto finito Ligm-se os estdos finis o estdo inicil e procur-se um percurso óptimo do crteiro Not: conceito de estdo finl fz mis sentido em máquins de estdos UML; no cso de utómtos finitos, podem-se considerr como tl estdos de ceitção e estdos sorventes (donde não é possível sir) Strt s s s s Strt 0 s restrt restrt 0 s s s Custo d rest Etiquet d rest (símolo) Circuito de Euler e Pro. Crteiro Chinês./rr (9)
CAL (00-0) MIEIC/FEUP Algoritmos em Grfos (0-0-0) * Exemplo de plicção (/) Resolução do prolem do crteiro chinês dirigido: G 0 s s s 0 s s G s G* (com nº de ordem de visit): s s s 9 0 s 7 Solução finl: Cminho de Euler usndo etiquets: -------restrt--restrt---restrt Strings de teste:,, 9 Referêncis e mis informção The Algorithm Design Mnul, Steven S. Skien, Springer- Verlg, 99 0 Circuito de Euler e Pro. Crteiro Chinês./rr (0)