Ero sivun ”Tarjanin algoritmi” versioiden välillä
[katsottu versio] | [katsottu versio] |
pEi muokkausyhteenvetoa |
vuosi ja aiheesta muualla Merkkaukset: Tämä muokkaus on kumottu Visuaalinen muokkaus |
||
Rivi 1: | Rivi 1: | ||
[[Tiedosto:Tarjan's Algorithm Animation.gif|pienoiskuva|Tarjanin algoritmin suoritus.]] |
[[Tiedosto:Tarjan's Algorithm Animation.gif|pienoiskuva|Tarjanin algoritmin suoritus.]] |
||
'''Tarjanin algoritmi''' eli '''Tarjanin vahvasti yhtenäisten komponenttien algoritmi''' on [[syvyyssuuntainen läpikäynti|syvyyssuuntaisen läpikäynnin]] algoritmi, joka on nimetty [[Robert Tarjan]]in mukaan. Tarjanin algoritmia ja käytetään tunnistamaan vahvasti liittyvät komponentit [[graafiteoria]]n mukaisesti. Tarjanin algoritmi ja [[Kosarajun algoritmi]] ovat kaksi yleisesti käytettyä algoritmia tähän tarkoitukseen.<ref>{{Verkkoviite | osoite = http://courses.cms.caltech.edu/cs130/lectures/CS130-Wi2024-Lec19.pdf | nimeke = CS130 Software Engineering | tiedostomuoto = PDF | ajankohta = talvi 2024 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref><ref>{{Verkkoviite | osoite = | arkisto = https://web.archive.org/web/20170829214726id_/http://www.cs.ucsb.edu/~gilbert/cs240a/old/cs240aSpr2011/slides/TarjanDFS.pdf | nimeke = Depth-first search and linear graph algorithms | tekijä = Robert Tarjan | tiedostomuoto = PDF | ajankohta = 2.6.1972 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref> Toisin kuin Kosarajun algoritmissa, Tarjanin algoritmille riittää yksi kerta syvyyssuuntaiselle haulle ja tila pidetään erillisessä pinossa. Tarjanin algoritmi on suosittu nopeuden ja suhteellisen suoraviivaisen toteutuksen ansiosta. Kosarajun ja Tarjanin algoritmien heikkous on sarjamuotoinen käsittely, joka ei sovellu hyvin rinnakkaiseen käsittelyyn.<ref>{{Verkkoviite | osoite = https://www.andrewgamble.com/survey-of-scc-algorithms.pdf | nimeke = Survey of Strongly Connected Components Algorithms | tekijä = Andrew Gamble | tiedostomuoto = PDF | ajankohta = kevät 2020 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref> |
'''Tarjanin algoritmi''' eli '''Tarjanin vahvasti yhtenäisten komponenttien algoritmi''' on [[syvyyssuuntainen läpikäynti|syvyyssuuntaisen läpikäynnin]] algoritmi, joka on nimetty [[Robert Tarjan]]in mukaan. Tarjanin algoritmia ja käytetään tunnistamaan vahvasti liittyvät komponentit [[graafiteoria]]n mukaisesti. Tarjanin algoritmi ja [[Kosarajun algoritmi]] ovat kaksi yleisesti käytettyä algoritmia tähän tarkoitukseen.<ref>{{Verkkoviite | osoite = http://courses.cms.caltech.edu/cs130/lectures/CS130-Wi2024-Lec19.pdf | nimeke = CS130 Software Engineering | tiedostomuoto = PDF | ajankohta = talvi 2024 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref><ref>{{Verkkoviite | osoite = | arkisto = https://web.archive.org/web/20170829214726id_/http://www.cs.ucsb.edu/~gilbert/cs240a/old/cs240aSpr2011/slides/TarjanDFS.pdf | nimeke = Depth-first search and linear graph algorithms | tekijä = Robert Tarjan | tiedostomuoto = PDF | ajankohta = 2.6.1972 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref> Toisin kuin Kosarajun algoritmissa, Tarjanin algoritmille riittää yksi kerta syvyyssuuntaiselle haulle ja tila pidetään erillisessä pinossa. Tarjanin algoritmi on suosittu nopeuden ja suhteellisen suoraviivaisen toteutuksen ansiosta. Kosarajun ja Tarjanin algoritmien heikkous on sarjamuotoinen käsittely, joka ei sovellu hyvin rinnakkaiseen käsittelyyn.<ref>{{Verkkoviite | osoite = https://www.andrewgamble.com/survey-of-scc-algorithms.pdf | nimeke = Survey of Strongly Connected Components Algorithms | tekijä = Andrew Gamble | tiedostomuoto = PDF | ajankohta = kevät 2020 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref>Tarjanin algoritmi keksittin 1972. |
||
Syvyyssuuntainen läpikäynti on hyödyllistä graafien analysointiin ja mahdollistaa eri ongelmien ratkaisun lineaarisessa ajassa (käytetty aika kasvaa lineaarisesti graafin koon mukaan). Vahvasti liittyvät komponentit tarkoittavat paria ''solmuja'', jotka ovat komponentteja yhdistelmälle. Graafin sanotaan olevan ''vahvasti kytketty'' jos sillä on yksi vahvasti kytketty komponetti.<ref>{{Verkkoviite | osoite = https://www.cs.cmu.edu/~15451-f18/lectures/lec19-DFS-strong-components.pdf | nimeke = Depth First Search and Strong Components | tiedostomuoto = PDF | ajankohta = 1.11.2018 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref> |
Syvyyssuuntainen läpikäynti on hyödyllistä graafien analysointiin ja mahdollistaa eri ongelmien ratkaisun lineaarisessa ajassa (käytetty aika kasvaa lineaarisesti graafin koon mukaan). Vahvasti liittyvät komponentit tarkoittavat paria ''solmuja'', jotka ovat komponentteja yhdistelmälle. Graafin sanotaan olevan ''vahvasti kytketty'' jos sillä on yksi vahvasti kytketty komponetti.<ref>{{Verkkoviite | osoite = https://www.cs.cmu.edu/~15451-f18/lectures/lec19-DFS-strong-components.pdf | nimeke = Depth First Search and Strong Components | tiedostomuoto = PDF | ajankohta = 1.11.2018 | viitattu = 4.6.2024 | kieli = {{en}} }}</ref> |
||
== Aiheesta muualla == |
|||
* https://dev.to/abaron10/finding-strongly-connected-components-scc-in-directed-graphs-kosaraju-sharir-vs-tarjans-algorithm-in-go-42pa |
|||
== Lähteet == |
== Lähteet == |
Versio 5. kesäkuuta 2024 kello 21.44
Tarjanin algoritmi eli Tarjanin vahvasti yhtenäisten komponenttien algoritmi on syvyyssuuntaisen läpikäynnin algoritmi, joka on nimetty Robert Tarjanin mukaan. Tarjanin algoritmia ja käytetään tunnistamaan vahvasti liittyvät komponentit graafiteorian mukaisesti. Tarjanin algoritmi ja Kosarajun algoritmi ovat kaksi yleisesti käytettyä algoritmia tähän tarkoitukseen.[1][2] Toisin kuin Kosarajun algoritmissa, Tarjanin algoritmille riittää yksi kerta syvyyssuuntaiselle haulle ja tila pidetään erillisessä pinossa. Tarjanin algoritmi on suosittu nopeuden ja suhteellisen suoraviivaisen toteutuksen ansiosta. Kosarajun ja Tarjanin algoritmien heikkous on sarjamuotoinen käsittely, joka ei sovellu hyvin rinnakkaiseen käsittelyyn.[3]Tarjanin algoritmi keksittin 1972.
Syvyyssuuntainen läpikäynti on hyödyllistä graafien analysointiin ja mahdollistaa eri ongelmien ratkaisun lineaarisessa ajassa (käytetty aika kasvaa lineaarisesti graafin koon mukaan). Vahvasti liittyvät komponentit tarkoittavat paria solmuja, jotka ovat komponentteja yhdistelmälle. Graafin sanotaan olevan vahvasti kytketty jos sillä on yksi vahvasti kytketty komponetti.[4]
Aiheesta muualla
Lähteet
- ↑ CS130 Software Engineering (PDF) courses.cms.caltech.edu. talvi 2024. Viitattu 4.6.2024. (englanniksi)
- ↑ Robert Tarjan: Depth-first search and linear graph algorithms (PDF) 2.6.1972. Arkistoitu Viitattu 4.6.2024. (englanniksi)
- ↑ Andrew Gamble: Survey of Strongly Connected Components Algorithms (PDF) andrewgamble.com. kevät 2020. Viitattu 4.6.2024. (englanniksi)
- ↑ Depth First Search and Strong Components (PDF) cs.cmu.edu. 1.11.2018. Viitattu 4.6.2024. (englanniksi)