PAGERINTAS EURISTINIS ALGORITMAS DVIEJŲ SEKŲ BENDRO ILGIAUSIO POSEKIO PAIEŠKAI

Similar documents
CALCULATION OF ELECTROMAGNETIC WAVE ATTENUATION DUE TO RAIN USING RAINFALL DATA OF LONG AND SHORT DURATION

Vango algoritmo analizė

Rinktiniai informacijos saugos skyriai. 3. Kriptografija ir kriptografijos protokolai: Klasikinė kriptografija

S. Tamošiūnas a,b, M. Žilinskas b,c, A. Nekrošius b, and M. Tamošiūnienė d

GARSĄ SUGERIANČIŲ MEDŽIAGŲ IŠDĖSTYMO VIETŲ ĮTAKA SKAIČIUOJANT SALĖS AIDĖJIMO TRUKMĘ SKIRTINGOMIS FORMULĖMIS

VILNIAUS UNIVERSITETAS PAGRINDAI. Mokymo priemonė

E. Šermukšnis a, V. Palenskis a, J. Matukas a S. Pralgauskaitė a, J. Vyšniauskas a, and R. Baubinas b

DISKREČIOJI MATEMATIKA

Algoritmų analizės specialieji skyriai

STABILIZATION OF UNSTABLE PERIODIC ORBIT IN CHAOTIC DUFFING HOLMES OSCILLATOR BY SECOND ORDER RESONANT NEGATIVE FEEDBACK

Algebraic and spectral analysis of local magnetic field intensity

Struktūrinė geologija

METHODS FOR GENERATION OF RANDOM NUMBERS IN PARALLEL STOCHASTIC ALGORITHMS FOR GLOBAL OPTIMIZATION

ANALIZĖ 0: TEORINĖ ARITMETIKA

Turinys. Geometrinės diferencialinių lygčių teorijos savokos. Diferencialinės lygties sprendiniai. Pavyzdžiai. CIt, (- 00,0) C'It, (0, (0);

Stochastinės analizės egzaminas MIF magistrantūra, FDM I kursas, 2018 m. ruduo (1 semestras), X s db s, t 0.

ADAPTYVIOSIOS TECHNOLOGIJOS TAIKYMAS SANDĖLIO UŽDAVINIUI SPRĘSTI

LR Seimo narių elgsenos tyrimas, naudojant klasterinę analizę ir daugiamačių skalių metodą

The Euler Mascheroni constant in school

OCCASIONAL PAPER SERIES. No 6 / 2015 A NOTE ON THE BOOTSTRAP METHOD FOR TESTING THE EXISTENCE OF FINITE MOMENTS

OPTINöS ELEKTRONIKOS ĮTAISAI

LIETUVOS ENERGETIKOS STRATEGIJA: OPTIMALIOS RENOVACIJOS MODELIS (ORM) (projektas pastaboms)

Nullity of the second order discrete problem with nonlocal multipoint boundary conditions

Lloyd Max s Algorithm Implementation in Speech Coding Algorithm Based on Forward Adaptive Technique

The minimizer for the second order differential problem with one nonlocal condition

Computerized Laboratory in Science and Technology Teaching: Course in Machine Elements

R. Plukienė a, A. Plukis a, V. Remeikis a, and D. Ridikas b a Institute of Physics, Savanorių 231, LT Vilnius, Lithuania

Muzika ir akustika. 15 tema. studio. studio. Garsas, per kurį atsiskleidžia muzika

Prognosis of radionuclides dispersion and radiological measurements in Lithuania after the accident at Fukushima Daiichi nuclear

Turinys. Turinys: Kurso tikslai. Olga Štikonienė. privalumus ir trūkumus); Tiesines algebros uždaviniai

An Effective Method for Initialization of Lloyd Max s Algorithm of Optimal Scalar Quantization for Laplacian Source

DISKREČIOJI MATEMATIKA

Iracionalieji skaičiai

ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA. Remigijus Valčiukas

Signalų analizė ir apdorojimas

Geografinė informacinė sistema (GIS) galimybės mokymui (si) ir kūrybai. Dr. Jurgita Rimkuvienė

URBANISTINĖ STRUKTŪRA

VILNIUS UNIVERSITY LIJANA STABINGIENĖ IMAGE ANALYSIS USING BAYES DISCRIMINANT FUNCTIONS

The Burg Algorithm with Extrapolation for Improving the Frequency Estimation

Lietuvių šnekos balsių aprašymo autoregresijos modeliu adekvatumo tyrimas

Atul Pandey a and K.S. Upadhyaya b

Structural integrity verification of polycarbonate type personal identity documents

A. Žukauskaitė a, R. Plukienė a, A. Plukis a, and D. Ridikas b

Tranzistoriai. 1947: W.H.Brattain and J.Bardeen (Bell Labs, USA)

Optimizavimas ekonomikoje. Optimizavimas ekonomikoje 1 / 121

Cheminė kinetika: reakcijų mechanizmai

