Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Relaterede dokumenter
Notat om syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Noter til DM517 Beregnelighed

Rekursion og dynamisk programmering

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

Regulære udtryk og endelige automater. Ugens emner

Regulære udtryk og endelige automater

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Eksempel: Skat i år 2000

Ja! det beviste vi uge 16+17

Aritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens

Abstrakte datatyper C#-version

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere, ugeopgave 3

A Profile for Safety Critical Java

BRP Kursusintroduktion og Java-oversigt

Løsning af møntproblemet

DM502. Peter Schneider-Kamp

Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007

Regularitet og Automater

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

It og informationssøgning Forelæsning november 2006 Nils Andersen. Regulære udtryk og formelle sprog

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

En karakteristik af de regulære sprog. Ugens emner. FA minimering [ ] MyHill-Nerode-sætningen en algoritme til minimering af FA er

Virkefeltsregler i Java

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...

Løsningsforslag Skriftlig eksamen 9. januar 2012

Indhold 1 Compilerens opbygning 2 Leksikalsk analyse 3 Grammatikker 4 LL-parsing 5 LR-parsing 6 Det abstrakte syntaks-træ 7 Attribut-grammatikker

1. Seminar EVU RegAut

Forelæsning Uge 2 Mandag

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Dynamisk programmering. Flere eksempler

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Introduktion. Philip Bille

Datalogi C, Efterår 2004 OH er, forelæsning 14/ Datastrukturer og algoritmer. Henning Christiansen

14.1 Internationale programmer

DANMARKS TEKNISKE UNIVERSITET

26 Programbeviser I. Noter. PS1 -- Programbeviser I. Bevis kontra 'check af assertions' i Eiffel. Betingelser og bevisregler.

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi

Skriftlig eksamen, Programmer som Data Onsdag 5. januar 2011

Forelæsning Uge 2 Torsdag

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Eksamensopgaver i DM17, Januar 2003

Hanne Niels Edith Harald Carsten Jørgen Henrik.

Oversættere Skriftlig eksamen onsdag d. 19. april 2006

Skriftlig Eksamen Beregnelighed (DM517)

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Hashing og hashtabeller

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Forelæsning Uge 2 Mandag

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 10

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Tree klassen fra sidste forelæsning

Undervisningsbeskrivelse

Algoritmedesign med internetanvendelser ved Keld Helsgaun

DRONNINGER (QUEENS) Opgave 1

Forelæsning Uge 4 Mandag

Forelæsning Uge 2 Mandag

Dynamisk programmering. Flere eksempler

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Programmering og Problemløsning, 2017

Introduktion. Algoritmer og datastrukturer Toppunkter Algoritme 1 Algoritme 2 Algoritme 3. Philip Bille

Hashing og hashtabeller

Skriftlig eksamen i Datalogi

DM507 Algoritmer og datastrukturer

Dat 2/F6S: Syntaks og semantik 2005 Centrale emner og eksamenspensum

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

DM507 Algoritmer og datastrukturer

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 13/ Side 1 af 7

Anvendelse af metoder - Programmering

Skriftlig eksamen, Programmer som Data Mandag 9. januar 2012

Undervisningsbeskrivelse

Forelæsning Uge 1 Torsdag

Computere og Netværk (dcomnet)

Regularitet & Automater Eksamensnotater

Stakke, køer og lidt om hægtede lister

Datalogi C + Datastrukturer og Algoritmer

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Programmering og Problemløsning, 2017

Offset til terminalskærm i Java

Forelæsning Uge 1 Torsdag

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Rettelser til Pilen ved træets rod

Perspektiverende Datalogi Internetalgoritmer. MapReduce. Gerth Stølting Brodal

Bits DM534. Rolf Fagerberg, 2012

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen

Transkript:

Datalogi C, RUC Forelæsning 22. november 2004 Henning Christiansen Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik Dagens program Hvad er»sprog«i denne sammenhæng? Regulære udtryk væsentligt specifikationssprog ilstandsmaskiner, princippet & implementation Javaklasser for regulære udtryk og simpel tekstsøgning Konteks-fri sprog + meget kort om parsing Anvendelser i Bioinformatik (intro) o Problemstillinger o At finde fælles mønstre i gener o Kort om proteinfoldninger (1)

