Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Rozpoznávání v řetězcích. obsah –párování řetězců naivní algoritmus Boyer-Moorův algoritmus –editační vzdálenost –párování řetězců s chybami.

Podobné prezentace


Prezentace na téma: "Rozpoznávání v řetězcích. obsah –párování řetězců naivní algoritmus Boyer-Moorův algoritmus –editační vzdálenost –párování řetězců s chybami."— Transkript prezentace:

1 Rozpoznávání v řetězcích

2 obsah –párování řetězců naivní algoritmus Boyer-Moorův algoritmus –editační vzdálenost –párování řetězců s chybami

3 Rozpoznávání v řetězcích vzory jsou uspořádané posloupnosti (řetezce) diskrétních prvků –např. písmena abecedy genové posloupnosti... AGCTT (A – adenin, G – guanin, C – cytozin, T – tymin) klasifikace v řetězcích je odlišná od běžných technik –nemáme definovanou metriku na znakových řetězcích pojmy: –slovo = „krátká“ posloupnost znaků –text = „dlouhá“ posloupnost znaků –faktor v textu x = souvislý podřetězec v textu x např. “GCT” je faktor v “AGCTTC”

4 Rozpoznávání v řetězcích – základní problémy 1. párování řetězců („string–matching“) –vstup: slovo x a text –výstup: zjistit, zda x je faktorem textu pokud ano, pak kde faktor v textu je –alternativní použití máme klíčová slova pro jednotlivé třídy - třída “rybaření”... “velryba”, “losos”, “oceán”, třída “lov”... “zbraň”, “střela”, “lovec”,.... pomocí metody párování řetězců zjistíme četnost klíčových slov v neznámém textu neznámý text klasifikujeme do třídy, která bude častěji zastoupena

5 Rozpoznávání v řetězcích – základní problémy 2. editační vzdálenost („edit–distance“) –vstup: 2 slova x a y –výstup: spočítat minimální počet základních operací potřebných pro transformaci x do y základní operace – vložení znaku, smazání znaku, nahrazení znaku 3. párování řetězců s chybami („string–matching–with–errors) –vstup: slovo x a text –výstup: najít pozici v textu, kde vzdálenost (chyba) x od libovolného faktoru textu minimální

6 Párování řetězců testování, zda řetězec x je faktorem textu předpoklady: –|text| značíme délku řetězce text –|x| << |text| –posunutí s je velikost nutná k zarovnání prvního znaku z x se znakem na pozici s+1 v textu cílem je: –1. zjistit, zda existuje platné posunutí takové, že každý znak v x se shoduje s odpovídajícím znakem v textu –2. najít všechna platná posunutí jediné platné posunutí je pro s=5

7 Párování řetězců – naivní algoritmus naivní algoritmus na párování řetězců: –testujeme každý možný posun složitost –algoritmus má složitost Θ((n-m+1)m) v nejhorším případě nevýhody: –informace z jednoho posunutí s se nevyužije při hledání následného posunutí

8 Párování řetězců – Boyer-Moorův algoritmus Boyer – Moorův algoritmus –sofistikovanější algoritmus, který vychází z naivního algoritmu –pro dané posunutí s porovnává znaky v obráceném pořadí (zprava doleva) –následné posunutí nemusí být jen o 1 větší ale o více znaků –zobrazena pozice vzoru x v textu při posunutí s –porovnávání znaků se provádí zprava doleva první dva znaky “es” souhlasí nejpravější znak v textu, který nesouhlasí, je znak “i”.... špatný znak

9 Boyer–Moorův algoritmus pracuje se 2 heuristikami, které určí následné posunutí –1. heuristika špatného znaku –2. heuristika dobrého suffixu (přípony) => algoritmus si následně vybere větší z posunutí (získané heuristikami) Párování řetězců – Boyer-Moorův algoritmus

10 1. heuristika špatného znaku –posun je určen tak, aby špatný znak “i” v textu „lícoval“ s nejpravějším znakem “i” v x (měřeno jen nalevo od pozice, kde došlo k neshodě) => dostaneme posun s=3 Párování řetězců – Boyer-Moorův algoritmus

11 2. heuristika dobrého suffixu –posun se zvětší o nejmenší posun, který „namapuje“ dobrý suffix v textu na následující dobrý suffix v x (měřeno jen nalevo od pozice, kde došlo k neshodě) => dostaneme posun s=7 –tedy text posunume o 7 znaků (s=7) Párování řetězců – Boyer-Moorův algoritmus

12 idea: –rozponávání vzorů pomocí editační vzdálenosti je založeno na algoritmu nejbližšího souseda –testovaný vzor je porovnán s uloženými trénovacími řetězci pomocí editační vzdálenosti –vzor je přiřazen do třídy, která odpovídá „nejbližšímu“ uloženému řetězci (měřeno v editační vzdálenosti) editační vzdálenost –editační vzdálenost mezi x a y popisuje počet základních operací nutných k transformaci x do y –operace nahrazení znaku – znak v x je nahrazen odpovídajícím znakem v y vložení znaku – znak v y je vložen do x (délka x se zvětší o 1) vložení znaku – znak v x je smazán (délka x se zmenší o 1) –složitost algoritmu O(m∙n) Editační vzdálenost

13 algoritmus na spočtení editační vzdálenosti řetězců x a y: Editační vzdálenost – algoritmus inicializace levého sloupce inicializace horního řádku jádro algoritmu

14 značení: –C je matice celých čísel velikosti m×n, které odpovídají editační „vzdálenosti“ –δ(x,y) je zobecněná Kroneckerova delta funkce δ(x,y) = 1 pokud x = y δ(x,y) = 0 jinak algoritmus –algoritmus je příkladem dynamického programování –řádky 4-10 inicializují levý sloupec a horní řádek pomocí jednotlivých „kroků“ –řádek 14 je jádrem algoritmu najde nejmenší vzdálenost pro každý prvek matice C pro spočtení hodnoty C[i,j] jsou použity jen předchozí (již spočtené) řádky a sloupce Editační vzdálenost – komentáře k algoritmu

15 spočteme editační vzdálenost pro x = “excused” a y = “exhausted” –vzor x je transformován do y pomocí 1 nahrazení a 2 vložení –editační vzdálenost x a y je v políčku C[7,9] = 3 Editační vzdálenost – příklad

16 Párování řetězců s chybami vstup –vzor x a text výstup –najít posunutí takové, aby editační vzdálenost mezi x a faktorem v textu byla minimální algoritmus je velmi podobný editačnímu algoritmu –hledáme posunutí, pro které je editační vzdálenost od x k faktoru textu minimální min{C(x,y)} kde y je faktor textu –zavedeme matici E počtu chyb (analogické matici C) vyjímka – horní řádek je inicializován E[0,j]=0... prázdný řetězec x odpovídá prázdnému faktoru textu a nedá žádnou chybu 0 výpočet je podobný jako u výpočtu matice C –na konci bude v matici E: E[i,j] = min{ C( x[1...i], y[1...j] ) } kde y je faktor textu

17 Párování řetězců s chybami – příklad –minimální vzdálenost je 1 a hledané posunutí je 11


Stáhnout ppt "Rozpoznávání v řetězcích. obsah –párování řetězců naivní algoritmus Boyer-Moorův algoritmus –editační vzdálenost –párování řetězců s chybami."

Podobné prezentace


Reklamy Google