Modelling of ground borne vibration induced by road transport

VIDUTINĖS KLIMATINIŲ RODIKLIŲ REIKŠMĖS LIETUVOJE

GLOBALUSIS OPTIMIZAVIMAS SU SIMPLEKSINIAIS POSRIČIAIS

8 NAMŲ ŪKIŲ SPRENDIMAI VARTOTI, TAUPYTI IR DIRBTI: LABIAU FORMALI ANALIZĖ

Adaptive Integration of Stiff ODE

Iš Lietuvos matematikos istorijos 1. Jonas Kubilius ANTANAS BARANAUSKAS IR MATEMATIKA

INTELEKTUALAUS KOMPIUTERINIO RAŠTINGUMO TESTŲ KONSTRAVIMO METODO TYRIMAS

pn diodo griūtinio pramušimo tyrimas

Optimal Agreement in a Scale-Free Network Environment

Constitutive relations in classical optics in terms of geometric algebra

A DNA Coarse-Grain Rigid Base Model and Parameter Estimation from Molecular Dynamics Simulations

One Digital Signature Scheme in Semimodule over Semiring

Research of the Grid-Tied Power System Consisting of Wind Turbine and Boiler GALAN

Nijolė Cibulskaitė, Kristina Baranovska

1 Kompiuterių aritmetika ir algoritmai. 2 Tiesinių lygčių sistemų sprendimo metodai: 3 Duomenų aproksimacija: 4 Tikrinių reikšmių uždavinys.

