Algoritmus pro pevné body homomorfismů na slovech
Algorithm for word morphisms fixed points
bakalářská práce (OBHÁJENO)
![Náhled dokumentu](/bitstream/handle/20.500.11956/36917/thumbnail.png?sequence=8&isAllowed=y)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/36917Identifikátory
SIS: 91503
Kolekce
- Kvalifikační práce [11266]
Autor
Vedoucí práce
Oponent práce
Žemlička, Jan
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Obecná matematika
Katedra / ústav / klinika
Katedra algebry
Datum obhajoby
23. 6. 2011
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Čeština
Známka
Výborně
Klíčová slova (česky)
pevný bod, polynomiální algoritmus, union-find, složitostKlíčová slova (anglicky)
fixed point, polynomial algorithm, union-find, complexityV předložené práci studuji polynomiální algoritmus, který pro dané slovo rozhoduje, zda je pevným bodem nějakého netriviálního homomorfismu. Součástí práce je zpřesněný odhad složitosti, algoritmus v nejhorším případě pracuje v čase O(m · n), kde n značí délku slova a m velikost použité abecedy. V práci se dále zabývám problémem union-find, který je stěžejní součástí popisovaného algoritmu, a s odhadem jeho složitosti související Ackermannovou funkcí. V práci jsou shrnuty používané metody a důkazy jejich složitostí a je popsán postup, kterým lze řešit speciální případ union-find vyskytující se ve zkoumaném algoritmu. Následuje konkrétní implementace algoritmu, jejíž testovaná složitost odpovídá zpřesněnému odhadu. Součástí práce je také vizualizace chodu algoritmu na konkrétních vstupech.
In the present work we study the first polynomial algorithm, which tests if the given word is a fixed point of a nontrivial morphism. This work contains an improved worst-case complexity estimate O(m · n) where n denotes the word length and m denotes the size of the alphabet. In the second part of this work we study the union-find problem, which is the crucial part of the described algorithm, and the Ackermann function, which is closely linked to the union-find complexity. We summarize several common methods and their time complexity proofs. We also present a solution for a special case of the union-find problem which appears in the studied algorithm. The rest of the work focuses on a Java implementation, whose time tests correspond to improved upper bound, and a visualization useful for particular entries.