Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Rozpoznávání v řetězcích
2
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
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) slovo x a text 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
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
Párování řetězců – Boyer-Moorův algoritmus
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)
10
Párování řetězců – Boyer-Moorův algoritmus
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
11
Párování řetězců – Boyer-Moorův algoritmus
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)
12
Editační vzdálenost idea: editační vzdálenost
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)
13
Editační vzdálenost – algoritmus
algoritmus na spočtení editační vzdálenosti řetězců x a y: inicializace levého sloupce inicializace horního řádku jádro algoritmu
14
Editační vzdálenost – komentáře k algoritmu
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
15
Editační vzdálenost – příklad
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
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.