Kurso tikslai. 1 Įgyti galimybę skaitiškai spręsti taikomuosius uždavinius; 2 Įvertinti skirtingus skaitinius sprendimo metodus (žinant jų

Tvirtinu: UŽSAKOMOJO DARBO

CONTROL OF OPTICAL VORTEX DISLOCATIONS USING OPTICAL METHODS

Testavimo su naudotojais metodai Panaudojamumo vertinimai Dr. Kristina Lapin

Lietuvos miškų pajaurėjusių, paprastųjų ir rudžemiškųjų smėlžemių granuliometrinės sudėties ypatumai

Cultural Heritage in the Context of Sustainable Development

Electrochemical investigations of Ni P electroless deposition in solutions containing amino acetic acid

Užklausų kompiliavimas

Reklamos internete vartotojų segmentavimas taikant latentinį Dirichlė paskirstymo modelį

Vidutinės oro temperatūros dinamika Lietuvoje

Formation of Cu(I) compounds in the Cu Cu(II) maleic acid system

TIESOS KRITERIJAUS PROBLEMA V. D:ZEIMSO PRAGMATIZME

A NEW WAY OF LOOKING AT THE BARNUM EFFECT AND ITS LINKS TO PERSONALITY TRAITS IN GROUPS RECEIVING DIFFERENT TYPES OF PERSONALITY FEEDBACK

VILNIUS UNIVERSITY MAŽVYDAS MACKEVIČIUS COMPUTER MODELING OF CHEMICAL SYNTHESIS AT HIGH TEMPERATURES

Job Sequencing with Exponential Functions of Processing Times

THe use of mathematical models for modelling sulphur dioxide sorption on materials produced from fly ashes

ISSN Evaldas Nekrašas, 2010 Straipsnis įteiktas redakcijai 2009 m. lapkričio 5 d. Straipsnis pasirašytas spaudai 2010 m. vasario 2 d.

Skaitinis tekėjimo greičio ir sienelės temperatūros kitimo modeliavimas horizontaliame plokščiame kanale esant termogravitacijos jėgų poveikiui

KONCENTRACIJOS KAITA STUDENTŲ AUDITORIJOJE

Duomenų projektavimas

Programų sistemų inžinerija

LANDAU SĄRAŠAS: NEĮVEIKIAMI SKAIČIŲ TEORIJOS UŽDAVINIAI

Closing of Coster Kronig transitions and variation of fluorescence and Auger yields in isonuclear sequence of tungsten

THOMAS FERMI AND POISSON MODELING OF GATE ELECTROSTATICS IN GRAPHENE NANORIBBON

VILNIAUS UNIVERSITETAS. Haroldas Giedra ĮRODYMŲ SISTEMA KORELIATYVIŲ ŽINIŲ LOGIKAI. Daktaro disertacijos santrauka Fiziniai mokslai, informatika (09P)

Elektronų tarpusavio sąveikos grafene modeliavimas sklaidos matricos metodu

Panaudojamumo vertinimai Dr. Kristina Lapin

Random Factors in IOI 2005 Test Case Scoring

VILNIUS UNIVERSITY. Alma Molytė INVESTIGATION OF COMBINATIONS OF VECTOR QUANTIZATION METHODS WITH MULTIDIMENSIONAL SCALING

PJŪTIES LAIKO POVEIKIS ŽIEMINIŲ KVIEČIŲ GRŪDŲ BALTYMŲ KIEKIUI IR SEDIMENTACIJOS RODIKLIUI

LIETUVOS TSR AUKŠTŲJŲ MOKYKLŲ MOKSLO DARBAI PEDAGOGIKA IR PSICHOLOGIJA X, 1969 M. STAKVILEVICIUS

Formal Languages Generation in Systems of Knowledge Representation Based on Stratified Graphs

The Minimum Density Power Divergence Approach in Building Robust Regression Models

Ekonometrinių modelių pritaikymas OMXV indekso pokyčių prognozavimui

VIEŠŲJŲ PASLAUGŲ PERKöLIMO IŠ TRADICINöS Į ELEKTRONINĘ TERPĘ BRANDOS LYGIO VERTINIMAS

G. Adlys and D. Adlienė

Turinys. Kurso struktūra. 2 Diferencialinės lygtys. 4 Matematinių modelių pavyzdžiai

B. Čechavičius a, J. Kavaliauskas a, G. Krivaitė a, G. Valušis a, D. Seliuta a, B. Sherliker b, M. Halsall b, P. Harrison c, and E.

10 16 metų mokinių nuostatos dėl matematikos ir metakognityvaus sąmoningumo sąsaja

Transcription:

PAGERINTAS EURISTINIS ALGORITMAS DVIEJŲ SEKŲ BENDRO ILGIAUSIO POSEKIO PAIEŠKAI Lasse Bergroth Turku universitetas, Programinių įrangų technikos filialas, Salo, Suomija Anotacija Dviejų sekų bendro ilgiausio posekio (santrumpa: bip) paieška yra būtinas uždavinys įvairiose kompiuterio mokslo problemose. Bendro ilgiausio posekio ilgis gali būti panaudotas kaip panašumo matas pavyzdžiui tarp teksto dokumento dviejų versijų, DNA arba proteinų struktūrų, ir taip pat teksto ir nuotraukų kompresijoje. Deja, išspręsti bip ilgį yra apskritai sudėtinga problema ypač, jeigu abi įvestos sekos, tarp kurių palyginimas yra daromas, yra ilgos ir atstovauja, pavyzdžiui teksto failo visus ženklus. Jeigu nežinome pakankamai apie sekų savybes iš anksto, yra sunku net neįmanoma nuspręsti, kokį bip algoritmą būtų protinga naudoti aktualioje problemos instancijoje. Kartais mums nereikia tikslaus bip ilgio, bet prieš tai yra gana žinoti tą vertę tik apytikriai. Tuo atveju galėtume naudoti euristinį bip algoritmą, kuris skaičiuoja apatinę arba viršutinę ribą bip ilgiui. Šiame straipsnyje bus supažindinama su pagerinta euristinio algoritmo versija, kurios sudėtingumas yra žymiai lengvesnis nei tikslių bip algoritmų, ir su kuria išskaičiuotos apatinės ribos kokybė niekada nėra blogesnė, o dažnai yra geresnė negu su to paties algoritmo pradine versija. PAGRINDINIAI ŽODŽIAI: sekų algoritmai, bendras ilgiausias posekis, euristiniai algoritmai. Abstract The search for a longest common subsequence (abbreviated: lcs) of two input strings is an inevitable task in various problems in computer science. The length of the lcs can be used as a measure of similarity, for instance between two versions of a text document, DNA or protein structures, or in text and image compression. Unfortunately, solving the length of the lcs is in common a difficult problem, especially, if both the compared input strings are long and represent e.g. all the symbols in one text file. If we don't sufficiently know about the features of the strings beforehand, it is difficult, maybe even impossible, to decide which lcs algorithm would be wise to be used in the actual problem instance. Sometimes there is no need to calculate the exact length of the lcs, but instead of that, an approximate value for it would be enough. In that case we could use a heuristic algorithm, which calculates either an upper or a lower bound for the length of the lcs. In this paper, an improved version of a heuristic algorithm will be presented, which is clearly less complex than the exact lcs algorithms and which never produces a lower bound of worse, but instead often of a better quality than the original version. KEYWORDS: string algorithms, longest common subsequence, heuristic algorithms. Įvadas Pradžioje susitariame, kad nagrinėjame dvi tekstines sekas, kurios vadinasi X ir Y, ir jos ilgiai yra atitinkamai m ir n. Toliau, sąlygojame, kad laikome sekas masyvuose, jog bet kada galėtume pasirinkti bet kurį iš jų simbolių. Jeigu sekų ilgiai nėra lygūs, galime nepametant visuotinumo spėti, kad X yra trumpesnė seka: tai reiškia, kad visada m n. Seka S yra sekos X posekis, jeigu galime suformuoti S iš sekos X filtruojant bet kuriuos 0..m elementus iš vėliau paminėtos. Jeigu S yra tuo pačiu laiku taip pat sekos Y posekis, sakoma, kad S yra sekų X ir Y bendras posekis. Jeigu niekas kitas X ir Y sekų posekis yra ilgesnis negu S, tada vadiname S ilgiausiu bendru X ir Y posekiu (bip), kurio ilgį simbolizuoja santrumpa p. Dviejų sekų bip gali būti dviprasmiškas; taigi, vienoje problemos instancijoje gali būti daug įvairių sekų, kurios išpildo jo apibrėžimą. Toliau, susitariame, kad abėcėlės dydis σ yra arba pažįstamas, arba galime jį skaičiuoti prieš išsprendžiant bip problemą. Sekantis pavyzdys paaiškina truputį bip problemos pagrindines sąvokas ir savybes. 1. pavyzdys: X = 'VILNIUS', Y = 'HELSINKIS', σ = 32 (lietuviška abėcėlė), m = 7, n = 9 bip = 'INIS' arba 'LNIS', p = 4 Pirmame pavyzdyje negalime rasti ilgesnio negu keturių raidžių bendro X ir Y sekų posekio, kadangi trumpesnės sekos X simbolių 'V' ir 'U' sekoje Y niekur nėra, ir iš ženklų poros 'IL' galime išsirinkti tik vieną raidę, nes abiejų tų simbolių nerandame toje pačioje tvarkoje sekoje Y. Kad gautume viena iš bip posekių, reikia naikinti simbolius 'V', 'U' ir 'L' arba pirmą 'I' iš sekos 'VILNIUS' ir simbolius 'H', 'E', pirmą 'S', 'K' ir ar 'L' arba pirmą 'I' iš sekos 'HELSINKIS'. Didžiausia dalis iš bip algoritmų tyrinėja sekos X visus simbolius tvarkoje nuo pradžios iki galo [1]. Naudojant Vagnerio ir Fišerio 1975-ųjų metų tiesmukišką, vadinamąjį brutalios jėgos algoritmą [2], kuris remiasi dinaminiu programavimu, galime išspręsti problemą palyginant pasirinktą sekos X simbolį su visais sekos Y ženklais. Galime įsivaizduoti, kad pastatytume dvimatę matricą M indeksuotą 0..m, 0..n (matricos eilė ir stulpelis 0 yra naudingi algoritmo inicializavimui). Matricos eilės 1..m atstovauja sekos X ir jos stulpeliai 1..n sekos Y simbolius. Reikia tyrinėti matricos visas vietas pradedant šiaurės vakariniu kampu ir einant iš kairės į dešinę, ir iš viršaus į apačią. Jeigu matricos eilėje i (1 i m) yra tas pats simbolis kaip jos stulpelyje j (1 j n) kitais žodžiais tai reiškia, kad X[i] = Y[j] esame radę porų poziciją, kur sekų X ir Y simboliai sutampa. Sakome, kad matricos pozicijoje M[i, j] tada yra sutapimas. Vagnerio ir Fišerio algoritmas skaičiuoja į matricos M visą poziciją sveiką skaičių pagal sekančias taisykles. Taisyklėse santrumpa p(i, j) atstovauja sekų X ir Y priešdėlių X[1..i] ir Y[1..j] bip ilgį:

p(i, j) = 0, jeigu i = 0 arba j = 0 p(i-1, j-1) + 1, jeigu i 0 ir j 0 ir X[i] = Y[j] maksimumas iš skaičių poros{ p(i-1, j), p(i, j-1) }, jeigu i 0, j 0 ir X[i] Y[j] Dabar pažiūrėkime antrą pavyzdį, kur matome, kaip Vagnerio ir Fišerio brutalios jėgos algoritmas išsprendžia mūsų pirmojo pavyzdžio bip problemą: 2. pavyzdys: Vagnerio ir Fišerio tiesmukiško algoritmo veiksmo būdas: X 0 1 2 3 4 5 6 7 8 9 Y ø H E L S I N K I S 0 ø 0 0 0 0 0 0 0 0 0 0 1 V 0 0 0 0 0 0 0 0 0 0 2 I 0 0 0 0 0 1 1 1 1 1 3 L 0 0 0 1 1 1 1 1 1 1 4 N 0 0 0 1 1 1 2 2 2 2 5 I 0 0 0 1 1 2 2 2 3 3 6 U 0 0 0 1 1 2 2 2 3 3 7 S 0 0 0 1 2 2 2 2 3 4 Žiūrint į viršuje esantį pavyzdį matome, kad skaičiai niekada nemažėja: nei einant eile iš kairės į dešinę, nei stulpeliu iš viršaus į apačią, bet jie gali augti tik tokiose vietose, kuriose yra simbolių sutapimas, ir tada taip pat vietos šiaurės, vakarų ir šiaurės vakarų pusėse turi būti tie patys skaičiai. Tos vietos yra pažymėtos nuotraukoje kvadratais, ir šios vietos vadinasi minimalūs sutapimai, ir skaičius juose rodo sutapimų klasę, kur jie priklauso. Visos klasės nuotraukoje vienos nuo kitų yra atskirtos ribų linijomis. Jeigu (nebūtinai minimalus) sutapimas pozicijoje (i, j) priklauso klasei k (1 k m), tada priešdėlių X[1..i] ir Y[1..j] bip ilgis yra k. Pavyzdžiui, pozicijoje M[4,6] yra antros klasės minimalus sutapimas. Jeigu vietoje (i, j) yra klasės k minimalus sutapimas, trumpinant sekos X priešdėlio ilgį ir nekeičiant sekos Y priešdėlio ilgio (arba priešingai: paliekant sekos X priešdėlio ilgį pradinį ir trumpinant sekos Y priešdėlio ilgį) nebegalime rasti tos pačios klasės k sutapimo iš to yra kilęs pavadinimas minimalus sutapimas. Strėlės nuotraukoje rodo du sprendimus šios bip problemos instancijai. Tačiau, kai žiūrime matricos vietą M[2,8], galime pastebėti, kad irgi ten yra simbolių sutapimas, bet tas nėra minimalus, kadangi mums reikia tik penkių simbolių iš sekos Y, kad galėtume rasti ilgio 1 bip su priešdėliu X[1..2]: priešdėlių 'VI' ir 'HELSI' p yra taip pat 1 kaip ir priešdėlių 'VI' ir 'HELSINKI'. Todėl, renkant du pirmus simbolius iš X galime trumpinti sekos Y priešdėlį nuo 8-ių iki 5-ių, ir tebeturime pirmos klasės sutapimą vietoje M[2,5]. Yra visada protinga išrinkti trumpiausius galimus priešdėlius, kad į bendrą posekį tilptų maksimalus kiekis simbolių. Sužinojus algoritmo skaičiavimo taisykles, lengva suprasti, kad ieškant sekų X ir Y bip ilgio mums nereiktų registruoti kitų matricos M vietų negu tas, kur yra minimalūs sutapimai. Nors beveik visi tikslūs bip algoritmai dirba praktiškai gerokai greičiau negu Vagnerio ir Fišerio, jų teorinis laiko sudėtingumas yra vis dėlto blogiausio lygio Ο(mn). Gaila, bet ilgas vykdymo laikas nėra vienintelė problema sprendžiant p. Jau prieš vykdymo laikui tampant didele problema, turėsime kreipti dėmesį į algoritmo atminties poreikį [3]. Faktiškai, kai įvestos sekos ilgėja, kyla svarbus klausimas, ar yra pakankamai atminties tikslaus bip algoritmo vykdymui. Laimingai, mums dažnai reikia sužinoti p tik apytikriai. Tada galime pavaduoti tikslų bip algoritmą su euristiniu algoritmu, kuris nebūtinai skaičiuoja tikslų bip ilgį, bet nustato jį pakankamai gerai. Kituose šio straipsnio skyriuose susipažinsime su kelių euristinių bip algoritmų idėjomis, pasversime jų naudą ir trūkumus, pristatysime vienam algoritmui naują, pagerintą versiją, pritaikysime algoritmams eksperimentus ir, pagaliau, padarysime išvadas iš testų vykdymo rezultatų.

Euristinių bip algoritmų apžvalga Euristiniams bip algoritmams yra tipiška, kad jie kokiu nors būdu lengvina pradinę užduotį. Vienas principas yra ignoruoti simbolių pradinę tvarką sekose. Naiviausias euristinis algoritmas skaičiuoja tik įvestų sekų X ir Y visų įvairių abėcėlės simbolių pasirodymą abiejose sekose, ir registruoja minimumą kiekvienam ženklui. Pavyzdžiui, jeigu abėcėlės simbolis 'F' yra randamas 5 kartus sekoje X ir 7 kartus sekoje Y, tada bus registruojamas simboliui 'F' minimalus pasirodymas 5. Pagaliau, kai žinosime visų ženklų minimalų kiekį įvestose sekose, gausime viršutinę ribą bip ilgiui p sumuojant visų ženklų minimalų kiekį: ilgesnio bip teoriškai negalima rasti. Toliau, jeigu ieškotume, koks simbolis pasirodo dažniausiai abiejose sekose X ir Y t. y. ieškant minimalaus pasirodymo kartų maksimumo gautume bip ilgiui labai paprastą apatinę ribą: tikrai bus randama abiejose sekose mažiausiai tiek bendrų simbolių toje pačioje tvarkoje. Apatinės ribos ilgiui naudosime santrumpą p ar. Nagrinėjant naivų viršutinės ir apatinės ribos skaičiavimo metodą tampa aišku, kad jis dirba prastai, jeigu ženklų skirstinys abiejose sekose yra lygus ir panašus. Tada gausime tik labai netikslias ribas bip ilgiui, nes joks vienintelis simbolis pasirodo žymiai dažniau negu kiti. Tai reiškia, kad tokioje situacijoje viršutinė riba tampa aukšta, o apatinė riba pasilieka žema. Jeigu žiūrėsime į antrą pavyzdį, gautume bip ilgiui viršutinę ribą 5, kadangi abiejose sekose matome du kartus simbolį 'I' ir vieną kartą simbolius 'L', 'N' ir 'S' (2+1+1+1=5). Simbolių 'V', 'U', H, 'E' ir 'K' minimalus kiekis yra 0: 'V' ir 'U' juk nepasirodo sekoje 'HELSINKIS' bei raidžių 'H', 'E' ir 'K' niekur sekoje 'VILNIUS' nėra. Tame pavyzdyje būtų apatinė riba atitinkamai 2, nes dažniausiai abiejose sekose pasirodančio ženklo 'I' minimalus kiekis yra 2. Antras būdas lengvinti pradinę bip problemą yra laikyti simbolių pradinę tvarką, bet mažinti sekų abėcėlės dydį. Daugelio efektyvių bip algoritmų laiko sudėtingumas priklauso nuo sandaugos σm. Norint išvengti, kad tas terminas augtų per daug, kai pradinės problemos sekos yra ilgos ir abėcėlė didelė, galime bandyti spausti abėcėlę į dalelę perteikiant kelis ženklus į vieną ir pačią ekvivalentiškumo klasę. Pavyzdžiui, jeigu pradinė σ būtų 64, galėtume mažinti jos dydį į 16 perteikiant simbolius numerius 1, 17, 33 ir 49 į pirmą klasę, simbolius 2, 18, 34 ir 50 į antrą klasę ir taip toliau; paskutinei klasei priklausytų simboliai 16, 32, 48 ir 64. Po to bus sprendžiama modifikuota problema, kurios sekos turi pradinį ilgį, bet mažesnę σ. Išspręsti naują problemos variantą yra lengvesnė užduotis, ir rezultatas duoda mums viršutinę ribą bip ilgiui. Apatinę ribą gautume tik patikrinant, ar rezultato sutapimai yra teisingi arba mažesnės abėcėlės pasekmė: pavyzdžiui, jeigu raidės 'A' ir 'K' lietuviškos abėcėlės pirmas ir septynioliktas simbolis buvo klasifikuotos į tą pačią klasę, rezultate gali būti sutapimas tarp šių ženklų. Visus neteisingus sutapimus reikia ištrinti iš rezultato, ir tik po to pasiliekantys simboliai formuoja apatinę ribą. Praktiškai šio euristinio algoritmo vykdymo rezultatai nėra buvę ypatingai pretenzingi. Trečia galimybė, norint lengvinti pradinę užduotį, yra koncentruoti tik į tuos įvestų sekų simbolius, kurie pasirodo dažniausiai abiejose sekose. Sakykime, kad σ būtų 32, ir norėtume išsirinkti tik aštuonis paprasčiausius simbolius. Darant taip, laikytume šių aštuonių simbolių pradinę tvarką, σ mažėtų į vieną ketvirtąją, ir taip pat trumpėtų pačios sekos, nes panaikinsime į aštuonių simbolių aibę nepriklausančius sekų ženklus. Metodas skaičiuoja tiesiai galiojančią apatinę ribą. Pagal eksperimentus šis metodas yra patikimas: jo rezultatų kokybė yra gera, ypač, jeigu simbolių skirstinys sekose nėra labai lygus. Praktiškai pačias geriausias sąvokas iš euristinių bip algoritmų turi Johtelos tyrinėtojų grupės [4] BestNext (BN) algoritmas nuo 1996-ųjų metų. Šis algoritmas saugo pradines sekas ir jų abėcėlę, produkuoja dažnai geros kokybės apatinę ribą, ir tai ne viskas: taip pat jo vykdymo laikas yra labai greitas palyginant su bet kuriuo tiksliu algoritmu. Jo teorinis laiko sudėtingumas yra O(m+n+σ+σp ar ). Jam reikia tik trupmenos iš tikslių bip algoritmų laiko. Šio algoritmo vykdymo principas yra gobšus. Jis saugo iš kiekvienos surastos sutapimų klasės tik vieną minimalų sutapimą: jį, po kurio tilptų daugiausiai sekančių klasių sutapimų. Tai reiškia, kad algoritmas visada išrenka klasės k tą sutapimą (i, j), kuris maksimizuoja trumpiausią, po to pasiliekančių priesagų ilgį: minimumą iš porų {m-i, n-j}. Visi kiti tos pačios klasės sutapimai bus pamiršti, kas taupo daug atminties palyginant su tiksliais bip algoritmais. Pažiūrėkime vėl į antrą pavyzdį. Pirmai klasei priklauso du minimalūs sutapimai: vietose (2,5) ir (3,3). Išrenkant (2,5) turėtume min{7-2, 9-5} = 4, ir išrenkant (3,3) turėtume min{7-3, 9-3} = 4 taip pat. Tokioje situacijoje yra protinga išrinkti tą sutapimą, kuris laiko ilgesnę dalį iš kitos sekos. Kadangi (2,5) saugo penkias eiles iš X, bet (3,3) net šešis stulpelius iš Y, yra (3,3) geresnis pasirinkimas. Po to bus ieškoma antros klasės sutapimo rajone X[4..7], Y[4..9]. Gausime tris kandidatus: (4,6), (5,5) ir (7,4), ir minimalūs priesagų

ilgiai po šių sutapimų būtų min{7-4, 9-6} = 3, min{7-5, 9-5} = 2 ir min{7-7, 9-4} = 0. Taigi, sutapimas (4,6) bus išrinktas. Nes trečiai ir ketvirtai klasei priklauso tik vienas sutapimas, ir trečios klasės sutapimo koordinačių (5,8) skaičiai yra pakankamai didelės (5>4 ir 8>6), šis euristinis algoritmas surastų šiame pavyzdyje net tikslų bip ilgį. Ar verta gerinti euristinį BestNext algoritmą? BestNext algoritmas dažnai skaičiuoja geros kokybės apatinę ribą bip ilgiui. Taip atsitinka visada, jeigu bip padėtis matricoje yra šalia pagrindinio įstrižo. Tą faktą patvirtina daug algoritmo testo vykdymo rezultatų. Bet jeigu bip būtų masyvo X pradžioje ir masyvo Y gale (arba priešingai), konstatuojame, kad gobšus išsirinkimo principas blogai tinka į tokią situaciją. Pažiūrėkime į kitą pavyzdį: 3. pavyzdys: Bip problemos instancija, kur euristinis BN algoritmas suklysta: X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Y ø E E E F F F C G G G A A A 0 ø 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 A 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 A 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 A 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 B 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 B 0 0 0 0 0 0 0 0 0 0 0 1 2 3 6 B 0 0 0 0 0 0 0 0 0 0 0 1 2 3 7 C 0 0 0 0 0 0 0 1 1 1 1 1 2 3 8 D 0 0 0 0 0 0 0 1 1 1 1 1 2 3 9 D 0 0 0 0 0 0 0 1 1 1 1 1 2 3 10 D 0 0 0 0 0 0 0 1 1 1 1 1 2 3 11 E 0 1 1 1 1 1 1 1 1 1 1 1 2 3 12 E 0 1 2 2 2 2 2 2 2 2 2 2 2 3 13 E 0 1 2 3 3 3 3 3 3 3 3 3 3 3 Šioje problemos instancijoje yra randamas trijų ženklų bip net dviejose vietose: 'AAA' matricos šiaurės rytiniame ir 'EEE' pietvakariame kampe, bet pagal BN algoritmą jų koordinatės yra "blogos", kadangi pirmos klasės sutapimas (7,7) tarp raidžių 'C' taupo šešis simbolius iš abiejų sekų X ir Y galų, bet aktualioje problemoje būtų teisinga išsirinkti vieną iš tik dviejų paskutinius sekos Y arba X simbolius saugojančių sutapimų vietų (1,11) arba (11,1). Išsirinkęs fataliai sutapimą (7,7) algoritmas neberanda nieko iš antros klasės sutapimo, nes rajone X[8..13], Y[8..13] jų nėra, ir atšaukti nemalonaus pasirinkimo algoritmas, žinoma, nemoka. Norint išvengti dalį iš gobšaus pasirinkimo būdo nuostolių, būtų įmanoma kviesti metodą nuolatinai įvairioms sekų X ir Y priesagoms. Reikia išsirinkti pakartojimo laikotarpio parametrą z. Pirmiausia yra apatinė riba skaičiuojama pilnoms įvestoms sekoms X[1..m], Y[1..n]. Sekantį kartą bus seka Y trumpinama: nuo jos pradžios išnyksta z simboliai, bet su X nieko nedaroma. Kviesime metodą dabar sekoms X[1..m], Y[z+1..n]. Kiekvieną sekantį pakartojimo kartą bus iš naujo pirmi z simboliai iš sekos Y ignoruojami, ir nauja apatinė riba bus taigi skaičiuojama sekų dalims X[1..m], Y[rz+1..n], kur r rodo pakartojimo karto numerį. Taip bus tęsiama, kol seka Y tuštėja. Euristinis algoritmas galėtų tuo būdu rasti ir tuos bendrus posekius, kurių padėtis yra matricos šiaurės rytinėje dalyje. Po to tęsia algoritmo veiksmas dar taip, jog seka X bus trumpinama nuo pradžios nuolatinai su z simboliais, o masyve Y bus laikomi visi pradiniai ženklai. Taip bus

daroma, kol seka X tuštėja. Tada galėtume geriau negu su algoritmo pirma versija rasti bendrus posekius, kurie yra netoli matricos pietvakarinio kampo. Jeigu pakartojimo laiku kada nors gauname ilgesnę apatinę ribą negu iki tol, ribos ilgis bus atnaujintas pagal geresnę vertę. Tikslus Kuo'o ir Kroso (KC) bip algoritmas [5] ir BN algoritmo dvi versijos buvo palyginti testuose. Įvestos sekos turėjo abi 15000 ženklų. Abėcėlės dydžiui buvo pasirinktos vertės 16, 32 ir 64, ir simbolių skirstinys buvo panašus į natūralią kalbą. Kitoje lentelėje matomi skirtumai tarp įvairių algoritmo versijų surasto bendro posekio kokybėje ir vykdymo laikuose. Euristinio algoritmo atnaujintos versijos pakartojimo laikotarpiui z buvo pasirinkta vertė 500. Sekų p buvo 70% arba 90% iš trumpesnės įvestos sekos ilgio m, ir bip buvo randama matricos šiaurės rytiniame arba pietvakariniame kampe. Algoritmo vykdymo testų rezultatai 1 lentelė σ, p σ=16, p=13506 σ=32, p=10484 σ=32, p=13512 σ=64, p=13505 Algoritmo Apatinė Vykdymo Apatinė Vykdymo Apatinė Vykdymo Apatinė Vykdymo pavadinimas riba laikas riba laikas riba laikas riba laikas Pradinis BN 6553 0,2 5493 0,3 5421 0,2 5072 0,3 Atnaujintas BN 12937 7,1 6151 8,5 13432 8,4 13482 10,7 KC algoritmas* 13506 101,6 10484 75,7 13512 76,5 13505 62,2 Išvados *Skaičiuoja visada tikslų bip ilgį vietoj apatinės ribos ilgio Šiame straipsnyje buvo supažindinama su euristiniais metodais, kurie skaičiuoja dviejų sekų bendro ilgiausio posekio ilgį apytikriai. Tokie algoritmai yra naudingi ypač, jeigu turime ilgas įvestas sekas, didelę abėcėlę ir daug sutapimų, kurių proga tikslaus algoritmo vykdymo laikas būna per ilgas, ir/arba reikia per daug atminties resurso. Naudojant euristinį bip algoritmą taupome abu resursus, bet tada yra lemianti, kad algoritmo skaičiuojamos apytikslės vertės kokybė būtų pakankamai gera. Anksčiau publikuotas BN algoritmas veikia praktikoje patikimai su sąlyga, kad bip priklausantys simboliai yra šalia matricos pagrindinio įstrižo. Čia pasiūlyta algoritmo versija suklysta žymiai rečiau, nors bip būtų matricoje kitur. Naujos versijos vykdymo laikas yra ilgesnis, bet vis dėlto aiškiai trumpesnis negu tikslaus algoritmo. Tai reiškia, kad galime naudoti jos rezultatus norint lengvinti tikslų bip algoritmo darbo kiekį [6, 7]. Literatūra 1. Bergroth L., Hakonen H., Raita T. A Survey of Longest Common Subsequence Algorithms. Proceedings of SPIRE 2000, A Coruña, Ispanija, puslapiai 39-48, IEEE Computer Society. Rugsėjis 2000. 2. Wagner R. A., Fischer M. J. The string-to-string coorection problem. Journal of the ACM, Vol. 21, numeris 1, puslapiai 168-173. Sausis 1975. 3. Bergroth L., Hakonen H., Väisänen J. New Refinement Techniques for Longest Common Subsequence Algorithms. Proceedings of SPIRE 2003, Manaus, Brazilija, puslapiai 287-303, Springer-Verlag. Spalis 2003. 4. Johtela, T., Smed, J., Hakonen, H., Raita, T.: An Efficient Heuristic for the LCS problem. Proceedings of the Third South American Workshop on String Processing. WSP'96, Recifė, Brazilija, puslapiai 126-140. Rugpjūtis 1996. 5. Kuo S., Cross, G.R. An Improved Algorithm to Find the Length of the Longest Common Subsequence of Two Strings. ACM SIGIR Forum, Vol. 23, numeris 3-4, puslapiai 89-99. 1989. 6. Bergroth, L. Utilizing Dynamically Updated Estimates in Solving the Longest Common Subsequence Problem. Proceedings of SPIRE 2005, Buenos Airesas, Argentinija, puslapiai 301-314, Springer-Verlag. Lapkritis 2005. 7. Bergroth, L. Duomenų struktūrų poveikis algoritmo efektyvumui ieškant dviejų sekų bendrą ilgiausią posekį. Vadyba, mokslo tiriamieji darbai, 2006, Nr. 2(9), ISSN 1648-7974. Vakarų Lietuvos verslo kolegija. Klaipėda, Lietuva. Spalis 2006. AN IMPROVED HEURISTIC ALGORITHM FOR THE LONGEST COMMON SUBSEQUENCE PROBLEM OF TWO INPUT STRINGS S u m m a r y In this paper, some heuristic methods to solve the longest common subsequence problem approximately were presented. The most reliable of them the so called BestNext heuristic was considered more accurately and also refined further. The presented new version produces often a more reliable estimated value for the length of the lcs than the original heuristic. Although the new version runs slower than the original, it still outperforms clearly the exact methods. If embedded in an accurate lcs algorithm, the new version of the heuristic algorithm can also reduce the running time and the memory space need of the exact algorithm.