Kelime (Text) İşleme Algoritmlrı Doç.Dr.Bnu Diri Trie Ağcı Sonek Ağcı (Suffix Tree) Longest Common String (LCS) Minimum Edit Distnce 1
Ağçlrın Bğlı Ypısı Düğüm (node), çeşitli ilgiler ile ifde edilen ir nesnedir. Her ir ğlntı (edge) için, irer ğlntı ilgisi tutulur. Nesne/Değer (Element) An düğüm (Prent node) Çocuk düğümlerin listesi Metin ğçlrı (TRIE) Trie ğcının ismi retrievl kelimesininin [3..6] oluşmktdır. rsındki hrflerinden Bir ğcın üzerinde ir metin (string, sözlük,...) kodlnmk isteniyors TRIE ğçlrı tercih edilir. İgili metni veren ğcın üzerinde izleneilir tek ir yol vrdır. Kök düğüm her zmn oş ir metni (string) ifde eder. Her düğüm kendisinden sonr gelen hrfi işret eder. Boş metin hngi hrf ile devm ederse, o hrfe it dl tkip edilir ve gelinen düğüm o n kdr geçilmiş oln dllrdki hrflerin irleştirilmiş hlidir. Bir düğümden ir hrf tşıyn sdece ir dl çıkilir. Metin ğçlrının en önemli vntjı, ir metni rrken metinin oyutu kdr işlem gerektirmesidir. Ağçt ne kdr ilgi ulunduğunun önemi yoktur. Hfızyı verimli kullnırlr. Trie ğcının en derin noktsı, ğç üzerindeki en uzun metin kdrdır. 2
String kümesinin TRIE üzerinde gösterilimi { eef d fe fg c } e e d f c f e g Sıkıştırılmış TRIE e e d f c eef d f c f e g e g 3
4
Suffix Tree Suffix Tree (Sonek Ağcı) kelime işleme lgoritmlrındndır DNA dosylrı gigyte seviyesinde yer kpldıklrındn DNA nlizinin elle ypılmsı mümkün değildir. Htt, DNA dosylrının ilgisyr yrdımıyl işlenmesi de çok uzun sürmektedir. Biyolojik veriler, rm motorlrı, derleyici tsrımı, işletim sistemi, veri tnı, vs... kullnılır. 5
Suffix Trees Sustring ulm prolemidir... Verilen text m uzunluğund ir string (S) S için hrcnn zmn O(m) Bulunmsı istenen string Q olup, n uzunluğund olsun Q nun S içerisinde rnmsı için hrcnn zmn O(n) Suffix Tree ler kullnılrk u prolemi çözeiliriz. Suffix Tree nin Tnımı m uzunluğundki ir S string için T suffix tree şğıdki özelliklere shiptir: Köklü ir ğçtır ve yönlüdür 1 ile m rsınd etiketlenmiş m yprğı vrdır Ağçtki her ir dl S string nin ir lt stringini oluşturur Kökten, i. yprğ kdr etiketlenmiş ir yol üzerindeki kenrlr irleştirileilir Kök olmyn her r düğümün en z 2 yprğı vrdır Bir düğümden çıkn kenrlr frklı krkterler ile şlr 6
S= S string inin suffix tree si, S nin ütün suffix lerini sıkıştırılmış ir trie de tutsun. semolü ilgili suffix in sonunu göstersin. { } Suffix Tree nin oluşturulmsı En geniş suffix suffix inin eklenmesi 7
8 suffix inin eklenmesi suffix inin eklenmesi suffix in eklenmesi
Herir yprğı etiketleyerek nerden erişeceğimizi iliriz. 1 4 3 2 5 Longest Common Susequence A susequence of string S, is set of chrcters tht pper in left -toright order, ut not necessrily consecutively. Exmple ACTTGCG ACT, ATTC, T, ACTTGC re ll susequences. TTA is not suequence A common suequence of two strings is susequence tht ppers in oth strings. A longest common suequence is common susequence of mximl length. Exmple S1 = AAACCGTGAGTTATTCGTTCTAGAA S2 = CACCCCTAAGGTACCTTTGGTTC S1 = AAACCGTGAGTTATTCGTTCTAGAA S2 = CACCCCTAAGGTACCTTTGGTTC LCS is ACCTAGTACTTTG 9
X m=7 ACTTGCG Y n=6 ATTCGG LCS ATTGG A T T C G G 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 A 1 0 1 1 1 1 1 1 C 2 0 1 1 1 2 2 2 T 3 0 1 2 2 2 2 2 T 4 0 1 2 3 3 3 3 G 5 0 1 2 3 3 4 4 C 6 0 1 2 3 4 4 4 G 7 0 1 2 3 4 5 5 10
Longest Common Sustring (of two strings) s 1 # s 2 # 5 4 # # 4 3 3 # 2 1 2 1 Longest Common Suffix Örnek :"ABAB" ve "BABA" A B A B 0 0 0 0 0 B 0 0 1 0 1 A 0 1 0 2 0 B 0 0 2 0 3 A 0 1 0 3 0 function LCSustr(S[1..m], T[1..n]) L := rry(1..m, 1..n) z := 0 ret := {} for i := 1..m for j := 1..n if S[i] = T[j] if i = 1 or j = 1 L[i,j] := 1 else L[i,j] := L[i-1,j-1] + 1 if L[i,j] > z z := L[i,j] ret := {} if L[i,j] = z ret := ret {S[i-z+1..z]} return ret Dinmik Progrmlm kodu 11
12
13
14
15
16
17
18
19