Eulerian piirien ymmärtäminen kaavioteoriassa

Euler piiri on suljettu kävely, että kulkee jokaisen reunan kaavion täsmälleen kerran ja palaa lähtöpiste. Konsepti on peräisin kuuluisasta Seven Bridges of Königsberg ongelma aiheuttaa Leonhard Euler vuonna 1736. Euler osoittautui, että tällainen piiri on olemassa vain jos jokainen huippupiste, kaavio on jopa aste ja kaavio on liitetty (ignoring eristetty vertices). Tämä perustava tulos loi perustan kaavio teoria ja on edelleen ratkaiseva verkon analyysi, piirisuunnittelu ja kombinatorinen optimointi.

Jotta se voidaan ilmoittaa muodollisesti: Let ]G = (]], []E[]) on suuntaamaton kaavio. Eulerialainen piiri on olemassa, jos ja vain jos jokainen huippupiste [v[] .V[]]] on tasainen aste, ja kaavio on liitetty, kun tarkastellaan vain vertices ei-nolla aste. Suunnitelluissa kaavioissa ehdot ovat, että jokainen vertex on yhtä in-aste ja out-aste ja taustalla oleva suuntaamaton kaavio on liitetty.

Mikä on Hierholzeri Algoritmi?

Hierholzer.S Algoritmi, jonka saksalainen matemaatikko Carl Hierholzer vuonna 1873, on tehokas menetelmä rakentaa Eulerian piirin, kun tarvittavat edellytykset täyttyvät. Se rakentaa piirin löytämällä sarjan syklien ja yhdistämällä niitä. Algoritmi toimii lineaarisesti []O[[]]][[]] suhteessa reunojen määrä, joten se on optimaalinen tiheä ja harva kaavioita.

Avainkäsitteet

  • Sykleen havaitseminen:[ alkaen huippupiste, seuraa käyttämättömiä reunoja kunnes palaa alkupiste. Tämä muodostaa yksinkertaisen syklin.
  • Merkitys syklit:[ Kun huippupiste on nykyinen piiri on vielä käyttämätön reunoja, uusi sykli on muodostettu että huippupiste ja lisätään osaksi piiri.
  • Etäisyys:[] Koska reunoja käytetään, ne on merkitty tai poistettu, jotta niitä ei tarvitsisi tarkistaa.

Vaiheittainen kuvaus Hierholzeri Algoritmin käytöstä

Algoritmi voidaan toteuttaa rekursiivisesti tai iteratiivisesti. Keskeinen idea on rakentaa piiri laajentamalla alapiiriä toistuvasti. Alla on yksityiskohtainen erittely.

Vaihe 1: Valitse alkava vertex

Valitse jokin huippupiste, jossa on vähintään yksi reuna. Koska kaavio on liitetty ja kaikki asteet ovat jopa, mikä tahansa huippupiste toimii. Tyypillisesti algoritmi alkaa huippupiste v.

Vaihe 2: Kiertokulku syklille

From the current vertex, follow any undaughted edge to a countrybor. Jatka liikkumista käyttämättömät reunat, merkintä kunkin reunan kuin käytetty, kunnes palaat lähtöpiste. Tämä tuottaa syklin ]C[]. Jos sykli sisältää kaikki reunat kaavion, algoritmi päättyy .

Vaihe 3: Etsi Vertices käyttämättömillä reunat

Skannaa virtapiirin tahansa huippupiste u, joka on vielä tapahtuma käyttämätön reunat. Jos ei ole olemassa, algoritmi on valmis. Muuten u[ olla sellainen huippupiste.

Vaihe 4: Rakenna uusi sykli u

u alkaen, toista syklin löydösprosessi käyttämättömien reunojen välillä. Tämä luo uuden syklin C′, joka alkaa ja päättyy u[]].

Vaihe 5: Yhdistä uusi sykli pääpiiriin

Lisää C′[ päävirtapiiriin u[. Tuloksena oleva kävely on edelleen piiri (suljettu) ja kattaa kaikki tähän mennessä vierailleet reunat. Palaa vaiheeseen 3.

Koska jokainen huippupiste on jopa aste, prosessi ei koskaan juuttunut: kun annat huippupiste, siellä on aina käyttämätön reuna jättää, kunnes huippupiste. Algoritmi takaa, että lopullinen kävely sisältää jokaisen reunan täsmälleen kerran.

Esimerkki: Eulerian-piirin rakentaminen

Harkitse suuntaamatonta kaaviota, jossa on vertices A, B, C, D ja E. Edges: AB, AC, AD, BC, BD, CE, DE. (Tämä on pieni kaavio, jossa jokainen huippupiste on jopa aste: deg(A)=3, deg(B)=3, deg(D)=3, deg(E)=1? Tämä ei täytä yhtä hyvin. Let.

Juokse Hierholzer...

  • Aloita yläreunasta 1. Seuraa reunoja: 1-2 (käyttö), 2-3 (käyttö), nyt 3. Valitse käyttämätön reuna 3-4 (käyttö), 4-5 (käyttö), 5-3 (käyttö). Palaa 3:een, mutta alkupiste oli 1. Olemme palanneet 1:een. Oikeastaan algoritmin on muodostettava sykli, joka palaa lähtötasolle. Sen jälkeen kappaleet jäljitetään oikein: Aloita 1:stä, 1-2:sta, 2-3:een, nyt 3:sta voimme siirtyä 3-1:een (käyttämätön) . Kierrä 1-2-3−1. Tuon jälkeen sykli C1:een. Reunat ovat vasemmalla: 3-4, 4-5, 5-3.
  • C1:n huippupiste 3:n reunoja ei ole käytetty. Uusi sykli aloitetaan 3-4:n, 4-5:n, 5-3:n, C2:n ja 3-4-5-3:n välillä.
  • Yhdistä C2 C1:een huippupisteessä 3: tuloksena oleva virtapiiri: 1-2-3-4-5-3-1. Kaikki reunat, virtapiiri on Eulerian.

Tämä esimerkki kuvaa algoritmin eleganssia: syklit löydetään ja yhdistetään saumattomasti.

Monimutkaisuus ja täytäntöönpano

Hierholzer... O[[[]V[[ + ]E]))))))))) (kun käytetään adjakeliatiivisia luetteloja ja tehokkaita tietorakenteita reunanpoistoa varten (esim. iteraattoreiden tai linkitettyjen luetteloiden käyttäminen). Algoritmi on optimaalinen, koska jokaista reunaa käsitellään täsmälleen kerran. Muistin korkeus on ]O[[]]][[[[]]]]]V[[[[[]]]]][[[[]]]]])) kaavion ja piirin varastointiin.