Sprog: Her blot sekvenser af symboler, kun syntaktisk struktur interessant Eksempler MOVE 123 3564 JMP 111 ADD 444 @2 for(int j=0; j<= s2.length()-windowsize; j++) {for(int i=0; i<= s1.length()-windowsize; i++) {int commonchars = 0; for(int k=0; k<windowsize; k++) {if(s1.charat(i+k)==s2.charat(j+k)) commonchars++;} if(commonchars>=cuttoff) mark(i,j);}} ACGACGAAGACAACGAGACGAAGA»Syntaktisk struktur«? (2)

Regulære udtryk, regulære sprog»klassisk«notation ε er et regulært udtryk, som beskriver den tomme streng. for et givet tegn, a, så er a et regulært udtryk, som beskriver strengen bestående af a. hvis A og B er regulære udtryk, så er AB et regulært udtryk som beskriver mængden af strenge, som fremkommer ved at tage en streng beskrevet af A og sætte sammen med en streng beskrevet af B. hvis A og B er regulære udtryk, så er A+B et regulært udtryk som beskriver foreningen af strenge beskrevet af A og af B. hvis A er et regulært udtryk, så er A* et regulært udtryk, som beskriver mængden af strenge, som forekommer ved at sammensætte 0, 1, 2,... strenge, hver især beskrevet af A, A + er defineret som A*, men her skal være mindst 1 forekomst. [ A ] er forkortelse for A + ε (»eventuelt A«) Parenteser bruges til gruppering Eksempel: (a* + ac)d beskriver denne mængde af strenge: {bd, abd, aabd, aaabd, aaaabd,..., acd} (3)

Eksempler fra programmeringssprog: Definer først følgende forkortelser ciffer = 0 + 1 +... + 9 bogstav = a + b +... + å Identifier: bogstav(ciffer+bogstav+_)* Reelt tal: [ + + ] ciffer + [. ciffer + ] [e ciffer + ] (4)

(Endelige) tilstandsmaskiner Abstrakte beskrivelser til genkendelse af regulære sprog (også: generel teknik til at holde styr på»status«for et system, f.eks. GUI, processtyring...) Defineret ved et endeligt antal tilstande, heraf én start og en eller flere slut, samt tilstandsovergange Eksempel: Genkender (a* + ac)d (5)

Determininistiske tilstandsmaskiner er bedre som algoritmer Definition. En tilstandsmaskine er ikke-deterministisk, såfremt den har en tilstand, hvor enten samme tegn forekommer i etiketten på mere end én pil væk fra tilstanden, eller der går mere end én pil væk fra tilstanden, og en af dem har tom etikette. En tilstandsmaskine, som ikke er ikke-deterministisk, kaldes deterministisk. Etableret faktum: Der findes algoritmer, som konverterer regulære udtryk til tilstandsmaskiner of fjerner nondeterminisme. Eksempel: Deterministisk maskine for (a* + ac)d (6)

Implementation af tilstandsmaskiner: 1. Generel, tabelstyret algoritme t:= start; repeat read(ch); t:= tabel[t, ch]; if t = fejl then goto 1313 until t = stop ; goto 9999 (7)

Implementation af tilstandsmaskiner: 2. Oversætte til kontrolstrukturer 1: read(ch); case ch of a : goto 2; b : goto 4 otherwise goto 1313; 3: read(ch); case ch of a : goto 3; b : goto 4 otherwise goto 1313; 2: read(ch); case ch of a : goto 3; b : goto 4; c : goto 4 otherwise goto 1313; 4: read(ch); if ch = d then goto 5 else goto 1313; 5: goto 9999; (8)

Strengsøgning: et lidt andet problem Finde bestemt streng et-eller-andet-sted i en tekst eller generelt, finde delstreng genereret af et givet regulær udtryk et-eller-andet-sted i en tekst Knuth-Morris-Pratt-algoritmen Princip: Givet søgestreng (eller regulært udtryk) R Konstruér 1. Regulært udtryk for tekster som slutter med r, dvs. R-smart = hvad-som-helst * R 2. Kør R-smart igennem standard-algoritmerne så vi får en deterministisk tilstandsmaskine Eksempel... (9)

Eksempel på Knuth-Morris-Pratt-alg.: Find forekomst af 10100111 i en tekst Nondeterministisk tilstandsmaskine Den tilsvarende deterministiske: (10)

java.util.rege http://java.sun.com/j2se/1.4.2/docs/api/inde.html Klasserne Pattern, Matcher http://java.sun.com/j2se/1.5.0/docs/api/inde.html Klasserne Pattern, Matcher, Scanner (11)

Kontekst-fri sprog, en mere generel klasse end de regulære indlejrede strukturer a la programmeringssprog { { {} {{}} } {} } men ikke check for korrekt type og erklæringer Eksempel på konteks-fri grammatik for aritmetiske udtryk: NB: Udtrykker også prioritet og præcedens (12)

Metoder til genkendelse af kontekst-fri sprog Rekursivt nedstigende parsing rekursive metoder svarende til rekursion i grammatikregler o bygger syntaks-træer top.down kræver entydigt»look-ahead«elegant, men grammatikken må ofte vrides for at det virker»shift-reduce«bottom-up konstruktion af syntakstræer formuleret ved eksplicit stak kræver også»look-ahead«... men er væsentlig mere tolerant overfor grammatikken mere robust/informativ end top-down i tilfælde af syntaks-fejl Læs selv hvis du får brug for det! (13)

Bioinformatik, eksempler på problemstillinger, som minder om sproggenkendelse (stærkt forenklet!!) Proteiner, DNA, gener, genomer...... er informationsbærere,; kan ofte forstås udfra sekvens af aminosyrer C, G, A, Altså, alfabet bestående af {C, G, A, } Eksempel.»Hvordan nedstammer 2 fra 1?«1. AGACACA 2. CGACAAGCA Mere generelt: at identificere delstrenge (=gener), som går igen i forskellige sekvenser (14)

Problem: Givet to strenge, identificere delstrenge som optræder i begge. Dot-Plot-metoden: Lad streng 1 lege -akse og streng 2 y-akse. Sæt en prik i (,y), såfremt streng1[] == streng[2] Fælles delstrenge viser sig som skå streger parallel med diagonalen?!?!?!?! Eksempel... (15)

Streng 1 -akse: Streng 2 y-akse: abe---abe---abekat--- kat...abekat... Smart, ikk?.. t a k e b a... t a k a b e - - - a b e - - - a b e k a t - - - Ulempe: Kræver manuel betragtning, men princippet danner udgangspunkt for (forståelse af) andre algoritmer (16)

Dot-plot kan forbedres mht. støj og små mutationer Parametre windowsize cutoff ~ minimumslængde for at sammenfald er interessant ~ hvor mange»rigtige«der skal være indenfor windowsize for at vi sætte prik. Eksempel Streng 1 -akse: abe---abe---abekat--- Streng 2 y-akse: kat...abøkat... windowsize = 5, cutoff = 4,... t a k ø b a... t a k a b e - - - a b e - - - a b e k a t - - - (17)

Kræver kun få linjer Java: class DotPlot{ static String s1 = "abe---abe---abekat---"; static String s2 = "kat...abøkat..."; static char [][] plot = new char[s1.length()+1][s2.length()+1]; static final int windowsize = 5; static final int cuttoff = 4; static void initplot() { plot[0][0]=' '; for(int i=0; i< s1.length(); i++) plot[i+1][0]=s1.charat(i); for(int j=0; j< s2.length(); j++) plot[0][j+1]=s2.charat(j); for(int j=1; j< s2.length(); j++) {for(int i=1; i< s1.length(); i++) plot[i][j]=' ';}} static void mark(int i, int j) {plot[i+1][j+1]='';} static void printplot() { for(int j=s2.length(); j>= 0; j--) {for(int i=0; i<= s1.length(); i++) {System.out.print(plot[i][j]);} System.out.println();}} (18)

public static void main(string [] args){ initplot(); for(int j=0; j<= s2.length()-windowsize; j++) {for(int i=0; i<= s1.length()-windowsize; i++) {int commonchars = 0; for(int k=0; k<windowsize; k++) {if(s1.charat(i+k)==s2.charat(j+k)) commonchars++;} if(commonchars>=cuttoff) mark(i,j);}} printplot();}} (19)

Sammenhæng mellem proteiners amino-sekvens og deres form Forskellige delstrenge kan tiltrække hinanden (elektrisk...), og derved opstår komplicerede faconer Der gælder følgende lovmæssigheder: G C A G C A A A (20)

Vi kan bruge Dot-Plot til at finde potentielle kandidater for»klisterstrenge«definition: Den omvendte af givet streng fås ved: erstat alle G med C, alle C med G, alle A med, alle med A, og skriv resultatet op baglæns. For givet streng, stiller vi et Dot-Plot op for den og dens omvendte: Eksempel: AAAAAAAAAAAAAAAGACAAAAAAAACGAAAAAAAA AGACACG G C A A C A G A AAAAAAAAAAAAAAAGACAAAAAAAACGAAAA (21)

(22)