Suunnitelluille kaavioille sama lähestymistapa toimii, jos kaavio on Eulerian (in-aste on out-aste kussakin huippupiste). Algoritmi.S vaatimus jopa asteita kääntää myös suunnattu tapaus.

Vertailu Fleury... algoritmiin

Toinen tunnettu algoritmi Eulerian piirien löytämiseksi on Fleury.Algoritmi toimii reunojen läpikulkua varten ja varmistaa, että jäljellä oleva graafinen graafinen pysyy yhteydessä (eli siltojen välttämistä). Fleury.Salgoritmi toimii [O[]][[]][]]]2[[]]]) ajan, koska sen on tarkistettava yhteydet jokaisessa vaiheessa. Hierholzer.S-algoritmi on yleensä parempi lineaarisen ajan monimutkaisuuden ja yksinkertaisemman toteutuksen kannalta. Ainoa alapuoli on, että Hierholzer on graafi Eulerian (seitsemän astetta), kun taas Fleury.

Hakemukset Hierholzer... s Algoritmi

Kyky löytää Eulerian piiri tehokkaasti on monia reaalimaailman käyttötarkoituksia.

Kiinan postimies ongelma

Vuonna Kiinan postimies ongelma (reittitarkastus), tavoitteena on löytää lyhin suljettu kävely, joka kattaa jokaisen reunan vähintään kerran. Jos kaavioita, jotka ovat jo Eulerian, ratkaisu on yksinkertaisesti Eulerian piiri. Hierholzer. Hierholzer algoritmi tarjoaa, että piiri. Ei-Eulerian kaaviot, ongelma vähentää päällekkäisiä reunoja tehdä kaikki asteet jopa, ja sitten soveltamalla Hierholzer.

Verkkojen reititys ja virtapiirien suunnittelu

Eulerian piirit käytetään suunniteltaessa tehokkaita reittejä katulakaisukoneet, roskakeräys, ja verkkopakettien lähetys, jossa jokainen linkki on käytävä täsmälleen kerran. Algoritmi auttaa minimoimaan turhaa matkustamista.

DNA-fragmenttiyhdistelmä

Laskubiologiassa de Bruijnin graafinen lähestymistapa genomikokoonpanoon perustuu Eulerian polkujen tai piirien löytämiseen k-mer-graafien kautta. Hierholzer. Algoritmi on monien kokoonpanijoiden ydinkomponentti, joka mahdollistaa rinnakkaisten sekvenssien rekonstruoinnin lyhyistä lukemista.

Tietokonegrafiikka ja sokkelosukupolvet

Eulerian polkuja käytetään sokkeloiden tuottamiseen ja tietyissä kaaviopiirustusalgoritmeissa, joissa reunat on vedettävä nostamatta kynää. Algoritmi tarjoaa optimaalisen rakenteen.

Integroitu piiritestaus

Erittäin laaja-alaisen integraation (VLSI) suunnittelussa kaikkien yhteyksien testaaminen voidaan mallintaa Eulerian piiriongelmana, jolloin testaajan liike vähenee.

Lisälukea ja ulkoisia resursseja

Syventää ymmärrystä Eulerian piirit ja Hierholzeri algoritmi, seuraavat resurssit suositellaan:

Päätelmät

Hierholzer. Algoritmi on edelleen kulmakivi graafinen traversal sen eleganssia, nopeus, ja laaja sovellettavuus. Kun dekompuroi ongelman löytämiseen ja sulauttamisen syklit, se tarjoaa yksinkertaisen ja optimaalisen ratkaisun rakentamiseen Eulerian piirit. Olitpa suunnittelemassa verkkoreittejä, kokoaa genomi, tai ratkaista palapelit, ymmärtäminen tämä algoritmi varustaa sinut tehokas työkalu käsitellä kaavioita tasainen-aste vertices. Sen lineaarinen aika monimutkaisuus ja yksinkertainen rekursiivinen rakenne tekevät siitä suosikki keskuudessa algoritmi harrastajat ja ammattilaiset yhtä.